图像数据处理13

三、空域滤波

3.1滤波器的基本概念

什么是滤波?

简单来说就是从干扰信号中提取出有用的信号

3.1.1空域滤波(Spatial Domain Filtering)

空域滤波适用于简单的滤波任务,直接对图像的像素空间进行操作。它通过对图像中的每个像素点及其邻域像素进行运算,生成新的像素值来实现滤波效果。常见的空域滤波包括均值滤波、高斯滤波、中值滤波等。

3.1.2频域滤波(Frequency Domain Filtering)

频域滤波基于图像的频谱信息进行操作。它通过将图像转换到频率域,对频谱信息进行滤波处理,然后再将处理后的频谱反变换回空间域得到最终图像。

3.1.3线性滤波

线性滤波输出图像上每个像素点的值都是由输入图像各像素点值加权求和的结果。常见的线性滤波器有均值滤波器、高斯滤波器等。

3.1.4非线性滤波

非线性滤波通过非线性操作处理图像,其的算子中包含了取绝对值、置零等非线性运算。常见的非线性滤波器有中值滤波器、双边滤波器等。

3.1.5图像平滑

可以近似理解成图像模糊操作,通过图像平滑操作可以保留图像的低频成分,抑制高频成分,从而减少噪声的干扰。

3.1.6图像锐化

与图像平滑相反,保留图像的高频成分,抑制低频成分,从而使图像的细节更加清晰可加。

图像平化与图像锐化的区别

图像平滑图像锐化
原理保留图像的低频成分,抑制高频成分保留图像的高频成分,抑制低频成分
作用通过模糊细节去除图像噪声,减少不必要成分的干扰突出图像中的边缘部分,使物体的轮廓更加清晰。

3.2线性滤波器

3.2.1线性空域滤波器的计算流程

首先根据滤波区域的形状、大小等,设计出滤波器;随后根据每个像素的坐标、滤波器的作用区域,计算出每个像素邻域中参与计算的像素及坐标;随后用参与运算的像素灰度值×设计的与其对应的滤波器系数,再依次累加。(学到这,我发现这好像和卷积很像)

设 I(x,y) 为原始图像在坐标 (x,y) 处的像素值,F(x,y) 为滤波器在坐标 (x,y) 处的系数,G(x,y) 为滤波后图像在坐标 (x,y) 处的像素值。则滤波操作可以表示为:

s 的取值范围是从 -a 到 a,这表示滤波器在垂直方向( x 方向)上的大小是 2a+1

t 的取值范围是从 -b 到 b,这表示滤波器在水平方向( y 方向)上的大小是 2b+1

滤波器系数数组

通常是一个长和宽均为奇数的系数矩阵。计算过程可以看上面提到的计算流程。

图像边界的处理

原因:在边缘处,滤波器会有一部分元素处于图像边界外,进而无法进行运算。

最常用的方法就是图像的边缘扩充,往往采用0来填充边界,因为0乘任何数的值都为零,所以不会影响计算结果。

import cv2
import numpy as np

# 读取图像
image = cv2.imread('slpn.jpg')

# 检查图像是否成功加载
if image is None:
    print("Error: Image not found.")
    exit()

# 定义一个简单的3x3平均滤波器
kernel = np.ones((3, 3), np.float32) / 9

# 为图像添加2个像素的边缘,用0来填充,确保在应用滤波器时边缘信息不会丢失
bordered_image = cv2.copyMakeBorder(image, 2, 2, 2, 2, cv2.BORDER_CONSTANT, value=[0, 0, 0])

# 使用filter2D函数应用滤波器
dst = cv2.filter2D(bordered_image, -1, kernel)

# 裁剪图像,去除之前添加的边缘
dst = dst[2:-2, 2:-2]  # 注意这里裁剪的尺寸是2,因为我们之前添加了2个像素的边缘

# 使用numpy的水平堆叠来将两个图像并排显示
combined_image = np.hstack((image, dst))

# 将图像缩小至原来的一半
resized_image = cv2.resize(combined_image, (0, 0), fx=0.5, fy=0.5)

# 展示原始图像和处理后的图像
cv2.imshow('Original and Filtered (Halved Size)', resized_image)

cv2.waitKey(0)
cv2.destroyAllWindows()

bordered_image = cv2.copyMakeBorder(image, 2, 2, 2, 2, cv2.BORDER_CONSTANT, value=[0, 0, 0])
因为滤波器是3×3的,所以在为原来的图像添加两个像素边缘,填充值均为0

注,本人为在校学生,博客是边学边写的,主要是为了巩固知识,如有错误请积极指正。

“本文章中所使用的圣灵谱尼图片来源于网络,版权归属原作者所有。若您认为本文章/作品的使用侵犯了您的权益,请及时与我联系,我将尽快核实并删除相关内容。

本文的内容主要基于我对张运楚教授编著的《数字图像处理》一书的学习和理解。这本书深入浅出地介绍了数字图像处理的基本理论以及经典算法等,并且提供了丰富的示例代码和实际用例,极大地帮助了我学习图像处理知识。在此,我推荐大家阅读这本书,更加深入的学习有关图像处理的知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值