Próbuję, dla własnych celów edukacyjnych, opracować implementację algorytmu, który wyświetlałby książki, biorąc pod uwagę obraz półki z książkami, taki jak poniżej:
Pierwszym krokiem jest podzielenie obrazu na pojedyncze książki.
Mój algorytm w Mathematica to:
img = ColorConvert[Import["http://i.stack.imgur.com/IaLQk.jpg"], "GrayScale"]
- wykonaj podstawowe wykrywanie krawędzi i
usuń tekst i staraj się zachować długie linie
edge = DeleteSmallComponents[EdgeDetect[img, 3],Last[ImageDimensions[img]]/5]
następnie usuń niechciane poziome linie
lines = Sort[ImageLines[img5] /. {{0., _}, {_, _}} -> Sequence[]] Show[img, Graphics[{Thick, Orange, Line /@ lines}]]
Wyniki są jednak niezbyt dobre:
Moje pytania to:
- Jak mogę to poprawić, aby uzyskać lepsze wyniki?
- Czy jest na to lepszy sposób?
- jak dalej przetwarzać obrazy, aby zwiększyć dokładność na (późniejszym) etapie OCR?
- Jak wykorzystać informacje o kolorze, aby poprawić segmentację?