【问题标题】:maximum intensity projection matlab with color带颜色的最大强度投影matlab
【发布时间】:2014-01-27 21:48:35
【问题描述】:

大家好,我有一堆荧光标记的粒子图像,它们随着时间的推移而移动。图像堆栈是灰度的。

我通过获取图像堆栈在第 3 维中的最大值来计算最大强度投影。

Example:
ImageStack(x,y,N) where N = 31 image frames.

2DProjection = max(ImageStack,[],3)

现在,由于 2D 投影图像是黑白的,我希望分配一个颜色渐变,这样我就可以了解粒子在时间中的流动。有没有办法可以用颜色覆盖这个图像,这样我就可以知道粒子从哪里开始,在哪里结束?

谢谢!

【问题讨论】:

  • 颜色渐变是什么意思?您想在 2DProjection 中根据像素强度设置彩条吗?为什么 colormap(jet) 或 colormap(hot) 不适用于您的情况?谢谢
  • 不,颜色表示时间。所以蓝色是第 1 帧(第一个时间点),红色是第 31 帧(最后一个时间点)。 2D 投影成为粒子所遵循的轨迹。我正在尝试使用颜色来可视化粒子的开始和结束位置。
  • 关键是要了解粒子在时间移动时的流动感。我不确定最好的方法是覆盖颜色。但我认为这可能是第一次开始。绝对愿意接受其他建议。

标签: matlab image-processing particles


【解决方案1】:

您可以使用max 的第二个输出来获取特定最大值来自哪个帧。 max 返回一个索引矩阵,指示每个最大值的索引,在您的情况下,它将是它发生的特定帧。如果将其与imagesc 函数一起使用,您将能够绘制粒子如何随时间移动的图。例如:

ImageStack(x,y,N) where N = 31 image frames.

[2DProjection,FrameInfo] = max(ImageStack,[],3);
imagesc(FrameInfo);
set(gca,'ydir','normal'); % Otherwise the y-axis would be flipped

【讨论】:

  • 这是一个非常巧妙且快速的解决方案。非常感谢。它看起来也不是那么糟糕。如果您对此类分析有任何其他想法,我很想听听。
【解决方案2】:

在为每张图像着色后,您可以将每张图像的明亮像素彼此相加。这样,您将在使用 max 函数时会错过的重叠区域混合颜色。虽然我比我更喜欢以前的答案。

hStep = 1/N;
currentH = 0;
resultImage = uint8(zeros(x,y,3));
for i = 1 : N
   rgbColor = hsv2rgb(currentH,1,0.5);
   resultImage(:,:,1) = resultImage(:,:,1) + im(:,:,i) * rgbColor(1);
   resultImage(:,:,2) = resultImage(:,:,2) + im(:,:,i) * rgbColor(2);
   resultImage(:,:,3) = resultImage(:,:,3) + im(:,:,i) * rgbColor(3);
   currentH = currentH + hStep;
end

【讨论】:

  • 非常感谢你的代码让我学到了一些新东西。正如我在上一张海报中所说,如果您对这样的流量分析有任何其他想法,我很想听听。再次感谢!
  • 感谢您尝试改进我对另一个问题的回答,尽管它被版主拒绝了,可能他们认为它更适合作为评论。在这里为您的答案+1。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-11-14
  • 1970-01-01
  • 2021-11-06
  • 1970-01-01
  • 1970-01-01
  • 2021-09-11
  • 1970-01-01
相关资源
最近更新 更多