天天看點

【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】

1 圖像分析及預處理

拍攝圖像會産生随機的擾動,圖像有一定的噪聲,為消除掉圖像中的無關資訊,對圖像進行預處理。

1.1 灰階化

為降低運算量,需要将拍攝的三通道的RGB圖像轉化為單通道的灰階圖像。采用權重平均法的灰階化方法,其中心理學灰階公式根據人眼對RGB三色的敏感程度選擇不同的權重:

式(1)中,R、G、B分别為RGB三通道灰階值,灰階化結果如圖1 (a)所示。

1.2 平滑處理

為了盡可能避免将背景當作缺陷,需要對圖像進行平滑處理,這樣雖然會使缺陷的邊界模糊,但是有利于減少背景的幹擾。注意所采用的去噪處理為均值濾波,均值濾波公式為:

【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】

式(2)中,m、n分别為所選擇的濾波核的長和寬,Sxy是以(x,y)為中心的濾波核對應像素的位置集合,平滑處理結果如圖1 (b)所示。均值濾波的缺點是會使一些細節如邊緣等資訊丢失,是以在找到種子點後,對沒有經過平滑處理的圖像進行區域生長,找到缺陷邊界。

2 算法原理

2.1 門檻值分割

門檻值分割是圖像分割中最簡單、基礎的方法,性能比較穩定,計算量較小,運算速度快;它主要有全局門檻值分割、局部門檻值分割、自适應門檻值分割等方法。門檻值算法基于門檻值T,将像素灰階值大于門檻值T和小于門檻值T的部分分别叫做前景和背景。變換函數表達式:

【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】

圖1 均值濾波處理

【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】

式(3)中,T為門檻值,g (x,y)為原圖像像素點(x,y)的灰階值,f (x,y)為分割後圖像像素點(x,y)的灰階值,門檻值分割結果如圖2所示。

【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】

圖2 門檻值分割結果

2.2 形态學開運算降噪

數學形态學簡稱形态學,其處理方式為領域運算,即把領域結構元素與圖像對應位置像素進行邏輯運算,這種運算的影響因素主要有結構元素大小、形狀和邏輯運算的規則。形态學操作主要有膨脹、腐蝕、梯度運算、禮帽運算、黑帽運算、開運算和閉運算等,但其基礎為腐蝕和膨脹,利用膨脹和腐蝕就能完成不同形式的運算。

腐蝕運算能消除輪廓邊界點,使邊界向内縮小,主要用于細化二值圖像目标輪廓、去除噪聲等。

【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】

式(4)中,A為原圖像,B為結構元素。首先給結構元素B定義一個原點,當結構元素B的原點移動到圖像A的(x,y)上時,如果結構元素B上等于1的像素點對應圖像A也等于1,則将圖像A的(x,y)的灰階值置為1,否則置為0,腐蝕示意圖如圖3所示。

【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】

圖3 腐蝕示意圖

膨脹運算則與腐蝕運算相反,使邊界向外擴張,主要用于填補圖像分割後的空白,使相近的不相連的輪廓相連。其公式為:

【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】

式(5)中,A為原圖像,B為結構元素。首先給結構元素B定義一個原點,當結構元素B的原點移動到圖像A的(x,y)上時,如果結構元素B上等于1的像素點對應圖像A中至少有一個等于1,則将圖像A的(x,y)的灰階值置為1,否則置為0。

先進行腐蝕操作,然後在腐蝕的基礎上進行膨脹操作,主要用于去噪和計數等。其公式為:

【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】

式(6)中,A為原圖像,B、C為結構元素。開運算效果如圖4所示,圖5為開運算處理的結果。

【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】

圖4 開運算效果

2.3 區域生長法

區域生長的思想就是把領域(四領域、八領域等)相同的化為一個區域。首先需要一個種子點作為生長的開始,然後将種子點領域内滿足相似準則要求的像素點合并到種子的區域,将這個區域的像素做為種子點,繼續進行生長,直到沒有符合要求的點,生長結束,所有種子點像素作為生長的區域。分割的好壞由初始種子點和相似準則決定。

【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】

圖5 形态學開運算結果

2.3.1 種子點選擇與檢測

經過門檻值分割和形态學處理後,将二值圖像各輪廓中心作為待定種子點。如果選擇的種子點位于缺陷的絕對區域,那麼種子點總有一個方向各像素的深度值呈現高-低-高的形态。設計檢測模闆如圖6所示,計算出種子點在0°、45°、90°、135°方向上的深度變化,判斷其變化是否呈高低高形态。

【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】

圖6 檢測模闆

種子點左右兩側r個像素的灰階平均值分别為:

【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】

各方向的灰階變化為:

【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】

深度形Si态變化判定:

【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】

式(10)中,I (u)為檢測模闆中第u個像素的灰階值,w=1,2,3,4,分别代表0°,45°,90°,135°方向,mwm為w方向兩側的最小灰階值,T1為形态變化門檻值。如果種子點不滿足深度形态變化判定,則去除該待定種子點。

2.3.2 生長過程

區域生長的具體流程如下:

(1)将種子點坐标放入種子點集seeds。

(2)頂出種子點集中的一個種子點,對種子點八鄰域的像素點進行相似準則判斷;滿足相似準則條件的點,視為種子點放入種子點集seeds。

(3)将頂出的種子點存入種子集S。

(4)如果種子點集内沒有元素,則跳到步驟(4);如果種子點集中還有元素,則跳到步驟(2)。

(5)生成一張和輸入圖像長寬一緻,像素值全為0的圖像I。

(6)将圖像I中對應種子集S坐标的像素值置為255,得到分割圖像I’。

其中生長的相似準則為:

【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】

式(11)中,gray (seed)為當輪種子點的灰階值,gray (8_n)為其八鄰域各點的像素值,Thresh為設定的門檻值。區域生長結果如圖7所示。

【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】

圖7 區域生長結果

3 實驗過程

圖像分割就是按照預先設定的規則,将圖像分割為有意義的前景和背景的過程。區域生長是一個分割效果比較好的算法,但前提是需要找到适合的種子點。單一的分割算法就容易遇到這種不足的情況,結合使用形态學和門檻值分割的方法來找到合适的種子點,幫助區域生長算法完成分割任務,達到滿足要求的分割效果,分割方法流程如圖8所示。

【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】

圖8 分割流程圖

首先對輸入的圖檔進行灰階化處理,變成單通道的灰階圖檔,然後濾波去除噪聲,使圖像更平滑,選擇合适的門檻值進行門檻值分割,在利用開運算去除掉分割後較小的前景,以各前景區域的中心點為起始種子點,進行區域生長,得到最終所滿足要求的前景。

【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】
【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】
【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】
【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】
【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】
【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】
【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】
【物體檢測】基于matlab GUI形态學物體檢測【含Matlab源碼 945期】

1 matlab版本

2014a

2 參考文獻

[1] 蔡利梅.MATLAB圖像處理——理論、算法與執行個體分析[M].清華大學出版社,2020.

[2]楊丹,趙海濱,龍哲.MATLAB圖像處理執行個體詳解[M].清華大學出版社,2013.

[3]周品.MATLAB圖像處理與圖形使用者界面設計[M].清華大學出版社,2013.

[4]劉成龍.精通MATLAB圖像處理[M].清華大學出版社,2015.

繼續閱讀