拉普拉斯锐化图像

在图像增强中,平滑是为了消除图像中噪声的干扰,或者降低对比度,与之相反,有时为了强调图像的边缘和细节,需要对图像进行锐化,提高对比度。

图的边缘是指在局部不连续的特征。

简要介绍一下原理:

        拉普拉斯锐化图像是根据图像某个像素的周围像素到此像素的突变程度有关,也就是说它的依据是图像像素的变化程度。我们知道,一个函数的一阶微分描述了函数图像是朝哪里变化的,即增长或者降低;而二阶微分描述的则是图像变化的速度,急剧增长下降还是平缓的增长下降。那么据此我们可以猜测出依据二阶微分能够找到图像的色素的过渡程度,例如白色到黑色的过渡就是比较急剧的。

        或者用官方点的话说:当邻域中心像素灰度低于它所在的领域内其它像素的平均灰度时,此中心像素的灰度应被进一步降低,当邻域中心像素灰度高于它所在的邻域内其它像素的平均灰度时,此中心像素的灰度应被进一步提高,以此实现图像的锐化处理。

应用:

         运用拉普拉斯可以增强图像的细节,找到图像的边缘。但是有时候会把噪音也给增强了,那么可以在锐化前对图像进行平滑处理。

下面我们来推导二阶微分与像素的关系:

       先看一阶偏微分和推出的二元函数微分:

一阶微分法能够用来检测边缘是否存在。

那么二阶微分法,也就是拉普拉斯算子就可以确定边缘的位置。(有的文章中称下式为拉普拉斯掩膜中心系数

这样可以找到一个模板矩阵:

这个被称为四邻域也就是上面的二阶微分法

这个是八邻域。

【注】从上面的两种模板中就可以看出,如果一个黑色平面中有一个白点,那么模板矩阵可以使这个白点更亮。由于图像边缘就是灰度发生跳变的区域,所以拉普拉斯模板对边缘检测很有用。

八邻域的表示法为:

将算得的值替换原(x,y)处的像素值,可以得到类似边界的地方,然后根据下式得到锐化图像:

话不多说,上代码(matlab编译):

自己实现:

 

%拉普拉斯算子锐化图像,用二阶微分
%四邻接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-1for j=2:n-1A(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-1for j=2:n-1A(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-1for j=2:n-1A(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('不清晰图像');figureimshow('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=f2-g1;
imshow(f);figure
imshow(g);


图像锐化:

 

 

本文已经同步到微信公众号中,公众号与本博客将持续同步更新运动捕捉、机器学习、深度学习、计算机视觉算法,敬请关注

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/246745.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

运动捕捉数据的描述ASF/AMC

运动捕捉数据有多种格式:ASF/AMC,BVH,C3D等,这三个是比较常用的,一般的matlab实验用的是ASF/AMC,其次就是BVH。 ASF/AMC文件格式是Acclaim Games公司设计开发的,全称是Acclaim Skeleton File/A…

应用深度学习(台大陈蕴侬李宏毅) Part1

History of Deep Learning Big Data & GPU 端到端 Universality Theorem Core Factors for Applied Deep Learning 参考文献 http://v.qq.com/vplus/578e2d6f5e1fadc1/foldervideos/8n1000201qzzkx5 Deep Learning ◦Goodfellow, Bengio, and Courville, “Deep Learning…

世界坐标

世界坐标是最直观反映人体在世界坐标系下运动位置的变化信息,对分析运动行为有重要的作用。下面介绍如何根据ASF/AMC文件计算人体各个关节的世界坐标。 根据前面讲的ASF/AMC文件的格式,可以知道人体运动可以看做是通过根节点root的平移以及其他关节绕其父…

人工神经网络——径向基函数(RBF)神经网络

此博客排版不好,重新用Markdown写了一篇,同时附上了代码,戳这里 本文摘自:《模式识别与智能计算——matlab技术实现第三版》与《matlab神经网络43个案例分析》 【注】蓝色字体为自己的理解部分 径向基函数神经网络的优点&#xf…

李宏毅机器学习课程-Transfer Learning

深度学习 -> 强化学习 ->迁移学习(杨强教授报告) 李宏毅机器学习课程-Transfer Learning 迁移学习-吴恩达 freeze 待处理的 理解深层神经网络中的迁移学习及TensorFlow实现 Transfer Learning模式 Similar domain, different task…

matlab实现RBF的相关函数

摘自《matlab神经网络43个案例分析》 (1)newrb() 该函数可以用来设计一个近似径向基网络(approximate RBF)。调用格式为: [net,tr]newrb(P,T,GOAL,SPREAD,MN,DF) 其中P为Q组输入向量组成的R*Q位矩阵,T为Q组目标分类向量组成的S*Q维矩阵。GOAL为均方误…

李宏毅机器学习课程-Structured Learning

Simple structured learning framework for python pystruct-github Slides for explaining structured prediction and PyStruct -github 一、Structured Learning-Unifed Framework 之前的input and output 都是vectors Training阶段就是找一个F来评估&#xff…

matlab之norm函数

简单点说就是用来计算范数的一个函数。 假设A是一个矩阵,那么norm(A)或者norm(A,2)计算的就是A的2范数;同理norm(A,1)计算的就是1范数了. 2范数:计算步骤是先计算A*A‘(这里A’代表转置,也就是原矩阵*(原…

matlab之unwrap函数

网上的说法: 要计算一个系统相频特性,就要用到反正切函数,计算机中反正切函数规定,在一、二象限中的角度为0~pi,三四象限的角度为0~-pi。 若一个角度从0变到2pi,但实际得到的结果是…

Python xrange与range的区别

xrange 与 range xrange 用法与 range 完全相同,所不同的是生成的不是一个list对象,而是一个生成器。 要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间。 xrange 和 range 这…

受限玻尔兹曼机准备知识——蒙特卡洛方法

先了解几个基本概率知识,不急着看蒙特卡洛方法的定义,具体的MC方法参考网上各种资料。 两个比较好的学习MC方法的文章:蒙特卡洛方法入门 (结合了实例)和 蒙特卡洛方法 (推荐,非常详细) 更新日志:2016-11-19&#xff…

受限玻尔兹曼机准备知识——MCMC方法和Gibbs采样

先点明几个名词 MCMC方法:马尔可夫链-蒙特卡洛方法 (千万别叫成梅特罗波利斯蒙特卡罗方法了) Metropolis-Hastings采样:梅特罗波利斯-哈斯廷斯采样 Gibbs采样:吉布斯采样 还是介绍一下学习MCMC和Gibbs采样比较好的一个资料:随机采…

受限玻尔兹曼机——简单证明

花了很久看了一下玻尔兹曼机,感觉水有点深,总之一步一步来嘛~~~~ 先说一下一个非常好的参考资料: 受限玻尔兹曼机(RBM)学习笔记 ,有兴趣的可以再看看这篇文章的参考文献或者博客,写的也非常好&…

受限玻尔兹曼机RBM实现及能量值思考——matlab实现

网址:http://www.cs.toronto.edu/~hinton/MatlabForSciencePaper.html 这个代码主要是在mnist上做手写数字识别的代码,贴出来的目的主要是想研究一下在迭代过程中能量的变化情况。 1. 标准能量函数 标准的能量函数的表达式为: 那么就将这个…

Cheat_Sheet ---Keras、Matlab、Matplotlib、Numpy、Pandas、Scikit-Learn、SciPy

Cheat_Sheet ---KerasCheat_Sheet ---MatlabCheat_Sheet ---MatplotlibCheat_Sheet ---NumpyCheat_Sheet ---PandasCheat_Sheet ---Scikit-LearnCheat_Sheet ---SciPy参考文献 http://ddl.escience.cn/f/IDkq#path%2F8215264

WPF中DataContext的绑定技巧-粉丝专栏

(关注博主后,在“粉丝专栏”,可免费阅读此文) 先看效果: 上面的绑定值都是我们自定义的属性,有了以上的提示,那么我们可以轻松绑定字段,再也不用担心错误了。附带源码。 …

matlab实现unix时间戳到标准时间的转换

【注】给定时间精确到小时的情况下的转换 函数: function [ date ] ConvertDate( x ) %将unix时间戳转换为标准时间 % date datestr(1426406400/86400 datenum(1970,1,1)); date datestr((x-3600*248*3600)/86400 70*36519datenum(1900,1,0)); end结果&#…

failed to initialize nvml driver/library version mismatch ubuntu

英伟达驱动版本是384.130显示的NVRM version: NVIDIA UNIX x86_64 Kernel Module是:384.130。 若是旧的版本就会出现如下问题。 这个问题出现的原因是kernel mod 的 Nvidia driver 的版本没有更新,一般情况下,重启机器就能够解决,…

Recall(召回率) Precision(准确率) F-Measure E值 sensitivity(灵敏性) specificity(特异性)漏诊率 误诊率 ROC AUC

Berkeley Computer Vision page Performance Evaluation 机器学习之分类性能度量指标 : ROC曲线、AUC值、正确率、召回率 True Positives, TP:预测为正样本,实际也为正样本的特征数 False Positives,FP:预测为正样本,实际为负…

Linux的常用经典命令(持续更新)

找工作笔试面试那些事儿(16)—linux相关知识点(1) 找工作笔试面试那些事儿(17)—linux测试题 vim编辑器操作命令大全-绝对全 - CSDN博客 Linux进阶资源 Command line one-liners the-art-of-command-line Linux工具快速教程 快乐的 Linux 命令行 Linux Tutorial UNIX Tutoria…