im2bw是基於轉換為二值圖像的算法,用的是otsu's method.
matlab中DIP工具箱函數im2bw使用閾值(threshold)變換法把灰度圖像(grayscale image)轉換成二值圖像。所謂二值圖像, 一般意義上是指只有純黑(0)、純白(255)兩種顏色的圖像。 當然, 也可以是其他任意兩種顏色的組合。 在matlab命令行中鍵入doc im2b或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)
將灰度圖像 I 轉換為二進制圖像。輸出圖像 BW 將輸入圖像中亮度值大於 level 的像素替換為值1 (白色),其他替換為值0(黑色)。你指定 level 在 [0,1]之間,不用管輸入圖像的等級。函數graythresh 能用來自動計算變量 level 。如果你不指定 level ,im2bw 使用 0.5。
BW = im2bw(X,map,level)
將顏色表為 map 的索引圖像 X 轉換為二進制圖像。
BW = im2bw(RGB,level)
將 RGB 真彩圖像轉換為二進制圖像。Level是歸一化的閾值,值域為[0,1]。Level可以由函數graythresh(I)來計算。
【如果輸入圖像不是灰度圖像, im2bw 首先將圖像轉換為灰度圖像,然后通過閾值將灰度圖像轉換成二進制圖像。】
例子:load trees
BW = im2bw(X,map,0.4);
imview(X,map),imview(BW)
(拓展一下)各個函數的使用:
im2uint8:將輸入轉化為uint8,有效的輸入圖像數據類型包括logical, uint8, uint16, double
im2uint16:將輸入轉化為uint16,有效的輸入圖像數據類型包括同上
mat2gray:將輸入轉化為double,但是輸出的double數據都在[0, 1]范圍內,有效的輸入只有double
im2double:如果輸入的不是double類型圖像,在輸出都是在[0, 1]范圍,如uint8則輸出為uint8/255。但如果是double類型,則原樣輸出
im2bw:上面已經解釋了,輸出的是二值圖像。