Image processing 用于从图像生成每个像素的R-G-B值的软件/工具,反之亦然
是否有软件/工具可以从简单的原始8位RGB图像生成RGB值矩阵? 此外,是否有软件/工具可以从给定的RGB值矩阵生成图像 多谢各位 附言: i) 我知道这可以用Matlab实现。我正在寻找一个工具,可以做到这一点,不是MatlabImage processing 用于从图像生成每个像素的R-G-B值的软件/工具,反之亦然,image-processing,Image Processing,是否有软件/工具可以从简单的原始8位RGB图像生成RGB值矩阵? 此外,是否有软件/工具可以从给定的RGB值矩阵生成图像 多谢各位 附言: i) 我知道这可以用Matlab实现。我正在寻找一个工具,可以做到这一点,不是Matlab ii)我意识到以编程方式进行类似工作存在的问题。我需要一个软件工具,如果有的话,可以完成这项任务。我建议您使用古老的NetPBM,它适用于Linux、macOS和Windows。或者,您可以使用ImageMagick,但重量要重得多,请参见下文 NetPBM方法-请
ii)我意识到以编程方式进行类似工作存在的问题。我需要一个软件工具,如果有的话,可以完成这项任务。我建议您使用古老的NetPBM,它适用于Linux、macOS和Windows。或者,您可以使用ImageMagick,但重量要重得多,请参见下文
NetPBM方法-请参阅 因此,让我们从一个原始的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
# 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
P3
3 1
255
255 0 0 0 255 0 0 0 255
255 0 0 0 255 0 0 0 255
其中:
表示以ASCII而不是二进制显示-普通
- P3告诉我们它是彩色和ASCII码
- 31告诉我们它的尺寸是3像素宽1像素高
- 255基本上告诉我们它是8位的(65536意味着16位)
- 最后一行是像素
rawtoppm -plain 3 1 rgb888.bin > image.ppm
ppmtoppm < image.ppm | tail -c 9 > rgb888.bin
因此,我们可以得到如下二进制版本:
rawtoppm -plain 3 1 rgb888.bin > image.ppm
ppmtoppm < image.ppm | tail -c 9 > rgb888.bin
ImageMagick方法
# Convert binary RGB888 to text
convert -depth 8 -size 3x1 RGB:rgb888.bin txt:
样本输出
P3
3 1
255
255 0 0 0 255 0 0 0 255
# 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
P3
3 1
255
255 0 0 0 255 0 0 0 255
255 0 0 0 255 0 0 0 255
或者,外观稍有不同:
# 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
# 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
P3
3 1
255
255 0 0 0 255 0 0 0 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 .........
普通转储方法
# Convert binary RGB888 to text
convert -depth 8 -size 3x1 RGB:rgb888.bin txt:
也许您对从od
直接转储感到满意:
od -An -t u1 rgb888.bin
样本输出
P3
3 1
255
255 0 0 0 255 0 0 0 255
# 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
P3
3 1
255
255 0 0 0 255 0 0 0 255
255 0 0 0 255 0 0 0 255
matlab不是一个“软件工具”吗?我没有matlab的使用权。所以,寻找一个软件或网络应用程序可以完成这项任务。Python,Matplotlib和PIL(枕头)工作吗?谢谢马克!NetPBM正是我想要的。再次感谢。