2012-05-18 42 views
-2

我有一個名爲'binary3.tiff'的圖像。Matlab:爲什麼輸入錯誤?

This is my image

我問: 「在下面的函數(稱爲FUNC)圖像被給出爲雙打的矩陣。在這些圖像1表示對象和0(黑色)代表的背景。」。

應該輸入什麼內容? 我試過了:

img = imread('binary3.tiff'); 
img2 = double(img)/255; 
newimg = func(img2); 

但它不起作用。

請幫幫我。

+5

「不起作用」是什麼意思?更具體地說,你期望發生什麼,而不是發生什麼 – Attila

+2

'img'的值是什麼? 'img2'的價值是什麼? –

回答

2

沒有什麼func不和你得到錯誤的性質,我不能幫你了,但你可以做到這一點,而不是更多的細節:

img2 = double(img > 0); 

,以確保中的值輸入圖像是二進制的,再給它一次。請注意,代替0,當然,您可以放置​​任何閾值數字,低於此數字將被視爲「背景」。

2

這個問題可能是由於imread假定tiff圖像使用CMYK顏色空間而不是RGB顏色空間,因此使得img=imread('image.tiff')是第三維尺寸爲4而不是3的矩陣,由於這個原因,一些函數在img上無法正常工作,例如,image(img)會引發錯誤,這可能是您將輸入解釋爲不正確的原因。

img=imread('image.tiff')的格式是uint8,表示每個值都是0到255之間的整數,如果您想將它們轉化爲0到1之間的雙精度,那麼將img2=double(img)/255作爲標量除以標量是正確的與通過標量劃分每個元素相同。最後,如果您確定您的圖像位於RGB色彩空間中,則可以簡單地通過執行img=imread('image.tif')然後img=img(:,:,1:3)來簡單地丟棄矩陣的第4個色彩層,如果您這樣做,並且圖像確實在RGB中,因爲image(img)會正常工作。