将插值限制为特定的掩码区域

时间:2014-06-27 18:28:17

标签: matlab image-processing interpolation

我想要插入一个图像区域。它被零包围,这意味着如果我尝试使用MATLAB的内置interp2函数进行插值,则该区域的边界将使用垃圾数据进行插值并被泄露。有没有任何已知的方法,例如,只插入一组特定的数据点(甚至是非矩形矩阵),然后将它们嵌入到正确尺寸的矩阵中?我有一个可以使用的逻辑掩码,如果有帮助的话。

图片,供参考: lens mask

1 个答案:

答案 0 :(得分:0)

这很简单。像通常使用的那样使用interp2命令。之后,您将获得插值结果,使用掩码将垃圾位置清零。假设outinterp2之后返回的内容,而mask存储了您要限制插值的位置,只需执行以下操作:

maskMatch = cast(mask, class(out)); %// Ensures out and mask are the same type
finalOut = out .* maskMatch;

这应该将这些垃圾位置归零,同时确保您想要插入的那些值保留。


以上假设输出与输入的尺寸相同。如果您打算扩展或缩小图像,您也可以插入蒙版,然后使用我刚才谈到的相同过程。因此,只需使用掩码运行interp2以使尺寸与out匹配,然后执行我在上面谈到的逐点乘法。