数字图像处理_拉普拉斯图像锐化

版权声明:本文为博主原创文章,未经允许不得转载 https://blog.csdn.net/qq_34793133/article/details/79946463

本文是博主个人学习数字图像处理整理知识点所用,如有错误希望得到大家指点

一、图像拉普拉斯锐化模板:四方向模板: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;当中心像素值高于邻域内其他像素平均灰度时,卷积结果为正;当中心像素灰度低于邻域其他像素平均灰度时候,卷积结果为负数,最后把卷积结果加到原中心像素,这样可以加剧中心像素与邻域像素灰度值的“贫富分化”,因而达到“锐化”目的。


代码实现:

不用库函数

  1. %拉普拉斯算子锐化图像,用二阶微分  
  2. %四邻接g(x,y)=[f(x+1,y)+f(x-1,y)+f(x,y+1)+f(x,y-1)]-4f(x,y)  
  3. clear  
  4. clc  
  5. I1=imread('D:\BingZhouWork\Image\lena.jpg');  
  6. I=im2double(I1);  
  7. [m,n,c]=size(I);  
  8. A=zeros(m,n,c);  
  9. %分别处理R、G、B  
  10. %先对R进行处理  
  11. for i=2:m-1  
  12.     for j=2:n-1  
  13.         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);  
  14.     end  
  15. end  
  16.   
  17. %再对G进行处理  
  18. for i=2:m-1  
  19.     for j=2:n-1  
  20.         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);  
  21.     end  
  22. end  
  23.   
  24. %最后对B进行处理  
  25. for i=2:m-1  
  26.     for j=2:n-1  
  27.         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);  
  28.     end  
  29. end  
  30. B=I-A;  
  31.   
  32.  imwrite(B,'lena.tif','tif');  
  33.  imshow('D:\BingZhouWork\Image\lena.jpg');title('不清晰图像');figure  
  34.  imshow('lena.tif');title('得到的清晰图像')  

用matlab自带的fspecial函数实现:

[plain] view plain copy
  1. %matlab直接调用拉普拉斯方法  
  2. clear  
  3. clc  
  4. f=imread('D:\BingZhouWork\Image\unclear.jpg');  
  5. f2=im2double(f); %将f转换归一化的double类图像,然后进行滤波  
  6. w=fspecial('laplacian',0);  
  7. g1=imfilter(f,w,'replicate');  
  8. g=f-g1;  
  9. imshow(f);figure  
  10. imshow(g);  

图像锐化结果:


整理更新中...

参考:https://blog.csdn.net/zb1165048017/article/details/49330171


转载需注明出处:https://blog.csdn.net/qq_34793133/article/details/79946463

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页