rgb圖像化爲灰度圖是很容易的,matlab具有自帶函數。
灰度圖化爲rgb圖像:Google所得到的參考答案:
https://www.mathworks.com/matlabcentral/answers/377407-how-to-convert-grayscale-to-rgb
https://www.mathworks.com/matlabcentral/answers/69368-how-to-convert-gray-scale-image-into-rgb-image
https://www.cnblogs.com/minisculestep/p/4878894.html
翻譯如下:
問題:如何轉變灰度圖爲rgb圖像?
我使用下面腳本轉換灰度圖至rgb圖像:
[im, map] = imread('frame1.jpg');
if(isempty(map)) % image is RGB or grayscale
if(size(im, 3) == 1) % image is grayscale
im = cat(3, im, im, im);
end
else % image is indexed
im = ind2rgb(im, map);
end
其中 frame1是灰度圖。問題是:當我執行imshow(im)時,它仍然沒有顏色,但是size(im)是144 176 3,我很困惑,我怎麼才能得到有顏色的圖像呢?
答:
所有的代碼都在執行:
im=cat(3,im,im,im)
創建了144x176x3矩陣,其中im(:,:,1)與im(:,:,2)相同,im(:,:,3)相同。因此,紅色、綠色和藍色的分量是相同的,因此圖像仍然是“灰度圖”
您可以使用ind2rgb()應用各種顏色映射
map = hsv(256); % Or whatever colormap you want.
rgbImage = ind2rgb(im, map); % im is a grayscale or indexed image.
使用顏色映射類型,因爲您對感興趣的顏色區域感興趣,我認爲任何顏色映射格式都足夠了。例子:
close all
clear
clc % just to clear things up
I=imread('333.jpg');
R=rgb2gray(I); % It is gray now
y=colormap(hot(110));
imwrite(R,y,'rgb.jpg','jpg'); % Re-change it to colored one
imshow('rgb.jpg');
如果您的初始圖像是單色的,則無法確定原始顏色。你不能。如果你只有灰度圖像就不是這樣了。
可以使用cat()將灰度圖像轉換爲RGB圖像:
rgbImage = cat(3, grayImage, grayImage, grayImage);
當然,它會看起來所有的灰度,即使它是一個“真正的顏色”RGB圖像-只是所有的“顏色”都是灰色的。您可以對灰度值應用僞顏色查找表,將每個灰度值映射到某個顏色,以得到一個多色圖像,如下所示:
rgbImage = ind2rgb(grayImage, jet(256));
然而,這些顏色並不是虹膜的原始顏色,就像你用彩色相機拍下的那樣。