2013-04-23 30 views
3

我有一個彩色圖像。我需要在其中應用直方圖均衡如何在彩色圖像上使用histeq函數?

如果我用它在下面的代碼

im = imread('E:\S1\New\Image1.png'); 
Test = histeq(im); 

我收到以下錯誤

Function HISTEQ expected its first input, I, to be two-dimensional. 

Error in ==> histeq at 71 
iptcheckinput(a,{'uint8','uint16','double','int16','single'}, ... 

如何解決這個問題?

回答

3

的事情是直方圖僅用於良好灰度圖像定義的。你如何定義顏色的直方圖equlization?
Hist-eq嘗試通過稍微改變像素的亮度來重新分配灰度值以跨越(儘可能均勻)整個範圍0..255。
如果您希望對顏色執行相同的操作,即均勻地填充整個RGB立方體,您會發現自己改變了像素的顏色。也就是說,最終黃色像素變成棕色。

你必須清楚地定義你在做什麼。

如果您只想跨越整個強度範圍(不影響顏色),您會發現Dan的解決方案非常有用。

如果你想「補」全RGB立方體,你可能要考慮申請hiseq獨立於圖像的每個通道:

for ci = 1:size(im,3) 
    Test(:,:,ci) = histeq(im(:,:,ci)); 
end 
0

對於簡單的辦法,試試這個:

im = imread('E:\S1\New\Image1.png'); 
Test =im(:,:,1); ir=histeq(ir); figure; imshow(ir, 'Border', 'tight'); 
相關問題