zur Übersicht nächste Seite

imagemagick Teil13

Generell gilt bei den weißen Textstellen auf dieser Seite: Man fügt die Zeichenfolge aus dem weißen Feld bei dem blinkenden Cursor des Terminals ein - dann drückt man die Eingabetaste.

Es werden hier nur einige Informationen von der ImageMagick-Internetseite übersetzt. Für eine komplette Dokumentation bitte dort nachschauen.

Es werden Bilder von den vorhergehenden Seiten verwendet,
deb6510.jpg (von Teil 3) deb6720.png (von Teil 5)

Das Bild deb6720.png kann man in ein Graustufen-Bild verwandeln mit
convert deb6720.png -colorspace gray deb7500.png

Jedes Bild hat drei Farbkanäle, red, green, blue. Diese Kanäle sind Graustufen-Bilder
convert -gravity South -pointsize 15 deb6720.png \( -clone 0 -fill black -background white -splice 0x18 -draw "text 0,0 'Original'" \) \( -clone 0 -channel R -separate -fill white -background red -splice 0x18 -draw "text 0,0 'red'" \) \( -clone 0 -channel G -separate -fill white -background green -splice 0x18 -draw "text 0,0 'green'" \) \( -clone 0 -channel B -separate -background blue -splice 0x18 -draw "text 0,0 'blue'" \) -delete 0 +append deb7502.jpg

Das Bearbeiten von Graustufen-Bildern ist zentral. Es gibt in imagemagick ein Kommando
-function
das alle Graustufen in Zahlen zwischen 0.0 und 1.0 übersetzt und anschließend mit Funktionen bearbeitet. So ist z.B. die Farbe
srgb(51,204,255)
bestimmt durch die Grauwerte
51/255=0.2
204/255=0.8
255/255=1.0
Man kann z.B. den Grauwert 0.2 erzeugen durch -function Polynomial 0.2
Damit läßt sich das Bild deb7500.png in eine Fläche in der Farbe srgb(51,204,255) verwandeln
convert deb7500.png \( -clone 0 -function Polynomial 0.2 \) \( -clone 0 -function Polynomial 0.8 \) \( -clone 0 -function Polynomial 1.0 \) -delete 0 -combine -set colorspace sRGB deb7501.gif

In Teil 11 wurde verwendet
-evaluate subtract Wert%
Dies ist gleichbedeutend zu
-function Polynomial 1,-Wert%
wobei Wert%=Wert/100 also z.B. 25%=25/100=0.25
Hier wurde die einfachste Form eines Polynoms, die Gerade, y=ax+b verwendet die sich schreibt
-function Polynomial a,b
Am besten schaut man sich dies in einem Schaubild an

Die blaue Gerade liegt parallel zur x-Achse. Es ist y=ax+b mit a=0 und b=0.75 Damit
-function Polynomial 0.75
a=0 kann man weglassen. Es bedeuted daß alle Grauwerte von 0.0 bis 1.0 auf den Wert 0.75 gesetzt werden. Es entsteht ein einfarbiges Bild.
Bei der oberen grünen Gerade ist y=ax+b mit a=1 und b=-0.2 Damit
-function Polynomial 1,-0.2
Dies ist gleichwertig zu -evaluate subtract 20%
Man sieht daß alle Funktionswerte für x von 0.0 bis 0.2 negativ sind und damit auf den Wert 0.0 gesetzt werden.
Die Farbe 1.0 weiß wird auf den Wert 0.8 gesetzt und alle Funktionswerte über 0.8 gibt es in dem geänderten Bild nicht mehr.
Damit wird in dem geänderten Bild der Anteil dunkler Farben erhöht und der Anteil heller Faben verringert.
Bei der anderen grünen Gerade werden noch mehr dunkle Farben erzeugt und noch weniger helle Farben.
Rutscht die grüne Gerade noch weiter nach unten so nähert sich das Ergebnis-Bild immer mehr dem komplett schwarzen Bild. Daher sind bei -evaluate subtract Werte deutlich über 50% nur noch in Ausnahmefällen sinnvoll.

Die Grauabstufungen sind in Werte zwischen 0.0 (schwarz) und 1.0 (weiß) übersetzt worden. Man kann diese Werte als Prozentwerte auffassen, zwischen 0.0 (0%) und 1.0 (100%). gray50 hat dann den Wert 0.5 (50%).
Die von -function ausgegebenen Werte müssen dann auch zwischen 0.0 und 1.0 liegen.
Liegen die Funktionswerte über 1.0 so werden diese automatisch auf 1.0 gesetzt.
Liegen die Funktionswerte unter 0.0 so werden diese automatisch auf 0.0 gesetzt.

Nun werden Geraden ausgesucht die die hellen Farben erhalten aber die dunklen Farben entfernen

Es wird das folgende Graustufenbild deb7505G.png verwendet.

Es soll eine Glasscheibe daraus gemacht werden durch die man das Bild von Hund Rene sieht. Dazu wird zunächst von dem Rene-Bild mit diesem Graustufen-Bild als Maske eine Verschiebung erzeugt. Die Zellen sind recht grob so daß die Verschiebung mit 10x10 angesetzt wird.
convert deb6510.jpg deb7505G.png -virtual-pixel mirror -compose Displace -set option:compose:args 10x10 -composite deb7506.png

Nun soll die Schattenstruktur übertragen werden. Da das Graustufen-Bild recht dunkel ist soll mit den aufhellenden Polynomen ein grober Test durchgeführt werden. Es hat sich gezeigt daß die
-evaluate subtract Polynome
gute Ergebnisse zeigen, daher sollen diese auch mit Beispielwerten 10 20 30 40 50 verwendet werden.
for i in 10 20 30 40 50 ; do convert deb7506.png \( deb7505G.png -function Polynomial .6,.4 -function Polynomial 1,-0.$i \) -compose LinearLight -composite -gravity South -background Plum -splice 0x18 -annotate +0+0 "LinearLight $i%" +depth miff:- ; done | montage - -tile 3x -geometry +6+6 -background khaki -resize 25% +repage deb75P4.jpg

for i in 10 20 30 40 50 ; do convert deb7506.png \( deb7505G.png -function Polynomial .4,.6 -function Polynomial 1,-0.$i \) -compose LinearLight -composite -gravity South -background Plum -splice 0x18 -annotate +0+0 "LinearLight $i%" +depth miff:- ; done | montage - -tile 3x -geometry +6+6 -background khaki -resize 25% +repage deb75P6.jpg

for i in 10 20 30 40 50 ; do convert deb7506.png \( deb7505G.png -function Polynomial .2,.8 -function Polynomial 1,-0.$i \) -compose LinearLight -composite -gravity South -background Plum -splice 0x18 -annotate +0+0 "LinearLight $i%" +depth miff:- ; done | montage - -tile 3x -geometry +6+6 -background khaki -resize 25% +repage deb75P8.jpg

        

Bei der linken Übersicht mit der Aufhell-Geraden durch den Punkt (0,0.4) zeigt das zweite Bild (20%) ein gutes Ergebnis,
bei der mittleren Übersicht mit der Aufhell-Geraden durch den Punkt (0,0.6) zeigt das dritte Bild (30%) ein gutes Ergebnis,
bei der rechten Übersicht mit der Aufhell-Geraden durch den Punkt (0,0.8) zeigt das vierte Bild (40%) ein gutes Ergebnis.

Grundsätzlich könnte man jede Aufhell-Gerade benutzen. Je höher allerdings die Aufhell-Gerade liegt desto mehr nähert man sich einem komplett weißen einfarbigen Bild. Es wird die mit der mittleren Übersicht gewählt und genauere Beispielwerte um 30% angesetzt.
for i in 26 28 30 32 34 36 ; do convert deb7506.png \( deb7505G.png -function Polynomial .4,.6 -function Polynomial 1,-0.$i \) -compose LinearLight -composite -gravity South -background Plum -splice 0x18 -annotate +0+0 "LinearLight $i%" +depth miff:- ; done | montage - -tile 3x -geometry +6+6 -background khaki deb7507.jpg

Es wird 28% gewählt
convert deb7506.png \( deb7505G.png -function Polynomial .4,.6 -function Polynomial 1,-0.28 \) -compose LinearLight -composite deb7508.jpg

Mit einer anderen Maske deb75A03.png. Damit wird wieder eine Verschiebung erzeugt. Die Zellen sind recht grob so daß die Verschiebung wieder mit 10x10 angesetzt wird. Allerdings gibt es Flächen in der Farbe gray50, die nicht verschoben werden. Auch ist die dunkle Tönung der Struktur ähnlich wie vorher so daß für die Schattenstruktur die gleichen Werte benutzt werden.
convert deb6510.jpg deb75A03.png -virtual-pixel mirror -compose Displace -set option:compose:args 10x10 -composite deb7540.png

convert deb7540.png \( deb75A03.png -function Polynomial .4,.6 -function Polynomial 1,-0.28 \) -compose LinearLight -composite deb7541.jpg

        

Man kann -compose mit verschiedenen Methoden aufrufen. Hier wird der Unterschied zwischen
LinearLight
VividLight
HardLight
gezeigt

Nun wird eine Streifenmaske zugrundegelegt deb7520.png
Diese kann man sich als senkrechte Glasstäbe vorstellen. Für die Verschiebung muß man jetzt kleine Werte benutzen denn die Stäbe stehen eng nebeneinander. Es wird 3x2 angesetzt denn die waagrechte Verschiebung sollte etwas stärker sein als die senkrechte.
convert deb6510.jpg deb7520.png -virtual-pixel mirror -compose Displace -set option:compose:args 3x2 -composite deb7542.png

    

Das schwarz in der Maske deb7520.png ist prima für eine Verschiebung aber bei der Übertragung der Schattenstruktur stört es gewaltig. Deshalb wird wieder mit den aufhellenden Polynomen ein grober Test durchgeführt
for i in 10 20 30 40 ; do convert deb7542.png \( deb7520.png -function Polynomial .6,.4 -function Polynomial 1,-0.$i \) -compose LinearLight -composite -gravity South -background Plum -splice 0x18 -annotate +0+0 "LinearLight $i%" +depth miff:- ; done | montage - -tile 2x -geometry +6+6 -background khaki -resize 50% +repage deb75R4.jpg

for i in 10 20 30 40 ; do convert deb7542.png \( deb7520.png -function Polynomial .4,.6 -function Polynomial 1,-0.$i \) -compose LinearLight -composite -gravity South -background Plum -splice 0x18 -annotate +0+0 "LinearLight $i%" +depth miff:- ; done | montage - -tile 2x -geometry +6+6 -background khaki -resize 50% +repage deb75R6.jpg

for i in 10 20 30 40 ; do convert deb7542.png \( deb7520.png -function Polynomial .2,.8 -function Polynomial 1,-0.$i \) -compose LinearLight -composite -gravity South -background Plum -splice 0x18 -annotate +0+0 "LinearLight $i%" +depth miff:- ; done | montage - -tile 2x -geometry +6+6 -background khaki -resize 50% +repage deb75R8.jpg

        

Erst bei dem rechten Übersichtsbild, Gerade durch den Punkt (0,.8), verlieren sich die schwarzen Streifen. Natürlich kann man weitere Aufhell-Geraden hinzuziehen. Es wird also die Gerade der rechten Übersicht gewählt und genauere Beispielwerte um 40% angesetzt.
for i in 36 38 40 42 44 46; do convert deb7542.png \( deb7520.png -function Polynomial .2,.8 -function Polynomial 1,-0.$i \) -compose LinearLight -composite -gravity South -background Plum -splice 0x18 -annotate +0+0 "LinearLight $i%" +depth miff:- ; done | montage - -tile 3x -geometry +6+6 -background khaki deb7543.jpg

Es wird 38% gewählt
convert deb7542.png \( deb7520.png -function Polynomial .2,.8 -function Polynomial 1,-0.38 \) -compose LinearLight -composite deb7544.jpg

Bei farbigem Glas gibt es oft keine Struktur und man muß ein wenig anders vorgehen. Man kann blend benutzen.

    


zur Übersicht nächste Seite

Datenschutzerklärung
Impressum