![]() |
![]() |
![]()
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 ;-) |
|
|
![]() |
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 7.10.2025 - 14:11 |