我已經通過imfilter命令將圖像與LOG過濾器進行了關聯。爲什麼LOG過濾器正在返回黑色背景圖像?
z=imfilter(I,fspecial('log',11,1.5));
figure
imshow(z);
圖片:
我已經通過imfilter命令將圖像與LOG過濾器進行了關聯。爲什麼LOG過濾器正在返回黑色背景圖像?
z=imfilter(I,fspecial('log',11,1.5));
figure
imshow(z);
圖片:
轉換的圖像double(雙精度)會解決這個問題,因爲imread命令把在默認情況下unit8(無符號整數)格式的圖像。
我會考慮使用'im2double'而不是''double',因爲'im2double'也會使強度標準化,使它們在'[0,1]'之間。只是投擲到「雙」不會做到這一點。另外,'imread'在默認的'uint8'中加載圖像在技術上是不正確的。每個像素的精度在imread解析和檢查的圖像頭部中定義。例如,TIF可以是8,16或24或32位。這只是大部分圖像使用每個強度/顏色8位,所以我們自然會認爲它是「默認」。 – rayryeng 2014-10-22 16:18:16
但im2double在這種情況下不起作用,因爲強度將位於[0,1]中,但我們不希望將強度歸一化,如果我們這樣做,所得到的圖像將是黑色的。我已經嘗試過並得到了準確的結果。 – 2014-11-01 08:48:42
完全廢話。用於'雙'型圖像的'imshow'是**設計**以在[[0,1]'之間獲得強度,其獲得**可視化**爲黑色和白色之間的強度。誰給了你評論+1票,誰也不知道他們在談論什麼。 – rayryeng 2014-12-17 17:09:36
你的問題是,你無法正確顯示的結果。
您的結果是在範圍0-31,但您需要將其轉換爲0-255來繪製它!
做
imshow(mat2gray(z))
爲什麼結果在範圍0-31? – 2014-10-20 16:39:41
因爲您正在應用日誌過濾器,並且過濾器沒有標準化結果。 – 2014-10-20 16:43:58
@AnderBiguri - 您還可以執行'imshow(z,[])',這將對比歸一化顯示結果,以顯示最小值和最大值映射到「[0,1]」的位置。否則,好地方! – rayryeng 2014-10-20 17:02:16
解決此問題的最佳方法不是更改圖像,而是更改imshow
的顯示方式。試試這個:
>> imshow(z, [0, 31]);
或者,更好的,試試這個:
>> imshow(z, []);
將重新縮放圖像自動映射最小值爲0,最大值爲255。
展會我們一些代碼和一些結果!我希望我能用一行代碼來理解整個圖像處理過程中的問題:(但是,圖像是否是uint8或double? – 2014-10-20 16:22:01
無法發佈圖像:/因爲落後了10個左右的點,但示例代碼如下所示z = imfilter(I,fspecial('log',11,1.5));%I是圖像11是蒙版大小,1.5是西格瑪的值 figure,imshow(z); – 2014-10-20 16:24:29
將它上傳到某處,我將發佈鏈接。將它放入 – 2014-10-20 16:25:42