将灰度JPEG转换为RGB JPEG

时间:2016-06-21 19:13:09

标签: image matlab jpeg rgb grayscale

我有几个(实际上是几千个)jpg图像,其颜色空间为灰色,但我想要使用它们的程序要求它们在rgb中。有没有办法将jpg从单色转换为rgb并且仍然看起来相同(即基本上使用rgb值来制作灰度图像)。

我在MATLAB中将图像作为2D矩阵,并且我尝试使用imwrite通过执行以下操作来强制图像rgb:

imwrite(image, 'rgb.jpg')

我认为这会有用,因为imwrite的文档说jpg' s应该是rgb,但我仍然会得到单色图像。

1 个答案:

答案 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