Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.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
Image processing 在opencv';之后,如何在一组细小的边上创建矩形;什么是精明的检测?_Image Processing - Fatal编程技术网

Image processing 在opencv';之后,如何在一组细小的边上创建矩形;什么是精明的检测?

Image processing 在opencv';之后,如何在一组细小的边上创建矩形;什么是精明的检测?,image-processing,Image Processing,我是一个新手,目前我需要从一张低质量的图片中找到一个矩形区域,该图片在背景之外只有矩形区域 我使用canny检测器提取了许多微小的边缘,这些边缘由几个矩形区域组成,还有一些单独的类似噪声的边缘 那么,专家们,我如何处理这个中间的输出图像来定位那些有意义的矩形区域的位置呢 非常感谢 首先要做的显而易见的事情是丢弃不属于矩形的任何边。最好的情况是,如果所有矩形的方向都与摄影机的方向相同。在这种情况下,丢弃任何不是南北或东西的边。如果所有矩形都具有相同的方向,但相机没有,则查找主方向模块90度,并丢弃

我是一个新手,目前我需要从一张低质量的图片中找到一个矩形区域,该图片在背景之外只有矩形区域

我使用canny检测器提取了许多微小的边缘,这些边缘由几个矩形区域组成,还有一些单独的类似噪声的边缘

那么,专家们,我如何处理这个中间的输出图像来定位那些有意义的矩形区域的位置呢


非常感谢

首先要做的显而易见的事情是丢弃不属于矩形的任何边。最好的情况是,如果所有矩形的方向都与摄影机的方向相同。在这种情况下,丢弃任何不是南北或东西的边。如果所有矩形都具有相同的方向,但相机没有,则查找主方向模块90度,并丢弃任何异常边。最坏的情况是当矩形都有不同的方向时。在这种情况下,您仍然希望边方向聚类:对于每条边,至少应有一条平行边和两条正交边。丢弃任何不匹配的边。(这假设您找到的边长度超过几个像素;很难确定较短边的角度。)

按方向消除伪边后,下一步是查看是否可以连接它们。您仍然应该按照上一步中的角度对它们进行分组。现在,假设对齐的边属于同一个矩形,并用一条较长的边替换它们。这可能会导致对齐矩形之间出现假边。这可能不是一个大问题,但如果是,请在最后通过验证步骤进行修复

您的边查找器很可能无法在拐角处正常工作,因为实际边在拐角处突然改变方向。因此,您应该将找到的边延长几个像素

扩展的边现在将生成一系列交叉点。同样,利用您已按方向排列边的事实。只需检查几乎正交边的交叉。如果找到它们,请创建一个“交叉”对象并将其与两条边关联。它们是试探性的角落

一旦你这样做了,寻找至少有2个交叉点的边,看看你是否能匹配它们。根据数据的质量,您可能希望在有3个或4个角时确定已找到矩形。如果在一条边上发现过多交叉点,则可能连接了两个对齐矩形的边。如果有两侧对齐的矩形,这可能会特别困难:

 _ _
|_|_|

你能发布一个输入输出示例吗?输入图像是中间的图片输出图像是houghlined,因为我想在原始输入图像中找到金黄色的条带/矩形。我的方法被认为是从精明的二进制输出中分析出来的,这是正确的方法吗?非常感谢!也许这与我的问题没有直接关系,这是我的错,没有明确地问到。但是你的信息对我澄清这类问题很有帮助。我用输入的原始图像更新了这个问题;我的任务是找到那些金黄色的条状/长方形。我想通过精明的边缘中间输出图像找到它们,因为在这张图片中,红线是houghlined。你们能继续帮我解决这个问题吗?