空域滤波算法是图像处理中用于去除噪声的一类方法,它们直接在图像的像素坐标系中操作,通过分析图像中像素与周围像素的关系来去除噪声。以下是几种常见的空域滤波算法的原理描述及其在MATLAB中的实现代码。
1. 均值滤波
均值滤波是一种简单的线性滤波方法,它通过替换图像中每个像素点的值为其邻域内所有像素值的平均值来实现降噪。
MATLAB代码示例:
1 2 3 |
img = imread('lena.png'); % 读取图像 h = fspecial('average', [5 5]); % 创建5x5的均值滤波器核 filtered_img = imfilter(img, h); % 应用滤波器 |
2. 中值滤波
中值滤波是一种非线性滤波方法,它通过替换图像中每个像素点的值为其邻域内所有像素值排序后的中值来实现降噪。这种方法对椒盐噪声特别有效。MATLAB代码示例:
1 2 |
img = imread('lena.png'); % 读取图像 filtered_img = medfilt2(img); % 应用中值滤波 |
3. 高斯滤波
高斯滤波通过应用二维高斯函数作为滤波器核来平滑图像,适合去除高斯噪声。MATLAB代码示例:
1 2 3 |
img = imread('lena.png'); % 读取图像 h = fspecial('gaussian', [5 5], 2); % 创建5x5的高斯滤波器核 filtered_img = imfilter(img, h); % 应用滤波器 |
4. 双边滤波
双边滤波是一种非线性空间滤波方法,它不仅考虑像素点的空间邻近性,还考虑像素值的相似性。这种滤波器在保持边缘清晰的同时去除噪声。MATLAB代码示例:
1 2 3 |
img = imread('lena.png'); % 读取图像 h = fspecial('gaussian', [5 5], 2); % 创建5x5的空间滤波器核 filtered_img = imfilter(img, h, 'replicate'); % 应用双边滤波 |
标签:滤波器,img,滤波,像素,算法,空域,MATLAB,图像 From: https://www.cnblogs.com/huqinglong/p/18343302