2015-05-08 47 views
0

我想直方圖均衡SPOT5圖像。我試圖用histeq命令。爲什麼這不起作用?Histeq matlab不工作

這是我輸入錯誤:

>>I = imread('C:\Users\windows 8\Downloads\ori.tif'); 

>>imshow(I(:,:,1:3)) 

Warning: Image is too big to fit on screen; displaying at 17% In imuitools\private\initSize at 72In imshow at 283

>> J = histeq(I); 

Error using histeq Expected input number 1, I, to be two-dimensional.

我還是新的。我真的 欣賞一些幫助。預先感謝您

+2

似乎'histeq'只適用於grayScale圖像。你的是RGB三維圖像 –

回答

1

發生此警告是因爲or.tif的圖像大小比您的屏幕大。它只是告訴你它沒有以全尺寸顯示它。這不會影響直方圖均衡。

直方圖均衡的錯誤是因爲matlab期望我是一個二維矩陣。您的TIFF文件是3D矩陣,它具有寬x高x的顏色。

取決於你想要達到你的直方圖均衡化的東西,你可能需要首先將圖像轉換爲灰度圖像

greyI = rgb2gray(I(:,:,1:3)); 
J = histeq(greyI); 

或直方圖均衡化應用到每個又將三個色面。

J = zeros(size(I)); 
J(:,:,1) = histeq(squeeze(I(:,:,1))); 
J(:,:,2) = histeq(squeeze(I(:,:,2))); 
J(:,:,3) = histeq(squeeze(I(:,:,3))); 
% Next line if you have alpha channel 
if(size(J, 3) == 4) 
    J(:,:,4) = histeq(squeeze(I(:,:,4))); 
end 
+1

你在這種情況下留下了一個錯字'=='。另外我想你在最後一行不需要「擠壓」。 –

+2

@SanthanSalai - 正確。這裏不需要「擠壓」。單身維度被直接索引到第三維中被壓扁。 – rayryeng