新聞中心
這篇文章主要為大家詳細(xì)介紹了OpenCV實(shí)現(xiàn)可分離濾波,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

網(wǎng)站設(shè)計(jì)制作過(guò)程拒絕使用模板建站;使用PHP+MYSQL原生開(kāi)發(fā)可交付網(wǎng)站源代碼;符合網(wǎng)站優(yōu)化排名的后臺(tái)管理系統(tǒng);成都做網(wǎng)站、網(wǎng)站制作收費(fèi)合理;免費(fèi)進(jìn)行網(wǎng)站備案等企業(yè)網(wǎng)站建設(shè)一條龍服務(wù).我們是一家持續(xù)穩(wěn)定運(yùn)營(yíng)了十年的成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司。
自定義濾波
無(wú)論是圖像卷積還是濾波,在原圖像上移動(dòng)濾波器的過(guò)程中每一次的計(jì)算結(jié)果都不會(huì)影響到后面過(guò)程的計(jì)算結(jié)果,因此圖像濾波是一個(gè)并行的算法,在可以提供并行計(jì)算的處理器中可以極大的加快圖像濾波的處理速度。
圖像濾波還具有可分離性
先對(duì)X(Y)方向?yàn)V波,再對(duì)Y(X)方向?yàn)V波的結(jié)果與將兩個(gè)方向的濾波器聯(lián)合后整體濾波的結(jié)果相同。兩個(gè)方向的濾波器的聯(lián)合就是將兩個(gè)方向的濾波器相乘,得到一個(gè)矩形的濾波器
詳細(xì)介紹OpenCV實(shí)現(xiàn)可分離濾波詳細(xì)介紹OpenCV實(shí)現(xiàn)可分離濾波
void filter2D( InputArray src, OutputArray dst, int ddepth,
InputArray kernel, Point anchor = Point(-1,-1),
double delta = 0, int borderType = BORDER_DEFAULT );
-
src:待濾波圖像
-
dst:輸出圖像,與輸入圖像src具有相同的尺寸、通道數(shù)和數(shù)據(jù)類型。
-
ddepth:輸出圖像的數(shù)據(jù)類型(深度),根據(jù)輸入圖像的數(shù)據(jù)類型不同擁有不同的取值范圍,具體的取值范圍在表5-1給出,當(dāng)賦值為-1時(shí),輸出圖像的數(shù)據(jù)類型自動(dòng)選擇。
-
kernel:濾波器。
-
anchor:內(nèi)核的基準(zhǔn)點(diǎn)(錨點(diǎn)),其默認(rèn)值為(-1,-1)代表內(nèi)核基準(zhǔn)點(diǎn)位于kernel的中心位置。基準(zhǔn)點(diǎn)即卷積核中與進(jìn)行處理的像素點(diǎn)重合的點(diǎn),其位置必須在卷積核的內(nèi)部。
-
delta:偏值,在計(jì)算結(jié)果中加上偏值。
-
borderType:像素外推法選擇標(biāo)志,取值范圍在表3-5中給出。默認(rèn)參數(shù)為BORDER_DEFAULT,表示不包含邊界值倒序填充。
void sepFilter2D( InputArray src, OutputArray dst, int ddepth,
InputArray kernelX, InputArray kernelY,
Point anchor = Point(-1,-1),
double delta = 0, int borderType = BORDER_DEFAULT );
-
src:待濾波圖像
-
dst:輸出圖像,與輸入圖像src具有相同的尺寸、通道數(shù)和數(shù)據(jù)類型。
-
ddepth:輸出圖像的數(shù)據(jù)類型(深度),根據(jù)輸入圖像的數(shù)據(jù)類型不同擁有不同的取值范圍,具體的取值范圍在表5-1給出,當(dāng)賦值為-1時(shí),輸出圖像的數(shù)據(jù)類型自動(dòng)選擇。
-
kernelX:X方向的濾波器,
-
kernelY:Y方向的濾波器。
-
anchor:內(nèi)核的基準(zhǔn)點(diǎn)(錨點(diǎn)),其默認(rèn)值為(-1,-1)代表內(nèi)核基準(zhǔn)點(diǎn)位于kernel的中心位置?;鶞?zhǔn)點(diǎn)即卷積核中與進(jìn)行處理的像素點(diǎn)重合的點(diǎn),其位置必須在卷積核的內(nèi)部。
-
delta:偏值,在計(jì)算結(jié)果中加上偏值。
-
borderType:像素外推法選擇標(biāo)志,取值范圍在表3-5中給出。默認(rèn)參數(shù)為BORDER_DEFAULT,表示不包含邊界值倒序填充。
簡(jiǎn)單示例
//
// Created by smallflyfly on 2021/6/15.
//
#include "opencv2/highgui.hpp"
#include "opencv2/opencv.hpp"
#include
using namespace std;
using namespace cv;
int main() {
float points[] = {
1, 2, 3, 4, 5,
6, 7, 8, 9, 10,
11, 12, 13, 14, 15,
16, 17, 18, 19, 20,
21, 22, 23, 24, 25
};
Mat data(5, 5, CV_32FC1, points);
// 驗(yàn)證高斯濾波器可分離
Mat gaussX = getGaussianKernel(3, 1);
cout "######################################" "test.jpg");
resize(im, im, Size(0, 0), 0.5, 0.5);
Mat imX, imY, imXY, imSepXY;
filter2D(im, imX, -1, b);
filter2D(imX, imXY, -1, a);
sepFilter2D(im, imSepXY, -1, a, b);
imshow("imXY", imXY);
imshow("imSepXY", imSepXY);
waitKey(0);
destroyAllWindows();
return 0;
}
分享題目:通過(guò)OpenCV實(shí)現(xiàn)可分離濾波
當(dāng)前URL:http://www.dlmjj.cn/article/djisich.html


咨詢
建站咨詢
