先上个简单的示例,看MATLAB中拉普拉斯滤波器是如何实现的:

令原图f=magic(3)

f =
8 1 6
3 5 7
4 9 2

掩膜采用标准Laplacian掩膜:w=fspecial(‘laplacian’,0)

w =
0 1 0
1 -4 1
0 1 0

n=imfilter(f,w,‘replicate’);默认参数为’same’,结果为:

n =
-12 16 -4
8 0 -8
4 -16 12

采用’full’参数,n=imfilter(f,w,‘replicate’,‘full’);结果为:

n =
0 -7 12 -5 0
-5 -12 16 -4 1
6 8 0 -8 -6
-1 4 -16 12 5
0 5 -12 7 0

=========

实现过程:

①模板旋转180度(和原来一样,因为是对称的模板)

w’ =
0 1 0
1 -4 1
0 1 0

②图像边界填充,这里采用’replicate’方式:

k=padarray(m,[2 2],‘replicate’)
k =
8 8 8 1 6 6 6
8 8 8 1 6 6 6
8 8 8 1 6 6 6
3 3 3 5 7 7 7
4 4 4 9 2 2 2
4 4 4 9 2 2 2
4 4 4 9 2 2 2

(黄色背景为原始图像)

③进行卷积运算:

……(逐步计算,直至模板全部移过图像)

④去除边界,得到结果:

上述即用laplacian滤波模板进行图像滤波的过程(实际上是一个空间卷积操作)。

以一幅uint8类灰度图像为例,原图:

直接使用laplacian滤波模板滤波:

f=imread(‘moon.tif’);
w=fspecial(‘laplacian’,0)
g1=imfilter(f,w,‘replicate’);

imshow(g1)

效果并不理想,因为原图是一幅uint8类图像,输出结果仍为uint8类,所有像素均为正值,而拉普拉斯滤波模板中存在负值,变换结果中的所有负值被截掉了。
解决此问题,须先进行类型变换:

f2=im2double(f); %将f转换为归一化的double类图像

然后再进行滤波:

g2=imfilter(f2,w,‘replicate’);
imshow(g2,[])


此图像即含有负值的滤波结果,相比于原图,丢失了一些灰度色调,故还需用原图减去此滤波结果(以还原失去的灰度色调):

g=f2-g2;figure,imshow(g)

比原图清晰了很多。

另外,使用考虑了对角线元素的中心为8的拉普拉斯算子还可以获得更为清晰的图像:

w8=[1 1 1;1 -8 1;1 1 1]

w8 =
1 1 1
1 -8 1
1 1 1

g8=f-imfilter(f,w8,‘replicate’);
figure,imshow(g8)

===========

拉普拉斯算子的数学定义:

式(2)为式(1)的数字近似,式(3)中g(x,y)为目标图像,f(x,y)为原始图像。c为1(当掩膜中心系数为正时),c为-1(当掩膜中心系数为负时)
由于laplacian算子是微分操作符,所以它会使图像锐化,并使常量区域为0。

主要注意以下几点:
1.拉普拉斯微分处理后,有些点像素值为负值,所以有第30行的对sum值的判断和修改。如果没有这句,得到的微分后的图像中有很多白点。

2.拉普拉斯算子处理后的图像要和原图像相加,可以复原背景特性并保持拉普拉斯瑞华处理的效果。如果所使用的模板中心是负数,那么必须将原图像减去经拉普拉斯变换后的图像。如果像我这里使用的模板中心是正数,那么就将原图像加上经过拉普拉斯变换后的图像。

3.经拉普拉斯变换处理后的图像与原图像对应灰度相加,有可能超过最大灰度级255,所以代码31行加了相应的判断。如果没有这个判断,得到的图像看起来更像是平滑过而不是锐化过的。

void MainWindow::on_action_laplace_triggered()
{//image_png指向原图像width = image_png.width();height = image_png.height();int muban[3][3] = {0,-1,0,-1,4,-1,0,-1,0};//grayImg保存锐化后的结果grayImg = QImage(width,height,QImage::Format_RGB888);for(int i=0;i < width;i++){for(int j =0;j < height;j ++){int sum = 0;//对每一个像素使用模板for(int m = i-1;m <= i+1;m++){for(int n = j-1;n <= j+1;n++){//边界点像素为0,所以对应相乘时不加和if(m>=0&&n>=0&&m<width&&n<height)sum += qGray(image_png.pixel(m,n))*muban[n-j+1][m-i+1];}}//获取原图像对应点灰度,和拉普拉斯微分后图像对应点相加int ogray = qGray(image_png.pixel(i,j));sum = (sum >= 0)?sum:0;sum = (sum+ogray>255)?255:sum+ogray;//这里只实现了灰度图像,所以RGB值相等。grayImg.setPixel(i,j,qRgb(sum,sum,sum));}}update();
}

转:
https://www.cnblogs.com/DemonEdge/archive/2013/11/12/3419002.html
https://blog.csdn.net/scottly1/article/details/44408343

拉普拉斯(laplacian)滤波实现图像锐化分析(负值处理方法)相关推荐

  1. 图像算法三:【图像增强--空间域】图像平滑、中值滤波、图像锐化

    空间域滤波:imfilter(),fspecial() 执行操作滤波需要注意边界问题,因此,给出了边界处理方法: 收缩处理范围 使用常数填充图像 使用复制像素的方法填充 h = fspecial( t ...

  2. python 拉普拉斯锐化_(二十四)用二阶微分(拉普拉斯算子)实现图像锐化

    时间为友,记录点滴. 我们已经了解过了梯度(一阶微分)的作用,那么为什么要引入二阶微分呢?二阶微分的作用是什么? 还是看图说话: 很明显,一阶微分已经可以把轮廓辨识出来,但是,对于变化较缓的地方,一阶 ...

  3. matlab拉普拉斯算子边缘提取_(二十四)用二阶微分(拉普拉斯算子)实现图像锐化...

    时间为友,记录点滴. 我们已经了解过了梯度(一阶微分)的作用,那么为什么要引入二阶微分呢? 二阶微分的作用是什么? 还是看图说话: 很明显,一阶微分已经可以把轮廓辨识出来,但是,对于变化较缓的地方,一 ...

  4. 图像锐化拉普拉斯算子matlab,Matlab图像锐化-Sobel,Laplacian算子 实验教程

    一.实验内容: ⑴图像的锐化:使用Sobel,Laplacian算子分别对图像进行运算,观察并体会运算结果. ⑵综合练习:对需要进行处理的图像分析,正确运用所学的知识,采用正确的步骤,对图像进行各类处 ...

  5. 【数字图像处理】图像直方图均衡化、空域滤波(均值滤波、中值滤波)、图像锐化(Laplace算子)、图像傅里叶变换实验

    图像直方图均衡化.空域滤波.图像锐化.图像傅里叶变换 一.图像直方图均衡化 二.图像空域滤波 1.均值滤波(滤波次数n→3) 2.中值滤波(滤波次数n→3) 3.图像锐化(Laplace算子) 三.图 ...

  6. 利用拉普拉斯滤波器提取图像边缘,实现图像锐化

    一. 拉普拉斯滤波器简介: 我们知道: 拉普拉斯算子 ↑ x方向上二阶偏导数的数值近似计算 ↑ y方向上二阶偏导数的数值近似计算 ↑ 拉普拉斯算子在平面内的数值近似 ↑ 拉普拉斯滤波器卷积核表示 ↑ ...

  7. 【数字图像处理】图像锐化:拉普拉斯算子(Laplacian)、高通滤波、Sobel算子、Isotropic算子、Prewitt算子

    图像锐化 图像锐化处理的目的是使模糊的图像变得更加清晰起来,通常针对引起图像模糊的原因而进行相应地锐化操作属于图像复原的内容.图像的模糊实质就是图像受到平均或积分运算造成的,因此可以对图像进行还原运算 ...

  8. [Python从零到壹] 五十八.图像增强及运算篇之图像锐化Sobel、Laplacian算子实现边缘检测

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  9. c语言bmp图片拉普拉斯锐化,图像锐化算法(Image sharpening):拉普拉斯增强和Unsharp Masking(附代码)...

    图像锐化算法(Image sharpening):拉普拉斯增强和Unsharp Masking(附代码) (y(m,n)=x(m,n)+lambda*z(m,n)) 其中(x(m,n))是处理前图片, ...

最新文章

  1. 一文综述经典的深度文本分类方法
  2. 【许晓笛】 EOS智能合约案例解析(1)
  3. HDLBits 系列(20)移位寄存器(逻辑移位、算术移位、循环移位)
  4. PHP的 preg_match_all
  5. WinForm始终置顶并获取焦点
  6. python编程第八讲答案_小甲鱼Python第八讲课后习题
  7. SpringMVC_day1
  8. 转载:8个让程序员追悔莫及的职业建议
  9. WCF Endpoint分类
  10. 希捷移动硬盘打不开怎么办?
  11. 吉他基本功练习原理及方法
  12. 假期小记 | 要一心一意搞事业
  13. HNU--计算机网络实验2
  14. win10字体设置修改方法【乡巴佬】
  15. Linux下stream内存带宽测试参数和示例详解附源码(总结)
  16. 笔记本 续航测试软件,最低5小时起 这些超长续航笔记本你一定不知道
  17. win2008文件储存服务器,win server 2008 文件服务器
  18. CAN收发器TJA1050与MCP2551的对比
  19. 工具-----计算机容量单位换算
  20. 员工出错处罚通知_处罚通报格式|员工工作失误处罚通告

热门文章

  1. CF 29A Spit Problem
  2. Continuations
  3. 美股暴跌一夜市值蒸发10万亿,传吉利收购魅族,马斯克或任推特临时CEO,今日更多大新闻在此...
  4. fm算法详解_FM算法原理分析与实践
  5. ArcGIS报错the database client software failed to load不能连接到oracle数据库,因为数据库客户端软件加载失败
  6. 网络嗅探,工具 10 个
  7. 如何将阿拉伯数字转换成RMB大写格式
  8. English语法_形容词/副词3级 -注意事项
  9. 贾瑞德:今天加密货币的雏形,在《魔兽》打金时代就出现了
  10. SAP MM ME27 创建公司内STO单