Skocz do zawartości

Deskryptory Fouriera


Jakim

Rekomendowane odpowiedzi

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 ;).

 

dolphin.png

 

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

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

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...