从书架图像中切片和识别书名和作者


13

出于我自己的学习目的,我正在尝试开发一种算法,该算法将列出书,并给出如下书架的图像:

在此处输入图片说明

第一步是将图像切成单独的书。

我在Mathematica中的算法是:

    img = ColorConvert[Import["http://i.stack.imgur.com/IaLQk.jpg"], "GrayScale"]
  • 做一个基本的边缘检测和
  • 删除文本并尝试保持长行

    edge = DeleteSmallComponents[EdgeDetect[img, 3],Last[ImageDimensions[img]]/5]
    
  • 然后删除不需要的水平线

    lines = Sort[ImageLines[img5] /. {{0., _}, {_, _}} -> Sequence[]]
    Show[img, Graphics[{Thick, Orange, Line /@ lines}]]
    

但是结果却不尽人意:

在此处输入图片说明

我的问题是:

  1. 我该如何改善它以获得更好的结果?
  2. 有更聪明的方法吗?
  3. 我应该进一步处理图像以提高(后期)OCR阶段的准确性吗?
  4. 如何使用颜色信息改善分割效果?

1
@OrenPinsky我看不到细分问题:“假书区域”的数量不高(我在您提供的示例中只能看到一个),并且如果您打算进行某种文本识别,下一步,应该足以区分书籍(区域有文字)和非书籍(无文字)
penelope

3
@OrenPinsky,我想说您的结果非常好。:)
Dima 2012年

Answers:



4

您使用哪种方法检测线路?您是否尝试过使用LSD

这是我使用LSD进行的快速测试的结果:

在第一张图像中,我仅显示了垂直线段,其角度在75到105度之间,且长度大于图像的: 0.1height图片1

第二张图片是具有相同角度约束但不考虑片段长度的结果: 图片2

您可以尝试一下,弄清楚如何选择最佳的线段,将其扩展到线段,并且可能会得到比您发布的结果更好的结果。


6
“您是否尝试过使用LSD?” 不错的尝试,联邦调查局(FBI);)
Lorem Ipsum 2012年

Mathematica的ImageLine基于霍夫变换,现在,我确信(主要是从此处的反馈)它可以很好地工作。但是,让我感到困扰的是,当我转换为灰度图像时,我失去了相关数据,而在此应用中,颜色数据可以(直观地)帮助一个强大的边缘检测器。(对于史蒂夫·乔布斯来说,效果非常好!;-)
奥伦·平斯基

我见过一个朋友使用LSD进行门检测,我认为他最终对结果感到满意。我会说值得一试:D
penelope

1

您可以尝试对单个颜色域进行边缘检测,然后使用您选择的边缘检测方法合并它们。

与直接在彩色图像上进行边缘检测相比,它可能会产生更好的结果。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.