2017-02-02 5 views
2

내가 m*n 행렬을 플롯하려면, 각 요소는 다음과 같은 의 gnuplot 코드 (3*3의 RGB 매트릭스)에서와 같이되는 트리플 rgb입니다 : 빨간색 배경에rgb 이미지로 행렬을 그리는 방법은 무엇입니까?

$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 

검은 십자가. 필요한 경우 열과 색상 구성 요소 사이의 구분 기호를 변경할 수 있습니다.

원하는 피할 수있는 set palette rgbformulae i,j,k을 얻고 직접 $cross 데이터를 사용할 수 있습니까? 같은 뭔가 :

plot '$cross' matrix with image rgb 

그렇지 않은 경우, 나는 (텍스트 표현, 즉 미리 계산에서, 물론 및 r + 256 * (g + 256 * b) 또는 b + 256 * (g + 256 * r) 값을 텍스트로 변환) 24 비트 전체의 정수를 전달할 수 있습니다. i,j,k 트리플은 어떻게 위에서 언급 한 형식으로 표현 된 값 rgb을 팔레트 색상 공간에 올바르게 매핑해야합니까?

답변

2

:

의 결과이다.

$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

무엇이이 첫번째 의미 : 당신은 색상 채널 자신을 추출해야하기 때문에 플롯 할 때 그래서 당신은, 색상의 24 비트 정수 표현을 사용할 수 있습니까? – Orient

+1

1과 2는 x와 y 좌표입니다. 'matrix'를 사용할 때, gnuplot은 내부적으로 3 개의 컬럼을 생성합니다 : 첫번째는 매트릭스 컬럼이고, 두 번째는 매트릭스 로우이고 세 번째 컬럼은 실제 매트릭스 데이터 값을 포함합니다 – Christoph

1

아스키 매트릭스 데이터와 rgb 이미지가 맞지 않는 것 같습니다.

이 같은 두 개의 빈 선으로 블록을 분리 한 다음, 사용자의 입력 데이터의 형식을 하나의 블록으로 이미지의 각 열을 넣어 무료 인 경우 :

$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 

는 다음과 같이 십자가를 그릴 : using 섹션

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

-2 숫자 0은 각각의 의사 열 "블록 인덱스"및 "블록 내의 라인"에 대응한다. 그것들은 x와 y 값으로 사용됩니다. plot with rgbimage 스타일은 x,y,r,g,b 데이터가 필요합니다. rgbimage 묘화 스타일 다섯 열 마지막 세 범위의 적색, 청색 및 녹색 값 [255 0] 수득 기대

black cross