2014-06-27 37 views
0

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

图片,以供参考: lens mask

回答

0

这是非常简单的事情。像您通常使用的那样使用interp2命令。之后,你得到你的插值结果,使用你的掩码来清除垃圾位置。假设out是什么interp2后返回,并mask商店要限制插值后的位置,简单地做:

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

这应该零出这些垃圾的地点,同时确保您要插入的价值依然存在。


上面假设输出的尺寸与输入尺寸相同。如果您打算扩展或缩小图像,也可以插入蒙版,然后使用我刚刚讨论的相同步骤。因此,只需在面罩上运行interp2,以便尺寸与out匹配,然后进行上面我提到的逐点乘法。

+0

问题是,interp2会在上面的图像中插入物体的边界,其周围的零点会导致失真。我试图阻止在插值过程中考虑背景数据,就好像我有一个我想要消除的漂浮斑点。 – Scott

+0

@Scott - 你想只提取区域然后调整图像大小? – rayryeng

+0

我想这会工作 - 即提取区域与斑点,插值,并重新插入到一个调整大小的图像。 – Scott