Average value of H in HSV of a picture

1 Ansicht (letzte 30 Tage)
Xiaochao
Xiaochao am 10 Sep. 2012
I was asked to divide a jpg picture to several parts with equal area. And I need to get average value of H in HSV of the picture. I want to know how to get the average value of H.

Akzeptierte Antwort

Jan
Jan am 10 Sep. 2012
Bearbeitet: Jan am 10 Sep. 2012
Calculate the mean over 4x4 blocks:
RGB = rand(100, 200, 3);
HSV = rgb2hsv(RGB);
H = HSV(:, :, 1);
meanH = mean(H(:));
BlockH = reshape(H, 4, 25, 4, 50);
meanBlockH = reshape(sum(sum(H, 1), 3), 25, 50) / 16;
Care about the overflow, when you use UINT8 images.
  3 Kommentare
Xiaochao
Xiaochao am 11 Sep. 2012
I have a picture of 640*480 pixels. I want to divide it to 16*16 blocks and get average value H of every block. The result shoud be a 40*30 array. But I tried mean function, the result always is a 1*16 array.
Jan
Jan am 11 Sep. 2012
Exactly as shown in my example:
BlockH = reshape(H, 16, 40, 16, 30);
meanBlockH = reshape(sum(sum(H, 1), 3), 40, 30) / 256;

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Sean de Wolski
Sean de Wolski am 10 Sep. 2012
doc blockproc
  1 Kommentar
Xiaochao
Xiaochao am 10 Sep. 2012
Thank you very much, I will try this functio

Melden Sie sich an, um zu kommentieren.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by