问题标签 [canny-operator]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
opencv - 在 OpenCV 3.3 中查找具有复杂背景和丰富纹理的图像中的轮廓
我正在开发一个项目,使用 OpenCV 3.3 处理如下图所示的大理石板图像。
可以在https://1drv.ms/f/s!AjoScZ1lKToFheM6wmamv45R7zHwaQ上找到更多我正在处理的具有不同大理石纹理和尺寸的样本
要求是:
- 将大理石板与背景分开并移除背景(填充白色),以便只显示板。
- 计算平板的面积(相机到大理石平板的距离和镜头的参数已知)
我使用的策略是:1)找到大理石板的轮廓,2)删除不在轮廓内的部分,3)获取轮廓的面积大小,4)计算其物理面积。
板坯的轮廓如下图红色所示(这是手工完成的)。
我尝试了几种方法在图像中找到板的轮廓,但由于背景复杂,大理石纹理丰富,未能达到令人满意的效果。
我正在使用的处理逻辑是:将图像转换为灰色并对其进行模糊处理并使用Canny查找边缘,然后使用findContours查找轮廓,代码如下:
我尝试为数十种组合调整模糊和 Canny 参数,但仍然失败。我还尝试使用 HoughLinesP 找到具有几组不同参数的板的边缘,但也没有这样做。
我是计算机视觉的新手,我现在的问题是:
- 我是否正在寻找错误的方法或策略来找到平板轮廓?有没有更好的算法或组合?还是我需要专注于调整 Canny/findContours/HoughLinesP 算法的参数?
- 由于背景复杂,这种图像真的很难处理吗?
我愿意接受任何可以帮助我完成目标的建议。先感谢您。
tensorflow - 张量相对于元素邻居的条件值
我正在使用 Tensorflow 实现 Canny 算法(这是使用边界作为评估指标所必需的,但这是题外话)。其中一个步骤是计算“非最大抑制”,这包括将 3x3 区域中的中心元素归零,除非两个特定的邻居更小。更多细节在这里。
如何使用 Tensorflow 实现此操作?
我实际上正在使用 Keras,但 Tensorflow 解决方案也可以工作,作为参考,我的代码到目前为止看起来像这样:
python-3.x - 如何在python中量化Canny边缘检测器中的方向
我试图理解我在 Rosettacode.org 上找到的 Python 中 Canny 运算符的这种实现,但不明白它是如何计算 thetaQ 的。为什么它在这个公式中使用 5 以及它如何量化方向?有人可以帮我吗?
java - 非常精确的线检测,openCV Java
我将首先解释现实世界应用程序中的问题;我有一个指向黑暗表面的相机。进纸器(只是简单的机器,当控制计算机告诉它时会吐出页面)将纸张送入相机正在寻找的区域。
我将使用 openCV 处理图像,并确定进纸器是否正确进纸。
这意味着我不仅要能够确定是否存在页面,还要确定是否存在多个页面。有时会送入多页,因为它们粘在一起,在这种情况下,这些页面非常接近彼此完美对齐,除非您仔细观察,否则它们在视觉上似乎是一页。
我遇到的问题是 Canny 边缘检测与霍夫变换相结合,并没有给我所需的准确度。使用 Canny 在图像中查找纸张的典型示例返回每个页面边缘为多行 (5-15) 的结果。使用查找轮廓确定这是一个矩形。
这些典型示例无济于事,因为我需要能够检测到另一条线非常靠近页面边缘。
我一直在玩霍夫变换的阈值以及我在 Canny 之前应用了多少模糊并且已经得到它相当可靠,但问题是我认为现在灵敏度太低并且任何页面都在上面提供此系统不会检测到示例(在彼此之上)。
上图有两个可见页面,一个刚刚从进纸器中出来。页面上有文字。我需要能够识别页面的角度,并且实际上只有一页。
我遇到的问题是我需要足够灵敏的行检测来判断是否有两个页面粘在一起,但我也不需要检测到页面上的文本行。
opencv - OpenCV使用相机检测电视屏幕
我正在使用 iPhone 摄像头来检测电视屏幕。我目前的方法是逐像素比较后续帧并跟踪累积差异。结果是二进制图像,如图所示。
对我来说,这看起来像一个矩形,但 OpenCV 不这么认为。它的侧面并不完全笔直,有时甚至会有更多的颜色渗出,使检测变得困难。这是我试图检测矩形的 OpenCV 代码,因为我对 OpenCV 不是很熟悉,所以它是从我找到的一些示例中复制而来的。
经过 Canny-step 之后,图像如下所示:
对我来说似乎很好,但由于某种原因没有检测到矩形。谁能解释我的参数是否有问题?
我的第二种方法是使用 OpenCV Hough 线检测,基本上使用与上面相同的代码,对于 Canny 图像,然后我调用 HoughLines 函数。它给了我很多行,因为我必须降低阈值来检测垂直线。结果如下所示:
问题是有很多行。如第一张图片所示,如何找出与蓝色矩形边相接触的线条?
还是有更好的方法来检测屏幕?