2014-03-24 71 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