改进的图像去噪极值中值滤波程序 matlab代码
时间: 2023-08-07 07:11:21 浏览: 108
以下是改进的图像去噪极值中值滤波程序的Matlab代码:
```matlab
function [resultImg] = improvedMedianFilter(inputImg, windowSize, threshold)
% inputImg: 输入图像
% windowSize: 中值滤波窗口大小
% threshold: 判断是否为噪声的阈值
% resultImg: 输出去噪后的图像
% 获取输入图像的大小
[row, col] = size(inputImg);
% 计算窗口的边长
halfWS = floor(windowSize/2);
% 初始化输出图像
resultImg = inputImg;
% 对每个像素进行处理
for i = halfWS+1:row-halfWS
for j = halfWS+1:col-halfWS
% 提取窗口内的像素
window = inputImg(i-halfWS:i+halfWS, j-halfWS:j+halfWS);
% 计算窗口内像素的中值
medianVal = median(window(:));
% 计算窗口内像素的极差
rangeVal = max(window(:)) - min(window(:));
% 如果极差小于阈值,则进行中值滤波
if rangeVal <= threshold
resultImg(i,j) = medianVal;
end
end
end
```
使用方法:
```matlab
inputImg = imread('lena.png'); % 读取图像
windowSize = 3; % 窗口大小
threshold = 20; % 阈值
resultImg = improvedMedianFilter(inputImg, windowSize, threshold); % 进行改进的中值滤波
imshow(resultImg); % 显示去噪后的图像
```
其中,`inputImg`是输入的图像,`windowSize`是中值滤波窗口的大小,`threshold`是判断是否为噪声的阈值,`resultImg`是输出的去噪后的图像。可以根据需要修改窗口大小和阈值。
阅读全文