數字圖像處理課程論文
基于MATLAB的圖像門檻值分割技術
摘要:本文主要針對圖像門檻值分割做一個基于MATLAB的分析。通過雙峰法,疊
代法以及OUTS法三種算法來實作圖像門檻值分割,并且就這三種算法做了一定的分析和比較,在加椒鹽的圖檔上同時進行三種實驗,做出比較,最終得出實踐結論。
關鍵詞:圖像分割 MATLAB 門檻值分割 算法 引言:圖像分割是圖像處理與計算機視覺領域低層次視覺中最為基礎和重要的領域之一,它是對圖像進行視覺分析和模式識别的基本前提.同時它也是一個經典難題,到目前為止既不存在一種通用的圖像分割方法,也不存在一種判斷是否分割成功的客觀标準,圖像門檻值分割即是其中的一種方法。 門檻值分割技術因其實作簡單、計算量小、性能較穩定而成為圖像分割中最基本和應用最廣泛的分割技術,已被應用于很多的領域,在很多圖像處理系統中都是必不可少的一個環節。
1、門檻值分割思想和原理
若圖像中目标和背景具有不同的灰階集合:目标灰階集合與背景灰階集合,且兩個灰階集合可用一個灰階級門檻值T進行分割。這樣就可以用門檻值分割灰階級的方法在圖像中分割出目标區域與背景區域,這種方法稱為灰階門檻值分割方法。
在物體與背景有較強的對比度的圖像中,此種方法應用特别有效。比如說物體内部灰階分布均勻一緻,背景在另一個灰階級上也分布均勻,這時利用門檻值可以将目标與背景分割得很好。如果目标和背景的差别是某些其他特征而不是灰階特征時,那麼先将這些特征差别轉化為灰階差别,然後再應用門檻值分割方法進行處理,這樣使用門檻值分割技術也可能是有效的
設圖像為f(x,y),其灰階集範圍是[0,L],在0和L之間選擇一個合适的灰階門檻值T,則圖像分割方法可由下式描述:
f
g(x,y){1(x,y)?T0f(x,y)?T
這樣得到的g(x,y)是一幅二值圖像。
(一)原理研究
圖像門檻值分割的方法有很多,在這裡就其中三種方法進行研究,雙峰法,疊代法,以及OUTS法。
方法一:雙峰法 方法原理:
雙峰法是一種簡單的門檻值分割方法。雙峰法先将原圖轉為灰階圖,然後将灰階圖轉為灰階直方圖,灰階直方圖就是灰階級的像素數ni與灰階i的二維關系,它反映了一幅圖像上灰階分布的統計特性,在MATLAB中使用函數imhist
數字圖像處理課程論文
來實作。如果得到的灰階直方圖呈現明顯的雙峰狀,則選取雙峰之間的谷底所對應的灰階級作為門檻值分割。
方法二:疊代法 方法原理:
開始時候選擇一個門檻值作為初始估計值,然後按着某種政策不斷得改進這個估計值,直到滿足給定的準則為止。
(1) 求出圖像最大灰階值Max和最小灰階值Min,初始門檻值估計值
T0.=(Max+Min)*0.5.
(2) 用T0将圖像分割為目标和前景。圖像分成兩組像素:Z1由所有灰階值大
于或等于T0的像素組成,而Z0由所有灰階值小于T0的像素組成。 (3) 分别求出兩者區域中的所有像素計算平均灰階值a1和a2。 (4) 計算新的門檻值T1=(a1+a2)*0.5.
如果|Ti+1-Ti|<0.5,則退出循環,Ti+1即為所求門檻值;否則,将Ti+1複制給Ti,重複(2)~(5)。
方法三:OTSU法 方法原理 OTUS又稱:最大類間法,該算法是在使類間方差最大的自動确定門檻值的方法,
是在判決分析最小二乘法原理的基礎上推到得出的,其算法比較簡單,是一種友善可行的門檻值選取方法。
設原始灰階圖像灰階級範圍為[0,L],灰階級為i的像素點數為ni,則圖像的全部像素數為:
N?no?n1?......?nL?1
?Pi?0L?1i?1
把圖像中的像素按灰階值用門檻值t分成兩類C0和C1,由灰階值在[0,t]之間的像素組成,由灰階值在[t+1,L-1]之間的像素組成,對于灰階分布機率,整幅圖的均值為
ut??iPi
i?0L?1是以,C0和C1的均值為:
μ0??ipi?otiwo?μ?t?w?t?μ1?其中
ori?t?1?ipt0L-1iμT?μ?t??w11?w?t?i
w?P(C)??p?w?t?i?0
w?P(C)??p?1?w(t)1r1i?t?1iL?1上面三式可得
數字圖像處理課程論文
ut= w0u0+ w1u1 類間方差定義為:
σ
算法:
2B?w0(μ0?μT)?w1(μ0?μT)?w0w1(μ1?μo)222
讓t在[0,L-1]範圍一次取值,使類間方差最大的他值即為OUTS法的最佳門檻值。
MATLAB工具箱提供的graythresh函數求取門檻值。
1、雙峰法圖像門檻值分割matlab code:
I=imread('cat.jpeg'); I=rgb2gray(I); imhist(I) 直方圖:
說明:根據雙峰法原理,觀察到灰階圖像直方圖呈現明顯的雙峰狀,則選取雙峰之間的谷底所對應的灰階級作為門檻值分割。如上圖,選取230作為分割點。
I=imread('cat.jpeg'); I=rgb2gray(I); figure
subplot(1,2,1) imshow(I);
[width,height]=size(I); title('原圖')
數字圖像處理課程論文
for i=1:width for j=1:height if(I(i,j)<230) RC(i,j)=0; else
RC(i,j)=1; end end end
subplot(1,2,2) imshow(RC)
title('雙峰法圖像門檻值分割處理效果圖')
此圖為C=230
此圖為C=150