我有几个(实际上是几千个)jpg图像,其颜色空间为灰色,但我想要使用它们的程序要求它们在rgb中。有没有办法将jpg从单色转换为rgb并且仍然看起来相同(即基本上使用rgb值来制作灰度图像)。
我在MATLAB中将图像作为2D矩阵,并且我尝试使用imwrite
通过执行以下操作来强制图像rgb:
imwrite(image, 'rgb.jpg')
我认为这会有用,因为imwrite
的文档说jpg' s应该是rgb,但我仍然会得到单色图像。
答案 0 :(得分:3)
将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次以创建separate red, green, and blue channels。我们对所有通道重复相同的值,因为任何灰度值都可以用红色,绿色和蓝色的相等权重表示。您可以使用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 3