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 怎么弄呀 捉急死了 展开
b=imnoise(a,'salt & pepper',0.02);
imshow(b)
c=medfilt2(b);
哪里错了 medfilt2 怎么弄呀 捉急死了 展开
3个回答
展开全部
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得到的滤波图像。中值滤波可以过滤尖峰脉冲。目的在于我们对于滤波后的数据更感兴趣。滤波后的数据保留的原图像的变化趋势,同时去除了尖峰脉冲对分析造成的影响。
展开全部
中值滤波medfilt2,用法B = medfilt2(A, [m n])
你的两点错误
一、输入图像A,应该是二维矩阵
你用输入图像b是由imread得到的a加上噪声得到的
而imread读到的图像a通常是3维rgb图,是三维矩阵
直接用medfilt2是不对的,可以先用rgb2gray(a)将a先转换为灰度矩阵
二、中值滤波也要指定滤波模版的大小
medfilt2需要两个输入参数,第一个是图像A
第二个参数需要输入一个长度是二的向量,[m n]
指定模版的大小,m行n列
你的两点错误
一、输入图像A,应该是二维矩阵
你用输入图像b是由imread得到的a加上噪声得到的
而imread读到的图像a通常是3维rgb图,是三维矩阵
直接用medfilt2是不对的,可以先用rgb2gray(a)将a先转换为灰度矩阵
二、中值滤波也要指定滤波模版的大小
medfilt2需要两个输入参数,第一个是图像A
第二个参数需要输入一个长度是二的向量,[m n]
指定模版的大小,m行n列
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
补充下:二、中值滤波medfilt2并不一定需要指定[m n],不指定的话默认为[3 3]。参见:
B = medfilt2(A) performs
median filtering of the matrix A using the default
3-by-3 neighborhood.
B = medfilt2(A) performs
median filtering of the matrix A using the default
3-by-3 neighborhood.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询