
RGB 원시 파일을 각각 빨간색, 녹색 및 파란색 채널이 포함된 3개의 파일로 변환해야 합니다.
답변1
netpbm 도구를 사용해 보셨나요? 이는 R8G8B8 및 기타 8비트 RGB 명령어에 적용됩니다.
너비 100 높이 200 RGB 순차 원시 파일의 경우:
rawtoppm -rgb 100 200 input.rgb > image.ppm
ppmtorgb3 image.ppm
이제 3가지 pgm
형식의 회색조 이미지 파일이 있으며 각각 .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
이제 독립적인 RGB 채널인 세 가지 형식 파일이 있습니다 ppm
( 참조 rgb3toppm
). 예를 들어 다음을 사용하여 ppmtoX
다른 형식으로 변환 할 수 있습니다 . 두 번째 매개변수의 색상 대신 ppmtopng
" "를 사용하고 각 매개변수는 회색조로 둡니다.white
Imagemagick convert
도 유용할 수 있으며 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
image_0.raw image_1.raw image_2.raw
R/G/B가 파일 에 기록됩니다.
convert
도움말과 피드백을 기반으로 명령이 업데이트되었습니다 .스티븐 차제라스, ImageMagic-6.7.7부터 RGB 대신 sRGB를 사용하여 문제를 일으키는 색 공간 동작에 일부 변경이 있었습니다.
# 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
답변2
ksh93을 사용하면 다음을 수행할 수 있습니다.
command /opt/ast/bin/cut -r3 -Nb1 < file > red
command /opt/ast/bin/cut -r3 -Nb2 < file > green
command /opt/ast/bin/cut -r3 -Nb3 < file > blue
/opt/ast/bin/cut
(예, 알고 있습니다. 시스템에 하나도 없지만 ksh93
아마도 아직 하나가 내장되어 있을 것입니다.)
그리고 perl
:
perl -F -ane '
BEGIN{
$/=\3;
map {open $f[$n++], ">", $_} qw{red green blue}
}
for $i (0..2) {print {$f[$i]} $F[$i]}'
표준 Unix 도구만 사용하여 다음을 수행할 수 있습니다.
od -vAn -tu1 < file |
tr -cs 0-9 '[\n*]' |
grep . |
paste - - - |
awk '{printf "%c", $1 > "red"
printf "%c", $2 > "green"
printf "%c", $3 > "blue"}'
그러면 123123123123
"파일"이 1111
"빨간색", 2222
"녹색", 3333
"파란색"으로 분리됩니다. 대신 여전히 RGB 파일이지만 다른 색상이 억제된 "빨간색" 파일을 원할 경우 100100100100
위의 코드를 조정하여 다른 색상에 대한 추가 NUL 바이트를 출력하거나 ImageMagick 등을 사용할 수 있습니다. 유틸리티 convert
:
size=$(wc -c < file)
convert -size "1x$size" -channel GB -fx 0 rgb:- rgb:- < file > red
# ...and so on for green and blue
답변3
채널 분리를 위해 MATLAB을 사용할 수도 있습니다. 이것을 읽어보세요: http://blogs.mathworks.com/steve/2011/03/08/tips-for-reading-a-camera-raw-file-into-matlab/ RAW 데이터를 읽는 방법을 보여줍니다. MATLAB에서 채널을 분리하는 것은 행렬의 특정 요소를 샘플링하는 것만큼 쉽습니다.