matlab 中值滤波

a=imread('111.jpg');b=imnoise(a,'salt&pepper',0.02);imshow(b)c=medfilt2(b);哪里错了medfil... a=imread('111.jpg');
b=imnoise(a,'salt & pepper',0.02);
imshow(b)
c=medfilt2(b);

哪里错了 medfilt2 怎么弄呀 捉急死了
展开
 我来答
肥仙女a
高粉答主

2020-05-03 · 我是游戏小达人,专注于分享游戏资讯。
肥仙女a
采纳数:477 获赞数:115605

向TA提问 私信TA
展开全部

1、中值滤波的原理:对于一串连续输入的信号(量化后是一组数据)。如下图所示,是输入的原信号。中值滤波的原理为,重新计算每一个x的输出值(y),新的输出值。

相当于y=new(x),new的操作是,从在以x为中心,长度为2k的原信号中(区间为[x-k+1,x+k]),提取出这段区间内中间的那个值,作为y=new(x)的结果。

2、举例来说,输入:Y[1-10]:1,2,3,4,5,6,7,8,9,10.取区间2k=4,所以k=2;执行中值滤波K=中值滤波(Y)、由x-k+1>=1,所以当k=2时,x>=2、滤波时:

K[1]=Y[1]

K[2]=(Y[1]、Y[2]、Y[3]、Y[4])的中间值,即为2或3。

3、matlab的中值滤波实现方式:调用函数:A=medfilt1(B,n)、B为输入信号,A为滤波后的信号,即结果。

4、对于输入信号(最开头的图),以下分别为设置区间n=8和n=16得到的滤波图像。中值滤波可以过滤尖峰脉冲。目的在于我们对于滤波后的数据更感兴趣。滤波后的数据保留的原图像的变化趋势,同时去除了尖峰脉冲对分析造成的影响。

dukinkin
推荐于2017-10-04 · TA获得超过1.3万个赞
知道大有可为答主
回答量:2444
采纳率:90%
帮助的人:936万
展开全部
中值滤波medfilt2,用法B = medfilt2(A, [m n])

你的两点错误

一、输入图像A,应该是二维矩阵
你用输入图像b是由imread得到的a加上噪声得到的
而imread读到的图像a通常是3维rgb图,是三维矩阵
直接用medfilt2是不对的,可以先用rgb2gray(a)将a先转换为灰度矩阵

二、中值滤波也要指定滤波模版的大小
medfilt2需要两个输入参数,第一个是图像A
第二个参数需要输入一个长度是二的向量,[m n]
指定模版的大小,m行n列
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
绿m绣
2014-12-15 · TA获得超过379个赞
知道小有建树答主
回答量:304
采纳率:0%
帮助的人:201万
展开全部
补充下:二、中值滤波medfilt2并不一定需要指定[m n],不指定的话默认为[3 3]。参见:
B = medfilt2(A) performs
median filtering of the matrix A using the default
3-by-3 neighborhood.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式