最近由於項目需要,需要做一些邊緣檢測相關的工作。於是把最近幾天的學習內容做一下整理。
①.基本原理
在圖像處理和計算機視覺中,邊緣檢測被廣泛使用。其目的在於標識出數字圖像中亮點變化明顯的點,進而
提取出有用的信息。通常情況下我們可以將數字圖像表示為二位數組,而概二位數組中每個元素的值則對應
着圖像各個像素點的灰度值。而邊緣檢測的根本原理是通過算法將該數組中各個數據鄰域內數值變化大的數據
元素進行突出顯示,而鄰域內變化不大的相鄰數據元素數據元素進行屏蔽或降低其灰度顯示。
不能看出其邊緣檢測的很像即為如何找出一種算法來突出這種鄰域內的數值變化率。
②.邊緣檢測算法有哪些
不難看出,邊緣檢測算法的核心是突出圖像中變化率,無論目標與目標,還是目標與背景之間。這於導數的
概念離奇的詳盡。而對於離散的數字圖像中,我們可以使用與求導類比的差分運算來提取圖像邊緣。基於此原
理應用於二維數組中我們可以求出該二維數組的梯度模矩陣。該梯度模矩陣就能比較清楚的表示出圖像矩陣的
邊緣。當然也可以設定一個閾值,當梯度模矩陣中大於閾值的元素則保留,而低於閾值的元素則設為黑度。
根據梯度模矩陣的不同求法,邊緣檢測算法可以分為兩大類:一階導數方式(梯度算子)和二階導數方式
而一階導數方式中幾種常見的邊緣算子為:Robert,Sobel,PreWitt,kvisch.
而二階導數方式常見的有:laplace算子
③.邊緣檢測在圖像處理中的一般步驟
其中第一步為濾波,因為圖像中存在噪聲所以需要先進行濾波。然而數字圖像中的噪聲大多和邊緣信號一
樣占據高頻段,所以如果濾波過於完全很可能連同邊緣一起濾除,使得濾波后的圖像變得模糊,無法提取有
效的邊緣。而第二步為我們通常所說的利用邊緣算子對邊緣進行增強。這一步的結果便可直接當做邊緣檢測
的結果。然而大多數邊緣檢測還需要進行第三部,設定閾值,對超過閾值的像素點進行突出,對低於閾值的像
素點進行屏蔽。
④.matlab邊緣處理示例。
程序代碼如下:
程序結果如下:
本文對邊緣檢測做了簡單的概述,也是對近兩天學習的總結。通過此文相信大家會對邊緣檢測有了
大概的了解,通過最后一個示例程序使讀者對各種邊緣處理的印象更加直觀。文中難免出現紕漏還望
讀者批評指正,最后共同進步。