eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming › Wektoryzacja obrysu
Ilość wypowiedzi w tym wątku: 11

  • 1. Data: 2014-10-08 16:39:27
    Temat: Wektoryzacja obrysu
    Od: Borneq <b...@a...hidden.pl>

    Mamy obraz doprowadzony już do postaci dwutonowej - biało czarnej lub
    kolorowe plamy na białym tle, gdzie w istocie liczą się tylko dwa kolory
    - albo kolor plamy albo kolor inny.
    Jak znaleźć łamaną leżącą na brzegu takiej plamy. Próbowałem tak:
    znajduję pierwszy punkt leżący na plamie przy samym brzegu.
    Następnie badam wokoło tego punktu szukając następnego punktu na brzegu
    oddalonego od tamtego o 10 czy 20 pikseli.
    To dosyć skomplikowane, bo muszę używać algorytmu rysującego nie całe
    koła ale łuki od jakiejś pozycji.
    To mi nie wychodzi, bo jeśli za pierwszym razem znajduję drugi punkt, to
    trzeci na przykład wraca mi spowrotem do poprzedniego. Czasem
    kilkadziesiąt punków wyrysuję, ale przy skomplikowanej plamie nastąpi
    zapętlenie


  • 2. Data: 2014-10-09 11:26:09
    Temat: Re: Wektoryzacja obrysu
    Od: g...@g...com

    Taka juz natura obrysu, ze w koncu punkt poczatkowy staje sie
    ostatecznie punktem koncowym.
    Dosc oczywistym rozwiazaniem wydaje sie wybor kolejnego punktu na podstawie
    wektora przemieszczenia od poprzedniego punktu do punktu biezacego i odrzucanie
    rozwiazan, w ktorych zmiana kierunku przekracza, powiedzmy, 90 stopni w lewo
    albo prawo (moze byc i wiecej, nawet i 179 stopni w skrajnym przypadku)

    Byc moze jeszcze prostsze byloby po prostu wyszukiwanie zbioru wszystkich
    mozliwych punktow. W idealnym przypadku bedzie to po prostu zbior dwupunktowy,
    i teraz wystarczy z niego odrzucic poprzedni punkt. W przypadku nieidealnym
    (gdy bedzie n punktow w zbiorze) byc moze najlepiej byloby wybrac punkt
    najbardziej odlegly od poprzedniego, ceteris paribus.


  • 3. Data: 2014-10-09 11:37:55
    Temat: Re: Wektoryzacja obrysu
    Od: Borneq <b...@a...hidden.pl>

    W dniu 2014-10-09 o 11:26, g...@g...com pisze:
    > rozwiazan, w ktorych zmiana kierunku przekracza, powiedzmy, 90 stopni w lewo
    > albo prawo (moze byc i wiecej, nawet i 179 stopni w skrajnym przypadku)

    > (gdy bedzie n punktow w zbiorze) byc moze najlepiej byloby wybrac punkt
    > najbardziej odlegly od poprzedniego, ceteris paribus.

    Czyli nadal metoda "cyrklowa" tylko zamiast pierwszego napotkanego
    punktu w łuku znajdować najpierw wszystkie punkty w kole w potem wybrać
    ten najlepszy?



  • 4. Data: 2014-10-09 13:13:46
    Temat: Re: Wektoryzacja obrysu
    Od: g...@g...com

    > > rozwiazan, w ktorych zmiana kierunku przekracza, powiedzmy, 90 stopni w lewo
    > > albo prawo (moze byc i wiecej, nawet i 179 stopni w skrajnym przypadku)
    >
    > > (gdy bedzie n punktow w zbiorze) byc moze najlepiej byloby wybrac punkt
    > > najbardziej odlegly od poprzedniego, ceteris paribus.
    >
    > Czyli nadal metoda "cyrklowa" tylko zamiast pierwszego napotkanego
    > punktu w łuku znajdować najpierw wszystkie punkty w kole w potem wybrać
    > ten najlepszy?

    Na to by wychodzilo


  • 5. Data: 2014-10-09 16:12:02
    Temat: Re: Wektoryzacja obrysu
    Od: "M.M." <m...@g...com>

    Może brzeg plamy stanowią piksele, które mają przynajmniej jednego
    białego sąsiada?
    Pozdrawiam


  • 6. Data: 2014-10-09 18:01:00
    Temat: Re: Wektoryzacja obrysu
    Od: Borneq <b...@a...hidden.pl>

    W dniu 2014-10-09 o 16:12, M.M. pisze:
    > Może brzeg plamy stanowią piksele, które mają przynajmniej jednego
    > białego sąsiada?
    > Pozdrawiam
    >
    Można tak powiedzieć, że plama jest pewnego koloru na białym tle, gdy
    sąsiaduje z inną plamą, to tez mamy tylko dwa przypadki:
    - kolor plamy
    - kolor różny od koloru plamy
    Obrysowywanie już jako-tako działa, tylko samo tworzenie tych plam nie
    dokońca bo są tworzone floodfillem i czasem kolor najeżdża na sąsiednią
    plamę.


  • 7. Data: 2014-10-10 13:32:59
    Temat: Re: Wektoryzacja obrysu
    Od: "M.M." <m...@g...com>

    On Thursday, October 9, 2014 6:01:00 PM UTC+2, Borneq wrote:
    > doko�ca bo s� tworzone floodfillem i czasem kolor
    > naje�d�a na s�siedni� plam�.

    Jeśli jest wiecej plam w roznych kolorach, to moze trzeba
    zmieic warunek. Zamiast:
    if( any(sasiad) == bialy )
    Moze dac
    if( any(sasiad) != biezacy )

    Potem wektoryzacja. Hmmmmm. Moze caly obrazek pociac siatka. Nastepnie wyszukac
    przeciecia siatki z pikselami nalezacymi do zbioru obrysu. Potem polaczyc
    przeciecia prostymi tak, aby obwiednia laczaca byla w miare kortka. Na koniec
    aproksymacja funkcjami sklejanymi, ale nie wiem do czego to potrzebujesz. Moze
    sam uporzadkowany ciag przeciec Ci wystarczy.

    Pozdrawiam


  • 8. Data: 2014-10-15 13:57:05
    Temat: Re: Wektoryzacja obrysu
    Od: Borneq <b...@a...hidden.pl>

    W dniu 2014-10-09 o 13:13, g...@g...com pisze:
    >> Czyli nadal metoda "cyrklowa" tylko zamiast pierwszego napotkanego
    >> punktu w łuku znajdować najpierw wszystkie punkty w kole w potem wybrać
    >> ten najlepszy?
    >
    > Na to by wychodzilo

    Wybieram najlepszy taki, dla że dla każdego patrzę na indeks, gdzie ten
    punkt jest blisko punków dotychczas postawionych, -1 gdy do wszystkich
    ma daleko. Wybieram punkt o najmniejszym indeksie np. -1, gdy kilka o
    takim samym, wtedy taki że odległość między poprzednim a następnym jest
    największa - to daje dobre rezultaty



  • 9. Data: 2014-11-08 10:41:30
    Temat: Re: Wektoryzacja obrysu
    Od: Borneq <b...@a...hidden.pl>

    W dniu 2014-10-08 o 16:39, Borneq pisze:
    > To mi nie wychodzi, bo jeśli za pierwszym razem znajduję drugi punkt, to
    > trzeci na przykład wraca mi spowrotem do poprzedniego. Czasem
    > kilkadziesiąt punków wyrysuję, ale przy skomplikowanej plamie nastąpi
    > zapętlenie


    Zmieniłem algorytm co mi dało dużą poprawę, należy wykorzystać sposób
    znany z labiryntologii, czyli regułę prawej dłoni. Będąc w obrysie
    idziemy prawą stroną (lub lewą - to zależne od punktu startowego)


  • 10. Data: 2014-11-08 17:52:46
    Temat: Re: Wektoryzacja obrysu
    Od: Borneq <b...@a...hidden.pl>

    W dniu 2014-11-08 o 10:41, Borneq pisze:
    > Zmieniłem algorytm co mi dało dużą poprawę, należy wykorzystać sposób
    > znany z labiryntologii, czyli regułę prawej dłoni. Będąc w obrysie
    > idziemy prawą stroną (lub lewą - to zależne od punktu startowego)

    Bardzo dobrze działa, nawet gdy są wypustki (byle by na nich nie
    zaczynać) cieńsze niż krok wektoryzacji = 6 piskeli

strony : [ 1 ] . 2


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: