imfilter

来源:互联网 发布:java是做什么的 编辑:程序博客网 时间:2024/05/23 12:13

功能:对任意类型数组或多维图像进行滤波。

用法:B = imfilter(A,H)

   B = imfilter(A,H,option1,option2,...)

   或写作g = imfilter(f, w, filtering_mode,boundary_options, size_options)

其中,f为输入图像,w为滤波掩模,g为滤波后图像。filtering_mode用于指定在滤波过程中是使用“相关”还是“卷积”。boundary_options用于处理边界充零问题,边界的大小由滤波器的大小确定。具体参数选项见下表:

 

选项

描述

filtering_mode

            ‘corr’ 通过使用相关来完成,该值为默认。

            ‘conv’ 通过使用卷积来完成

 

 

boundary_options

           ‘X’  输入图像的边界通过用值X(无引号)来填充扩展其默认值为0

           ‘replicate’图像大小通过复制外边界的值来扩展

       ‘symmetric’图像大小通过镜像反射其边界来扩展

        ‘circular’图像大小通过将图像看成是一个二维周期函数的一个周期来扩展

size_options

        ‘full’输出图像的大小与被扩展图像的大小相同

        ‘same’输出图像的大小与输入图像的大小相同。这可通过将滤波掩模的中心点的偏移限制到原图像中包含的点来实现,该值为默认值。

 

I=imread('eight.tif');
>> h=fspecial('laplacian');
>> I1=filter2(h,I);
>> I2=imfilter(I,h);
>> subplot(1,2,1);
>> imshow(I1)
>> subplot(1,2,2);
>> imshow(I2)

两个函数结果类型不一样,只需要在I1=filter2(h,I)后面加上I1=uint8(I1)进行类型转换,结果就是一样的。

imfilter 可进行多维图像(RGB等)进行空间滤波,且可选参数较多
filter2
只能对二维图像(灰度图)进行空间滤波

原创粉丝点击