2
我想通過我自己對直方圖均衡進行編碼,但結果與matlab histeq
中的內置函數不同。任何建議爲什麼會發生這種情況?我附上了代碼和結果。 直方圖均衡結果
%% Histogram Equalization
close all
clear all
%%
I = imread('Iris_virginica.jpg');
grayI = rgb2gray(I);
[m,n] = size(grayI);
L = 256;
[counts,x] = imhist(grayI);
myCDF = cumsum(counts)/(m*n);
equalizedI = (L-1)*myCDF(double(grayI)+1);
equalizedI = uint8(equalizedI);
histMyOut = imhist(equalizedI);
builtInEqualizationI = histeq(grayI);
histBuiltInEqu = imhist(builtInEqualizationI);
%%
figure
subplot(1,3,1), stem(x,counts), title('Histogram');
subplot(1,3,2), stem(x,myCDF), title('Commulative Distribution');
subplot(1,3,3), stem(x,imhist(equalizedI)), title('Equalized');
figure
subplot(1,3,1),imshow(grayI), title('Input image');
subplot(1,3,2), imshow(equalizedI), title('Equalized image (mine)');
subplot(1,3,3), imshow(builtInEqualizationI), title('Equalized image (matlab)');
figure
subplot(1,3,1), stem(x,counts), title('Histogram');
subplot(1,3,2), stem(x,histMyOut), title('Equalized Histogram (mine)');
subplot(1,3,3), stem(x,histBuiltInEqu), title('Equalized Histogram (matlab)');
difference = abs(equalizedI-builtInEqualizationI);
figure, imshow(difference,[]);
是的,結果現在非常接近,但兩幅圖像之間的差異仍然不爲零。 – Misaki
可能是由於浮點錯誤。然後更新你的帖子。 – rayryeng
我計算了matlab函數中直方圖中的非零元素,它們不是32 !.我如何在我的實現中添加箱數? – Misaki