圖像分割是一種重要的圖像處理的技術。
對于數字圖像,我們往往會對他們中的某一部分感興趣,這些部分我們稱為前景或者目标, 其餘部分稱為背景。為了識别和分析圖像中的目标,我們需要把他們從圖像中提取出來,在此基礎上對圖像進行進一步的處理和應用,圖像分割就是為了實作這個過程。
一. 門檻值分割法0 1 灰階門檻值法分割
灰階門檻值分割就是把圖像灰階分成不同的等級,然後确定灰階,門門檻值的方法。灰階門檻值分割其實就是二值化處理,即:選擇一個門檻值,将圖像轉化為黑白二值圖像,用于圖像分割以及邊緣提取。
顯然,圖像門檻值化處理是一種階梯函數,屬于圖像灰階級的非線性運算,該變換函數曲線如圖所示。它的功能是由使用者指定一個門檻值, 如果圖像中某個像素的灰階值大于該門檻值,則将該像素的灰階值置為255,否則将其灰階值置為0。
輸入一張圖像,并用imhist函數顯示他的直方圖。
從理論上來講,以直方圖雙峰之間的谷底處灰階值作為門檻值進行圖像的門檻值化處理,即可将目标和背景分割開來。
下面對他們進行圖像分割
運作-如下代碼
f=imread('ll.png');
f1=im2bw(f,91/255);
f2=im2bw(f,140/255);
f3=im2bw(f,120/255);
f4=im2bw(f,56/255);
subplot(2,2,1);imshow(f1);
subplot(2,2,2);imshow(f2);
subplot(2,2,3);imshow(f3);
subplot(2,2,4);imshow(f4);
可以看到,在圖像分割的過程中,門檻值不宜選的過大或者過小,都會大大影響分割的效果,是以,在使用門檻值分割的過程中,門檻值的選擇很重要,但是使用直方圖的方法不容易确定出合适的門檻值,這時候我們就要使用科學的方法來确定,通常我們有以下幾種方法來确定:
- 最小誤差門檻值
- 最大方差門檻值
- 最佳門檻值法
- 差别分析法
涉及科學計算的知識大家可以自行查閱資料掌握,下面我們重點講述全局門檻值法和局部門檻值法分割。全局門檻值法作為更先進的算法,可以直接算出門檻值來,然後進行圖像分割。
02 全局門檻值分割
運作如下代碼
I=imread('coins.png');
subplot(1,2,1);
imshow(I);
Level = graythresh(I); %求取二值化的門檻值
BW = im2bw(I, level); %按門檻值進行二值化
subplot(1,2,2);
imshow(BW);
03 局部門檻值分割
這裡采用一張我自己用手機拍的圖檔為例,對它進行局部門檻值處理
n = imread('renjiancihua.jpg');
f=rgb2gray(n);
T = graythresh(f); % 自動擷取門檻值
T = T*255; % 門檻值在區間[0,1],需調整至[0,255]
g = f<=T;
subplot(1,2,1);imshow(f);title('原圖像');
subplot(1,2,2);imshow(g);title(['門檻值處理,門檻值為' num2str(T)]);
今天的分享就到這裡,後續在圖像分割這一塊會更新邊緣檢測,區域生長,區域分割有關内容。
推薦閱讀
MATLAB與圖像處理領域
(彙總版)
文章好看就點這裡