OpenCV中Canny邊緣檢測

2021-09-28 16:40:36 字數 778 閱讀 5656

具體的canny邊緣檢測原理:

1、消除雜訊,使用高斯平滑濾波器卷積降噪

2、計算梯度幅值和方向。利用sobel濾波器。

得到x和y方向的導數gx和gy

計算梯度的幅值和方向:

g = sqrt(gx^2 + gy^2)

a = arctan(gx/gy)

(梯度的方向近似到四個可能角度之一(一般0,45,90,135))

3、非極大值抑制,這一步排除非邊緣畫素,僅僅保留一些細線條。

4、滯後閾值:滯後閾值需要兩個閾值(高閾值和低閾值)

a.如果某乙個畫素位置的幅值超過了高閾值,該畫素被保留為邊緣畫素。

b.如果某一畫素位置的幅值小於低閾值,該畫素被排除。

c.如果幅值在兩個閾值之間,該畫素僅僅連線到乙個高於高閾值的畫素時被保留。

canny推薦的高低閾值比在2:1到3:1之間。

include "opencv2/opencv.hpp"

#include "math.h"

using namespace std;

using namespace cv;

void cannythreshold(int,void*);

mat src,dst,src_gray,detected_edges;

int lowthreshold = 2;

int main(int argc, char *ar**)

void cannythreshold(int,void*)

OpenCV學習筆記(七)之Canny邊緣檢測

老規矩 妹妹鎮樓 灰度轉換 cvtcolor 計算梯度 sobel scharr 非最大訊號抑制 高低閾值輸出二值影象 t1,t2為閾值,凡是高於t2的都保留,凡是低於t1的都丟棄,從高於t2的畫素出發,凡是大於t1且相互連線的都保留。最終得到乙個輸出二值影象。推薦的高低閾值比值為t2 t1 3 1...

OpenCV 3計算機視覺(Canny邊緣檢測)

函式原型 edge cv2.canny image,threshold1,threshold2 edges aperturesize l2gradient 第乙個引數是待處理的原影象該函式會將影象處理成黑白,第二個引數是閾值1,第三個引數是閾值三 例如影象調整中的閾值就像一把尺子,它讓高於這把尺子的...

opencv的Canny邊緣檢測

前言 目標 去噪 邊緣對雜訊敏感,第一步先用高斯濾波器來濾波。尋找影象的密度梯度 對平滑後的影象進行濾波用sobel濾波器來求出x,y方向的導數。梯度方向總是垂直於邊緣 非極大值抑制 在得到梯度的值和方向後,對影象進行全面掃瞄,取出不需要的畫素,這些畫素可能不構成邊緣。對於這一點如果畫素是其梯度方向...