DOG算子的运用

Difference of Gaussian(DOG)是高斯函数的差分。

它是可以通过将图像与高斯函数进行卷积得到一幅图像的低通滤波结果,即去噪过程,这里的Gaussian和高斯低通滤波器的高斯一样,

是一个函数,即为正态分布函数

基本理论

首先,高斯函数表示定义为:

其次,两幅图像的高斯滤波表示为:

最后,将上面滤波得到的两幅图像g1和g2相减得到:

即:可以DOG表示为:


MATLAB代码:

clc
clear all;
%DoG滤波器
p2 = input('模板尺寸p2=\n');
display('DoG算子的方差设置 方差1<方差2')
sigma1 = input('方差1 sigma1=\n');
sigma2 = input('方差2 sigma2=\n');
%%
siz = (p2-1)/2;
[x,y] = meshgrid(-siz(1):1:siz(1),-siz(1):1:siz(1));
z1 = exp(-(x.*x+y.*y)/(2*sigma1.^2))/sqrt(2*pi*sigma1.^2);
z2 = exp(-(x.*x+y.*y)/(2*sigma2.^2))/sqrt(2*pi*sigma2.^2);    %生成高斯核
%%
z3 = z1 -z2;
%%
figure;
surf(x,y,z1)
figure;
mesh(x,y,z2)

Inimage = imread('lena.jpg');
figure
imshow(Inimage)
Inimage = rgb2gray(Inimage);
Resimage = conv2(Inimage, z3,'full');

Resimage = mat2gray(Resimage);
figure
imshow(Resimage)



你可能感兴趣的:(图像处理的算子)