graythresh

graythresh

graythresh是一個函數,功能是使用最大類間方差法找到圖片的一個合適的閾值。利用這個閾值通常比人為設定的閾值能更好地把一張灰度圖像轉換為二值圖像

函數簡介


函數功能:使用最大類間方差法找到圖片的一個合適的閾值(threshold)。在使用im2bw函數將灰度圖像轉換為二值圖像時,需要設定一個閾值,這個函數可以幫助我們獲得一個合適的閾值。利用這個閾值通常比人為設定的閾值能更好地把一張灰度圖像轉換為二值圖像。
調用格式:
level = graythresh(I)
[level EM] = graythresh(I)
通過計算獲得輸入圖像的閾值,這個閾值在[0,1]範圍內。該閾值可以傳遞給im2bw完成灰度圖像轉換為二值圖像的操作。
graythresh使用最大類間方差法來獲得一個閾值。
最大類間方差法是由日本學者大津(Nobuyuki Otsu)於1979年提出的,是一種自適應的閾值確定的方法,又叫大津法,簡稱OTSU。它是按圖像的灰度特性,將圖像分成背景和目標2部分。背景和目標之間的類間方差越大,說明構成圖像的2部分的差別越大,當部分目標錯分為背景或部分背景錯分為目標都會導致2部分差別變小。因此,使類間方差最大的分割意味著錯分概率最小。
相關函數: im2bw

程序示例


imggray = imread('cell.bmp');
subplot(221); imshow(imggray); title('原始圖像');
imgbw = im2bw(imggray,0.5);
subplot(222); imshow(imgbw); title( '使用默認閾值0.5');
imgbw = im2bw(imggray, 0.25);
subplot(223); imshow(imgbw); title( '指定閾值為0.25');
level = graythresh(imggray); imgbw = im2bw(imggray,level);
subplot(224); imshow(imgbw); title('使用最大類間方差法(Otsu)獲得閾值');
由此可見,如果不使用graythresh函數來獲得閾值,可能需要多次嘗試才能獲得一個合適的閾值。