2014-01-21 66 views
1

我是新來的Matlab,並試圖採取一個tif並找到並應用多個閾值。我使用I=imread('full_file_directory')保存了tif,並使用多重閾值查找閾值。但是,當我嘗試使用imquantize(image,threshold)時,它不斷返回完全白色的圖像(全部爲1)。有什麼我失蹤?imquantsize函數在matlab

+0

你試圖找到多少個閾值,返回的值是什麼? – nkjt

+0

我試圖找到三個門檻,並收到60 122 192 – user2906979

+0

你可以顯示你的完整代碼(加載圖像,運行'multithresh'並調用'imquantize')?目前尚不清楚問題是什麼。 – nkjt

回答

0

我懷疑問題是不是使用的imquantize本身,而是你如何展示之後的結果(以雙檢,檢查的new的最大值和最小值)。

在默認情況下,如果調用new=imquantize(Image,thresh);,和thresh包含3個值,如在documentation描述的矩陣new將包含值1到4。另外,當提供閾值但值不是時,imquantize的輸出是雙重類型。

因此,如果您嘗試使用imshow顯示此圖像new,它將顯示一個完全白色的圖像,因爲默認情況下它要求類型爲double的圖像具有範圍[0 1]。

解決方案:使用values輸入imquantize定義的輸出值 - 這應該保持輸出爲同一類型作爲輸入的附加振作。

對於N數量的閾值則需要N + 1個值,因此,例如嘗試:

Image=imread('P:\1\Image_2788.tif'); 
thresh=multithresh(Image,3); 
new=imquantize(Image,thresh, [0 thresh]); 

這設置的任何像素被你的第一閾值≤爲0(黑色)在輸出圖像中,值在第一和第二閾值之間至thresh(1),等等。

0

您是從最小 - 最大限制顯示它嗎? 您可能沒有正確顯示它。 使用imshow(new,[]);來查看您的圖片。 你可以看到我們爲什麼這樣做,在這裏 - What does `imshow(someImage, [])` do?