Command-Line

將RGB原始文件分成3個文件,每個通道一個?

  • November 20, 2018

我需要將 RGB 原始文件轉換為 3 個文件,每個文件包含紅色、綠色和藍色通道。

您是否嘗試過 netpbm 工具?這適用於 R8G8B8 和其他 8 位 RGB 指令。

對於寬 100 高 200 RGB 訂單原始文件:

rawtoppm -rgb 100 200 input.rgb > image.ppm
ppmtorgb3 image.ppm 

您現在將擁有 3pgm種格式的灰色地圖文件,每個文件後綴.red .grn.blu. 這些.pgm文件幾乎是原始二進制格式,除了短標題,所以:

tail +4 image.red > image_r.raw
tail +4 image.grn > image_g.raw
tail +4 image.blu > image_b.raw

如果你真的想要這樣的原始頻道。或者,為了進一步處理:

pgmtoppm red   image.red > image_red.ppm
pgmtoppm green image.grn > image_grn.ppm 
pgmtoppm blue  image.blu > image_blue.ppm

您現在擁有三個ppm格式文件,它們是分離的 RGB 通道(另請參見 參考資料rgb3toppm)。這些可以使用ppmtoX例如轉換為其他格式ppmtopng。使用“ white”代替第二個參數中的顏色,將每個參數保留為灰度。

Imagemagickconvert也可能很有用,它也可以處理 RGB、RGBA 和 16 位原始格式,並且它具有-separate分割通道的選項。

for ch in R G B; do
 convert -set colorspace RGB -size 100x200 -depth 8 rgb:image.rgb \
     -channel ${ch} -separate -depth 8 gray:image_${ch}.raw
done

檢查該-set colorspace選項是否適合您的輸入。較新的版本允許您在單個命令中執行此操作,請參閱http://www.imagemagick.org/Usage/color_basics

convert ... -channel RGB -separate gray:image_%d.raw

並且 R/G/B 將被寫入image_0.raw image_1.raw image_2.raw文件


請注意,convert命令已根據Stephane Chazelas的幫助和回饋進行了更新,ImageMagic-6.7.7 對色彩空間行為進行了一些更改,這些更改由於(我相信)使用 sRGB 而不是 RGB 而導致問題。

 # colorspace changes mean this works differently after ImageMagick-6.7.6
 convert -size 100x200 -depth 8 rgb:image.rgb \
     -channel ${ch} -separate -depth 8 gray:image_${ch}.raw

引用自:https://unix.stackexchange.com/questions/65729