Interpmask -插入(补间)逻辑掩码

版本1.0.0.0(3.66 KB)由 斯文
Interpmask插入(或补间)蒙版,以便在蒙版中的形状之间平滑过渡

516下载

更新2014年5月1日

查看许可协议

INTERPMASK通过距离映射执行掩码插值(补间)。between或tweening是在两个图像之间生成中间帧的过程,以使第一个图像平滑地演变为第二个图像

BWq = INTERPMASK(X,BW,Xq)在逻辑矩阵BW中插入掩码
在查询点Xq处。X的元素对应于逐次矩阵
沿着BW的最后一个维度的掩模。输出的BWq是一个逻辑
除最后一个维度相等外,与BW大小相等的矩阵
到Xq中查询点的数量。

BWq = INTERPMASK(…,'interpDim',D)指定D为BW的维度
沿内插默认情况下,D只是BW的最后一个维度。

BWq = INTERPMASK(BW,Xq)假设X = 1:N,其中N为SIZE(BW,INTERPDIM)。

掩码之间的插值是通过每个掩码的距离矩阵来完成的
BW中的掩码(由IP工具箱中的BWDIST计算)使用INTERP1。
额外的参数('linear', 'pchip', 'extrapval'等)将被传递给
INTERP1和可用于控制插补的方法。提供
一个'extrapval'到输出BWq蒙版,传递一个'extrapval'为1 (TRUE)
或-1 (FALSE)到INTERPMASK,如下所示:

BWq = INTERPMASK(…,'pchip','extrapval',-1) %额外像素设置为FALSE

例如,平滑地从一个小圆插到一个大圆
正方形到一个大的圆,考虑如下:
做两个圆和一个矩形
[x,y] = meshgrid(-51:51,-51:51);
circMat =√(x。²+ y.²);
smallCirc = circMat<10;
largeCirc = circMat<30;
largeRect = false(size(x));
largeRect(2:100,2:100) = true;
将它们堆叠为掩码1、2和3
BW = cat(3,smallCirc,largeRect,largeCirc);
在蒙版之间平滑地插入
BWout1 = interpmask(1:3, BW, linspace(1,3,200),'linear');
BWout2 = interpmask(1:3, BW, linspace(1,3,200),'pchip');
图中,次要情节(1、2、1)
补丁(等值面(BWout1, 0.5),‘FaceColor’,‘g’,‘EdgeColor’,‘没有’)
Camlight, view(3), Camlight, axis image
次要情节(1、2、2)
补丁(等值面(BWout2, 0.5),‘FaceColor’,‘g’,‘EdgeColor’,‘没有’)
Camlight, view(3), Camlight, axis image

参见INTERP1。

引用作为

斯文(2023)。Interpmask -插入(补间)逻辑掩码(//www.tatmou.com/matlabcentral/fileexchange/46429-interpmask-interpolate-tween-logical-masks), MATLAB中央文件交换。检索

MATLAB版本兼容性
使用R2014a创建
与任何版本兼容
平台的兼容性
窗户 macOS Linux

社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!

开始狩猎!
版本 发表 发布说明
1.0.0.0