-
1. Data: 2014-10-13 13:05:57
Temat: Jak w obrysie wektorowym rozróżnić dwie komórki?
Od: Borneq <b...@a...hidden.pl>
http://i.imgur.com/2bKIwFM.jpg
Mam obrysy plam, które powstały z iteracyjnego floodFilla poprzez
"cyrklowe" wyszukiwanie obrysu o które pytałem poprzednio.
Zwykle mają mniej lub bardziej okrągły, wypukły kształt.
Niektóre jednak obrysy (dwa zaznaczone na zielono) mają inny kształt -
są wklęsłe, powstały z połączenia dwóch plam, dosyć krótki jest odcinek
połączenia ich.
Jak można mając wektor stwierdzić że kształt jest taki i najlepiej jak
podzielić aby uzyskać dwie normalne komórki?
-
2. Data: 2014-10-13 15:33:29
Temat: Re: Jak w obrysie wektorowym rozróżnić dwie komórki?
Od: Borneq <b...@a...hidden.pl>
W dniu 2014-10-13 o 13:05, Borneq pisze:
> Jak można mając wektor stwierdzić że kształt jest taki i najlepiej jak
> podzielić aby uzyskać dwie normalne komórki?
Można dać otoczkę wypukłą i zobaczyć o ile wzrośnie pole. Podział w
najcieńszym miejscu ale jak to zrobić?
-
3. Data: 2014-10-13 15:56:46
Temat: Re: Jak w obrysie wektorowym rozróżnić dwie komórki?
Od: "AK" <n...@n...com>
Użytkownik "Borneq" <b...@a...hidden.pl> napisał:
>W dniu 2014-10-13 o 13:05, Borneq pisze:
>> Jak można mając wektor stwierdzić że kształt jest taki i najlepiej jak
>> podzielić aby uzyskać dwie normalne komórki?
>
> Można dać otoczkę wypukłą i zobaczyć o ile wzrośnie pole. Podział w najcieńszym
miejscu ale jak to
> zrobić?
Widze , ze Cie "przypililo" :)
Nie bede sie silil juz w "mym wieku" nawet na podstawowa matematyke,
wiec podam jedyne "beletrystyczny" pomysl jaki mi przychodzi do glowy:
np cos w rodzaju minimalizacja sredniej(lub jakas inna funkcja)
stosunku(ow) obwodu/powierzni czesci.
Jesli sie zalozy apriori ilosc czesci (czyli np 2) to byc moze stac sie
w miare proste do "algorytmizacji".
PS: Nie mam juz nawet malych podstaw teoetycznych aby dyskutowac
czy matematycznie ten pomysl ma sens. Potraktuj go wiec "as is"
czyli wytwor wyobrazni a nie solidnej wiedzy (ta juz wyparowala na starosc:).
PS1: A co na to np Pavlidis ?
Pozdrawiam
AK
---
Ta wiadomość e-mail jest wolna od wirusów i złośliwego oprogramowania, ponieważ
ochrona avast! Antivirus jest aktywna.
http://www.avast.com
-
4. Data: 2014-10-15 11:16:35
Temat: Re: Jak w obrysie wektorowym rozróżnić dwie komórki?
Od: Borneq <b...@a...hidden.pl>
W dniu 2014-10-13 o 15:56, AK pisze:
>> Można dać otoczkę wypukłą i zobaczyć o ile wzrośnie pole. Podział w
>> najcieńszym miejscu ale jak to zrobić?
> Jesli sie zalozy apriori ilosc czesci (czyli np 2) to byc moze stac sie
> w miare proste do "algorytmizacji".
Mam komórkę:http://i.imgur.com/R7HD8iR.jpg
Można to zrobić w czasie kwadratowym, biorąc kolejno współrzędną i oraz
j i patrzeć czy różnica odległości jest mała, ale trzeba by wyeliminować
przypadki że j=i+1 i dlatego są blisko siebie
-
5. Data: 2014-10-15 13:35:07
Temat: Re: Jak w obrysie wektorowym rozróżnić dwie komórki?
Od: bartekltg <b...@g...com>
On 15.10.2014 11:16, Borneq wrote:
> W dniu 2014-10-13 o 15:56, AK pisze:
>>> Można dać otoczkę wypukłą i zobaczyć o ile wzrośnie pole. Podział w
>>> najcieńszym miejscu ale jak to zrobić?
>
>> Jesli sie zalozy apriori ilosc czesci (czyli np 2) to byc moze stac sie
>> w miare proste do "algorytmizacji".
>
> Mam komórkę:http://i.imgur.com/R7HD8iR.jpg
> Można to zrobić w czasie kwadratowym, biorąc kolejno współrzędną i oraz
> j i patrzeć czy różnica odległości jest mała, ale trzeba by wyeliminować
> przypadki że j=i+1 i dlatego są blisko siebie
"Obgryź" komórkę dookoła. Każdemu pikselowi przypisz odległość od
krawędzi (liniowe względem liczby pikseli, można nieco przeskalować
używając np co drugiego). Sprawdź, dla jakiego poziomu wyspy wystające
nad nie są spójne. Miejsca połączenia zadają rozdzielającą
kreskę (znajdujesz punkt, w którym nastąpiło połączenie, a potem
polinii największego spadku w obu kierunkach).
pzdr
bartekltg
-
6. Data: 2014-10-15 13:54:44
Temat: Re: Jak w obrysie wektorowym rozróżnić dwie komórki?
Od: Borneq <b...@a...hidden.pl>
W dniu 2014-10-15 o 13:35, bartekltg pisze:
> "Obgryź" komórkę dookoła. Każdemu pikselowi przypisz odległość od
> krawędzi (liniowe względem liczby pikseli, można nieco przeskalować
> używając np co drugiego). Sprawdź, dla jakiego poziomu wyspy wystające
> nad nie są spójne. Miejsca połączenia zadają rozdzielającą
> kreskę (znajdujesz punkt, w którym nastąpiło połączenie, a potem
> polinii największego spadku w obu kierunkach).
Na razie zrobiłem tak (może trzeba będzie przyśpieszyć bo liczę sqrt
kwadratową liczbę razy)
for i po wszystkich punktach
dla każdego i ustawiam j od i+1 do i-1 w międzyczasie odejmując od niego
n (liczbą wierzchołków)
liczę odległość Punkt[i]-Punkt[j] <-------1
liczę odległość obwodową między i a j
liczę stosunek odległosci liniowe do obwodowej
Wybieram te i oraz j dla których ten stosunek jest najmniejszy
Uwaga: czasem dla "wygryzionego" kształtu napotyka odległość
Punkt[i]-Punkt[j] = 0 i wtedy bierze to pod uwagę zamiast lepszego
miejsca gdzie odległość obwodowa jest większa, tu wystarczy do
odległości dodawać niewielkie delta, nawet delta=1 piksel jest w porządku
Na razie działa, n jest rzędu kilkudzięsięciu, poza tym kilkadziesiąt
kształtów (ale znacznie mniej kształtów, które trzeba dzielić - dzielę
wtedy gdy wypukła otoczka dużo zwiększa pole wielokąta), tak bardzo nie
przeszkadza czas kwadratowy
Pozdrawiam