簡介
matlab中DIP工具箱函式im2bw使用閾值(threshold)變換法把灰度圖像(grayscale image)轉換成二值圖像。所謂二值圖像, 一般意義上是指只有純黑(0)、純白(255)兩種顏色的圖像。 當然, 也可以是其他任意兩種顏色的組合。 在matlab命令行中鍵入doc im2bw或help im2bw即可獲得該函式的幫助信息。
閾值變換
比如數組 a = [120, 254, 0, 200, 99];
設定一個閾值125, 並對a進行閾值變換, 那么a中凡是大於125的, 則變為255, 小於等於125的則變為0
(具體對臨界情況處理可能不同, 不過matlab中im2bw函式是按照上述方法處理的)
這樣a經過閾值變換後變為[0, 255, 0, 255, 0]
語法
BW = im2bw(I, level)
BW = im2bw(X, map, level)
BW = im2bw(RGB, level)
其中level就是設定閾值的。level取值範圍[0, 1]。
例如:
>> I = uint8([0, 255, 128, 127, 121, 202]);
>> range = getrangefromclass(I)
range =
0 255
>> I2 = im2bw(I, 0.5)
I2 = 0 1 1 0 0 1
>> I3 = im2uint8(I2)
I3 = 0 255 255 0 0 255
getrangefromclass函式能夠根據圖像數據類型(I的數據類型是uint8)獲得圖像數據的取值範圍。通過這個例子, 可以看到, 圖像I中每個像素的取值範圍是0~255, 設定閾值為0.5, 則圖像數據中凡是超過255 * 0.5 = 127.5的都變為255, 否則都變為0。
注意事項
在Matlab中使用im2bw函式進行圖像二值化處理時(將圖像轉換為 二值圖像), 人為設定閾值並不總是十分有效。matlab工具箱為我們提供了graythresh函式。該函式使用最大類間方差法得到一個閾值, 利用這個閾值進行圖像二值化通常是十分有效的。