2017-02-02 3 views
2

Ich möchte m*n Matrix plotten, von denen jedes Element ein rgb triple, wie in der folgenden gnuplot Codefragment (rgb-Matrix von 3*3):Wie Matrix mit RGB-Bild plotten?

$cross << EODcross 
255 0 0 0 0 0 255 0 0 
0 0 0 0 0 0 0 0 0 
255 0 0 0 0 0 255 0 0 
EODcross 

Schwarz Kreuz auf rotem Hintergrund. Ich kann Trennzeichen zwischen Spalten und Farbkomponenten bei Bedarf ändern.

Kann ich die gewünschte Vermeidung set palette rgbformulae i,j,k erreichen und direkt $cross Daten verwenden? Etwas wie:

plot '$cross' matrix with image rgb 

Wenn nicht, kann ich 24bit-weiten Zahlen (natürlich in Textdarstellung, das heißt vorberechnet und in Text umgewandelt r + 256 * (g + 256 * b) oder b + 256 * (g + 256 * r) Wert) übergeben. Wie sollte i,j,k Triple aussieht wie rgb Wert in der genannten Form korrekt dargestellt Palette Farbraum?

Antwort

2

Der rgbimage Plotten Stil fünf Säulen, die letzten drei geben rot, blau und grün-Wert im Bereich [255 0] erwartet. So können Sie eine beliebige 24-Bit-Integer-Darstellung der Farben verwendet werden, da Sie die Farbkanäle extrahieren müssen sich beim Plotten:

$data <<EOD 
0xff 0 0xff00 
0  0 0 
0xffff 0 0xff00ff 
EOD 
r(x) = int(x) >> 16 
g(x) = (int(x) >> 8) & 0xff 
b(x) = int(x) & 0xff 
plot $data matrix using 1:2:(r($3)):(g($3)):(b($3)) with rgbimage 

enter image description here

+0

Was bedeutet ersten beiden? – Orient

+1

1 und 2 sind x- und y-Koordinaten. Bei der Verwendung von 'matrix' erzeugt gnuplot intern drei Spalten: Die erste ist die Matrixspalte, die zweite ist die Matrixzeile und die dritte enthält die eigentlichen Matrixdatenwerte – Christoph

1

Es scheint, dass ascii Matrixdaten und rgbimage nicht zusammenpassen.

Wenn Sie sind frei, Ihre Eingangsdaten zu formatieren, dann jede Spalte des Bildes in einem einzigen Block setzen, die Blöcke von zwei leere Zeilen wie diese Trennung:

$cross << EODcross 
255 0 0 
    0 0 0 
255 0 0 


0 0 0  
0 0 0  
0 0 0 


255 0 0 
    0 0 0 
255 0 0 
EODcross 

Dann zeichnen das Kreuz wie folgt aus:

plot $cross using -2:0:1:2:3 with rgbimage 

die Zahlen -2 und 0 im using Abschnitt entsprechen den Pseudo Spalte „Blockindex“ und „line in einem Block“ bezeichnet. Sie werden als x- und y-Werte verwendet. Der plot with rgbimage Stil erfordert x,y,r,g,b Daten.

Dies ist das Ergebnis:

black cross