matlab对图像陷波滤波器滤波_MATLAB图像处理:46:对积分图像应用多重滤波器

该示例展示了如何利用MATLAB的积分图像对图像应用多种大小的盒式滤波器。积分图像允许快速计算局部和,而滤波过程通过填充图像并使用函数 `integralimage` 和 `filter2` 实现。视频教程和更多MATLAB图像处理文章可供深入学习。
摘要由CSDN通过智能技术生成

2b6646b6a15754afb753651a4a3dcf98.png

此示例演示如何使用积分图像滤波对图像应用多个大小不同的盒式滤波器。积分图像是一种有用的图像表示方法,可以快速计算局部图像的和。盒滤波器可以看作是每个像素的局部加权和。

将图像读入工作区并显示它。

 originalImage = imread('cameraman.tif');
 ​
 figure
 imshow(originalImage)
 title('Original Image')

1e4e5af76f09d9b1a2dfc10d0cdf0f62.png

定义三个盒式过滤器的大小。

 filterSizes = [7 7;11 11;15 15];

填充图像以适应最大的盒式过滤器的大小。每个维度的填充量等于最大过滤器大小的一半。请注意,使用复制样式填充有助于减少边界瑕疵。

 maxFilterSize = max(filterSizes);
 padSize = (maxFilterSize - 1)/2;
 ​
 paddedImage = padarray(originalImage,padSize,'replicate','both');

使用积分图像函数 integralImage 计算填充图像的积分图像并显示。积分图像是从左到右、从上到下单调不变的。每个像素表示图像中当前像素顶部和左侧的所有像素强度之和。

 intImage = integralImage(paddedImage);
 ​
 figure
 imshow(intImage,[])
 title('Integral Image Representation')

8d549e1165af19b2bb58208ad4b7b44e.png

对积分图像应用三个不同大小的盒式滤波器。 integralBoxFilter 函数可用于将二维盒滤波器应用于图像的积分图像。

 filteredImage1 = integralBoxFilter(intImage, filterSizes(1,:));
 filteredImage2 = integralBoxFilter(intImage, filterSizes(2,:));
 filteredImage3 = integralBoxFilter(intImage, filterSizes(3,:));

integralBoxFilter 函数只返回在没有填充的情况下计算的过滤部分。用不同尺寸的盒形滤波器对同一个积分图像进行滤波,得到不同尺寸的输出。这类似于 conv2函数中的 'valid'选项。

 whos filteredImage*
   Name                  Size              Bytes  Class     Attributes
 ​
   filteredImage1      264x264            557568  double              
   filteredImage2      260x260            540800  double              
   filteredImage3      256x256            524288  double              

因为在计算积分图像之前,图像被填充以容纳最大的盒滤波器,所以没有图像内容丢失。filteredImage1filteredImage2 具有可裁剪的附加填充。

 extraPadding1 = (maxFilterSize - filterSizes(1,:))/2;
 filteredImage1 = filteredImage1(1+extraPadding1(1):end-extraPadding1(1),...
     1+extraPadding1(2):end-extraPadding1(2) );
 ​
 extraPadding2 = (maxFilterSize - filterSizes(2,:))/2;
 filteredImage2 = filteredImage2(1+extraPadding2(1):end-extraPadding2(1),...
     1+extraPadding2(2):end-extraPadding2(2) );
 ​
 figure
 imshow(filteredImage1,[])
 title('Image filtered with [7 7] box filter')

694a407f26004f415ebcf5a9e9375e4f.png
 figure
 imshow(filteredImage2,[])
 title('Image filtered with [11 11] box filter')

9b3e6f67c08cbdddd63f321750789f13.png
 figure
 imshow(filteredImage3,[])
 title('Image filtered with [15 15] box filter')

92a3215340578c0e56e22b27e27fa684.png

注:本文根据MATLAB官网内容修改而成。

以下的免费视频教程,特点是没有PPT,不掺水,直接编程环境下的实操课程:

用100分钟了解MATLAB编程

知乎 - 安全中心​www.1data.pro

欢迎您进一步了解以下MATLAB系列文章:

吃小羊:MATLAB作图实例:00:索引​zhuanlan.zhihu.com
4a7e678305c1f626db297061694ea582.png
吃小羊:MATLAB金融工具箱:00:索引​zhuanlan.zhihu.com
b1a31dc8fc5421e615f5d573a5fadf66.png
吃小羊:MATLAB图像处理:00:索引​zhuanlan.zhihu.com
a2e4c0c3422610a1bfbae395e72b394d.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值