2013-05-14 19 views
2

缺點:我是自學成才的程序員,這是我的第一個堆棧溢出帖子,所以請儘量耐心等待。我的少女帖子:在matlab中遇到與ind2rgb函數有關的問題

我有一個250X250的概率分佈(pdf)矩陣(值範圍從0到1),我想變成一個真實的顏色(250x250x3)矩陣,這樣我就可以保存一系列這些矩陣並將它們顯示爲電影或將它們保存爲RGB圖像。我的問題是雙重的:

首先,如果我使用:

cmp=jet; 
img=ind2rgb(pdf,cmp); 

而於imagesc(PDF)返回正確的熱圖圖我所期望的,IMG最終成爲一個完全的藍色形象,img(:,:,3)=(some value<1)(img(:,:,1:2)==0。 如果有人可以解釋爲什麼ind2rgb()不是(縮放?),imagesc()是相同的方式,以及我將如何解決該問題,我將非常感激。

此外:

我知道contour()imagesc()是在MATLAB圖窗口中顯示這些索引值比較實用的功能,但有什麼辦法可以挽救一個matlab數字爲真彩色圖像沒有圖軸?

對這些問題中的任何一個或兩個問題的答案將不勝感激。

科林

回答

2

ind2rg不縮放圖像,它只是它映射到顏色表。你必須自己調整圖像。另外,您需要指定顏色映射的大小。這裏有一個例子:

pdf = rand(100,100); % fake data 
pdfScaled = uint8(256*pdf); % scale data 
cmp = jet(256); % 256 element colormap 
img = ind2rgb(pdfScaled,cmp); 

subplot(2,1,1) 
imagesc(pdf) 
title('indexed image') 
subplot(2,1,2) 
image(img) 
title('rgb image') 

產生的情節是這樣的:

indexed and rgb images

至於你的第二個問題,getframeimwrite,因爲它顯示在一個軸可以用來保存圖片。例如:

figure 
imagesc(spiral(10)) 
frame = getframe(); 
imwrite(frame.cdata, 'frame.png') 
+0

感謝莫莉,這有幫助。回覆較晚,抱歉。我閱讀帖子,修正了我的代碼,並且很快忘記了回覆。 – Colin