im2bw
im2bw
matlab中DIP工具箱函數im2bw使用閾值(threshold)變換法把灰度圖像(grayscale image)轉換成二值圖像。一般意義上是指只有純黑(0)、純白(255)兩種顏色的圖像。當然,也可以是其他任意兩種顏色的組合。
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函數。該函數使用最大類間方差法得到一個閾值,利用這個閾值進行圖像二值化通常是十分有效的。