2016-06-21 216 views
2

我有一些(實際上是幾千個)具有灰色顏色空間的jpg圖像,但是我想要使用它們的程序要求它們在rgb中。有沒有辦法將jpg從單色轉換爲rgb,並且仍然看起來相同(即基本上使用rgb值來製作灰度圖像)。將灰度JPEG轉換爲RGB JPEG

我有圖片作爲MATLAB二維矩陣,我試圖用imwrite迫使圖像從做RGB:

imwrite(image, 'rgb.jpg') 

我想,既然該說明文件將工作imwrite說, JPG的應該在RGB,但我仍然得到一個單色的圖像。

回答

3

當您將二維矩陣保存爲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 
+0

謝謝!這正是我需要它做的。 – nbingo