卷积滤波核的设计

转载自:https://blog.csdn.net/xue_csdn/article/details/99077718

参考:https://www.cnblogs.com/zongfa/p/9130167.html

卷积核就是一个二维mxm矩阵。二维图像与二维矩阵卷积之后的结果,就实现了对图像的滤波。

卷积核一般有以下一些规则:

  • m的大小应该是奇数,这样它才有一个中心,例如3x3,5x5或者7x7。有中心了,也有了半径的称呼,例如5x5大小的核的半径就是2。
  • 矩阵所有元素之和一般等于1。如果和大于1,那么滤波后的图像就会比原图像更亮,反之,如果小于1,那么得到的图像就会变暗。如果和为0,图像不会变黑,但也会非常暗。
  • 对于滤波后的结构,可能会出现负数或者大于255的数值。对这种情况,我们将他们直接截断到0和255之间即可。对于负数,也可以取绝对值。这与代码中参数设置有关。

上面说到,对图像的滤波处理就是对图像应用一个小小的卷积核。卷积核的内部结构不同,图像的处理效果也就完全不同。

1. 与原图一样的效果

卷积核:
在这里插入图片描述
得到的图像和原图是一样的。因为只有中心点的值是1。邻域点的权值都是0,对滤波后的取值没有任何影响。

2. 图像锐化

图像的锐化和边缘检测很像,首先找到边缘,然后把边缘加到原来的图像上面,这样就强化了图像的边缘。也就是在边缘检测滤波器的基础上,再在中心的位置加1,这样滤波后的图像就会和原始的图像具有同样的亮度了,但是会更加锐利。锐化滤波器实际上就是计算当前点和周围点的差别,然后将这个差别加到原来的位置上。
在这里插入图片描述
下边的滤波器更加强调边缘:
在这里插入图片描述
3. 边缘检测

找水平边缘(0度):
在这里插入图片描述
找垂直边缘(90度):
在这里插入图片描述
找45度边缘:
在这里插入图片描述
找135度边缘:
在这里插入图片描述
4. 浮雕效果

浮雕滤波器可以给图像一种3D阴影的效果。只要将中心一边的像素减去另一边的像素就可以了。这时候,像素值有可能是负数,我们将负数当成阴影,将正数当成光,然后我们对结果图像加上128的偏移。这时候,图像大部分就变成灰色了。

45度浮雕效果:
在这里插入图片描述
增大滤波器,得到更夸张的效果:
在这里插入图片描述
5. 运动模糊

135度角的模糊,
在这里插入图片描述
均值模糊:
在这里插入图片描述
自定义内核对图像做卷积:

C++:

#include "stdafx.h"
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
 
int main()
{
	//system("color 02");
	//读取原图
	cv::Mat src = cv::imread("xxxxxxxxxx.jpg");//图像路径
	//自定义内核
	cv::Mat kernel = (cv::Mat_<float>(3, 3) << 1, 1, 1,
				                1, -7, 1,	
				                1, 1, 1);
	cv::Mat dst;
	//卷积操作
	cv::filter2D(src, dst, src.depth(), kernel);
 
	cv::namedWindow("dst", CV_WINDOW_NORMAL);
	cv::imshow("dst", dst);
	cv::waitKey();
 
    return 0;
}

Python:

import cv2
import numpy as np
img = cv2.imread('1-test.jpg',cv2.IMREAD_GRAYSCALE) #提取图像灰度值

kernel = np.array(([-1,-1,-1],[-1,8,-1],[-1,-1,-1])) #定义核
result = cv.filter2D(img,-1,kernel)
cv2.imshow('result.jpg', result)
cv2.waitKey()

  • 1
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
对于一幅图像进行不同的滤波操作可以得到不同的效果,以下是常用的几种滤波方法: 1. 均值滤波:将每个像素点周围的像素值取平均值作为该像素点的值。这种方法能够有效地去除噪声,但也会导致图像模糊。 2. 方框滤波:与均值滤波类似,但是采用的是加权平均值,即将周围像素的值乘以一个权重系数再取平均值。这种方法能够保留更多的图像细节,但也会导致一定程度的模糊。 3. 高斯滤波:将每个像素点周围的像素值按照高斯分布进行加权平均,使得距离越近的像素权重越大,距离越远的像素权重越小。这种方法能够在去除噪声的同时保留更多的图像细节,且不会导致明显的模糊。 4. 中值滤波:将每个像素点周围的像素值排序后取中间值作为该像素点的值。这种方法能够有效地去除椒盐噪声等随机噪声,但是会导致一定程度的图像模糊。 5. 双边滤波:在高斯滤波的基础上,加入一个距离和像素值相似度的权重系数,使得处理过程对边缘和纹理等细节信息更加保护,能够有效地去除噪声同时保留图像细节。 6. 2D卷积滤波:将一个卷积核与图像进行卷积,得到新的像素点值。卷积核中的数值可以根据需要进行设计,可以实现不同的滤波效果。常见的卷积核包括Sobel、Prewitt、Laplacian等,可以用于边缘检测、图像锐化等操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值