opencv 自定義線性濾波

2021-10-05 06:55:44 字數 1828 閱讀 9084

卷積概念

卷積是影象處理的乙個操作,是依據kernel對影象每個畫素點進行操作,kernel本質上是乙個固定大小的矩陣陣列,其中心為錨點。把kernel放在畫素的陣列之上,求錨點周圍覆蓋的畫素乘積之和(包括錨點),用其來替換錨點下的畫素值。稱之為卷積操作。公式如圖所示。

依次對影象進行該操作。

常見運算元有robert運算元、sobel運算元、拉普拉斯運算元。

自定義運算元

**效果是影象線性模糊。

#include

#include

#include

using

namespace cv;

intmain

(int argc,

char

** ar**)

char input_win=

"input image"

;char output_win=

"custom blur filter result"

;namedwindow

(input_win, cv_window_autosize)

;namedwindow

(output_win, cv_window_autosize)

;imshow

(input_win, src)

;// sobel x

// mat kernel_x = (mat_(3, 3) << -1, 0, 1, -2,0,2,-1,0,1);

// filter2d(src, dst, -1, kernel_x, point(-1, -1), 0.0);

// sobel y

// mat yimg;

// mat kernel_y = (mat_(3, 3) << -1, -2, -1, 0,0,0, 1,2,1);

// filter2d(src, yimg, -1, kernel_y, point(-1, -1), 0.0);

// 拉普拉斯運算元

//mat kernel_y = (mat_(3, 3) << 0, -1, 0, -1, 4, -1, 0, -1, 0);

//filter2d(src, dst, -1, kernel_y, point(-1, -1), 0.0);

int c =0;

int index =0;

while

(true

) ksize =5+

(index %8)

*2; mat kernel = mat::

ones

(size

(ksize, ksize)

, cv_32f)/(

float

)(ksize * ksize)

;filter2d

(src, dst,-1

, kernel,

point(-

1,-1

)); index++

;imshow

(output_win, dst);}

// imshow("sobel y", yimg);

return0;

}

opencv 自定義線性濾波

自定義線性濾波 效果 在學習自定義線性濾波前,需要了解卷積的相關概念 影象中的卷積 最常見的運算元 在邊緣檢測中經常用到,是canny邊緣檢測中重要的一步,通過sobel運算元得到梯度 銳化的掩膜中間是5,拉普拉斯運算元中間是4 拉普拉斯運算元和sobel運算元被用來尋找梯度 尋找影象的邊緣 和掩膜...

opencv 之自定義線性濾波

通過api進行濾波處理,濾波演算法基本固定,靈活性不大,得到的效果只能在一定範圍內進行動態調整。例如高斯模糊 均值模糊等利用的濾波演算法 影象處理中最基本的就是卷積處理,利用運算元在不停的移動計算產生我們想要的目的影象。自定義濾波演算法的首要做法就是定義運算元 卷積核 常見的運算元 robert運算...

open cv常見運算元與自定義線性濾波

卷積和卷積如何工作,這個是知道的,卷積的作用就是模糊影象 提取邊緣,銳化影象。常見的卷積核 運算元 有robert運算元,sobel運算元,拉普拉斯運算元,前兩個運算元是分x方向和y方向的,而拉普拉斯運算元是提取整體影象的邊緣。卷積概念 卷積是影象處理中乙個操作 是kermel 卷積核 在影象的每個...