edges detect 邊緣檢測

2021-07-27 04:14:34 字數 1780 閱讀 2203

sober函式

- sober(const inputarray&, const outputarray&, int, int, int, int, double,double,int)

- 舉例:sober(src_gray, grad_x, ddpeth, 1,0,3,scale,delta,border_default);

- 解釋:

- src_gray輸入影象,元素型別為cv_8u

- grad_x輸出影象

- ddepth輸出影象的深度,設定為cv_16s避免外溢

- x_order: x方向求導的階數

- y_order: y方向求導的結束

- scale,delta,border_default使用預設值。(1,0)

- 在x方向求導使用x_order=1;y_order=0;在y方向相反。

- 邊緣檢測

#include "opencv2/imgproc/imgproc.hpp"

#include "opencv2/highgui/highgui.hpp"

#include

#include

using namespace cv;

int main()

gaussianblur( src, src, size(3,3), 0, 0, border_default );

/// 轉換為灰度圖

cvtcolor( src, src_gray, cv_rgb2gray );

/// 建立顯示視窗

namedwindow( window_name, cv_window_autosize );

/// 建立 grad_x 和 grad_y 矩陣

mat grad_x, grad_y;

mat abs_grad_x, abs_grad_y;

/// 求 x方向梯度

sobel( src_gray, grad_x, ddepth, 1, 0, 3, scale, delta, border_default );

convertscaleabs( grad_x, abs_grad_x );

/// 求y方向梯度

sobel( src_gray, grad_y, ddepth, 0, 1, 3, scale, delta, border_default );

convertscaleabs( grad_y, abs_grad_y );

/// 合併梯度(近似)

addweighted( abs_grad_x, 0.5, abs_grad_y, 0.5, 0, grad );

imshow( window_name, grad );

waitkey(0);

return 0;

}

實驗結果

Canny邊緣檢測

1.canny邊緣檢測基本原理 1 圖象邊緣檢測必須滿足兩個條件 一能有效地抑制雜訊 二必須盡量精確確定邊緣的位置。2 根據對訊雜比與定位乘積進行測度,得到最優化逼近運算元。這就是canny邊緣檢測運算元。3 類似與marr log 邊緣檢測方法,也屬於先平滑後求導數的方法。2.canny邊緣檢測演...

Canny邊緣檢測

canny運算元是邊緣檢測運算元中最常用的一種,是公認效能優良的一種運算元,常被其它邊緣檢測運算元作為標準運算元進行優劣分析。canny演算法基本可以分為3個步驟 平滑 梯度計算 基於梯度值及梯度方向的候選點過濾 1 平滑 影象梯度的計算對雜訊很敏感,因此必須首先對其進行低通濾波。在這裡使用5 5的...

Sobel 邊緣檢測

sobel邊緣檢測演算法 索貝爾運算元 sobel operator 主要用作邊緣檢測,在技術上,它是一離散性差分運算元,用來運算影象亮度函式的灰度之近似值。在影象的任何一點使用此運算元,將會產生對應的灰度向量或是其法向量 sobel 卷積因子為 該運算元包含兩組 3x3的矩陣,分別為橫向及縱向,將...