李華琛
摘要:數字圖像邊緣檢測技術是信息科學中近些年來發展最為迅速的學科之一。圖像邊緣是圖像最基本的特征之一,在圖像分割、圖像識別以及其他圖像相關等領域中有著廣泛的應用,其主要圖像處理方法就是精確定位圖像其邊緣,同時利用高斯濾波有效地抑制噪聲。邊緣檢測是圖像處理和計算機視覺中的一個重要分支,并且它也在圖像的分析中有著重要的意義,邊緣檢測的原理是識別圖像中亮度改變較為明顯的點,其本質是采用不同的算子進行邊緣檢測并進行修整。本文就是基于visual studio 2013和opencv通過C++綜合實現編程,分別用不同的算子,例如Laplacian算子、Scharr算子和Canny算子來實現靜態圖像的邊緣檢測,并且在檢測結束時進行算法運行結果的比對,在一些應用實踐中選擇出適合的算法。
關鍵詞:opencv 邊緣檢測 算子
中圖分類號:TG409 文獻標識碼:A 文章編號:1007-9416(2016)11-0040-01
隨著數字計算機和計算機技術的發展和普及,數字圖像處理也迎來了快速發展時期,而數字圖像處理就是利用數字計算機以及其它的硬件設備對圖像信息轉換而獲得電信號進行簡單的數學處理,以便提升圖像的實用性。隨著時代的進步,邊緣檢測的精度和速度都在不斷提高,但是在邊緣較為復雜的情況下,常規的檢測算子無法檢測出所有類型的邊緣;而現今有些產品的要求是對某些較為明顯的輪廓有較高程度的要求,比如說人和景物的輪廓精確識別,其他淺顯的線條可以忽略等等不同的設計要求往往需要不同的算法才能達到目的。故而如今邊緣檢測在某些方向的應用如檢測工業檢工件的邊沿、攝像機人臉輪廓選定等方面仍有巨大的發展空間。
1 邊緣檢測原理
邊緣是指圖像像素進行灰度后階躍變化或類屋頂狀變化的像素集合,它經常存在于目標與背景、目標與目標、基元與基元,以及區域與區域之間。 因此它是圖像處理的首要任務,同樣還是圖像形狀特征的基礎;圖像的其他特征都是由邊緣和區域這些基本特征推導出來的。邊緣具有方向以及幅度兩個特征。如果沿邊緣方向,像素值變化相對平緩;而垂直與邊緣方向,則像素值變化又相對劇烈。而這種程度的劇烈有可能呈現斜坡狀,也可能呈現階躍狀。 邊緣上像素值的一階偏導偏大;二階偏導在邊緣處值接近于零,則結果呈現零交叉。最簡單的邊緣檢測方法是對原始圖像按像素其鄰域構造邊緣算子。因為初始圖像包含噪聲,但是邊緣和噪聲的空間域表現為灰度有明顯的起落;在頻域通常的反應為同是高頻分量,這就給圖像的邊緣檢測帶來了很多麻煩。
2 算子原理和使用流程
對圖像進行邊緣檢測需要達到兩個基本條件:首先能夠有效地消除噪聲;再而準確確定邊緣的位置。
(1)Canny邊緣檢測算子是根據對信噪比與定位乘積進行檢測,從而得到最優化算子。它的實現流程是①平滑圖像,抑制噪聲;②計算梯度方向和幅值;③非極大值抑制;④滯后其閾值。
(2)Laplacian 算子是歐幾里德空間中常用的二階微分算子,它的實現步驟是①對變量進行定義;②使用高斯濾波消除噪聲;③轉換為灰度圖;④使用Laplace函數;⑤計算絕對值,并將結果轉換成8位。
(3)scharr算子在某種程度上來說,更應該算是一個濾波器,而不是算子,它在opencv中主要是配合Sobel算子而存在。它的實現流程與Sobel算法相似,但最后會進行一個有目的的濾波過程。
3 部分程序及分析
Blur(edges3, edges3, 7); // 定義濾波處理后的圖像
cvtColor(frame, edges1, CV_BGR2GRAY); //顏色轉換函數,彩色轉為灰色
Canny(edges1, edges1, 0, 30, 3); //canny算子邊緣檢測,閾值為0,30
Laplacian(src1_gray,dst,CV_16S,3,1,0, BODER_DEFAULT); // Laplacian算子邊緣檢測
Scharr(src,grad_x,CV_16S,1,0,1,0, BORDER_DEFAULT);
convertScaleAbs(grad_x, abs_grad_x);
Scharr(src,grad_y,CV_16S,0,1,1,0, BORDER_DEFAULT); cvtColor(src1, src1_gray, CV_RGB2GRAY);
convertScaleAbs(grad_y,abs_grad_y); // Scharr算子邊緣檢測
Laplacian(src1_gray, dst, CV_16S, 3, 1, 0, BORDER_DEFAULT)。
4 實驗結果
因本實驗的初衷是對對象按不同的算子進行邊緣檢測并進行修整,在試驗過程中發現對人像進行的處理可以達到素描的效果。
程序在樹莓派上運行:四個顯示框圖分別代表了source(原始)圖像、Canny算子、Laplacian 算子、首先對人進行檢測(即實現了美拍效果)選取了2個樣本,如圖1所示。
5 實驗結論(表1)
Canny算子不僅可以進行抗噪處理,還可以維持弱邊緣化的一種算子,在本實驗中改變了邊緣檢測算子對邊緣的敏感性,此種算子對噪聲的敏感性也會相應的改變。因此,Canny算法的抗干擾能力和邊緣定位能力相互矛盾,找到一個恰當的 Canny算子的閾值,可以取得理想的效果。
用scharr算子進行邊緣檢測,相對更加簡單方便,在生產實踐中被大量使用。但是,scharr算子無法將圖像的主體與背景嚴格地區分出來,因此提取的輪廓有時效果沒有其它算法精確。當對提取結果精度要求比較低時,這種檢測方法得到了廣泛的應用。
使用Laplacian算子只需要考慮邊緣的位置而不需對其周圍的象素灰度差值時效果更好。Laplacian算子對一些孤立像素的響應要比對邊緣的響應要效果跟好,一般用于無噪聲的圖像。
不同的算子有著不同的特點和提取效果,算子的評價指標也是基于低錯誤率,高定位性以及其最小響應,在實際工程中,也是利用其不同特點來進行邊緣檢測及圖像處理。
參考文獻
[1]劉瑞禎,于仕琪.OpenCV教程--基礎篇[M].北京航空航天出版社,2008.
[2]陳勝勇,劉盛.基于OpenCV計算機視覺技術實現[M].北京:科學技術出版社,2008.