检测 JPEG 图像中的线条

问题描述 投票:0回答:1

我是 Swift 和图像处理的新手,但我没有找到任何程序来做我想做的事。我有数千页的调查问卷,但我使用的 OMR 免费软件(光学标记识别)无法检测到这些框。这是因为问卷是由我或研究参与者打印的,会产生不同的图像(缩放和旋转)。纠正图像是不够的。幸运的是,每页顶部的某处都有一条水平线。所以,算法看起来像这样:

  1. 选择所有要转换的 JPEG(完成)
  2. 输入目标线的坐标(完成)
  3. 对于每个 JPEG 图像 3a.加载图像(NSData?不是 UIImage,因为它是一个应用程序) 3b.解压缩图像 3c.检测页面顶部的线 3d。计算并应用角度和平移(我在 Java 中找到了一个免费的资源) 3e.以修改后的名称保存图像

步骤 3a-3b 需要您的帮助。对于步骤 3c,我应该使用 Canny 边缘检测器然后进行霍夫变换吗?

如有任何想法,我们将不胜感激。

----编辑----

这是一张描述问题的图片。在上半部分(患者 #1),顶部水平线的坐标为 (294, 242) 至 (1437, 241)。下半部分(患者 #2),顶部水平线的坐标为 (299, 230) 至 (1439, 230)。这似乎是一个很小的差异,但 OMR 会查看具有固定坐标的 ROI(即框)。在其他扫描图像中,差异可能更大,顶线可能不是水平的(例如(X1,Y1)=(320,235)和(X2,Y2)=(1480,220))。

我的想法是永远为复选框(OMR 做的)和顶线的坐标获取一个模板(我可以用 Paint 或其他什么来获取它们)。然后在运行 OMR 之前将所有图像与此模板对齐(使用它们的顶行)。可能需要缩放、旋转和平移。换句话说,所有图像都应该完美地堆叠在模板图像上,以便 OMR 正确执行......

--- 编辑 12 月 26 日 ---

我已经把OpenCV的概率霍夫变换翻译成了Swift(来自GitHub的open cpp代码。不幸的是,检测到的线段太短(即没有捕获到整个线段)。我想知道:它有意义吗在 Hough 变换之前使用 Canny 边缘检测器来检测白页上的单段黑线?

swift image jpeg
1个回答
-1
投票

我自己也遇到过类似的问题,您最终是如何在 swift 中翻译概率霍夫变换的?

© www.soinside.com 2019 - 2024. All rights reserved.