Ядро фильтра Гаусса отличается от ядра фильтра Гаусса Matlab

Я создаю фильтр Гаусса в Matlab. Я создал следующий код для создания ядра.

function kernel = gaussian_filter(sigma)
    kernel_width = 3 * sigma - 1;
    [x, y] = meshgrid(-kernel_width/2:kernel_width/2, -kernel_width/2:kernel_width/2);
    normalized_constant = 1/(2 * pi * sigma * sigma);
    kernel = normalized_constant * exp(-(x.^2 + y.^2)/ (2 * sigma * sigma));
    K = mat2gray(kernel);
    imshow(K);
    title('Gaussian Kernel');
 end

И мой вывод:

gaussian_filter(3)

ans =

  Columns 1 through 7

    0.0030    0.0044    0.0058    0.0069    0.0073    0.0069    0.0058
    0.0044    0.0065    0.0086    0.0101    0.0107    0.0101    0.0086
    0.0058    0.0086    0.0113    0.0134    0.0142    0.0134    0.0113
    0.0069    0.0101    0.0134    0.0158    0.0167    0.0158    0.0134
    0.0073    0.0107    0.0142    0.0167    0.0177    0.0167    0.0142
    0.0069    0.0101    0.0134    0.0158    0.0167    0.0158    0.0134
    0.0058    0.0086    0.0113    0.0134    0.0142    0.0134    0.0113
    0.0044    0.0065    0.0086    0.0101    0.0107    0.0101    0.0086
    0.0030    0.0044    0.0058    0.0069    0.0073    0.0069    0.0058

  Columns 8 through 9

    0.0044    0.0030
    0.0065    0.0044
    0.0086    0.0058
    0.0101    0.0069
    0.0107    0.0073
    0.0101    0.0069
    0.0086    0.0058
    0.0065    0.0044
    0.0044    0.0030

Но когда я запускаю фильтр Matlab Gaussian, результат немного отличается от моего вывода.

h = fspecial('gaussian', 9, 3)

h =

  Columns 1 through 7

    0.0040    0.0059    0.0077    0.0091    0.0096    0.0091    0.0077
    0.0059    0.0086    0.0114    0.0135    0.0142    0.0135    0.0114
    0.0077    0.0114    0.0150    0.0178    0.0188    0.0178    0.0150
    0.0091    0.0135    0.0178    0.0210    0.0222    0.0210    0.0178
    0.0096    0.0142    0.0188    0.0222    0.0235    0.0222    0.0188
    0.0091    0.0135    0.0178    0.0210    0.0222    0.0210    0.0178
    0.0077    0.0114    0.0150    0.0178    0.0188    0.0178    0.0150
    0.0059    0.0086    0.0114    0.0135    0.0142    0.0135    0.0114
    0.0040    0.0059    0.0077    0.0091    0.0096    0.0091    0.0077

  Columns 8 through 9

    0.0059    0.0040
    0.0086    0.0059
    0.0114    0.0077
    0.0135    0.0091
    0.0142    0.0096
    0.0135    0.0091
    0.0114    0.0077
    0.0086    0.0059
    0.0059    0.0040

Я не пропускаю ни одного шага в алгоритме. Я пытаюсь понять, почему наши результаты не совпадают.


person Pete    schedule 04.02.2017    source источник
comment
Кернел, не кернал...   -  person dda    schedule 04.02.2017


Ответы (1)


Я забыл нормализовать ядро:

kernel = kernel/(sum(kernel(:)));

https://www.mathworks.com/help/images/ref/fspecial.html

person Pete    schedule 04.02.2017