2014-03-24 70 views
1

我有一個矩陣表示每個(i,j)位置的值都在0和1之間的大腦圖像。我正在應用一個彩色圖,使得值爲1的像素爲紅色且爲0是黃色的,介於兩者之間的是中間值。現在,我想要的是,具有0.8以上值的那些像素根據顏色映射獲得顏色,並且其餘的顏色變得透明(即它們沒有獲得任何顏色),以便我可以將該圖像與另一個大腦圖像疊加並且識別高活動區域。我該怎麼做呢 ?只着色特定像素

我有這樣 fmri image

圖片我想只有亮黃色的部分,這樣我可以與其他圖像重疊,並得到這樣的事情。 overlayed image

編輯:

我接着Jigg建議的方法,但最近觀察到最終圖像旋轉和翻轉,任何想法,爲什麼? final_image

+0

旋轉/翻轉效果可能來自索引約定。對於數組,Matlab索引(1)從上到下和(2)從左到右;對於圖像來說(1)從左到右,(2)從上到下。 –

回答

3

這是另一種選擇,創建一個複製灰度大腦圖像的3層陣列(imagesc將按比例縮放每個圖層,導致相等的r,g和b值 - >灰度級別)。

GrayBckgnd = repmat(brain, [1, 1, 3]); 
data = … 

然後與活動數據覆蓋它:

imagesc(GrayBcknd); 
hold on; 
DataImg = imagesc(data); 
set(DataImg, 'AlphaData', im2double(data>0.8)); 
colormap jet; % or any other colormap. 
2

您可以通過繪製一個surf(-ace)並按如下方式傳遞alpha值來完成此操作。

brain = ... % background brain image 
data = ... % the data you are trying to overlay 
imshow(brain); 
hold on; 
surf(zeros(size(data)), data, 'AlphaData', data > 0.8); 
colormap(...); % whatever colormap you like 

看一看在surface properties文檔,更多的選項,你可以傳遞給surf