我想要插入一个图像区域。它被零包围,这意味着如果我尝试使用MATLAB的内置interp2
函数进行插值,则该区域的边界将使用垃圾数据进行插值并被泄露。有没有任何已知的方法,例如,只插入一组特定的数据点(甚至是非矩形矩阵),然后将它们嵌入到正确尺寸的矩阵中?我有一个可以使用的逻辑掩码,如果有帮助的话。
图片,供参考:
答案 0 :(得分:0)
这很简单。像通常使用的那样使用interp2
命令。之后,您将获得插值结果,使用掩码将垃圾位置清零。假设out
是interp2
之后返回的内容,而mask
存储了您要限制插值的位置,只需执行以下操作:
maskMatch = cast(mask, class(out)); %// Ensures out and mask are the same type
finalOut = out .* maskMatch;
这应该将这些垃圾位置归零,同时确保您想要插入的那些值保留。
以上假设输出与输入的尺寸相同。如果您打算扩展或缩小图像,您也可以插入蒙版,然后使用我刚才谈到的相同过程。因此,只需使用掩码运行interp2
以使尺寸与out
匹配,然后执行我在上面谈到的逐点乘法。