韩国设计公司网站,c 网站开发项目教程,青州网站建设优化,手工制作灯笼步骤 教程目录
1.可分离滤波的原理
2.可分离滤波函数sepFilter2D()
3.示例代码 1.可分离滤波的原理 可分离滤波的原理基于滤波器的可分离性。对于一个二维滤波器#xff0c;如果它可以表示为水平方向和垂直方向两个一维滤波器的卷积#xff0c;那么它就是可分离的。也就是说#x…
目录
1.可分离滤波的原理
2.可分离滤波函数sepFilter2D()
3.示例代码 1.可分离滤波的原理 可分离滤波的原理基于滤波器的可分离性。对于一个二维滤波器如果它可以表示为水平方向和垂直方向两个一维滤波器的卷积那么它就是可分离的。也就是说一个二维滤波器可以通过两次一维卷积来实现分别在水平和垂直方向进行滤波。 2.可分离滤波函数sepFilter2D() void cv::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具有相同的尺寸、通道数和数据类型ddepth: 输出图像的数据类型(深度)。kernelX:X方向的滤波器kernelY:Y方向的滤波器anchor:内核的基准点(锚点)其默认值为(-1,-1)代表内核基准点位于kernel的中心位置delta: 偏值在计算结果中加上偏值。borderType:像素外推法选择标志。
3.示例代码 展示如何使用可分离滤波在图像上应用高斯滤波
//可分离滤波
void Separable_filtering(Mat image){// 定义滤波器大小和标准差int ksize 3;double sigma 1.0;// 获取水平方向和垂直方向的高斯滤波器cv::Mat kernelX cv::getGaussianKernel(ksize, sigma);cv::Mat kernelY cv::getGaussianKernel(ksize, sigma);// 计算水平方向和垂直方向上的一维滤波器cv::Mat kernelXY kernelX * kernelY.t();// 执行可分离滤波cv::Mat result;cv::sepFilter2D(image, result, -1, kernelX, kernelY);} 在上述示例中cv::getGaussianKernel()函数用于获取高斯滤波器。ksize参数表示滤波器的大小sigmaX和sigmaY参数表示X和Y方向上的标准差。
通过将一维滤波器应用于图像的两个方向并使用cv::sepFilter2D()函数将它们结合起来我们可以实现高效的可分离滤波操作。