Я работаю над системой распознавания отпечатков пальцев, мне нужно извлечь поры, которые присутствуют в хребтах. Во время моего исследования я прочитал, что метод обнаружения блоба может отделять поры от гребней. Однако когда я применяю фильтр Гаусса, он сглаживает изображение. Кроме того, DoG приводит к другому аналогичному изображению. Если это правильный подход, то где я иду не так?Как применить разность гауссовского (DoG) подхода для извлечения пор в изображении отпечатков пальцев в MATLAB?
0
A
ответ
1
На самом деле вам нужно применить гауссовский фильтр с двумя различными наборами параметров, затем вычесть фильтры и выполнить свертку входного изображения с помощью этого нового фильтра, то есть разницу гауссовых.
Вот пример с демонстрационным изображением coins.png ... Код прокомментирован; не стесняйтесь играть с параметрами, чтобы увидеть, как это влияет на результат:
clear
clc
Im = imread('coins.png');
[r,c,~] = size(Im);
%// Initialize 3d array containing 3 images.
FilteredIm = zeros(r,c,3);
%// Try with 3 different kernel sizes
GaussKernel = [7 11 15];
figure;
subplot(2,2,1)
imshow(Im);
title('Original image');
TitleText = cell(1,numel(GaussKernel));
%// Apply Gaussian filter with 3 different kernel sizes/sigma values.
for k = 1:numel(GaussKernel)
%// Kernel sizes change but sigma values stay the same for
%// simplicity...you can play around with them of course.
GaussFilt1 = fspecial('Gaussian', GaussKernel(k), 12);
GaussFilt2 = fspecial('Gaussian', GaussKernel(k), 4);
%// Subtract the filters
DiffGauss = GaussFilt1 - GaussFilt2;
%// Perform convoluton to get filtered image
FilteredIm(:,:,k) = conv2(double(Im), DiffGauss, 'same');
%// Display
subplot(2,2,k+1)
imshow(FilteredIm(:,:,k));
TitleText{k} = sprintf('Filtered- Kernel of %i',GaussKernel(k));
title(TitleText{k});
end
Выход:
Теперь для вашего приложения вам, вероятно, нужно играть с размером ядра и параметры сигмы, предоставленные fspecial
. Удачи!
Спасибо за продуманный ответ, однако я все еще получаю серое изображение, пока моя цель - сохранить черно-белый цвет. Крайние низкие значения и высокие значения, как правило, делают фоновый белый и черный передние, что полностью противоположно моему входному изображению. – user1
Можно ли вывести только внутренние края монеты, объединив круговые границы с фоном? – user1
Извините за поздний ответ. Для вашего 1-го вопроса вы можете захотеть принять инверсию изображения ('~ Image'). Для второго случая, возможно, попытайтесь подорвать изображение, используя элемент структурирования диска. –