Average value of H in HSV of a picture

2 ビュー (過去 30 日間)
Xiaochao
Xiaochao 2012 年 9 月 10 日
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.

採用された回答

Jan
Jan 2012 年 9 月 10 日
編集済み: Jan 2012 年 9 月 10 日
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 件のコメント
Xiaochao
Xiaochao 2012 年 9 月 11 日
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 2012 年 9 月 11 日
Exactly as shown in my example:
BlockH = reshape(H, 16, 40, 16, 30);
meanBlockH = reshape(sum(sum(H, 1), 3), 40, 30) / 256;

サインインしてコメントする。

その他の回答 (1 件)

Sean de Wolski
Sean de Wolski 2012 年 9 月 10 日
doc blockproc
  1 件のコメント
Xiaochao
Xiaochao 2012 年 9 月 10 日
Thank you very much, I will try this functio

サインインしてコメントする。

Community Treasure Hunt

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

Start Hunting!

Translated by