Разница гауссовского (DoG) краевого детектора - PullRequest
0 голосов
/ 19 июня 2019

Я делаю детектор края DoG.Я должен выполнить следующие шаги: 1. DoG 2. Порог до нуля 3. Найти пересечение нуля.

До сих пор я думаю, что я успешно реализовал это без пересечения нулей.Документация Matlab гласит, что функция рёбер нулевого скрещивания (пример: edge (dog, 'zerocross', 0.025);) будет применять обнаружение краев бревен, если нет дополнительного метода.Я не уверен, как я могу реализовать это с помощью своего фильтра или как написать свою собственную функцию нулевого скрещивания.

    grayImage = imread('cl.tif');
    grayImage = rgb2gray(grayImage);
    [rows, columns, numberOfColorBands] = size(grayImage);
    % Enlarge figure to full screen.
    set(gcf, 'units','normalized','outerposition',[0 0 1 1]);
    set(gcf,'name','DoG','numbertitle','off');

    %DoG
    gaussian1 = imgaussfilt3(grayImage, 1);
    gaussian2 = imgaussfilt3(grayImage, 9);
    dog = gaussian1 - gaussian2;

    subplot(3, 2, 3); 
    imshow(dog, []);
    title('DOG Filtered Image', 'FontSize', fontSize);
    % Let's compute and display the histogram.
    [pixelCount, grayLevels] = imhist(dog(:));
    subplot(3, 2, 4); 
    bar(grayLevels, pixelCount);
    grid on;
    title('Histogram of DOG Filtered Image', 'FontSize', fontSize);

    %Thresholding
    t = 4;
    ind_below = (dog < t);
    ind_above = (dog >= t);
    dog(ind_below) = 0;
    dog(ind_above) = 255;
    subplot(3, 2, 5);
    imshow(dog, []);
    title('Threshold', 'FontSize', fontSize);

    %Zero-crossing
    zeroCross = edge(dog, 'zerocross', 0.025);
    subplot(3, 2, 6);
    imshow(zeroCross, []);
    title('Zerocrossing', 'FontSize', fontSize);

В текущем состоянии программы я обнаруживаю каждую мелочь, шум.В настоящее время это то, что я получаю (https://ibb.co/HVPnnPp), и мне нужно закончить с этим (https://ibb.co/wJrRbk7). Исходное изображение (https://ibb.co/jhTLYHR).

...