检测JPEG图像中的线条

时间:2017-12-12 09:41:30

标签: swift image jpeg

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

  1. 选择要转换(完成)的所有JPEG
  2. 输入目标线的坐标(完成)
  3. 对于每个JPEG图像 3A。加载图像(NSData?不是UIImage,因为它是一个应用程序) 3B。解压缩图像 3C。检测页面顶部的行 3D。计算并应用角度和翻译(我在Java中找到了一个免费的源代码) 3E。将图像保存在修改后的名称下
  4. 我需要你帮助完成步骤3a-3b。对于步骤3c,我应该使用Canny边缘检测器,然后使用Hough变换吗?

    任何想法都会受到赞赏。

    ----编辑----

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

    我的想法是获得一个复选框的模板(OMR这样做)和顶线的坐标一次永远(我可以使用Paint或其他任何东西)。然后在运行OMR之前将所有图像对齐到此模板(使用它们的顶行)。可能需要缩放,旋转和翻译。换句话说,所有图像都应完全可堆叠在模板图像上,以便OMR正确执行...

    enter image description here

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

    我已经将OpenCV的概率Hough变换转换为Swift(open cpp code from GitHub。不幸的是,检测到的段太短(即没有捕获整个线段)。我想知道:在Hough变换之前使用Canny边缘检测器在白页上检测黑线的单个段是否有意义?

0 个答案:

没有答案