Clear Filters
Clear Filters

Average value of H in HSV of a picture

1 view (last 30 days)
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.

Accepted Answer

Jan
Jan on 10 Sep 2012
Edited: Jan on 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 Comments
Xiaochao
Xiaochao on 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 on 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;

Sign in to comment.

More Answers (1)

Sean de Wolski
Sean de Wolski on 10 Sep 2012
doc blockproc

Community Treasure Hunt

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

Start Hunting!