opencv_自定义线性滤波

卷积得概念
  • 卷积是图像处理中一个操作,是kernel在图像的每个像素上的操作。

  • Kernel本质上一个固定大小的矩阵数组,其中中心点称为锚点(anchor point)
    在这里插入图片描述

卷积如何工作
  • 把kernel 放到像素数组之上,求锚点周围覆盖的像素乘积之和(包括锚点),用来替换锚点副高下像素点值称为卷积处理。
  • 卷积作用:模糊图像,提取边缘,图像锐化
  • 数学表达式:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 常见算子:
    在这里插入图片描述
    在这里插入图片描述
自定义卷积模糊
filter2D方法filter2D(
Mat src,//输入图像
Mat dst,//模糊图像
int depth,//图像深度32/8
Mat kernel,//卷积核/模板
Point anchor,//锚点位置
double delta//计算出来的像素+delta)
kernel是可以自定义的卷积核

在这里插入图片描述

代码
#include<opencv2/opencv.hpp>
#include<iostream>
#include<math.h>
using namespace cv;
int main(int srgc,char** argv){
	Mat src,dst;
	int ksize=0;

	src=imread("E:/opencv/zzz/hbz.jpg");
	if(!src.data){
		printf("could not load image...\n");
		return -1;
	}
	char INPUT_WIN[]="input image";
	//char OUTPUT_WIN[]="Robert X";
	//char OUTPUT_WIN[]="Sobel X";
	char OUTPUT_WIN[]="Custom Blur Filter Result";
	namedWindow(INPUT_WIN,CV_WINDOW_AUTOSIZE);
	//namedWindow(OUTPUT_WIN,CV_WINDOW_AUTOSIZE);

	imshow(INPUT_WIN,src);

	/*
	//x方向
	//Robert X 方向
	Mat kernel_x=(Mat_<int>(2,2)<<1,0,0,-1);
	filter2D(src,dst,-1,kernel_x,Point(-1,-1),0.0);
	//Robert Y 方向
	Mat ying;
	Mat kernel_y=(Mat_<int>(2,2)<<0,1,-1,0);
	filter2D(src,ying,-1,kernel_y,Point(-1,1),0.0);*/

	//Sobel X 方向
	/*
	Mat kernel_x=(Mat_<int>(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 ying;
	Mat kernel_y=(Mat_<int>(3,3)<<-1,-2,-1,0,0,0,1,2,1);
	filter2D(src,ying,-1,kernel_y,Point(-1,1),0.0);*/

	//拉普拉斯算子
	/*
	Mat kernel_y=(Mat_<int>(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){
		waitKey(500);
		if((char)c==27){//ESC
			break;
		}
		ksize= (index%8)*2+1;
		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(OUTPUT_WIN,dst);
	//imshow("Robert Y",dst);

	//waitKey(0);
	return 0;
}

笔记来源此教程的记录:https://www.bilibili.com/video/BV1Q54y1z7kz?p=16

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值