Gibt es. Speichern des 16-Bit LAB-Dokuments als RAW,
Interleaved, Macintosh byte order. Und dann unter OS X
das hexdump-Kommando zweckentfremden und jeweils drei
16-bit Werte pro Zeile ausgeben lassen (gibt einen Pixel).
Diese kann man dann mit z.B. awk (oder meinetwegen Excel)
richtig skalieren. Beispiel für ein Shellscript
(einfach in einen Textdatei schreiben und per chmod +x
ausführbar machen).
# converts raw 16-bit image files to device values
# this version assumes 16-bit CIELab encoding
# output scaling is 0..100 for L, -128..+127.996 for a and b
hexdump -v -e '3/2 "%u " "\n"' \
| awk '{print $1/655.35 "\t" $2/256.-128. "\t" $3/256.-128.}'
Das setzt die ACE CMM voraus. Nimmt man stattdessen die
Apple CMM, so wird dort die neue 16-bit Kodierung des
ICC v4 Standards benutzt, d.h. a=0 und b=0 sind nicht mehr
als 32768, sondern als 32896 kodiert. In beiden Fällen gilt
aber L=100 wird 65535.
Das obige Script kann für die Apple CMM wie folgt geändert
werden: tauschen von 256 durch 257 (und 127.996 durch 127).
Man muss allerdings das Terminal mögen...
entsprechende Skripte können auch leicht für andere Typen
(bis hin zu n-Kanal, warum nicht) und in die andere
Richtung erstellt werden. Wollte ich eh schon lange mal
veröffentlichen, also hier ein Beispiel, um 16-bit CMYK
zu erzeugen:
awk '{if(NF == 4) {
c=int((100. - $1) * 655.35 + 0.5)
m=int((100. - $2) * 655.35 + 0.5)
y=int((100. - $3) * 655.35 + 0.5)
k=int((100. - $4) * 655.35 + 0.5)
if(c < 0) c = 0; else if(c > 65535) c = 65535
if(m < 0) m = 0; else if(m > 65535) m = 65535
if(y < 0) y = 0; else if(y > 65535) y = 65535
if(k < 0) k = 0; else if(k > 65535) k = 65535
h = int(c / 256); printf("%c%c", h, c - h * 256)
h = int(m / 256); printf("%c%c", h, m - h * 256)
h = int(y / 256); printf("%c%c", h, y - h * 256)
h = int(k / 256); printf("%c%c", h, k - h * 256)
}}'
Dieses Skript liest eine Textdatei mit Werten,
nimmt nur 4-spaltige Zeilen, skaliert die CMYK-Werte
auf die übliche 16-bit Kodierung, begrenzt den
Wertebereich auf 0..65535, macht zwei Byte-Werte
daraus und schreibt die per printf als Bytes weg
(auf die Standardausgabe). In Photoshop als RAW
16-bit, 4-kanalig, Mac byte order öffnen.
Ach ja, die Skripte lesen von der Standardeingabe
und schreiben auf die Ausgabe, also benutzt man
sie z. B. so:
./cmyk_to_raw16.sh <quell-textdatei >ziel-rawdatei
Nur 16-bit Lab ist etwas mühsamer.
Gruß,
Hanno Hoffstadt
Am 01.04.2004 um 13:43 schrieb Joerg Schober:
Hallo!
Gibt es einen Weg, eine möglich *genaue* Farbtransformation (zu
Vergleichszwecken) hinzukriegen?
Mein bisheriger Weg ist: Umrechnung über Photoshop (16bit), Zielbild
in 8 bit (ColorLAB kommt mit 16bit nicht zurecht) und anschließend mit
ColorLAB das Bild in Text umwandeln.
Gruß
--
Jörg Schober
Dipl-Ing. (FH)
______________________________
r e d b l u e Marketing GmbH
Qualitaetsmanagement
Helene-Wessel-Bogen 3
D-80939 Muenchen
fon +49 89 316 92-0
fax +49 89 316 92-779
http://www.redblue.de
______________________________
_______________________________________________
ECI mailing list
ECI(a)lists.transmedia.de
http://lists.transmedia.de/mailman/listinfo/eci