Skocz do zawartości

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

Seraphis

Grafika - rozpoznawanie linii

Polecane posty

Taki problemik, z ktorym walcze juz pare dni i nie przychodzi mi nic sensownego do glowy.

Mamy linie, a dokladniej luk ostro zagiety. Jak znalezc srodek tego luku (w sensie punkt na linii, gdzie kat miedzy dwoma ramionami bedzie najostrzejszy)? Program pisze w C++ Builderze, wiec jakby komus cos do glowy przyszlo, to najlepiej cos pod ten jezyk (ale nawet slowny algorytm moze wystarczy, jak bede w stanie go zaimplementowac).

Przyklad luku:

linia.png

Linia jednopikselowa (choc czasem moze sie trafic, ze jest trzeci piksel miedzy dwoma na skosie, np tak: ' .: ' )

Ma ktos jakies pomysly?

Z gory dziekuje.

Link do komentarza
Udostępnij na innych stronach

Rozumiem, że ten obraz może zawierać jedynie tą linię i białe tło. Nie ma potrzeby wyszukiwać samej linii spośród innych informacji na obrazie.

Ja bym to tak zrobił:

Znajdujemy punkty skrajne.

Tworzymy tablicę ze wszystkimi punktami linii, ułożonymi po kolej.

Dla każdego punktu analizujemy X punktów do przodu i do tyłu, w celu wyznaczenia jak bardzo odbiegają od linii prostej.

Wygrywa punkt o najwyższym wyniku.

Link do komentarza
Udostępnij na innych stronach

Ja mam taki pomysł:

1. bierzesz sobie X punktów do przodu i do tyłu od danego punktu

2. dla punktu i wyznaczasz równanie prostej,

3. liczysz ile spośród tych wybranych punktów nie spełnia tego równania

4. zrób 2 i 3 dla wszystkich wybranych punktów

5 zsumuj wyniki dla wszystkich wybranych punktów i zapisz sobie jako wynik dla danego punktu

Link do komentarza
Udostępnij na innych stronach

Odległość punktu do przodu i do tyłu wynosi chyba zawsze tyle samo, 1 piksel. Chyba, że źle Cię zrozumiałem.

Nie masz żadnych dodatkowych informacji na temat tego zadania? Bo ja sobie tak myślę, że przecież łuk to to w ogóle nie jest. Ten "łuk" na obrazku, to bardziej krzywa, która takich punktów może mieć z kolej więcej niż jeden.

Link do komentarza
Udostępnij na innych stronach

To jest fragment odcisku palca. Wg jednego z algorytmow, jakie znalazlem szuka sie linii (luku?) o najblizej polozonych ramionach i na jej "czubku" jest tzw Punkt Odniesienia (Reference Point), wzgledem ktorego mierzy sie odleglosci do minucji.

A chodzilo mi o cos takiego, ze bierzemy jakis punkt, sprawdzamy wspolrzedne 10-go piksela po prawo i 10-go piksela po lewo. Na podstawie tych wspolrzednych obliczyc odleglosc miedzy nimi i sprawdzac kolejny punkt. Moznaby tak wtedy leciec punkt po punkcie miedzy np 11-tym pikselem od lewego konca do 11-go piksela prawego konca. Te liczby to tak umownie, bo chyba 5 w lewo i prawo by wystarczyla.

EDIT: Ok, zrobilem to tak, ze lece piksel po pikselu wzdloz linii i sprawdzam sume odleglosci od tego piksela do koncow linii. Punkt z najwieksza suma jest tym punktem koncowym ;-)

Link do komentarza
Udostępnij na innych stronach



  • Kto przegląda   0 użytkowników

    • Brak zalogowanych użytkowników przeglądających tę stronę.
×
×
  • Utwórz nowe...