I want to know if we can implement histogram equalization without the histeq function?
18 views (last 30 days)
Show older comments
I have a project and I have to implement histogram equalization without using the histeq function anybody have any idea ?
0 Comments
Answers (3)
Image Analyst
on 6 Dec 2011
Check out my histogram shaping app:
It will give you a perfectly flat histogram, or any other shape you desire. Otherwise you can do the standard, dumb, imperfect method where you use cumsum() but that won't get you a flat histogram, just a stretched-out/redistributed one.
0 Comments
Jurgen
on 15 Nov 2012
4 bit grayscale example:
grayLevels = (0:15);
%Histogram of image, counts per level:
grayHist = [0 0 40 80 45 11 70 0 0 0 0 0 0 0 0 15];
Make new gray value table with formula:
EQfactor = grayLevels(end)/sum(grayHist);
grayEq = round(EQfactor*cumsum(grayHist));
Finished, Use LUT for equalizing; apply like 'grayEq(im + 1)'
-
Extra info: Use LUT to find new histogram without image data
newGray = zeros(1,length(grayLevels)); % New histogram of image
% Bit messy now:
values = grayHist(grayLevels+1);
newGray(unique(grayEq(grayLevels+1)+1)) = [0 values(values>0)];
stem(newGray);figure;stem(grayHist)
2 Comments
Image Analyst
on 7 Nov 2021
@Musab Abid just have grayLevels be your image, like
grayLevels = imread('moon.tif');
See Also
Categories
Find more on Histograms 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!