Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 检测不直的线条(垂直和水平)并通过它对齐图像?_Python_Opencv_Alignment_Surf_Hough Transform - Fatal编程技术网

Python 检测不直的线条(垂直和水平)并通过它对齐图像?

Python 检测不直的线条(垂直和水平)并通过它对齐图像?,python,opencv,alignment,surf,hough-transform,Python,Opencv,Alignment,Surf,Hough Transform,嘿, 是否可以使用Python根据图像中不直的线条自动对齐图像? 例如,如果我有以下图像: 我想自动查找不直的线条,如图所示: 找到这条线后,我想根据这条线对齐图像,因此图像将是这样的(此图像是通过此方法手动与Lightroom对齐的): 你们有没有关于如何做这样的事情的线索,也许有人写的算法可以做类似的事情? 首先,我尝试使用ORB和ECC方法来对齐图像,但没有给出我可以使用的精确结果, 所以我想用更聪明的方法,真正找到线条,但当我试图找到线条时,结果是线条遍布整个地方(因为砖块之间的线

嘿,

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

我想自动查找不直的线条,如图所示:

找到这条线后,我想根据这条线对齐图像,因此图像将是这样的(此图像是通过此方法手动与Lightroom对齐的):

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


我在网上搜索并找到了多伦多大学的一篇文章,其中谈到了这一点,但我不知道如何实现这些方法来创建这样一个算法,如上所述,使用Python查找行非常复杂。

使用Hough变换的方法是正确的。是的,有很多台词。 您未能描述您想要的和不想要的线条之间的区别(在各种未指明的细节中),但让我试着为您提取一些想法:

  • 坡度“接近”垂直或水平
  • 每个方向上的最长线
使用Hough查找它能找到的所有线条。运行另一个过程将一系列线段(拟合相同的线性方程?)连接到较长的直线中。例如,您应该能够识别浴帘的左边缘,即使它从水槽后面经过

现在,您至少需要每个方向上最长的线。也要考虑“框架”的情况:如果这条线离中心很近(例如,在照片的外部25%),那么在同一方向上寻找一条足够长的线,但是在相反的方向上。 这些过程中的每一个都很容易用基本线性代数进行量化和检验。您可以通过对线段进行适当排序以增强每个操作来简化该过程


这些提纲和提示是否足以让您行动起来?

谢谢您的回复!你写的东西帮助我理解了技术关键部分,但我无法找到正确的线条,每当我尝试使用Hough变换查找线条时,它会给我砖块之间的线条,因此实际上我无法完成“第一”阶段。我用的是OpenCV,有没有更好的方法可以推荐给我呢?转换也应该给你更长的线条。如果不是,那么算法就有问题了。你得找一个更好的Hough套餐。