2010-05-24 7 views
5

Chcę utworzyć urządzenie rozpoznawania arkuszy. Oto opis:Jaki jest najlepszy algorytm lokalizowania punktu w pliku obrazu?

  1. Mój system wykorzystuje czarno-biały schemat kolorów.
  2. Papier listkowy ma mały czarny prostokąt na każdym rogu i dodatkowy mały czarny prostokąt w celu określenia orientacji w pobliżu jednego z poprzednich prostokątów.
  3. Papier jest skanowany w celu uzyskania obrazu (na przykład w formacie bmp).

Pierwszym krokiem jest zlokalizowanie tych pięciu odniesień na obrazie jako najbardziej efektywnych.

Mój przybliżony pomysł polega na śledzeniu wiersza po wierszu i od lewej do prawej dla każdego wiersza. Wydaje mi się, że to bardzo wolno.

Czy istnieje lepszy sposób to zrobić?

Z góry dziękuję.

pozdrowienia,

Suugaku

+0

Przetwarzanie obrazu nie jest tak proste jak dopasowanie tekstu. W dużej mierze zależy od obrazu. Mogę dać ci kilka sugestii, jeśli pokażesz zdjęcie. Mimo że opisałeś obraz, lepiej go obejrzeć. – claws

Odpowiedz

1

Można zacząć od poszukiwania gdzie zazwyczaj oczekiwać, aby znaleźć obrazy odniesienia. Możesz to zrobić, zachowując statystyki dotyczące miejsca, w którym były wcześniej. W szczególności jeśli masz dwie klatki wzięte jedna po drugiej, są szanse, że punkty odniesienia nie przesunęły się bardzo daleko.

Po znalezieniu jednego lub kilku punktów odniesienia pozycja pozostałych staje się mocno ograniczona, aby można było bardzo dobrze odgadnąć, gdzie inni muszą leżeć. Za każdym razem, gdy znajdziesz nowy punkt, zapewnia on więcej wskazówek, gdzie mogą znajdować się pozostałe punkty.

Możesz zacząć od szybkiego zgadywania, aby szybko znaleźć punkty i powrócić do skanowania liniowego, jeśli się to nie uda.

0

Napisałem kiedyś mała OCR włamać dla klienta, który przypadkowo drukowanej & wysłane ton (litteraly) faktur - i nie śledzić to, co oni już wysłane faktury lub nie - na szczęście wszystkie faktury został zeskanowany i może być śledzone przez hack OCR napisałem :). Wystarczająco chwalenie się ...

Prędkość nie jest problemem, jeśli używasz metody BitMap.LockBits() (http://www.bobpowell.net/lockingbits.htm). Następnie wszystko, czego potrzebujesz, to kilka godzin.

Powiązane problemy