0

我有一个具有 12 个不同方向的 gabor 滤波器的可视化输出。我想将可视化图像叠加在我的视网膜图像上以进行血管提取。我该怎么做?我尝试了以下方法。还有其他方法可以执行叠加matlab 中的图像。

这是我的代码

         I = getimage();
         I=I(:,:,2);
  lambda  = 8;
  theta   = 0;
  psi     = [0 pi/2];
  gamma   = 0.5;
  bw      = 1;
  N       = 2;
  img_in = im2double(I);
  %img_in(:,:,2:3) = [];   % discard redundant channels, it's gray anyway
  img_out = zeros(size(img_in,1), size(img_in,2), N);
  for n=1:N
   gb = gabor_fn(bw,gamma,psi(1),lambda,theta)...
            + 1i * gabor_fn(bw,gamma,psi(2),lambda,theta);
 % gb is the n-th gabor filter
    img_out(:,:,n) = imfilter(img_in, gb, 'symmetric');
   % filter output to the n-th channel
   %theta = theta + 2*pi/N
  %figure;
  %imshow(img_out(:,:,n));
  imshow(img_in); hold on;
  h = imagesc(img_out(:,:,n)); % here i am getting error saying CDATA must be size[M*N]
  set( h, 'AlphaData', .5 ); % .5 transparency
  figure;
  imshow(h);
   theta = 15 * n;  % next orientation
  end

在此处输入图像描述 这是我的原始图像

在此处输入图像描述 这是我通过 gabor 过滤器使用方向得到的可视化图像 在此处输入图像描述 这是我必须获得的关于可视化的图像类型/类型。即我必须将可视化图像强加在我的原始图像上,我必须获得这种类型的图像

4

1 回答 1

1

根据您提供的信息,我的理解是您希望第三张/最终图像叠加在第一张/初始图像之上。在使用分割检测大脑 MRI 图像中的出血时,我会这样做。

首先,让我们设置一些定义:

  • I_src = 源/原始图像
  • I_out = 输出/最终图像

现在,制作一个副本I_src并使其成为彩色图像而不是灰度图像。

I_hybrid = I_src
colorIm = gray2rgb(I_src)

让我们假设两者I_srcI_out是相同的视觉尺寸(即:宽度,高度),并且I_out严格的黑白(即:单色)。现在,我们可以I_out在生成的图像中将其用作 Alpha 通道调整的蒙版模板。这就是它变得有趣的地方。

BLACK=0;
WHITE=1;
[length width] = size(I_out);
for i = 1:1:length
   for j = 1:1:width
   if (I_out(i,j) == WHITE)
      I_hybrid(i,j) = I_hybrid(i,j) + [0.25 0 0]a;
   end
end

这将导致您获得原始图像,其中眼睛中的血管略微变亮并染成红色。您现在有了原始图像的漂亮合成,其中突出显示了所需的功能,但没有被覆盖(即:您可以通过减去原始颜色矢量来撤消突出显示)。

我将包含一个输出的示例,但它很吵,因为我必须在 GIMP 中创建它,因为我现在没有安装 Matlab。结果将相似,但您的结果会更干净、更漂亮。

在此处输入图像描述

请让我知道这是怎么回事。


参考

  1. “将图像从灰度转换为彩色” http://blogs.mathworks.com/pick/2012/11/25/converting-images-from-grayscale-to-color/
于 2013-11-08T16:54:42.113 回答