灰度图像的对数变换原理及OpenCV代码实现!
2016-06-13 16:14
429 查看
对数变换的公式为:
其中c为常数,r>=0
对数变换目前我知道的有两个作用:
①因为对数曲线在像素值较低的区域斜率较大,像素值较高的区域斜率比较低,所以图像经过对数变换之后,在较暗的区域对比度将得到提升,因而能增强图像暗部的细节。
②图像的傅里叶频谱其动态范围可能宽达0~10^6。直接显示频谱的话显示设备的动态范围往往不能满足要求,这个时候就需要使用对数变换,使得傅里叶频谱的动态范围被合理地非线性压缩。
在OpenCV中,图像对数变换的实现可以直接通过对图像中每个元素运算上述公式完成,也可以通过矩阵整体操作来完成。下面的代码中给了三种方法,其中方法一和方法三都是通过矩阵整体操作来完成,第二种方法是对图像中每个元素操作来完成。方法一和方法三的区别是前者是对源图像作对数运算,后者是对目标图像作对数运算!
源代码如下(代码中用到的图像下载链接 http://pan.baidu.com/s/1i4Dvm2h):
运行结果如下图所示:
可见,第二种方法将来在做具体应用的时候是肯定要放弃的!
-------------------------------------------
欢迎大家加入图像识别技术交流群:271891601,另外,特别欢迎成都从事图像识别工作的朋友交流,我的QQ号2487872782
其中c为常数,r>=0
对数变换目前我知道的有两个作用:
①因为对数曲线在像素值较低的区域斜率较大,像素值较高的区域斜率比较低,所以图像经过对数变换之后,在较暗的区域对比度将得到提升,因而能增强图像暗部的细节。
②图像的傅里叶频谱其动态范围可能宽达0~10^6。直接显示频谱的话显示设备的动态范围往往不能满足要求,这个时候就需要使用对数变换,使得傅里叶频谱的动态范围被合理地非线性压缩。
在OpenCV中,图像对数变换的实现可以直接通过对图像中每个元素运算上述公式完成,也可以通过矩阵整体操作来完成。下面的代码中给了三种方法,其中方法一和方法三都是通过矩阵整体操作来完成,第二种方法是对图像中每个元素操作来完成。方法一和方法三的区别是前者是对源图像作对数运算,后者是对目标图像作对数运算!
源代码如下(代码中用到的图像下载链接 http://pan.baidu.com/s/1i4Dvm2h):
//OpenCV版本2.4.9 //交流QQ2487872782 2016-8-4日注:很报歉,此代码目前不能公开发表在博客上,已经删除,希望大家理解!
运行结果如下图所示:
可见,第二种方法将来在做具体应用的时候是肯定要放弃的!
-------------------------------------------
欢迎大家加入图像识别技术交流群:271891601,另外,特别欢迎成都从事图像识别工作的朋友交流,我的QQ号2487872782
相关文章推荐
- 灰度变换——反转,对数变换,伽马变换,灰度拉伸,灰度切割,位图切割
- 在python中获取时间
- 深入理解 python 中的赋值、引用、拷贝、作用域
- Python的Flask站点中集成xhEditor文本编辑器的教程
- 处理问题的思路,基于SSM项目(spring,springmvc,mybatis)
- 怎样在Eclipse中使用debug调试程序
- springMVC注解用法:@modelattribute的用法
- php常用函数
- Dubbo+Zookeeper+Spring的demo(本地工程+web工程)
- C++之虚析构函数
- eclipse中使用junit4单元测试入门
- [置顶] 在线编译C++程序、java api、python
- C语言中将二维数组作为参数传递给函数的方法
- 『Python学习』scipy库学习
- Python特殊语法:filter、map、reduce、lambda [转]
- 有关Python中的division问题
- 【Debug】Hander processing failed; nested exception is java.lang.NoClassDefFoundError; javax/servlet/j
- Google TensorFlow学习笔记之Deep MNIST for Experts
- ZendStudio安装
- c++的陷阱