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的矩陣,分別為橫向及縱向,將...