<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
影象的邊緣由影象中兩個相鄰的區域之間的畫素集合組成,是指影象中一個區域的結束和另外一個區域的開始。也可以這麼理解,影象邊緣就是影象中灰度值發生空間突變的畫素的集合。梯度方向和幅度是影象邊緣的兩個性質,沿著跟邊緣垂直的的方向,畫素值的變化幅度比較平緩;而沿著與邊緣平行的方向,則畫素值變化幅度變化比較大。於是,根據該變化特性,通常會採用計算一階或者二階導數的方法來描述和檢測影象邊緣。
基於邊緣檢測的影象分割方法的基本思路是首先檢測出影象中的邊緣畫素,然後再把這些邊緣畫素集合連結在一起便組成所要的目標區域邊界。影象中的邊緣可以通過對灰度值求導來檢測確定,然而求導數可以通過計算微分運算元來實現。在數位影像處理領域,微分運算通常被差分計算所近似代替。
在1986年,Canny邊緣檢測運算元首次在論文《A Computational Approach to Edge Detection》中提出,目前,Canny邊緣檢測運算元已廣泛應用於各種影象處理視覺系統。由於它是從不同視覺物件中提取有用的結構資訊,所以了要處理的資料量大大減少。JOHN CANNY總結出,不同視覺系統對邊緣檢測具有較為類似的要求,所以,發現可以採用一種應用意義廣泛的邊緣檢測技術。
JOHN CANNY採用瞭如下步驟設計實現了canny運算元。
(1)消除噪聲。邊緣檢測的演演算法的主要思想採用了影象強度的一階和二階微分運算,但因為導數對噪聲很敏感,所以再求導之前,先對影象源的資料進行平滑預處理再運用邊緣檢測演演算法。一般採用濾波器來改善影象的性噪比。所以Canny運算元前,先通過高斯模板對原始資料進行折積操作來抑制影象的噪聲,再進行邊緣檢測。
(2)sobel梯度計算:平滑處理完,canny運算元利用已有的一階導數sobel微分運算元來計算梯度,
Gx表示水平方向X的掩碼模板,Gy表示垂直方向Y的掩碼模板,採用這兩個模板與影象進行折積操作可得到影象邊緣的梯度幅值和方向分別如式(4)和(5)所示:
梯度方向被歸為垂直,水平,和兩個對角線四類,其方向一般總是垂直於邊界。
(3)對梯度幅值進行非極大值抑制。意思是遍歷整個影象,將某個畫素的灰度值與其梯度方向上前後兩個畫素的灰度值相比,判斷其是否最大,如果不是那麼這個畫素值置為0,即不是邊緣;如下圖5. 1所示 ,每一列箭頭的方向代表步驟二所檢測出的(梯度方向與邊緣垂直),數值表示對應的梯度方向的幅值。經過非極大值抑制處理之後,第一列所表示梯度方向的幅值2、4、3被置為0,第二列的所表示梯度方向的幅值3、5、4被置為0,以此類推,最終白色邊框裡的幅值5、6、7、6、7被當作疑似邊緣畫素點。
(4)使用雙閾值演演算法檢測和連線邊緣。在上一個步驟得到了存在偽邊緣的邊緣集,因為通過單閾值處理選取邊緣的操作比較難, 所以在Canny演演算法採用滯後閾值法減少偽邊緣數量。如下圖5. 1所示:Canny使用了滯後閾值,滯後閾值需要高閾值和低閾值,在進行邊緣確定時依據下面的步驟第一,如果某一畫素位置的幅值超過高閾值,該畫素被保留為邊緣畫素:第二,如果某一畫素位置的幅值小於低閾值,該畫素被排除;第三,如果某一畫素位置的幅值在兩個閾值之間,該畫素僅僅在連線到一個高於高閾值的畫素時被保留。Canny演演算法的雙閾值中, 大部分噪聲被高閾值檢測出去除了,但是也損失了有用的邊緣資訊, 較多的邊緣資訊則被低閾值檢測得到的影象保留著,可取的高與低閾值比在2:1到3:1之間。
圖5. 1非極大值抑制示意圖圖
圖5. 2雙閾值演演算法檢測示意圖
函數原型:
CV_EXPORTS_W void Canny( InputArray image, OutputArray edges, double threshold1, double threshold2, int apertureSize = 3, bool L2gradient = false );
引數說明:
cv::Mat src; src = cv::imread("D:\QtProject\Opencv_Example\canny\canny.jpg", cv::IMREAD_GRAYSCALE); if (src.empty()) { cout << "matTemplate Cannot load image" << endl; return; } cv::imshow("src", src); cv::Mat matCanny; const int lowThreshold = 10; const int maxThreshold = 200; const int kernel_size = 3; cv::Canny(src, matCanny, lowThreshold, maxThreshold, kernel_size); cv::imshow("matCanny", matCanny);
程式執行效果:
到此這篇關於opencv canny邊緣檢測演演算法詳解的文章就介紹到這了,更多相關opencv canny邊緣檢測演演算法 內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45