数字图像处理_拉普拉斯图像锐化
本文是博主个人学习数字图像处理整理知识点所用,如有错误希望得到大家指点
一、图像拉普拉斯锐化模板:四方向模板:Laplace1=[0 -1 0;-1 4 -1;0 -1 0]
八方向模板:Laplace2=[-1 -1 -1 ;-1 8 -1;-1 -1 -1]
下面具体介绍拉普拉斯模板
1.理论知识
拉普拉斯算子是一个是n维欧几里德空间中的一个二阶微分算子,它的定义如下:
在x方向上
在y方向上
合起来就是
拉普拉斯强调的是图像中灰度的突变,并不强调图像的灰度缓变(灰度缓变由一阶微分,也就是梯度,图像应用是sobel算子,具体下面介绍)
根据上边的表达式,可以确定拉普拉斯算子的模板
例如:
[ 0 1 0
1 -4 0
0 1 0]
这是以90度增量旋转的拉普拉斯算子,如果以45度增量旋转会是怎样的结果呢,结果如下:
[1 1 1
1 -8 1
1 1 1]
八邻域表示法:
观察模板发现:当邻域内像素灰度相同时,卷积结果为0;当中心像素值高于邻域内其他像素平均灰度时,卷积结果为正;当中心像素灰度低于邻域其他像素平均灰度时候,卷积结果为负数,最后把卷积结果加到原中心像素,这样可以加剧中心像素与邻域像素灰度值的“贫富分化”,因而达到“锐化”目的。
代码实现:
不用库函数
- %拉普拉斯算子锐化图像,用二阶微分
- %四邻接g(x,y)=[f(x+1,y)+f(x-1,y)+f(x,y+1)+f(x,y-1)]-4f(x,y)
- clear
- clc
- I1=imread('D:\BingZhouWork\Image\lena.jpg');
- I=im2double(I1);
- [m,n,c]=size(I);
- A=zeros(m,n,c);
- %分别处理R、G、B
- %先对R进行处理
- for i=2:m-1
- for j=2:n-1
- A(i,j,1)=I(i+1,j,1)+I(i-1,j,1)+I(i,j+1,1)+I(i,j-1,1)-4*I(i,j,1);
- end
- end
- %再对G进行处理
- for i=2:m-1
- for j=2:n-1
- A(i,j,2)=I(i+1,j,2)+I(i-1,j,2)+I(i,j+1,2)+I(i,j-1,2)-4*I(i,j,2);
- end
- end
- %最后对B进行处理
- for i=2:m-1
- for j=2:n-1
- A(i,j,3)=I(i+1,j,3)+I(i-1,j,3)+I(i,j+1,3)+I(i,j-1,3)-4*I(i,j,3);
- end
- end
- B=I-A;
- imwrite(B,'lena.tif','tif');
- imshow('D:\BingZhouWork\Image\lena.jpg');title('不清晰图像');figure
- imshow('lena.tif');title('得到的清晰图像')
用matlab自带的fspecial函数实现:
- %matlab直接调用拉普拉斯方法
- clear
- clc
- f=imread('D:\BingZhouWork\Image\unclear.jpg');
- f2=im2double(f); %将f转换归一化的double类图像,然后进行滤波
- w=fspecial('laplacian',0);
- g1=imfilter(f,w,'replicate');
- g=f-g1;
- imshow(f);figure
- imshow(g);
图像锐化结果:
整理更新中...
参考:https://blog.****.net/zb1165048017/article/details/49330171
转载需注明出处:https://blog.****.net/qq_34793133/article/details/79946463