I want to know if we can implement histogram equalization without the histeq function?
Afficher commentaires plus anciens
I have a project and I have to implement histogram equalization without using the histeq function anybody have any idea ?
Réponses (3)
Image Analyst
le 6 Déc 2011
1 vote
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.
Sean de Wolski
le 6 Déc 2011
0 votes
Probably worth a read
Jurgen
le 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 commentaires
Musab Abid
le 7 Nov 2021
how can we implement it on a image?
Image Analyst
le 7 Nov 2021
@Musab Abid just have grayLevels be your image, like
grayLevels = imread('moon.tif');
Catégories
En savoir plus sur Histograms 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!