GIMP/Programowanie/Mathmap

Z Wikibooks, biblioteki wolnych podręczników.
Skocz do: nawigacji, wyszukiwania
GIMP artist.png


Mathmap jest to narządzie do tworzenia i przetwarzania obrazów. [1] Może być użyte jako :

  • wtyczka ( ang. plugin) do Gimpa
  • narzędzie do pracy z linii komend ( tylko wersja dla linuxa)


Sposoby użycia wtyczki:[2]

  • jako jeden z wielu filtrów Gimpa
  • jako narzędzie do tworzenia nowych filtrów :
    • z użyciem graficznego Composer'a ( podobny do Quartz Composer dla MacOS X lub Yahoo! Pipes).
    • z użyciem wbudowanego języka programowania[3]


Opracowane na podstawie:

  • OS  : Linux
    • dystrybucja Ubuntu wersja 10.04 LTS - Lucid Lynx
    • jądro 2.6.32-31-generic x86_64
  • GIMP 2.6.8 wersja wersja polska
  • mathmap-1.3.4

Spis treści

[edytuj] Instalacja

[edytuj] Pobranie kodu źródłowego

git clone git://github.com/schani/mathmap.git
cd mathmap
git submodule init
git submodule update

[edytuj] Wymagane pakiety

  • The GIMP 2.4 ( także libgimp2.0-dev )
  • GSL (GNU Scientific Library),
    • GSL CBLAS
    • gsl bin
  • fftw ( version 3)
  • libgtksourceview
  • libjpeg, libpng, libgif (preferowany) lub libungif
  • gettext
  • bison
  • flex
  • clisp ( także clisp-dev )
  • doxygen
  • libtool

Na Ubuntu także pakiety devel są wymagane

[edytuj] Kompilacja wtyczki

make
sudo make install

Jeśli doinstalowywałeś jakieś pakiety to pamiętaj aby przed powtórnym wywołaniem make :

make clean


[edytuj] Uruchomienie

[edytuj] Z linii komend

Wywołaj :

mathmap --help 

aby uzyskać pomoc.

Przykład użycia :

mathmap -s256x256 'filter gray () grayColor(0.5) end' out.png 

To polecenie tworzy plik out.png o wymiarach 256x256 o kolorze w połowie szarym


[edytuj] Jako wtyczkę do GIMPA

W wersji 2.6 gimpa polskiej wtyczkę wywołujemy poprzez Menu/Filtry/Ogólne/MathMap gdzie mamy do wyboru poszczególne filtry lub wspólne okno dialogowe.

[edytuj] Graficzny kompozytor filtrów

W wersji 2.6 gimpa polskiej kompozytora wywołujemy okno dialogowe wtyczki poprzez Menu/Filtry/Ogólne/MathMap/MathMap i otwieramy zakładkę Composer

[edytuj] Programowanie tekstowe

W wersji 2.6 gimpa polskiej kompozytora wywołujemy okno dialogowe wtyczki poprzez Menu/Filtry/Ogólne/MathMap/MathMap i otwieramy zakładkę Expressions. Możemy tu wpisywać swoje filtry lub wczytywać i edytować istniejące ( pliki z rozszerzeniem mm ).

[edytuj] Programowanie

Programy w języku Mathmap nazywane są filtrami.

[edytuj] Wewnętrzny język programowania

[edytuj] Wstęp

Składnia wygląda następująco :

options filter name (user_values)
   expression
end 

Poszczególne elementy oznaczają :

  • options = opcje filtra ( mogą nie występować)
  • filter = słowo kluczowe oznaczające początek definicji ( zawsze musi być)
  • user_values = parametry filtru ( mogą nie występować)
  • expression = wyrażenie opisujące co filtr robi
  • end = słowo kluczowe oznaczjace koniec definicji( zawsze musi być)


Zasada działanie filtra jest prosta : dla każdego piksela obrazu oblicza kolor, czyli ostatnim elementem w wyrażeniu jest zawsze kolor piksela.


Każda wartość jest krotką (ang. tuple), tzn. listą wartości poprzedzoną znacznikiem ( ang. tag). [4]

Na przykład rgba:[1,0,0,1] oznacza kolor czerwony o zerowej przeźroczystości ( ang. fully opaque color red )

Pojedyncze liczby mogą być zapisywane normalnie, nie jako krotki. Na przykład 3.1415 odpowiada nil:[3.1415].

[edytuj] Układy współrzędnych obrazu

Są 2 układy współrzędnch :

  • kartezjański : xy
  • biegunowy ( polarny)  : ra



[edytuj] Kolor

Mamy dwa rodzaje koloru :

  • rgba ( RGBA Color ), np. rgba:[1,0,0,1] oznacza kolor czerwony o zerowej przeźroczystości ( ang. fully opaque color red ).
  • hsva (HSVA Color )

Jednolity kolor RGB obrazu :

filter blue ()
   rgbColor(0, 0, 1)
end

Gradient szary :

proporcjonalny do wartości x :

filter gray ()
 # x is changing from -1 to 1
 grayColor(x) # each color component is proportional to x
end

proporcjonalny do bezwględnej wartości x :

filter gray2 ()
 p=abs(x); # x is changing from -1 to 1
 grayColor(p) # each color component is proportional to abs(x)
end

proporcjonalny do bezwględnej wartości sin(x*pi) :

filter sin ()
   grayColor(abs(sin(x*pi)))
end


Inna wersja z przeskalowaniem zakresu zmiennej "x" z [-1,1] do [0,1] :

filter gray_gradient ()
   grayColor(scale(x, -1, 1, 0, 1))
end

to samo inaczej zapisane :

filter gray_gradient ()
 grayColor((x+W/2)/W)
end 


proporcjonalny do odległości piksela od centrum =( 0,0) bez powtórzeń :

filter gray_radius ()
  grayColor(r) # color component is proportional to radius
end

proporcjonalny do odległości piksela od centrum =( 0,0) z powtórzeniami :

filter rmod ()
   grayColor((r%0.4)/0.4)
end


proporcjonalny do kąta piksela ( a = angle ) :

filter gray_angle ()
  # angle in radians :  (0 <= a < 2*pi)  
  # polar coordinate of pixel = ra
  p=scale(a, -2*pi, 2*pi, -1, 1); # map a from [-2pi,2pi] to [-1,1] range
 grayColor(p) # color component is proportional to angle
end
[edytuj] Obraz

Aby stworzyć nowy obraz : cały czerwony

filter red ()
   rgbColor(1, 0, 0)
end

Jest to filtr o nazwie "red". Używa wbudowanej funkcji rgbColor.[5]

Filtr ( wyrażenie czyli ang. expression) możemy zapisać jako plik z rozszerzeniem mm : red.mm w podkatalogu examples lub

 ~/.gimp-2.6/mathmap/expressions

Jeśli chcemy zmodyfikować istniejący obraz :

filter ident (image in)
   in(xy)
end

Ten filtr nic nie robi ( ident), ale pokazuje najprostszy filtr operujący na istniejącym już obrazie.

[edytuj] Efekty działania

Więcej na :

[edytuj] Licencja

Jest to wolne oprogramowanie ( ang. Free Software) na licencji GNU General Public Licence.

[edytuj] Źródła

  1. The MathMap Image Processing Application by Mark Probst
  2. MathMap in Gimp Plugin Registry
  3. Opis języka Mathmap
  4. tagged tuples -Mathmap doc
  5. Omówienie języka Mathmap
Osobiste
Przestrzenie nazw

Warianty
Działania
Nawigacja
Drukuj lub eksportuj
Narzędzia