matlab blockproc,'BorderSize'和'TrimBorder'在MATLAB blockproc函数中

为什么我要包含'BorderSize'(即重叠切片)但不将其应用于输出?

考虑要在图像中的每个MxN块上应用函数 fun 的所有工作流程,但为了使结果有效,您实际需要MxN块周围的边框像素 . (滤波,形态学,单个输出像素值取决于mxn周围邻域的任何函数) . 即你需要(M m,N n)输入块来计算一个MxN输出块 .

简单(又名制作)示例:

h = fspecial('gaussian', 3);

im = imread('peppers.png');

B1 = blockproc(im, [20 20], @(bs)imfilter(bs.data,h));

imshowpair(im, B1,'montage');

BS6nm.png

注意网格线?在这种特殊情况下,您只需在完整图像上调用imfilter即可 . 但是blockproc允许您处理大于物理内存的图像 . 所以对于这个讨论,想象我是一个巨大的tiff文件 .

对于此工作流程 - 如果您刚刚使用BorderSize在每个20x20块周围包含3个像素边框,并且未修剪输出边框:

h = fspecial('gaussian');

im = imread('peppers.png');

B1 = blockproc(im, [20 20], @(bs)imfilter(bs.data,h), 'BorderSize', [3 3], 'TrimBorder', false);

imshowpair(im, B1,'montage');

prpvQ.jpg

所以 - 你真的需要修剪边框(默认)

h = fspecial('gaussian');

im = imread('peppers.png');

B1 = blockproc(im, [20 20], @(bs)imfilter(bs.data,h), 'BorderSize', [3 3], 'TrimBorder', true);

imshowpair(im, B1,'montage');

UQVS8.png

Note - 我以IMFILTER为例 . 对于小图像,可以直接使用IMFITLER . 仅对于大型图像,可以考虑在BLOCPROC中使用IMFITLER .

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值