gpt4 book ai didi

python - 图像处理 : how to imwarp with mask on destination

转载 作者:行者123 更新时间:2023-12-02 17:41:07 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Image Processing: how to imwarp with simple mask on destination?

(1 个回答)


9 个月前关闭。




我想实现一个类似于Matlab的imwarp的功能
https://www.mathworks.com/help/images/ref/imwarp.html?requestedDomain=www.mathworks.com

function [output] = maskedImwarp(im, tform, mask)
???
end
这样它就会和 imwarp 一样(对于 projective2d 就足够了,不需要任何额外的东西),但只会计算 mask 定义的 ROI。
我想通过减少计算来减少运行时间。
如何以最有效和最优雅的方式完成这项工作?
我只会对掩码中的每个“1”执行一个 for 循环,并计算它在“im”中的来源,然后进行插值,但我认为如果我使用一些矩阵魔法,它会比可能的慢得多。

最佳答案

OpenCV 和 Matlab 不提供用于图像变形的掩码,我认为部分原因是尚不清楚在某些情况下会发生什么。例如,考虑一个类似的图像

170 200 120
100 230 200
70 120 20

带口罩
1 1 1
1 0 1
1 1 1

一旦你转型,究竟应该发生什么?你在洞上插值吗?或者你让它保持黑色?如果你转换到更小的尺寸并且插值关闭后那个洞,你会再次强制它吗?看起来它很容易产生意想不到的后果,所以处理起来很奇怪,在这里强制某人的手也没有任何意义。

当然,您可能更希望拥有一个没有漏洞的包容性区域;例如像面具一样
0 0 1
0 1 1
1 1 1

什么的,但即便如此,它也可能很奇怪。例如,旋转发生在原点周围,但如果您的蒙版忽略了前几​​行和列,则不清楚是否有人希望该转换引用整个原始图像或引用蒙版开始的位置。

我可以很容易地看到掩码的用例,但我认为您不会在大多数库中看到它的实现,因为没有真正明确的正确方法来做到这一点,每个用例都会有所不同。当然,用一些标志或任何东西来实现并非不可能,但可能没有太大的需要尝试处理这些可能性。

无论如何,我看到了三种方法。
  • 变形后过滤掉彩色蒙版区域。
  • 扭曲反向蒙版位置本身,并从这些像素移动到的扭曲图像中移除所有内容。
  • 使用 meshgrid 获取索引然后仅将扭曲应用于 meshgrid 的掩码索引并在这些点之上插入蒙版图像。我不知道这是否可以使用内置函数来实现,因为如果不插入垃圾值,就无法合理地创建带有非矩形蒙版的 2-D 蒙版图像。所以看起来你可能需要循环进行插值。
  • 关于python - 图像处理 : how to imwarp with mask on destination,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44919279/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com