2013-11-07 3 views
0

У меня есть результат визуализации фильтра Габора с 12 различными ориентациями. Я хочу наложить изображение визуализации на изображение моей сетчатки для извлечения сосуда. Как я это делаю? Я пробовал метод ниже. Есть ли какой-либо другой метод выполнять наложение изображений в матлаб.Как наложить два изображения?

вот мой код

  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 

enter image description here это мое исходное изображение

enter image description here это мой визуализируется изображение получил Габор фильтр с помощью ориентации enter image description here это вид/тип изображения я должен получить относительно визуализации. Мне нужно нарисовать визуализированное изображение на моем исходном изображении, и мне нужно получить этот тип изображения

+0

Не могли бы вы загрузить фотографии ваших результатов? Вы даже запустили код, или он выплевывает ошибки? – DevNull

+0

сэр это будет исполнено ... bt я не получаю то, что хочу .. Я хочу, чтобы мой выход filterd был наложен на мое исходное изображение, и я хочу, чтобы мое третье изображение было как изображение вывода – vidya

ответ

1

С информацией, которую вы предоставили, я понимаю, что вы хотите, чтобы третье/окончательное изображение было наложением поверх первого/начального изображения. Я делаю такие вещи, когда вы используете сегментацию для выявления кровоизлияний в МРТ-изображения головного мозга.

Во-первых, давайте установим некоторые ОПРЕДЕЛЕНИЯХ:

  • I_src = источник/исходное изображение
  • I_out = выход/конечное изображение

Теперь сделайте копию I_src и сделать его цветное изображение, а не оттенки серого.

I_hybrid = I_src 
colorIm = gray2rgb(I_src) 

Давайте предположим, как I_src и I_out те же визуальные размеры (то есть: ширина, высота), и что I_out является строго черно-белый (то есть: монохромный). Теперь мы можем использовать I_out в качестве шаблона маски для настройки альфа-канала в полученном изображении. Это - то, где это получает удовольствие.

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, установленного прямо сейчас. Результаты будут похожи, но ваши будут намного чище и красивее.

enter image description here

Пожалуйста, дайте мне знать, как это идет.


Ссылки

  1. "Преобразование изображения из градаций серого в цвете" http://blogs.mathworks.com/pick/2012/11/25/converting-images-from-grayscale-to-color/
+0

спасибо за ответ sir !! 1 Я также делаю свой проект по выявлению аномалий в сетчатке. я попробую с этим и вернусь к вам, сэр .. все равно спасибо тонну снова сэр! – vidya

+0

сэр я получаю сообщение об ошибке в функции .. ниже строка дает мне ошибку ??? Ошибка при использовании ==> plus Целые числа могут объединяться только с целыми числами одного класса или скалярными удвоениями. Ошибка в ==> file1> GABOR_Callback при 782 I_hybrid (i, j) = I_hybrid (i, j) + [0.25 0 0]; – vidya

+0

Сэр ... я выполнил код ua, я изменил эту строку на I_hybrid (i, j) = I_hybrid (i, j) + [0.25], так как он выдавал ошибку ..... когда я запускал ее, она давала меня выложил с 1 маленькой точкой ... похоже, я пропустил что-то нето, что? может помочь мне – vidya

Смежные вопросы