正如标题所说,我正试图找到一种方法来生成一个转换矩阵,以便最好地对齐两个图像(具有最小误差值的解决方案,使用任意度量计算 - 例如,对应之间所有距离的SAD点)。示例如下:
这只是一个例子,外部轮廓可以是任何形状,“孔”可以是任何形状,任何尺寸和任何数字。
用手绘制“来自”图像是为了表明形状不完美,而是从相机获取的图像中提取的轮廓。
似乎我需要的API函数是Video.estimateRigidTransform
,但我遇到了几个问题而且我被卡住了:
变换必须在最强烈的意义上是僵化的,这意味着它不能进行任何缩放,只能进行平移和旋转。
由于“from”图像中的形状不完美,轮廓中的点数与“To”图像中的点数不同,上述函数需要两组对应点。为了绕过这个,我尝试了另一种方法:我计算了孔和外轮廓的质心,并尝试对齐它们。这里有两个问题:
Video.estimateRigidTransform
的两个列表中的点数必须相同,并且无法保证函数findContours在两种形状中都以相同的顺序提供它们。非常感谢任何想法。