Color moments by MATLAB code

11 views (last 30 days)
Dhurgham Al-karawi
Dhurgham Al-karawi on 26 Oct 2015
Edited: Image Analyst on 6 Nov 2023
I am seeking help. I would like to measure in MATLAB one feature extraction type, which is "color moments", but unfortunately, I could not find it. Can I get this code? Many thanks.

Answers (1)

Shrikanth
Shrikanth on 13 Nov 2015
Edited: Image Analyst on 13 Nov 2015
% Extract RGB Channel
R=I(:,:,1);
G=I(:,:,2);
B=I(:,:,3);
% Extract Statistical features
% 1] MEAN
meanR=mean2(R);
meanG=mean2(G);
meanB=mean2(B);
% 2] Standard Deviation
stdR=std2(R);
stdG=std2(G);
stdB=std2(B);
A=[meanR meanG meanB stdR stdG stdB];
I think this will help you to find color moments in a color image.
  4 Comments
Walter Roberson
Walter Roberson on 6 Nov 2023
skews = squeeze(skewness(I, 1, [1 2]));
then skews(1) for R, skews(2) for G, skews(3) for B
Image Analyst
Image Analyst on 6 Nov 2023
Edited: Image Analyst on 6 Nov 2023
Note that these statistics are based purely on the pixel intensity alone. They are not spatial moments (like moment of inertia) that depends on where the pixels are located. If you want spatial moments, see my attached demo on spatial moments.
So mean, std, and skewness would give you the same answer if all the pixels were in an intensity ramp, or if they were distributed in a donut shape, or any other shape. The spatial moments would give you different values for those two images. I just want to make sure you know what you're measuring, and what is possible, so you can make the right choice for your situation.

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!