matlab中值滤波函数
时间: 2023-09-14 14:03:11 浏览: 154
MATLAB中的中值滤波函数是'medfilt2'。该函数用于对二维图像进行中值滤波,即将每个像素的值替换为该像素周围邻域内像素的中值。 下面是一个示例代码,可以演示如何使用'medfilt2'函数对图像进行中值滤波处理:
A = rgb2gray(imread('cameraman.png')); % 读取一张灰度图像
B = medfilt2(A, [3 3], 'symmetric'); % 对图像进行中值滤波
figure, imshow(A), title('Original Image'); % 显示原图
figure, imshow(B), title('Filtered Image'); % 显示滤波后的图像
另外,还可以使用以下代码进行中值滤波处理:
x=imread('G:\matlab\1.jpg');% 需要过滤的图像
n=3; % 模板大小
[height, width]=size(x); % 获取图像的尺寸
figure; imshow(x);% 显示原图
x = imnoise(x,'salt & pepper'); % 加入椒盐噪声
figure; imshow(x); % 显示加噪声后的图像
x1=double(x); % 数据类型转换
x2=x1; % 转换后的数据赋给x2
for i=1:height-n+1
for j=1:width-n+1
c=x1(i:i+n-1,j:j+n-1); % 在x1中取模板大小的块赋给c
e=c(1,:); % e中存放c矩阵的第一行
for u=2:n % 将c中的其他行元素取出来接在e后使e为一个行矩阵
e=[e,c(u,:)];
end
med=median(e); % 取一行的中值
x2(i+(n-1)/2,j+(n-1)/2)=med; % 将模板各元素的中值赋给模板中心位置的元素
end
end
d=uint8(x2); % 未被赋值的元素取原值
figure; imshow(d); % 显示过滤图像
x0=rgb2gray(x); % 灰度处理,得到二维矩阵
b=medfilt2(x0,[n,n]); % 使用'medfilt2'函数进行中值滤波
figure; imshow(b); % 显示滤波后的灰度图像<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [Matlab中值滤波](https://blog.csdn.net/CC_Lsh/article/details/130166797)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [中值滤波(matlab)](https://blog.csdn.net/qq_43211132/article/details/87455793)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文