Наложение нескольких изображений из фильтра Габора - PullRequest
0 голосов
/ 16 октября 2018

Я впервые узнаю о фильтрах Габора и о том, как их можно использовать для восстановления отпечатков пальцев с их карт ориентации.Мне дали карту ориентации в виде .jpg, и я хочу применить к ней фильтры Габора с 4 ориентациями.Я последовал примеру в документации и получил следующий код:

input_img = imread('orientation.jpg');
input_img = rgb2gray(input_img);  

wavelength = 6;
orientation = [0 45 90 135];
gaborArray = gabor(wavelength,orientation);
gaborMag = imgaborfilt(input_img,gaborArray);

figure
subplot(2,2,1);
for p = 1:4
    subplot(2,2,p)
    imshow(gaborMag(:,:,p),[]);
    theta = gaborArray(p).Orientation;
    lambda = gaborArray(p).Wavelength;
    title(sprintf('Orientation=%d, Wavelength=%d',theta,lambda));
end

Мой ввод:

orientation.jpg

Вывод: output

Однако мне действительно нужен один отпечаток, похожий на следующий:

fingerprint.jpg

Я понимаю, что мой вывод в настоящее время такой, какой он есть из-за subplot.Я попытался заменить subplot на hold on и plot, но в итоге получается, что окончательное изображение с ориентацией = 135 перекрывает другие.

Есть ли способ перекрытия графиков при усреднении значений яркости / интенсивности каждого пикселя?Любое руководство приветствуется.

1 Ответ

0 голосов
/ 17 октября 2018

Следуя предложению из комментария Криса Луенго, я объединил изображения перед их отображением путем усреднения значений магнитуд из gaborMag.Мой код теперь выглядит следующим образом:

input_img = imread('orientation.jpg');
input_img = rgb2gray(input_img);  

wavelength = 2;
orientation = [0 45 90 135];
gaborArray = gabor(wavelength,orientation);
gaborMag = imgaborfilt(input_img,gaborArray);

[height, width, num_filters] = size(gaborMag(:,:,:));
combined_mag = zeros(height,width);

% Average the values from each filter
for i = 1:height
    for j = 1:width
        sum = 0;
        for f = 1:num_filters
            sum = sum + gaborMag(i,j,f);
        end
        combined_mag(i,j) = sum / num_filters;
    end
end
imshow(combined_mag,[]);

Вывод:

combined

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...