Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> sprawdzenie czy na obrazku znajduje się jakiś okrąg
bialko0019
post
Post #1





Grupa: Zarejestrowani
Postów: 294
Pomógł: 4
Dołączył: 19.12.2008

Ostrzeżenie: (0%)
-----


Witam. W sumie nie wiem czy do dobrego działu dałem temat, ponieważ nie mam pomysłu i jestem otwarty na języki programowania. Mam obrazek. Załóżmy ten: (IMG:http://up.programosy.pl/foto/circle.png)

Założenie jest takie - szukam współrzędnych pozycji okręgu, który może być niedoskonały - czyli tak jak na obrazku troche poszarpane itd, ale jak by nie patrzeć - jest to jakiś okrąg. Kolejną rzeczą jest to, że zawsze kolory obrazka to czarno-biały. Nie mam pomysłu, a chciałbym wykryć współrzędne, gdzie ten okrąg się znajduje. Ma ktoś jakikolwiek pomysł? ;-) Jestem otwarty na propozycje ;-)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Daimos
post
Post #2





Grupa: Zarejestrowani
Postów: 1 319
Pomógł: 118
Dołączył: 26.11.2003
Skąd: Lublin

Ostrzeżenie: (0%)
-----


A ja bym dalej skupił się na szukaniu najdłuższych odcinków, mając już Twoją siatkę, znajdziesz "mniej więcej" okrąg i rysujesz na nim kreski, jak tutaj:

(IMG:http://up.programosy.pl/foto/kolo_4.png)

Te żółte linie można stopniowo bardziej zagęszczać, w momencie kiedy robią się dłuższe. Dzięki temu, kiedy znajdziesz najdłuższe odcinki, to będą Twoje wyznaczniki środka okręgu.

-- edit

W sumie można jeszcze bardziej optymalnie sprawdzać:

1. Zamiast siatki, sprawdzasz piksele co np. 50px (zakładając, że okrąg jest zawsze większy). Dzięki temu otrzymujesz siatkę w formie kropek, przynajmniej +90% do wydajności. Sprawdzanie odbywa się np. od lewej do prawej i później przeskok do nowego wiersza,
2. W momencie kiedy znajdziesz biały piksel, to rysujesz linię pomocniczą szukając kolejnych białych,
3. Udało się narysować linię pomocniczą, więc idziesz np. 3px w dół i znowu rysujesz linię pomocniczą po białych px, aż do skutku, kierując się tym co napisałem na samej górze,
4. wybierasz kilka najdłuższych lini pomocniczych i rysujesz na nich pionowe, w pobliżu środka,
5. koniec, najdłuższe linie wyznaczą Ci środek i wielkość

Można kombinować i kombinować, ale nie wiem czy javascript tutaj też się nada. Chyba, że nie zależy Ci na szybkości działania, wtedy jak najbardziej javascript i robić odstępy na rysowanie.

Ten post edytował Daimos 7.12.2014, 22:08:12
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 7.10.2025 - 14:11