Jakim Opublikowano 24 Lutego 2013 Udostępnij Opublikowano 24 Lutego 2013 Dla wszystkich zainteresowanych (jakąkolwiek) obróbką obrazu: krótko o Fourier Descriptors czy deskryptorach Fouriera - metodzie zapisywania najważniejszych informacji o krzywej na podstawie skończonej (małej!) ilości punktów oraz, oczywiście, umożliwiającej jej odtworzenie. http://jakim.pl/kolko/DeskryptoryFouriera.pdf Jest czym nacieszyć oko - dużo obrazków ;). Być może jest kilka błędów, jutro zerknę na to jeszcze raz - jakbyście coś zauważyli, możecie pisać :). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Shil Opublikowano 25 Lutego 2013 Udostępnij Opublikowano 25 Lutego 2013 blech! weszłam bo było coś o grafice i czuję się oszukana;P ale serio, fajne to, a jak z zastosowaniem dla prostego grafika, tzn w jakim programie można by poeksperymentować z takimi wzorami? bo ja nie rozumie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jakim Opublikowano 25 Lutego 2013 Autor Udostępnij Opublikowano 25 Lutego 2013 Wystarczy jakikolwiek szanujący się program matematyczny, np. Mathematica. Gotowy kod przedstawia się wtedy: param[x_, m_, t_] := Module[{f, n = Length[x], nf}, f = Chop[Fourier[x]][[;; Ceiling[Length[x]/2]]]; nf = Length[f]; Total[Rationalize[2 Abs[f]/Sqrt[n] Sin[Pi/2 - Arg[f] + Range[0, nf - 1] t], .01][[;; Min[m, nf]]]]] (* zamiana sygnału FD na wzory parametryczne x(t), y(t); przepisanie wzorów do postaci zjadliwej dla komputera;) *) tocurve[Line[data_], m_, t_] := param[#, m, t] & /@ Transpose[data] (* uzyskanie wzorów krzywej *) img = Binarize[Import["C:\obrazek.png"]~ColorConvert~"Grayscale"~ImageResize~500~Blur~3]~ Blur~3; (* wczytanie obrazka i przygotowanie go do obróbki; tj. pozbawienie kolorów i przeskalowanie *) lines = Cases[Normal@ListContourPlot[Reverse@ImageData[img], Contours -> {0.5}], _Line, -1]; (* wydobycie krawędzi z obrazka *) ParametricPlot[Evaluate[tocurve[#, 64, t] & /@ lines], {t, 0, 2 Pi}, Frame -> False, Axes -> False, PlotStyle -> {Black, Thick}] (* wyświetlenie krzywej przy domyślnej wartości 64 deskryptorów *) Ewentualnie, jeżeli jesteśmy bardziej cierpliwi, wszystko da się zakodować przy użyciu odpowiednich bibliotek (graficznych i matematycznych; no chyba że chcemy liczyć transformaty na piechotę). Dla zwykłego grafika problemem jest właśnie zastosowanie transformaty Fouriera - nie każdemu się chce, a czasami brakuje odpowiednio zakodowanego programu liczącego do tego (tu nie ma: "klik" i gotowe). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności ANtY Opublikowano 25 Lutego 2013 Filar Społeczności Udostępnij Opublikowano 25 Lutego 2013 nerdy gdzie platyna Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się