作业帮 > 数学 > 作业

给出如下图象采用3×3中值滤波后的结果.

来源:学生作业帮 编辑:作业帮 分类:数学作业 时间:2024/07/16 16:08:51
给出如下图象采用3×3中值滤波后的结果.
1 1 1 1 1 1 1 1
1 5 5 5 5 5 5 1
1 5 7 5 5 5 5 1
1 5 5 8 8 5 5 1
1 5 5 8 9 5 5 1
1 5 5 5 5 5 5 1
1 5 5 5 5 5 5 1
1 1 1 1 1 1 1 1
用matlab,中值滤波函数B=medfilt2(A);
均值滤波是用卷积实现的.设置一个3x3的矩阵,每个元素都是1/9.
B=filter2(B,A)%实际上filter2函数就是进行了一次2维卷积.可以用conv2替换.
再问: 呵呵,多谢!我不是要程序,这是考试复习题!能不能给我结果和解答的过程啊,多谢…………
再答: 啥?要过程?这个过程可没法写,太大了。2维卷积啊。你们这道题让你们手算????OMG!!!OZG!!!结果我可以给你,我用matlab算,算法很容易,但是过程要循环36次啊。。怎么一步一步手算啊。。。。。。我给你们老师一幅图像的矩阵,让他给我卷积一下试试。。。。 中值滤波结果: 0 1 1 1 1 1 1 0 1 1 5 5 5 5 1 1 1 5 5 5 5 5 5 1 1 5 5 7 5 5 5 1 1 5 5 5 5 5 5 1 1 5 5 5 5 5 5 1 1 1 5 5 5 5 1 1 0 1 1 1 1 1 1 0 均值滤波结果: 0.8889 1.5556 2.0000 2.0000 2.0000 2.0000 1.5556 0.8889 1.5556 3.0000 3.8889 3.8889 3.6667 3.6667 2.7778 1.5556 2.0000 3.8889 5.5556 5.8889 5.6667 5.3333 3.6667 2.0000 2.0000 3.8889 5.8889 6.6667 6.4444 5.7778 3.6667 2.0000 2.0000 3.6667 5.6667 6.4444 6.4444 5.7778 3.6667 2.0000 2.0000 3.6667 5.3333 5.7778 5.7778 5.4444 3.6667 2.0000 1.5556 2.7778 3.6667 3.6667 3.6667 3.6667 2.7778 1.5556 0.8889 1.5556 2.0000 2.0000 2.0000 2.0000 1.5556 0.8889 算法:因为模版是3x3大小的,所以处理的时候图像最外层不进行操作,其余36个点需要进行相同的算法操作。 所谓的操作就是利用算法将矩阵元素值改变。中值滤波就是利用取中间值的算法来改变元素值。具体说就是待处理的元素周围3x3=9个点(包括自己),从小到大排列,用中间的元素值来修改待处理元素。均值滤波实用每个元素都是1/9的3x3模版对图像进行2维卷积。2维卷积的过程你应该知道吧。其中一个矩阵反转,然后2维循环的矩阵操作。操作过程同上,只不过是用了均值模版,待修改元素的值被修改为它周围9个值的平均值。
再问: 为什么四个边缘点为0呢?可不可以这样简单的计算啊。就是从上到下,从左到右,依次取九个点,选取中值替代?但是边缘不会是0啊?有没有此类的学习资料啊?谢谢啊!!!
再答: 3x3模板是无法对边缘进行操作的,要进行操作需要进行一些特殊处理。不处理保留原值就是一种特殊的处理方式,当然还有别的特殊处理方式,matlab的medfilt2函数具体是怎么对边缘点进行操作的,我没有去研究,毕竟图像处理,我们不太关心边缘点的。怎么处理都无所谓。 中值滤波也好,均值滤波也好,都是为了对图像进行一些处理,以达到去除某类噪声或者进行某些特征提取的目的。这些图像处理都可以采用模板操作。而不同的模板形式,就决定了你操作之后的结果。 比如中值滤波的目的是去除椒盐噪声。椒盐噪声就是值图像得个别像素由于照相机的电子热噪声而灰度值变成了255,图像上就会出现一些随机分布的小白点。对于这些噪声点的去除,我们用它周围9个点的像素的中间值来替代它。因为它自己是255灰度,绝对不会是中值。除非这9个点的灰度都是255,那么这时,就不认为它是一个椒盐噪声,而认为那就是一个正常的白区域。因此可以认为中值滤波就是为了去除椒盐噪声的。 在比如均值滤波,为什么其模板是每个元素都是1/9的矩阵呢。因为这样操作,相当于把一个元素的灰度,用它周围9个元素的灰度值的1/9相加得到,这就是平均值。所以叫做均值滤波。 当然,为了达到不同的目的,我们可以设计不同的模板。比如拉普拉斯算子。sobel算子等等边缘检测算子。都是同理。 而模板的选择都是3x3 或者5x5 7x7这样的正方形,因为这样的模板操作可以方便的用二维卷积来实现。而且也符合一般图像处理的要求。那么对于你的第二个问题。你自己应该有答案了。你设想的这种操作能达到某一图像处理的需要吗?
再问: 那意思是可以将四个边缘点设为1吗?你的结果0是怎么出来的啊?谢谢你回答这么详细,感动…………
再答: 可以,实际上边缘点是不关心的。你可以自己设计自己的算法,如果你觉得有必要。我只是用了matlab的medfilt2函数,具体它对于边缘点如何操作的,得看medfilt2的m文件才行,不过,那真的无所谓我觉得,它愿怎么处理都行,谁会关心呢。。。边缘本来也没必要处理。