图像处理之log---log算子
在图像中,边缘可以看做是位于一阶导数较大的像素处,因此,我们可以求图像的一阶导数来确定图像的边缘,像sobel算子等一系列算子都是基于这个思想的。
但是这存在几个问题:1. 噪声的影响,在噪声点处一阶导数也会取极大值 2. 求解极大值的复杂性
所以,有了使用二阶导数的方法。这里主要考虑LoG算子,即高斯-拉普拉斯算子。
为什么要使用二阶导数呢?
这里要考虑上面说的第二个问题,一阶导数的极大值到了二阶导数对应的值就是0了,很显然求解一个函数的零点值要比求极大值容易。这个性质也被称为二阶导数过零点(zero-crossing)。
所以,我们就可以利用二阶导数来代替一阶导数了。
而对于上面的第一个问题,也就是为什么要引入高斯算子的原因。我们已经知道拉普拉斯算子其实就是一个二阶导数算子,为什么还要引入高斯呢?
细想一下,高斯算子在图像处理中的一般的作用其实大都是进行模糊,换句话说它可以很好的抑制噪声,这样引入高斯算子我们就克服了噪声的影响(这也是LoG算子对拉普拉斯算子的改进的地方)。
所以,高斯-拉普拉斯算子其实就是:先对图像进行高斯模糊,然后再求二阶导数,二阶导数等于0处对应的像素就是图像的边缘。

具体的推导过程可以看一下下面的链接:http://fourier.eng.hmc.edu/e161/lectures/gradient/node10.html
---------------------
由于高斯函数的参数sigma对高斯算子的影响,所以,如果sigma选取的很小的话,前期的模糊效果很弱,也就可以近似等于拉普拉斯算子了。所以,拉普拉斯算子也可以看做高斯-拉普拉斯算子的一种极限情况。
实验验证一下高斯-拉普拉斯算子的效果:

从结果中可以看出来当sigma取0.6时,与拉普拉斯算子的效果近似,而当sigma取1时,可以达到比较好的效果
--------------------------------------------------
我们再从图像中分析一下sigma对结果的影响,下面两图分别是sigma=0.6和sigma=1时的高斯-拉普拉斯算子的三维图(纵轴为函数值):


由图中可以看出sigma=0.6时的零点数明显要多于sigma=1时的,这也证明上面得到的结果确实是正确的。
--------------------------------------------------------
这里再多说一句,既然sigma是高斯函数的参数,那能不能从高斯函数的角度来说明一下sigma的作用呢?
当然可以!!先看下图:

我们只需要看u=0的三个图像即可,从图中可以看出,sigma越小,高斯函数的能量越集中,不知道哪里学到过:高斯函数97%的能量集中在3*sigma的范围内(以u对称的3*sigma范围内)。
那么我们现在就知道了使用高斯函数对图像进行模糊运算或者称之为卷积运算,它起作用比较明显的区域就是在距离当前像素3*sigma范围内。从此可以看出,sigma越大,高斯函数能够处理的邻域像素数越多,高斯模糊的效果也就越明显。
http://www.cnblogs.com/ztfei/archive/2012/09/01/2667050.html
http://www.cnblogs.com/ztfei/archive/2012/09/02/2667607.html 去雾
图像处理之log---log算子的更多相关文章
- OpenCV图像处理篇之边缘检测算子
OpenCV图像处理篇之边缘检测算子 转载: http://xiahouzuoxin.github.io/notes/ 3种边缘检测算子 一阶导数的梯度算子 高斯拉普拉斯算子 Canny算子 Open ...
- O(n log log n)实现FGT和FLT(Fast GCD/LCM Transformation)
本文是作者看不懂分治FFT之后开始娱乐一下自己写的 看到一道题时候询问了正解后,推出了一个奇怪的变换,发现这个很Transformation,我和正解推出来的奇怪的东西是一样的,但还是想写一下思路.. ...
- 浅谈 van Emde Boas 树——从 u 到 log log u 的蜕变
本文参考算法导论完成. 模板题在此 QwQ 优化的过程比较长,还请读者耐心阅读,认真理解. 最初的想法 我会暴力! 用一个 \(size\) 数组维护每个元素出现的次数. 不细讲,时间复杂度 \(O( ...
- paper 109 :图像处理中的拉普拉斯算子
1.基本理论 拉普拉斯算子是最简单的各向同性微分算子,具有旋转不变性.一个二维图像函数 的拉普拉斯变换是各向同性的二阶导数,定义为: 为了更适合于数字图像处理,将该方程表示为离散形式: 另外 ...
- Android将应用调试log信息保存在SD卡
转载:http://blog.csdn.net/way_ping_li/article/details/8487866 把自己应用的调试信息写入到SD卡中. package com.sdmc.hote ...
- 【msql】关于redo 和 undo log
InnoDB 有两块非常重要的日志,一个是undo log,另外一个是redo log,前者用来保证事务的原子性以及InnoDB的MVCC,后者用来保证事务的持久性.和大多数关系型数据库一样,Inno ...
- VC++ 一个简单的Log类
在软件开发中,为程序建立Log日志是很必要的,它可以记录程序运行的状态以及出错信息,方便维护和调试. 下面实现了一个简单的Log类,使用非常简单,仅供参考. // CLogHelper.h : hea ...
- JFinal - Log 日志
今天偶然发现 JFinal 的 Log 简单小巧.上代码. JFinal 在初始化的时候有初始化 Log. class Config { // ... static void configJFinal ...
- 自定义javascript log方法
/** * 类似chrome,firefox的console对象 * 但是在IE等不支持console的浏览器不会报错 * 理论上浏览器支持的console的方法都支持,比如谷歌的 * assert, ...
- [蓝牙] 6、基于nRF51822的蓝牙心率计工程消息流Log分析(详细)
开机初始化Log Log编号 函数名 所在文件名 000001: main ..\main.c 000002: timers_init ..\main.c 000003: gpiote_init ...
随机推荐
- Alfred添加百度搜索
Alfred默认的搜索只有 google; amazon和wikipakia, 我想加个百度搜索,怎么添加呢? 1.首先添加百度搜索,添加http://www.baidu.com/s?wd={quer ...
- 【转载】NonEmpty和Non Empty的区别
转载来源:http://www.ssas-info.com/analysis-services-articles/50-mdx/2196-mdx-non-empty-vs-nonempty One o ...
- linux挂载新磁盘、分区和开机自动挂载
今天在阿里云虚拟主机里新加了一块磁盘,需要单独挂载到centos7. 挂载过程中遇到了不少问题,记录如下: 查看分区 fdisk -l 其中第一个框和第二个框,是已经分好区的磁盘,第三个硬盘没有分区. ...
- Swift 基础部分(建议掌握OC字符串知识的翻阅)
更新说明: Swift 目前已经发布到4.0版本了,以前写的这整个Swift学习系列的文章,有很多的不足之处,我会重新整理整个系列文章,也是相当于重新复习一遍Swift,后面系列文章的改动之处全都会做 ...
- dubbo框架的简单介绍
以下的官网的介绍. dubbo是SOA.小例子是简单的远程调用(生产者消费者的模式出现).http://blog.csdn.net/huangyekan/article/details/4217267 ...
- Loj #6287 诗歌
link: https://loj.ac/problem/6287 一开始差点写FFT了23333,并且FFT还能算这样的三元组的数量而且还不用要求这是一个排列.... 但这太大材小用了(而且很可能被 ...
- delphi的^和@的作用
Pint:^string;在这里将^放在数据类型之前,说明是声明的字符串指针类型!如果想取出指针引用的值的话,就将^放在声明的类型后就可以了,比如:Pint^想取Pint类型的所引用地址的话,就将@放 ...
- xamarin.from ToolbarItem 字体大小和颜色更改
在xamarin.from 上我们经常会使用到页面跳转方式, new NavigationPage(newp page()){ BarBackgroundColor=Color.FromHex(&qu ...
- js 输入框增加删除操作
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- React Native 三:样式
一.声明和使用样式 1.React Native里面的样式和使用如以下所看到的.StyleSheet.create这个构造函数不是必须的. index.android.js文件 import Reac ...