【问题标题】:Coloring only specific pixels仅对特定像素着色
【发布时间】:2014-05-02 09:40:08
【问题描述】:

我有一个代表大脑图像的矩阵,每个 (i,j) 位置的值都在 0 和 1 之间。我正在应用一个颜色图,以便那些值为 1 的像素是红色的,0 是黄色的,那些在两者之间获得中间值。现在,我想要的是那些值高于 0.8 的像素根据颜色图获得颜色,其余部分变得透明(即它们没有任何颜色),这样我就可以将这张图像与大脑的另一张图像重叠并识别高活动区域.我该怎么做?

我有这样的图片

我只想要亮黄色的部分,这样我就可以用其他图像覆盖它并得到这样的东西。
(来源:psychcentral.com

编辑:

我按照 Jigg 建议的方法,但最近观察到最终图像被旋转和反转,知道为什么吗?

【问题讨论】:

  • 旋转/反转效果可能来自索引约定。对于数组,Matlab 索引 (1) 从上到下和 (2) 从左到右;对于图像,它是 (1) 从左到右,(2) 从上到下。

标签: image matlab image-processing


【解决方案1】:

您可以通过绘制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 的选项。

【讨论】:

    【解决方案2】:

    这是另一种选择,创建一个 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.
    

    【讨论】:

      猜你喜欢
      • 2013-10-08
      • 2013-10-04
      • 2022-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多