gpt4 book ai didi

python - 计算圆和直线的变换

转载 作者:行者123 更新时间:2023-12-02 00:50:11 26 4
gpt4 key购买 nike

我正在尝试确定两个图像之间的变换(旋转+平移+缩放)以便移动它们。

这些图像是用两种不同的模式拍摄的,产生了截然不同的纹理。所以我不能使用基于维持光流的技术。我认为对图像进行阈值处理以提取几何形状会很好(请参见下面的示例)。但后来我很难看到我能做什么......也许提取垂直线和中心圆来帮助我提取我的变换。

我使用 python 工作,我研究了 Opencv 可以提供的功能,但目前收效甚微。

enter image description here

--- 稍后编辑 ---

我用霍夫变换检测到了圆和线(见下图)。事实上,这将有助于正确注册。但是,我可以使用 Python 上的什么工具来注册这些元素呢?我经常使用光流守恒,但在这种情况下它相当复杂......

enter image description here

最佳答案

找到至少4个不共线的对应点:

  1. 磁盘中心
  2. 找到边线上距离圆盘中心最近的点(至少计算2个对应点)。它位于通过盘中心垂直于边线的线上(使用 this method )。
  3. 找到通过磁盘中心的边线的平行线(this可能有帮助)并计算该线与磁盘区域的交点(this可能有帮助)

然后你可以使用findHomography计算单应性矩阵,即两幅图像之间的变换。

示例代码类似于以下代码:

# Read the first image.
im_fst = cv2.imread('img1.jpg')
# Four points in the first image (more is better)
pts_fst = np.array([[141, 131], [480, 159], [493, 630],[64, 601]])

# Read the second image.
im_scd = cv2.imread('img2.jpg')
# Four points in the second image
pts_scd = np.array([[318, 256],[534, 372],[316, 670],[73, 473]])

# Calculate Homography
h, status = cv2.findHomography(pts_fst, pts_scd)

# Warp source image to destination based on homography
im_out = cv2.warpPerspective(im_fst, h, (im_scd.shape[1],im_scd.shape[0]))

关于python - 计算圆和直线的变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58573962/

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