基於二階微分的邊緣檢測方法

2021-06-06 15:47:42 字數 1193 閱讀 3960

兩種laplacian模板(附件中)

gauss-lanlancian運算元(附件中)

laplacian 運算元是二階導數邊緣運算元,考察的是3*3鄰域,上圖是兩種比較常用的模板,演算法簡述如下:

,遍歷影象(除去邊緣,防止越界),對每個畫素做laplancian模板卷積運算,注意是只做其中的一種模板運算,並不是兩個。

,複製到目標影象,結束。

gauss-laplacian考察的是5*5的鄰域,檢測的同時,引入了濾波,是雜訊得以平滑,上圖是一種常用的運算元,演算法簡述。

,遍歷影象(除去邊緣,防止越界),對每個畫素做gauss -laplancian模板卷積運算。

,複製到目標影象,結束。

canny邊緣檢測是非常重要的一種邊緣檢測演算法,主要過程如下:

,用高斯濾波器平滑影象。

已經學習過,根據高斯函式,構造高斯模板,進行濾波,不在贅述。

,用一階偏導的有限差分來計算梯度的幅值方向

其中,phi 表示是幅值,theta 是方向,用影象副本進行儲存。

,對梯度幅值進行非極大值抑制;

為確定邊緣,必須保留區域性梯度最大的點,而抑制非極大值(nms)。

解決辦法是,利用梯度的方向:

已經求出theta 的值,梯度的方向用於非極大值的抑制,將梯度角離散化到0,1,2,3中的乙個(通過線性對映),採用近似的演算法。知道了梯度角,也就知道了梯度線方向。

鄰域的中心畫素m與沿著梯度線的兩個畫素相比。如果m的梯度值不比沿梯度線的兩個相鄰畫素梯度值大,則令m=0。

,用雙閾值演算法檢測和連線邊緣。

減少假邊緣段數量的典型方法是對n[i,j]使用乙個閾值。將低於閾值的所有值賦零值。但問題是如何選取閾值?

解決方法

雙閾值演算法。雙閾值演算法對非極大值抑制圖象作用兩個閾值τ1和τ2,且2τ1≈τ2,從而可以得到兩個閾值邊緣圖象n1[i,j]和n2[i,j]。由於n2[i,j]使用高閾值得到,因而含有很少的假邊緣,但有間斷(不閉合)。雙閾值法要在n2[i,j]中把邊緣連線成輪廓,當到達輪廓的端點時,該演算法就在n1[i,j]的8鄰點位置尋找可以連線到輪廓上的邊緣,這樣,演算法不斷地在n1[i,j]中收集邊緣,直到將n2[i,j]連線起來為止。

二階線性微分器的實現

二階線性微分器的實現 1.經典微分器 y v t v t t t在間隔時間 t很小時,對雜訊有放大作用,實際無法應用到任務中。2.二階線性微分器 3.c程式驗證 include include include math.h include stdlib.h define ts double 0.01...

一階微分邊緣檢測運算元

l運算元的原理 roberts運算元 sobel 運算元和prewitt 運算元是三種常用微分邊緣檢測運算元 5 這三個運算元都以一階導數為基礎,先通過合適的微分運算元計算出影象的梯度矩陣,再對梯度矩陣進行二值化從而得到影象的邊緣。這三種演算法的原理如下,其中i為影象矩陣,g i,j 為最終的梯度矩...

特殊的二階魔方

時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述魔方大家應該都玩過。現在有乙個特殊的二階魔方,它只有一面是白色,其餘五個面全是黑色。玩這個魔方當然也有特殊的規則,玩家只能通過六種方式去改變它,底層向左轉一格 稱為dl 底層向右轉一格 稱為dr 右側向上轉一格 稱為ru 右側向...