如何将关联单图的多边形无旋转平移至另一张仅边界不同的同内容图像
同内容不同边界图像的多边形无旋转移位实现方法
核心逻辑:两张图像内容完全一致仅边界不同,多边形无旋转移位不需要用到旋转、错切变换,仅通过缩放+平移的刚性变换即可实现,完全保留多边形原有形状和角度。
具体实现步骤
- 选取2组及以上两张图共有的对应特征锚点(如同一对象的边角、明显的纹理拐点,因内容完全一致可直接识别选取),分别记录原图锚点坐标与目标图对应锚点坐标。
- 计算横纵轴缩放系数:
若两张图仅为裁剪边界无尺寸缩放,scale_x与scale_y均为1,可直接跳过缩放计算步骤。 - 计算横纵轴平移偏移量,再遍历所有多边形顶点应用变换公式,即可得到目标图适配坐标。
优化后代码示例
# 替换为你自己标注的两组对应锚点坐标即可使用 old_anchor1 = (120, 250) # 原图第一个公共锚点坐标 new_anchor1 = (170, 270) # 目标图对应第一个锚点坐标 old_anchor2 = (380, 510) # 原图第二个公共锚点坐标 new_anchor2 = (430, 530) # 目标图对应第二个锚点坐标 # 计算变换参数 scale_x = (new_anchor2[0] - new_anchor1[0]) / (old_anchor2[0] - old_anchor1[0]) scale_y = (new_anchor2[1] - new_anchor1[1]) / (old_anchor2[1] - old_anchor1[1]) offset_x = new_anchor1[0] - old_anchor1[0] * scale_x offset_y = new_anchor1[1] - old_anchor1[1] * scale_y # 批量处理多边形坐标 for dictionary in JSONfile: list_of_c = dictionary['pixel_coordinates'] for item in list_of_c: origin_x, origin_y = item['x'], item['y'] item['x'] = origin_x * scale_x + offset_x item['y'] = origin_y * scale_y + offset_y
内容的提问来源于stack exchange,提问作者prashant
相关产品推荐
相关产品推荐

