1 前沿
閾值分割是圖像預處理中關鍵的步驟,實質是對每一個象素點確定一個閾值,根據閾值決定當前象素是前景還是背景點,目前,已有大量的閾值處理方法,比如全局閾值和局域閾值,是最簡單的分割方法,而后者則是把整幅圖分成許多子圖像,每幅圖像分別使用不同的閾值進行分割。
本文分析了算法,并在此基礎上提出了一種改進的自適應閾值選取方法,實踐證明,這種方法簡單、計算量小、速度快、統計準確,可以適時獲取圖像的閾值,PCB圖像分割的效果非常好,圖像分割以后,保證了目標圖形的完好無損,圖象增強之后,使的開路和短路更加清晰、突出,為以后的圖像處理做好了充分的準備工作。
2 算法理論
自適應閾值分割算法:
?。?)將圖像分成4個子圖像;
(2)計算每個字圖像的均值;
?。?)根據均值設置閾值,閾值只應用在對應的子圖像;
?。?)根據閾值,對每個子塊進行分割。
此算法中,將均值作為子塊的閾值。
印刷電路板的灰度分布特征,其具有以下特征:
(1)具有明顯的背景峰值和目標峰值;
(2)兩個峰值距離較遠,而且其間灰度值基本相等,沒有明顯的波谷;
?。?)背景象素點和目標象素點的灰度變化具有連續性,目標邊界的灰度是漸變的,不是突變的。
經實踐證明,算法不適合印刷電路板,分割的效果也不是很好,因為平均灰度不一定是直方圖的波谷,而且在PCB的直方圖中有很大一部分平坦的區域,甚至為0的灰度級,尋找極小值點比較困難,為了對PCB圖像進行準確的分割,需要尋找另外一種有效的方法,注意到,平均灰度值點是在兩個峰值之間(即,平均灰度值在背景灰度值和目標灰度值之間),而且靠近于波谷,所以考慮在其領域內尋找極小值點。 為了分割PCB的目標圖像,可以先確定出直方圖的目標峰,再確定極小值點,然后可以找出背景峰,將極小值點作為分割閾值,在目標峰和背景峰附近選擇一個灰度值,分別作為開路、短路增強的閾值,在PCB圖像中,但有時目標比較稀疏,但有時比較密集。尋找整個直方圖的最大值點比較簡單,但是如何確定這個峰值是背景峰還是目標峰,成為問題的關鍵。
對于一般的PCB圖像,其目標(銅線)表現為高灰度,背景表現為低灰度,以下討論一種可行的閾值搜索方法。
?。?)找出最大的一個峰值所對應的灰度值。在全灰度區間[0,255]找出f(H)的最大值,其對應值即為H;
?。?)計算圖像的平均灰度:
(3)確定是背景峰還是目標峰:
如果選取極小值點,在平均值點的30鄰域內,尋找極小值,其對應值即為Hmin。
注:鄰域的大小可以根據實際情況自行選定。
?。?)確定的第二個峰值點:
如果(3)中找到只是背景峰值Hb,那么在灰度區間[Hmin,255)找出f(H)的最小值,其對應值即為目標峰值點Hf;
如果(3)中找到的是目標峰值Hf,那么在灰度區間[0,Hmin]找出f(H)的最小值,其對應值即為背景峰值點Hb;
?。?)以Hmin為閾值,進行圖像分割;
在背景峰值Hb右側附近找出一個灰度級(一般為Hb+10),進行短路增強;
在目標峰值Hf左側附近找出一個灰度級(一般為Hf-10)進行開路增強。
注:本算法特別適用于直方圖的連續的圖像,對于不連續的直方圖,可以先進行臨近插值,將直方圖轉換成連續圖形,即可采用上述方法來確定閾值。
3 實驗結果
當圖像存在噪聲時,通常采取兩種做法:
?。?)先濾波再做二值化處理,這樣原圖像將丟失大量的邊緣細節信息,使得統計結果不夠準確;
?。?)不處理,但這樣又會使圖像中存在許多細小的噪聲,同樣統計結果也不夠準確。
為了保證統計結果的準確性,既不要由于濾波的影響,而使圖像的某些邊緣丟失,線寬減小,又不可將那些噪聲點誤當成線條而統計進來,可以采用先二值化再去除噪聲的方法。
本實驗中,從攝像機中得到的圖像比較清晰,噪聲很少,所以對其直接處理。
該實驗結果表明該方法是一張實用性較好的方法,而且快速、簡單。
深圳宏力捷推薦服務:PCB設計打樣 | PCB抄板打樣 | PCB打樣&批量生產 | PCBA代工代料