如何通过平移、旋转和/或缩放调整来匹配两个分割蒙版

Posted

技术标签:

【中文标题】如何通过平移、旋转和/或缩放调整来匹配两个分割蒙版【英文标题】:How to match two segmentation masks with translation, rotation and/or scale adjustment 【发布时间】:2021-03-25 21:38:25 【问题描述】:

我有两张从稍微不同的位置拍摄的图像。在对这些进行图像分割后,我想匹配两个图像的分割掩码,以便我可以识别两个图像中的相同对象。大多数情况下,对象的大小或方向会发生变化:

有时出现在一张图片中的对象不会出现在另一张图片中,例如:

我曾尝试使用它们的质心位置和大小天真地匹配单个对象,但这很容易出错。什么是最好的方法来做到这一点,例如OpenCV?

【问题讨论】:

基本问题是通过视频进行对象跟踪。有成功有限的简单解决方案,也有高级解决方案。由于您似乎在进行注释,因此确定对象身份实际上是您的任务。查看 CVAT 进行视频注释:github.com/openvinotoolkit/cvat 【参考方案1】:

您可以尝试类似 RANSAC 的方法。转换并没有太大的偏差,因此您可以尝试相似转换(平移 + 旋转 + 缩放)。这只需要两个对应的点对。从两个匹配对中计算变换,变换其他点并查看它们的匹配程度。

由于您的点数很少,因此对所有可能的对(其中 N(N-1)/2 个)进行详尽搜索并不过分。 (而且看起来你可以在不引入反转的情况下从左到右对点进行排序,这样会减少可能性的数量。)

【讨论】:

使用两个匹配的对来计算转换是一个好主意,但我需要以某种方式找到两对匹配的高置信度的对象而不看图像,因为我希望这样做完全自动。 @rferdinand:我不确定你是否理解我的回答。这个方法可以解决这个问题。 哦,我明白你的意思了。我必须尝试点对的所有组合,看看哪个对所有其他点产生最佳转换。更复杂的图像有点耗时,但肯定值得一试。谢谢! @rferdinand:您可能会发现一些技巧来避免详尽的比较。 (我提到了一个。) 这有点棘手,因为有时会因为视差而发生反转,但我可以跳过尺寸差异太大的对。

以上是关于如何通过平移、旋转和/或缩放调整来匹配两个分割蒙版的主要内容,如果未能解决你的问题,请参考以下文章

如何通过拖动视图边缘/角来实现缩放,如应用官方照片应用裁剪控制?

如何调整图像分割蒙版的大小?

OpenGL:组合平移/旋转/缩放矩阵或将它们分开?

如何调整图像分割蒙版的大小?

Web前端之变形:平移旋转与缩放

iOS Swift:无需调整大小即可旋转和缩放 UIView