问题标签 [edge-detection]
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.
c++ - 访问负像素值 OpenCV
我正在尝试对 OpenCV 中的图像执行过零边缘检测。我模糊并使用 cvLaplace() 然后从 (0, max) 缩放它。我的问题是:如何以正确识别负值的方式访问该图像中的像素值?使用 OpenCV (cvPtr2D) 提供的函数返回无符号字符。有什么想法或意见吗?
谢谢
image - 如何使用倒角匹配算法查找“相似图像”
我想了解有关如何使用倒角匹配算法(边缘匹配算法)查找“相似”图像的更多信息。我想知道是否可以为匹配的结果放置一个“分数”。
c# - 如何测量边缘检测图像中的边缘长度?
我想通过使用图像处理边缘检测技术来计算仓库中的箱子数量。所以我使用Sobel算法来检测边缘。现在我需要测量边缘长度。有谁知道如何获得边的长度和任何合适的算法来获得最终计数?
graphics - 区分表行和大写字母
我正在做一些图形处理,我有一个逻辑,其中我有一个带边缘的位图,我忽略了字母 Eg 中的所有表格边缘
0 - 背景颜色
1 - 忽略边缘
2 - 我需要的边缘
我的逻辑很简单,如果连续像素的数量超过某个阈值,例如20像素的连续边缘,它会将其视为一条线而忽略它。
我的问题是在大字体和H和T等字母上,它肯定会超过阈值。请告知是否有更好的方法或额外的逻辑我需要实现以将表格行与字母分开。
[更新] 附加考虑:性能,此逻辑将在触摸移动(拖动)期间使用。它会被调用很多次,所以它需要很快。
algorithm - 边缘检测最快的方法是什么?
我正在考虑为工业问题实施基于图像处理的解决方案。
图像由一个红色矩形组成。在里面我会看到一个圆圈矩阵。要求是在以下约束条件下计算圈数。(实际应用:计算瓶壳中的瓶子数量。是否缺少瓶子???)
- 操作所需的时间应该非常短。
- 我还需要检测红色矩形。我的目标是清点包裹中的物品,并且没有触发相机的机制(传感器)。所以相机需要连续捕捉照片,但程序应该有办法丢弃不必要的图像。
- 处理应该是实时的。
- 图像捕捉中可能存在“噪音”。您可能会看到椭圆形而不是圆形。
我的问题如下,
- 与给定场景匹配的最佳边缘检测算法是什么?
- 除了边缘检测之外,我还可以使用其他机制吗?
- 我使用的语言和系统的性能之间有很大的影响吗?
php - 在 PHP 中创建基于边缘检测的图像
我很好奇 - 是否有可能在 PHP 中实现:
1)将图像文件发送到服务器 2)处理图像 = 检测边缘并根据边缘创建简单的笔划 3)将文件保存在服务器上/将其发送到用户的浏览器/其他
这是一些“示例”文件;P(您可以看到它不是使用任何启用边缘检测的程序制作的,而是手工制作的 - 仅作为示例):
algorithm - 标记三角形网格边缘的算法
介绍
作为较大程序(与渲染体积图形相关)的一部分,我有一个小但棘手的子问题,其中需要以特定方式标记任意(但有限)三角形 2D 网格。不久前,我写了一个解决方案(见下文),这对于我当时的测试网格来说已经足够好了,尽管我意识到这种方法可能不适用于人们能想到的每一个可能的网格。现在我终于遇到了一个网格,目前的解决方案根本不能很好地执行它——看起来我应该想出一种完全不同的方法。不幸的是,我似乎无法重新调整我的思路,这就是为什么我想在这里问的原因。
问题
考虑下面的图片。(颜色不是问题的一部分;我只是添加它们以改善(?)可视化。此外,变化的边缘宽度是完全不相关的伪影。)
对于每个三角形(例如,橙色 ABC 和绿色 ABD),三个边中的每一个都需要被赋予两个标签之一,例如“0”或“1”。只有两个要求:
- 并非三角形的所有边都可以具有相同的标签。换句话说,对于每个三角形,必须有两个“0”和一个“1”,或者两个“1”和一个“0”。
- 如果一条边由两个三角形共享,则两者的标签必须相同。换句话说,如果图片中的边 AB 为三角形 ABC 标记为“0”,那么它也必须为 ABD 标记为“0”。
网格是真正的 2D 网格,它是有限的:即,它不包裹,并且具有明确定义的外边界。显然,在边界上满足要求很容易——但在内部就变得更加困难。
直觉上,看起来至少应该存在一种解决方案,即使我无法证明这一点。(通常有几个——任何一个都足够了。)
当前解决方案
我目前的解决方案是一个非常强力的解决方案(此处提供只是为了完整性——请随意跳过本节):
- 维护四组三角形——每个可能计数 (0..3) 的剩余边要标记一组。一开始,每个三角形都在其中三个边需要标记的集合中。
- 只要存在带有未标记边的三角形:
找到仍然存在三角形的最小非零数量的未分配边。换句话说:在任何给定时间,我们都尽量减少已部分完成标记的三角形的数量。剩余的边数将在 1 到 3 之间。然后,只需选择一个这样的三角形,其中剩余的特定边数要分配。对于此三角形,请执行以下操作:- 看看是否有任何剩余边的标签已经被其他三角形的标签强加了。如果是这样,请按照上述要求 #2 所暗示的方式分配标签。
- 如果这导致了死胡同(即,对于当前三角形,要求#1 不能再满足),那么从头开始整个过程。
- 按如下方式分配任何剩余边:
- 如果到目前为止还没有标记边缘,则随机分配第一个。
- 当一个边缘已经分配时,分配第二个边缘,使其具有相反的标签。
- 当分配两条边时:如果它们具有相同的标签,则分配第三条具有相反的标签(显然);如果两者有不同的标签,则随机分配第三个。
- 为不同数量的未分配边更新三角形集。
- 如果我们到达这里,那么我们有一个解决方案——万岁!
通常这种方法只需要几次迭代就可以找到解决方案,但最近我遇到了一个网格,该算法仅在重试一两千次后才会终止......这显然表明可能存在它永远不会终止的网格.
现在,我希望有一个确定性算法,可以保证总能找到解决方案。计算复杂度不是那么大的问题,因为网格不是很大,并且标记基本上只需要在加载新网格时完成,这不会一直发生 - 所以具有(例如)指数的算法复杂性应该没问题,只要它有效。(当然:效率越高越好。)
谢谢你读到这里。现在,任何帮助将不胜感激!
编辑:基于建议解决方案的结果
不幸的是,我无法让Dialecticus 建议的方法起作用。也许我没弄对……不管怎样,考虑下面的网格,起点用绿点表示:
让我们放大一点……
现在,让我们开始算法。第一步之后,标签看起来像这样(红色=“星号路径”,蓝色=“环形路径”):
到目前为止一切都很好。第二步之后:
第三
步:
……第四
步:
但是现在我们有问题了!让我们再做一轮 - 但请注意以洋红色绘制的三角形:
根据我目前的实现,洋红色三角形的所有边都在环形路径上,所以它们应该是蓝色的——这实际上是一个反例。现在也许我弄错了……但无论如何,最接近起始节点的两条边显然不能是红色的;如果第三个被标记为红色,那么该解决方案似乎不再适合这个想法。
顺便说一句,这是使用的数据。每行代表一条边,列解释如下:
- 第一个节点的索引
- 第二个节点的索引
- 第一个节点的x坐标
- 第一个节点的y坐标
- 第二个节点的x坐标
- 第二个节点的y坐标
起始节点是索引为 1 的节点。
我想接下来我应该尝试Rafał Dowgird 建议的方法......但也许我应该在一段时间内做一些完全不同的事情:)
java - 从 3d 数组中获取边界信息
嘿,我目前正在尝试从 3d 数组中提取信息,其中每个条目代表一个坐标,以便从中绘制一些东西。问题是数组非常大(并且有几个),这意味着我实际上无法绘制所有这些。
我想要完成的只是绘制外部坐标的表示,如果您愿意,可以绘制数组的外壳。该数组不完整,可能有大的空白空间,只设置了几个像素,或者有大的像素数据簇组合在一起。我不知道期待什么样的形状(可能是一个简单的立方体,或者一个复杂的凹面网格),并且正在努力想出一种算法来有效地提取边界。该数组有效地将一组点存储在 3d 空间中。
我想创建 6 个 2d 网格(3d 阵列的每一侧一个),并为每个位置获取他们可以找到的最浅点,然后分别绘制它们。然而,正如我所说,这个 3d 形状可能是凹形的,这会给这种方法带来问题。想象一个顶部有一个圆圈的圆锥体(所说的圆圈比圆锥体的底部大)。虽然顶部和侧面的网格会从形状中获得正确的深度信息,但底部的网格会通过垂直线将底座连接到圆形,让我有效地松开圆锥形。
然后我想逐个切片分析数组,并从切片数据创建 2 个网格。我相信这应该适用于任何类型的形状,但是我正在努力寻找一种算法,它可以准确地为我提供每个切片的边界信息。再一次,如果你只是尝试从切片创建高度图,如果它们有任何凹面,你会遇到问题。我也通过了某种边缘跟踪算法,但是数组不提供连续的数据,而且几乎可以肯定每个切片都没有连续的边缘。
我尝试研究用于医学成像等的体积渲染,因为它处理与我所拥有的类似的问题,但实际上找不到任何我可以使用的东西。
如果有人对此类问题有任何经验或任何有价值的意见,请您指出正确的方向。
PS 我更喜欢得到一个封闭的外壳表示,因此我早期的 2d 网格方法。然而,一种简单地给我外壳点的方法,它们之间没有任何联系,这仍然会非常有帮助。
谢谢你,泽
c# - 图像处理中的边缘检测
我需要获取检测到的 sobel 边缘和阈值二进制图像的矩形计数器,有谁知道任何合适的算法来获取计数,可以使用 c sharp 来实现。
ruby - 给定坐标和颜色,如何以编程方式确定该颜色的连续区域?
我正在使用 Ruby 和 RMagick 来处理图像,但问题与语言无关......
我基本上是在处理表格数据的图像,并认为确定单元格的最简单方法之一是检测一个连续的白色区域(或任何背景颜色),然后获取内容的边界框。
但是在任何给定位置确定颜色的连续区域的最有效方法是什么?