HSV Averages and SD for Image Processing Toolbox

14 ビュー (過去 30 日間)
Jacob Siahaan
Jacob Siahaan 2020 年 4 月 30 日
コメント済み: Jacob Siahaan 2020 年 4 月 30 日
I am new to Matlab, it is only my first week. I am trying to calculate the average hue across all image pixels along with the standard deviation. Same applies to saturation and value.
My code is:
rgbImage = imread('001.jpg');
hsv = rgb2hsv(rgbImage);
h = hsv(:, :, 1); % Hue image.
s = hsv(:, :, 2); % Saturation image.
v = hsv(:, :, 3); % Value (intensity) image.
meanh = mean(h);
My output shows columns, but I am seeking the average across all image pixels and to my understanding it seems like the table (for mean) shows average hue per pixel.


Guillaume 2020 年 4 月 30 日
編集済み: Guillaume 2020 年 4 月 30 日
mean like many functions in matlab operates along the first non-scalar dimension of a matrix. Your h is a 2D matrix, so the first non-scalar dimension is the rows and mean gives you the average across the rows (hence the average of each column).
If you're using a reasonably modern version of matlab (2018b or later) you can tell mean to operate across all the dimensions at once:
meanh = mean(h, 'all');
In older versions, you can either call mean twice:
meanh = mean(mean(h)); %first get the mean across the rows, then across the columns
but be careful that it doesn't work for non-linear functions such as std. Instead you can reshape your matrix so it has only one dimension:
meanh = mean(h(:)); %reshape into a column, then take the mean
or use the mean2 function which gives you the mean of all pixels of a 2D image:
meanh = mean2(h);
I recommend the first ('all' option) or 3rd option ( use (:)) for older versions.
  1 件のコメント
Jacob Siahaan
Jacob Siahaan 2020 年 4 月 30 日
Thank you so much sir, the codes worked for me.


その他の回答 (0 件)


Find more on Convert Image Type in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by