【问题标题】:Detecting dot pattern from output of a scanner从扫描仪的输出中检测点阵图形
【发布时间】:2012-10-16 17:15:46
【问题描述】:

我是图像处理的新手。我有一张bmp 格式的图像和.bin 文件用于扫描仪输出。 bin 文件具有hex 值或原始数据。

首先我将解释这个过程。我们使用 13 位数字。每个数字都有一个以点格式表示的模式。比如说,一个 13 位数字将有 20 个点。每个点的位置取决于数字。这是encryption 部分。现在这些点被重复打印。这些是使用扫描仪扫描的,扫描仪将上述文件作为输出。

下一步是处理这些输出以返回 13 位数字。我正在使用openCVC。有人可以给我一些关于如何做到这一点的想法。我无法发布 bin 文件。但是bin文件的内容是这样的格式:

10 78 84 88 84 84 8c 88 88 8c 8c 90 88 88 8c 8c 90 90 88 90 8c 8c 8c 8c 8c 94 90 90 8c 90 90 94 8c 8c

我已经添加了应用于图像的精明边缘检测的输出。

提前谢谢...!

【问题讨论】:

  • 如果您发布图片的链接,具有适当权限的人会将其包含在您的问题中:)
  • 添加了使用openCV对图像进行的canny检测的输出
  • 我认为我对所要求的内容并不完全清楚。 “检测点模式”是什么意思?有什么你想比较的吗?您想知道这些点是否存在/隔离这些点吗?

标签: c image-processing opencv


【解决方案1】:

我并不是真正的 opencv 用户。然而,假设你想提取点区域,一个快速的肮脏方法是用精明的边缘检测识别二进制图像中的连通分量。 See this

标记所有连接的组件后,您可以检查每个组件的circularity

然后对每个连通分量的圆度和/或面积(计算为每个连通分量中 1 的总和)应用过滤器。只有通过过滤器的才是你的点。

这可能不是最好的方法,因为合并到外圈上的点可能会被过滤掉,但如果您只关心孤立的点,它原则上应该可以工作。此外,您可能希望适当地对图像进行阈值处理,而不是应用边缘检测

祝你好运

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-26
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多