簡體   English   中英

使用灰度圖像用matlab創建RGB圖像

[英]Using a grayscale image to create an RGB image with matlab

我有一個灰度圖像,我希望這個圖像作為RGB圖像的三個波段。 換句話說,新RGB圖像的每個帶將是該灰度圖像

那是我到目前為止所嘗試的:

gray_image=imread('image.pgm');
rgb_image=zeros(size(gray_image,1),size(gray_image,2),3);
rgb_image(:,:,1)=gray_image;
rgb_image(:,:,2)=gray_image;
rgb_image(:,:,3)=gray_image;


>> rgb_image(1,2,1)

 ans = 44

>> rgb_image(1,2,2)

 ans = 44

>> rgb_image(1,2,3)

ans = 44

您可以看到上面的代碼有效,但是當我執行以下命令時:

imwrite(rgb_image,'rgb_image.ppm');

圖像全是白色的。 如何使用正確的格式保存圖像?

問題原因:

gray_image的類型為uint8rgb_image的類型為double ,但兩者的值都在[0..255]范圍內。 當matlab保存double精度圖像時,它希望其值在范圍[0..1]所有大於1值都被截斷為1 - 最亮的值。 這就是為什么用完全白色的圖像rgb_image雙精度rgb_image結果的原因。

更正:

對於rgb_imge也使用uint8類型:

rgb_image=zeros(size(gray_image,1),size(gray_image,2),3,'uint8');

或者,您可以將gray_image轉換為double

gray_image = im2double( gray_image );

我設法在Matlab 2016a中創建了一個RGB圖像,其中原始圖像主要是灰色

imgGray = imread('Ceres-Bright-Spots-4_500-miles.jpg');  

[r g b]=size(imgGray);
rgb=zeros(r,g,3); 
rgb(:,:,1)=imgGray;
rgb(:,:,2)=rgb(:,:,1);
rgb(:,:,3)=rgb(:,:,1);
imgRGB=rgb/255; 
figure,imshow(imgRGB);

做Shai的命令是不夠的。 我准備的數據完成了指南中的所有步驟, 在這里關於圖像處理變得容易

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM