Sum of RGB components
Afficher commentaires plus anciens
I'm trying to sum the components of RGB of a point. Like it follows in the code. For example, if I have RGB = [230 100 150],
I want to get for RGB(1) + RGB(2) + RGB(3) the value of 230 + 100 + 150 = 480. The problem is that it returns 255. I know that 255 is the maximum value in the RGB system, but how could I fix the code so I can get the right sum?
b = squeeze(a(c, d, :)); % Value in RGB of a point of a image. 'C' and 'd' are the
% coordinates of the point
if ((b(1) + b(2) + b(3)) > 725)
K = 2.00;
elseif ((b(1) > b(2)) && (674.5 < (b(1) + b(2) + b(3))) && ((b(1) + b(2) + b(3)) <= 725))
K = 2.10;
Réponse acceptée
Plus de réponses (1)
Image Analyst
le 5 Nov 2015
I get the idea that you are going to do this on all pixels in the image and then threshold. There are vectorized ways, like
% Sum R+G+B for all pixels in the image:
sumImage = sum(double(rgbImage), 3);
% Get a mask where the sum is more than 725.
brightPixelsMask = sumImage > 725
% and so on.
3 commentaires
Pedro Minsk
le 5 Nov 2015
Stephen23
le 6 Nov 2015
Note that sum converts to double, so there is no need to call double:
sumImage = sum(rgbImage,3);
Image Analyst
le 6 Nov 2015
You're right. I wonder why conv() or conv2() don't do that.
Catégories
En savoir plus sur Data Distribution Plots dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!