局部拉普拉斯滤波器

2017-08-01  本文已影响338人  学而时习之_不亦说乎

拉普拉斯金字塔用于在多个尺度上对图像进行分析,其应用范围广泛,如压缩、纹理合成 和调和化等。但其在边缘处理方向的应用非常少,因为拉普拉斯算子为二阶差分,其方向信息丢失,常产生双像素,对噪声有双倍加强作用,因此它很少直接用于边缘检测。一般是将高斯滤波和拉普拉斯边缘检测结合在一起,即Laplacian of Gaussian (LoG)算子优化而成的-----先用高斯算子对图像进行平滑(去掉噪声的影响),然后采用拉普拉斯算子根据二阶微分过零点来检测图像边缘。局部拉普拉斯滤波器创新的使用拉普拉斯的方法来进行边缘的检测,并且区分出图像中的大尺度边缘和小尺度细节。

我们首先通过一个实际的例子,来对拉普拉斯滤波器有一个直观的了解,其中laplacian_pyramid函数,以及与其相关的函数可以再图像金字塔这篇文章中找到。

close all
m = 4;
n = 4;
k = 1;

%--------------------原始信号构建---------------------%
figure
%生产随机噪声信号
D = rand(1,200)*0.5;
subplot(m,n,k);
plot(D);
ylim([-4 4]);
title('高频细节信号');
k = k +1;
%产生一个阶跃信号
E = [zeros(1,100),5*ones(1,100)];
subplot(m,n,k);
plot(E);
title('阶跃信号');
k = k + 1;

%产生一个缓慢变化的信号S
S = 1:1:200;
S = 0.6*sin(pi/200.*S);
subplot(m,n,k);
plot(S)
ylim([-1,1]);
title('缓慢变化信号');
k = k + 1;

%得到最终信号signal
signal  = D + E + S;
subplot(m,n,k);
plot(signal)
title('1D信号');
k = k + 1;

D_py = laplacian_pyramid(D,4);
E_py = laplacian_pyramid(E,4);
S_py = laplacian_pyramid(S,4);
signal_py = laplacian_pyramid(signal,4);

%--------------------得到第一层拉普拉斯金字塔---------------------%
subplot(m,n,k);
plot(D_py{1});
ylim([-2 2])
title('高频细节信号 L0 ');
k = k +1;

subplot(m,n,k);
plot(E_py{1});
title('阶跃信号 L0 ');
k = k +1;

subplot(m,n,k);
plot(S_py{1});
ylim([-1,1]);
title('缓慢变化信号 L0 ');
k = k +1;

subplot(m,n,k);
plot(signal_py{1});
title('1D信号 L0 ');
k = k +1;

%--------------------得到第二层拉普拉斯金字塔---------------------%
subplot(m,n,k);
plot(D_py{2});
ylim([-2 2])
title('高频细节信号 L1 ');
k = k +1;

subplot(m,n,k);
plot(E_py{2});
title('阶跃信号 L1 ');
k = k +1;

subplot(m,n,k);
plot(S_py{2});
title('缓慢变化信号 L1 ');
ylim([-1,1]);
k = k +1;

subplot(m,n,k);
plot(signal_py{2});
title('1D信号 L1 ');
k = k +1;

%--------------------得到第三层拉普拉斯金字塔---------------------%
subplot(m,n,k);
plot(D_py{3});
ylim([-2 2])
title('高频细节信号 L2 ');
k = k +1;

subplot(m,n,k);
plot(E_py{3});
title('阶跃信号 L2 ');
k = k +1;

subplot(m,n,k);
plot(S_py{3});
ylim([-1,1]);
title('缓慢变化信号 L2 ');
k = k +1;

subplot(m,n,k);
plot(signal_py{3});
title('1D信号 L2 ');
k = k +1;

通过上面的代码,我们可以得到如下的图像:

利用拉普拉斯来进行范围压缩的思路如下:针对输入信号I,如果我们希望得到range compressed之后的输出I',那我们可以首先构建输出信号I'的拉普拉斯金字塔信号{L[I']},利用该金字塔信号来重构I'信号,而这个拉普拉斯金字塔信号{L[I']}对大的边缘信号进行了相应的压缩,所以得到的输出I'也就是压缩后的结果了。现在所有的问题都落在了,如何构建这个拉普拉斯金字塔信号{L[I']}上。

(未完待续)

上一篇 下一篇

猜你喜欢

热点阅读