Image Analysis
1 view (last 30 days)
Show older comments
How to calculate gray percentage of an gray scale image ? Like 50 % gray Level, 32% gray level....Please post your answers....Thanks in advance........
0 Comments
Accepted Answer
Image Analyst
on 29 Oct 2011
This is ambigous so I guess I'll have to solve both scenarios. If you want to know what "percent gray" an image is, like you want to know if it really is "18% gray" then you'd do this:
maxGrayValue = intmax(class(grayImage))
meanGray = mean2(grayImage)
percentGray = meanGray / single(maxGrayValue)
This can of course be combined into one line if you want. You may have heard about the "18% gray" assumption in photography: http://en.wikipedia.org/wiki/Gray_card , or http://en.wikipedia.org/wiki/Middle_gray
On the other hand, if you're wanting to find out what gray level has 32% of the pixels darker than that, you can use the CDF:
% Get the histogram.
[pixelCounts GLs] = imhist(grayImage);
% Get the cumulative distribution function.
cdf = cumsum(pixelCounts) / sum(pixelCounts);
% For example, find the gray level where 32% of the pixels are darker.
indexGray32 = find(cdf<=0.32, 1, 'last');
percentGray32 = GLs(indexGray32)
0 Comments
More Answers (1)
Amith Kamath
on 29 Oct 2011
but if you want to measure gray level in the way you have described above, you would want to replace the hist(<pixel value>) with hist(<pixel value range>) in the explanation in the link above. For example,
sum(hist(120:145)./sum(hist)) to check for fraction of pixels that are between 120 and 145 in value.
Thanks!
0 Comments
See Also
Categories
Find more on Image Filtering and Enhancement 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!