2017-10-10 56 views
0

是否有一種軟件/工具可以從簡單的原始8位RGB圖像生成RGB值矩陣? 此外,是否有一個軟件/工具可以從給定的RGB值矩陣生成圖像?從圖像中生成每個像素的R-G-B值的軟件/工具,反之亦然

謝謝。

PS:

i)我知道這可以用Matlab完成。我正在尋找一種可以做到的不是Matlab的工具。

ii)我意識到存在關於以編程方式執行類似事情的問題。我需要一個軟件工具,如果有的話,可以完成這項任務。

+0

是不是一個matlab的「軟件工具「? –

+0

我無法訪問Matlab。因此,尋找可以完成這項任務的軟件或網絡應用程序。 – nachiketkulk

+0

Python,Matplotlib和PIL(Pillow)會工作嗎? – ayplam

回答

1

我建議您使用可用於Linux,macOS和Windows的可敬的NetPBM。或者,您可以使用ImageMagick,但重量要重得多,稍後再看。


NetPBM的方法 - 見Wikipedia NetPBM entry

所以,讓我們開始與包含紅色,綠色和藍色像素原始,8位RGB文件:

-rw-r--r-- 1 mark staff 9 10 Oct 07:47 rgb888.bin 

如你所見,它有9個字節。讓我們來看看他們:

xxd -g3 rgb888.bin 

00000000: ff0000 00ff00 0000ff 

現在,如果我們想要一個形象清晰值矩陣:

rawtoppm -plain 3 1 rgb888.bin 

樣本輸出

P3 
3 1 
255 
255 0 0 0 255 0 0 0 255 

其中:

  • -plain是指在ASCII顯示而不是二進制
  • P3告訴我們它的顏色和ASCII
  • 3 1告訴我們它的尺寸是寬3個像素×1個像素的高
  • 255基本上告訴我們它是8位( 65536將意味着16位)
  • 最後一行的像素

轉換爲二進制是一個有點困難,假設我們開始像這樣創造了一個PPM文件:

rawtoppm -plain 3 1 rgb888.bin > image.ppm 

因此,我們可以得到的二進制版本是這樣的:

ppmtoppm < image.ppm | tail -c 9 > rgb888.bin 

,看看它:

xxd -g3 rgb888.bin 
00000000: ff00 0000 ff00 0000 ff 

ImageMagick的方法

# Convert binary RGB888 to text 
convert -depth 8 -size 3x1 RGB:rgb888.bin txt: 

樣品輸出

# ImageMagick pixel enumeration: 3,1,65535,srgb 
0,0: (65535,0,0) #FF0000 red 
1,0: (0,65535,0) #00FF00 lime 
2,0: (0,0,65535) #0000FF blue 

或者,外觀略有不同:

# Convert binary RGB888 to matrix 
convert -depth 8 -size 3x1 RGB:rgb888.bin -compress none ppm: 

樣本輸出

P3 
3 1 
255 
255 0 0 0 255 0 0 0 255 

現在走另一條路,PPM爲二進制

# Convert PPM image to binary 
convert image.ppm rgb:image.bin 

# Check how the binary looks 
xxd -g 3 image.bin 
00000000: ff0000 00ff00 0000ff     ......... 

平原轉儲方式

也許你很高興與普通轉儲從od

od -An -t u1 rgb888.bin 

樣本輸出

255 0 0 0 255 0 0 0 255  
+0

謝謝馬克! NetPBM正是我所期待的。再次感謝。 – nachiketkulk

相關問題