宋浩然,張哲,許圳淇
(上海理工大學(xué),上海 200093)
目前工業(yè)生產(chǎn)需求對(duì)各種工件和零件的測(cè)量精度要求越來(lái)越高,這對(duì)工業(yè)零件的輪廓檢測(cè)和測(cè)量提出了更高的要求。但受到檢測(cè)設(shè)備成本的限制,難以有效提升檢測(cè)精度。因此,不僅需要使用圖像的像素進(jìn)行邊緣檢測(cè),還需要使用亞像素對(duì)圖像進(jìn)行處理。亞像素邊緣提取是一種比傳統(tǒng)像素邊緣提取更準(zhǔn)確的方法,如果采用亞像素技術(shù)將精度提高到0.1像素,相當(dāng)于將圖像系統(tǒng)分析分辨率提高10倍。
亞像素細(xì)分算法可以運(yùn)用在刀調(diào)儀上[1],該算法先使用亞像素對(duì)圖像進(jìn)行處理,然后設(shè)定一個(gè)閾值,通過(guò)計(jì)算邊緣點(diǎn)的坐標(biāo)來(lái)確定邊緣。一般的閾值在0~255之間,該算法選取的閾值在30~100之間。但是該算法比較簡(jiǎn)單,容錯(cuò)率低,使用的時(shí)候需要調(diào)參,比較煩瑣,應(yīng)用范圍有限。當(dāng)閾值發(fā)生變化的時(shí)候,計(jì)算的邊緣點(diǎn)也會(huì)隨之變化。
基于sigmoid函數(shù)的亞像素邊緣檢測(cè)算法需要sigmoid函數(shù)在x軸和y軸的偏移量、邊緣傾斜度等參量。該算法參量過(guò)多,涉及求導(dǎo),計(jì)算微分方程等步驟。雖然能達(dá)到一定的精度,但是其過(guò)程煩瑣,不易實(shí)現(xiàn)[2]。Sigmoid函數(shù)主要用于神經(jīng)網(wǎng)絡(luò)的激活函數(shù),但是在亞像素邊緣檢測(cè)方面有欠缺性。
筆者建立了亞像素邊緣檢測(cè)模型,提出了亞像素圖像下的Canny算子邊緣檢測(cè)模型。假設(shè)原始圖像為1000個(gè)像素,如果每個(gè)像素?cái)U(kuò)展為10個(gè)像素,則該像素圖像與其對(duì)應(yīng)有10000個(gè)像素,所以在圖像處理過(guò)程中要提高精度。筆者提出了一種雙線性插值的方法,將原始圖像的像素點(diǎn)放大到原始圖像的10倍,得到一個(gè)亞像素圖像。筆者以亞像素圖像為基礎(chǔ),對(duì)圖像進(jìn)行濾波和二值化,然后使用Canny算子檢測(cè)圖像的邊緣,最后利用邊緣檢測(cè)得到的圖像梯度優(yōu)化圖像的輪廓。為了獲得精度更高的亞像素圖像,筆者采用雙線性插值法對(duì)圖像進(jìn)行擴(kuò)展,將圖像的像素點(diǎn)擴(kuò)大到原來(lái)的100倍。在邊緣檢測(cè)完成后,為了得到有序的邊緣輪廓,筆者提出了一種基于連通域檢測(cè)算法思想的散點(diǎn)輪廓排序方法。該方法基于連通域的檢測(cè)和堆棧進(jìn)出操作,可以有效地對(duì)二值圖像中連續(xù)無(wú)序的散點(diǎn)進(jìn)行排序。此外,散點(diǎn)輪廓排序算法還可用于區(qū)分不連通的輪廓曲線,分別計(jì)算它們?cè)谙袼刈鴺?biāo)系中的周長(zhǎng)。
亞像素邊緣定位和檢測(cè)的前提是對(duì)原始圖像進(jìn)行擴(kuò)展得到亞像素圖像,因此筆者選擇插值方法得到亞像素圖像。最常見(jiàn)的插值算法是樣條插值[3]。該方法的原理是在像素間構(gòu)造平滑過(guò)渡樣條曲線,以補(bǔ)充像素間準(zhǔn)確的圖像信息。該方法的缺點(diǎn)是算法復(fù)雜度高,運(yùn)行速度不能滿足大規(guī)模圖像處理的要求。與樣條插補(bǔ)相比,直線插補(bǔ)具有明顯的速度優(yōu)勢(shì)。因此,筆者在線性插值中使用雙線性插值方法對(duì)圖像進(jìn)行插值。在數(shù)學(xué)上,雙線性插值是具有兩個(gè)變量的插值函數(shù)的線性插值擴(kuò)展,其核心思想是分別在兩個(gè)方向上進(jìn)行線性插值[4]。進(jìn)行雙線性插值,首先在圖像的x方向進(jìn)行線性插值,
然后在圖像的y方向進(jìn)行線性插值,
基于上述,雙線性插值結(jié)果如下。
其中,f是一個(gè)未知函數(shù),P=(x,y)是一個(gè)關(guān)于未知函數(shù)值的函數(shù),并且有四個(gè)已知函數(shù)值點(diǎn),如圖1所示,點(diǎn)R1和R2的函數(shù)值可以通過(guò)x方向的線性插值得到,然后在R1和R2的基礎(chǔ)上通過(guò)y方向的線性插值得到點(diǎn)P的函數(shù)值。
圖1 已知數(shù)據(jù)點(diǎn)和待插值數(shù)據(jù)點(diǎn)
邊緣檢測(cè)是提取輪廓并計(jì)算輪廓像素長(zhǎng)度的過(guò)程中最重要的環(huán)節(jié)[5],也是亞像素邊緣檢測(cè)模型和算法的核心。筆者設(shè)計(jì)的邊緣檢測(cè)算法基于Canny邊緣檢測(cè),改進(jìn)了檢測(cè)后得到的輪廓像素?zé)o序、不連續(xù)的問(wèn)題。在像素圖像下,常見(jiàn)的邊緣檢測(cè)算子有Sobel、Prewitt、Roberts、Canny、Marr-Hildreth等[6],其中比較高級(jí)的算子有Canny算子和Marr-Hildreth算子。經(jīng)過(guò)比較,筆者選擇Canny算子作為亞像素邊緣檢測(cè)模型和算法的基礎(chǔ)。Canny算子是由澳大利亞計(jì)算機(jī)科學(xué)家John F.Canny開(kāi)發(fā)的一種多級(jí)邊緣檢測(cè)算法。該算法可以盡可能地標(biāo)記圖像中的實(shí)際邊緣,實(shí)現(xiàn)對(duì)噪聲的最小響應(yīng)。使用Canny算子進(jìn)行邊緣檢測(cè)的基本步驟如下:
(1)高斯濾波;
(2)計(jì)算梯度圖像和角度圖像;
(3)梯度圖像非極大抑制;
(4)邊緣連接使用雙閾值。
Canny算子邊緣檢測(cè)是二值圖像,存在一定的邊緣不連續(xù)性[7]。本文提出的邊緣檢測(cè)模型在Canny算子邊緣檢測(cè)的基礎(chǔ)上進(jìn)行了改進(jìn)。本文涉及的方法是計(jì)算圖像的梯度函數(shù)。假設(shè)3×3圖像矩陣的中心坐標(biāo)為(xi,yi),其他點(diǎn)的坐標(biāo)如圖2所示。
圖2 像素坐標(biāo)關(guān)系
該圖像是二值圖像。假設(shè)其像素函數(shù)為I,則該函數(shù)的梯度函數(shù)與像素函數(shù)的關(guān)系為:
連通域搜索算法用于檢測(cè)相同的連通輪廓數(shù)據(jù)點(diǎn),并將它們分開(kāi)計(jì)算每個(gè)輪廓的像素長(zhǎng)度,最后求和得到整個(gè)輪廓圖像的周長(zhǎng)。連通域搜索算法是一種在二值圖像中尋找黑色或白色連通區(qū)域的方法,分為4連通和8連通[8]。8連通是指在一個(gè)像素的8個(gè)相鄰像素中,如果一個(gè)像素與中心像素具有相同的像素值,則認(rèn)為該像素與中心像素連通。4連通的原理與8連通相同,4連通的搜索范圍只是中心像素的上、下、左、右像素。筆者采用8連通方法,將邊緣檢測(cè)后得到的二值輪廓圖像作為處理目標(biāo)?;静襟E如下:遍歷二值圖像,找到像素值為1并標(biāo)記為I的任意像素;在像素點(diǎn)8的鄰域檢測(cè)到相同的像素點(diǎn),將其視為I+1點(diǎn),并標(biāo)記其訪問(wèn);遞歸搜索像素點(diǎn)I+1的8個(gè)鄰域中的同一個(gè)像素點(diǎn),直到周圍沒(méi)有未訪問(wèn)的標(biāo)記,所有標(biāo)記的像素形成的曲線就是輪廓曲線;在等高線中,找到等高線的端點(diǎn)是8個(gè)連通鄰域中只有一個(gè)邊標(biāo)的點(diǎn);將輪廓點(diǎn)排序,以任意端點(diǎn)為起點(diǎn),即可得到有序輪廓。
與獲取有序輪廓曲線的方法類似,筆者采用的輪廓檢測(cè)算法也是基于8連通方法。在檢測(cè)到連接的像素后,將它們壓入堆棧。檢測(cè)到整個(gè)輪廓后,依次訪問(wèn)堆棧中的像素,逐點(diǎn)計(jì)算距離,得到像素坐標(biāo)系中輪廓的周長(zhǎng)。
通過(guò)插值在每?jī)牲c(diǎn)之間插入10個(gè)像素,使圖像的X軸和Y軸分辨率分別提高10倍。圖3顯示了原始圖像和擴(kuò)展亞像素圖像之間的比較。
圖3 像素圖像與亞像素圖像的比較
通過(guò)函數(shù)的梯度函數(shù)與像素函數(shù)得到的矩陣就是二值邊緣圖像的像素矩陣。筆者使用上述算法對(duì)三幅圖像進(jìn)行卷積處理,得到三幅圖像的邊緣圖像。處理結(jié)果如圖4所示:
圖4 原始圖像上不同顏色的輪廓
表1、表2和表3包含三張圖片的輪廓點(diǎn)數(shù)和輪廓的長(zhǎng)度。下表中的長(zhǎng)度單位均為像素。
表1 邊緣輪廓數(shù)據(jù)輸出格式
表2 邊緣輪廓數(shù)據(jù)輸出格式
表3 邊緣輪廓數(shù)據(jù)輸出格式
經(jīng)測(cè)試,該模型實(shí)現(xiàn)的邊緣檢測(cè)精度是Canny算子的10倍,電子測(cè)量精度也高于傳統(tǒng)電子測(cè)量方法。
該模型精度比Canny算子高,而且消除了光線和零件毛刺對(duì)圖像處理的影響??蓱?yīng)用于工廠各種零件的測(cè)量、高精度邊緣提取和圓角半徑測(cè)量、激光切割測(cè)量等一系列應(yīng)用場(chǎng)景,且受環(huán)境影響小,魯棒性高。