首页 技术 正文
技术 2022年11月11日
0 收藏 502 点赞 3,221 浏览 1415 个字

对图像进行卷积是图像处理的基本操作,最近在研究图像滤波,经常要用到自定义卷积,所以实现了一下

 #include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/highgui/highgui.hpp" using namespace cv; Mat get_blur_kernel(int kernel_size);//获得归一化滤波的卷积核 int main(int argc, char ** argv)
{
Mat src, dst;
Point anchor;
double delta;
int ddepth;
int kernel_size = ;
// 生成一个掩模核 大小为kernel_size*kernel_size,这里我们用归一化块滤波的卷积核做示例
Mat kernel = get_blur_kernel(kernel_size);
// 载入一张图片
src = imread("a.jpg");
if (!src.data)
return -; // 创建窗口
imshow("before",src);
waitKey();
// 初始化滤波器参数
anchor = Point(-, -);
delta = ;
ddepth = -;
//将核设置好之后,使用函数 filter2D 就可以生成滤波器:
filter2D(src, dst, ddepth, kernel, anchor, delta, BORDER_DEFAULT); imshow("after", dst);
waitKey();
return ;
} //生成归一化滤波的卷积核,通过对kernel.ptr(i)[j]的操作来进行
Mat get_blur_kernel(int kernel_size)
{
Mat kernel = (Mat_<float>(kernel_size, kernel_size));
for (int i = ; i < kernel_size; i++)
{
for (int j = ; j < kernel_size; j++)
kernel.ptr<float>(i)[j] = 1.0 / (kernel_size*kernel_size);
}
return kernel;
}

卷积核kernel其实也是一个Mat对象,我们可以通过kernel.ptr(i)[j]实现对矩阵元素的直接操作,

将核设置好之后,使用opencv提供的函数 filter2D 就可以生成滤波器:

filter2D(src, dst, ddepth, kernel, anchor, delta, BORDER_DEFAULT);
其中各参数含义如下:

src : 源图像
dst : 目标图像
ddepth : dst 的深度。若为负值(如 – 1 ),则表示其深度与源图像相等。
kernel : 用来遍历图像的核
anchor : 核的锚点的相对位置,其中心点默认为(-1, -1) 。
delta : 在卷积过程中,该值会加到每个像素上。默认情况下,这个值为 0 。
BORDER_DEFAULT : 这里我们保持其默认值,更多细节将在其他教程中详解

只需改变卷积核,我们就可以使用类似的方法创造自定义滤波了。

作者: Elliott Zheng

出处: http://www.cnblogs.com/elliottzheng/p/6616869.htmlp/6664218.html>

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(elliott.zheng@foxmail.com)咨询.

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,083
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,558
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,407
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,180
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,817
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,900