【问题标题】:Detecting lines (vertical and horizontal) that are not straight and align image by it? [closed]检测不直的线(垂直和水平)并通过它对齐图像? [关闭]
【发布时间】:2019-05-13 23:34:34
【问题描述】:

嘿,

是否可以使用 Python 根据图像中不直的线条自动对齐图像? 例如,如果我有这张图片:

我要自动查找不直的线条,如图:

找到这条线后,我想根据它来对齐图像,所以图像会是这样的(这个图像是在这个方法中用 Lightroom 手动对齐的):

你们对如何做类似的事情有任何指导,也许有人写的算法可以做类似的事情? 首先,我尝试使用 ORB 和 ECC 方法来对齐图像,但它没有给我一个可以使用的精确结果, 所以我想用更聪明的方法来真正找到线条,但是当我试图找到线条时,hough line transform 结果是线条遍布整个地方(因为砖块之间的线条很小)。

我在网上搜索并找到了来自多伦多大学的lecture 谈论这个,但我无法弄清楚如何实现这些方法以创建这样的算法,如上所述,用 Python 查找行是相当复杂。

【问题讨论】:

    标签: python opencv alignment surf hough-transform


    【解决方案1】:

    使用 Hough 变换,您走在了正确的轨道上。是的,有很多 很多 行。 您未能描述您想要的线条与您不想要的线条的区别(在各种未指定的细节中),但让我尝试为您提取一些想法:

    • “接近”垂直或水平坡度。
    • 每个方向上最长的线。

    使用 Hough 找出它所能找到的所有线条。运行另一遍以将一系列线段(适合相同的线性方程?)连接成更长的线。例如,即使浴帘从水槽后面经过,您也应该能够识别它的左边缘。

    现在,您至少需要每个方向上最长的线。还要考虑“框架”的情况:如果那条线偏离中心很远(例如,在照片的外部 25% 中),那么还要在同一方向寻找一条足够长的线,但在相反的一侧。

    这些过程中的每一个都可以通过基本的线性代数轻松量化和检查。您可以通过适当地对线段进行排序以增强每个操作来简化该过程。

    这些大纲和提示足以让你动起来吗?

    【讨论】:

    • 感谢您的回复!你写的内容帮助我理解了技术关键部分,但我无法找到正确的线条,每当我尝试使用霍夫变换找到线条时,它都会给我砖块之间的线条,所以实际上我不能设法完成“第一”阶段。我用的是 OpenCV,有没有更好的方法可以推荐给我?
    • 转换也应该给你更长的行。如果不是,那么算法有问题。您必须查找更好的 Hough 包。
    猜你喜欢
    • 1970-01-01
    • 2018-06-23
    • 1970-01-01
    • 2020-09-27
    • 2012-05-17
    • 2011-02-20
    • 1970-01-01
    • 1970-01-01
    • 2012-10-10
    相关资源
    最近更新 更多