我有几个(实际上是几千个) jpg图像,它们有一个灰色的颜色空间,但是我想使用它们的程序要求它们在rgb中。是否有办法将jpg从单色转换为rgb,并保持其外观不变(即基本上使用rgb值来生成灰度图像)。
我在MATLAB中将图像作为2D矩阵,并尝试使用imwrite将图像强制到rgb,方法如下:
imwrite(image, 'rgb.jpg')我认为这是可行的,因为imwrite的文档说jpg应该在rgb中,但是我仍然可以得到一个单色图像。
发布于 2016-06-21 19:18:56
当您将2D矩阵保存到JPEG中时,它仍然是灰度的。
imwrite(rand(100), 'test.jpg');
info = imfinfo('test.jpg');
% FileSize: 6286
% Format: 'jpg'
% Width: 100
% Height: 100
% BitDepth: 8
% ColorType: 'grayscale' <---- Grayscale
% NumberOfSamples: 1 <---- Number of Channels
% CodingMethod: 'Huffman'
% CodingProcess: 'Sequential'
size(imread('test.jpg'))
% 100 100如果您希望得到的图像是真彩色(即RGB),则需要在第三维空间中重复矩阵3次才能创建分红、绿、蓝三种通道。我们对所有通道重复相同的值,因为任何灰度值都可以用相同的红色、绿色和蓝色的权重来表示。您可以使用repmat完成这一任务。
imwrite(repmat(im, [1 1 3]), 'rgb.jpg')
info = imfinfo('rgb.jpg');
% FileSize: 6660
% Format: 'jpg'
% Width: 100
% Height: 100
% BitDepth: 24
% ColorType: 'truecolor' <---- True Color (RGB)
% NumberOfSamples: 3 <---- Number of Channels
% CodingMethod: 'Huffman'
% CodingProcess: 'Sequential'
size(imread('rgb.jpg'))
% 100 100 3https://stackoverflow.com/questions/37952760
复制相似问题