为了我自己的学习目的,我正在尝试开发一种算法的实现,该算法将列出书籍,给定如下的书架图像:
第一步是将图像分割成单独的书籍。
我在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}]]
但是,结果并不理想:
我的问题是:
- 我怎样才能改进它以产生更好的结果?
- 有没有更聪明的方法来做到这一点?
- 我应该如何进一步处理图像以提高(后期)OCR 阶段的准确性?
- 如何使用颜色信息来改进分割?