图像增强之对比度拉伸
我们前面提到过图像二值化,图像反转,本质上是对图像的所有像素点的灰度进行操作,属于灰度变换的内容。灰度变换的主要目的是用于图像增强。
而对比度拉伸是图像增强的一种方法,也属于灰度变换操作。我们看如下图像:
可以看到,这张图片非常灰暗。我们查看下其直方图。
import cv2
import matplotlib.pyplot as pltfarina = cv2.imread("farina.png", 0)hist_full = cv2.calcHist([farina], [0], None, [256], [0, 256])plt.plot(hist_full)
plt.show()
可以看到所有像素的灰度值大部分集中在20-50之间,这使得整个图像很暗淡。也就是说对比度不高。如果我们通过灰度变换,将灰度值拉伸到整个0-255的区间,那么其对比度显然是大幅增强的。可以用如下的公式来将某个像素的灰度值映射到更大的灰度空间:
I(x, y)=\frac {I(x,y)-Imin}{Imax-Imin}(MAX-MIN)+MIN
其中Imin,Imax是原始图像的最小灰度值和最大灰度值,MIN和MAX是要拉伸到的灰度空间的灰度最小值和最大值。
Imax = np.max(farina)
Imin = np.min(farina)
MAX = 255
MIN = 0
farina_cs = (farina - Imin) / (Imax - Imin) * (MAX - MIN) + MIN
cv2.imshow("farina_cs", farina_cs.astype("uint8"))
cv2.waitKey()
可以看出,对比度提升了很多。我们再看看其直方图,可以看到已经充满了整个灰度空间。
除了上述方法,对比度拉伸还有其它方法吗?当然是有的。例如直方图位移法(Histogram shifting)。公式如下:,
I(x,y)=I(x,y)+offset
在每个像素位置的灰度值增加一个偏移量offset。注意,这个offset可以是正数,也可以是负数。正的话,整体亮度变亮,负的话,整体亮度变暗。需要注意的是控制offset的值大小,不要越界。
farina_cs = farina + 100
cv2.imshow("farina_offset", farina_cs.astype("uint8"))
cv2.waitKey()
hist_full = cv2.calcHist([farina_cs.astype("uint8")], [0], None, [256], [0, 256])
plt.plot(hist_full)
plt.show()
下面分别是使用直方图位移方法后的图像和其直方图。
可以看出直方图与原始直方图形状一模一样,只是在横轴上有所偏移。这种方法的图像增强效果并没有上一种方法好。
图像增强之对比度拉伸相关推荐
- 数字图像处理--图像增强之对比度拉伸
我们前面提到过图像二值化,图像反转,本质上是对图像的所有像素点的灰度进行操作,属于灰度变换的内容.灰度变换的主要目的是用于图像增强. 而对比度拉伸是图像增强的一种方法,也属于灰度变换操作.我们看如下图 ...
- 灰度图像归一化到0~255(对比度拉伸)的OpenCV代码实现
如题,代码的功能很简单,这里就不多做解释了,直接上源代码吧!其实这个代码我之前就已经写过C的版本了,详情可参见我写的博文在OpenCV环境下写的灰度图像二维傅里叶换,幅值计算,频谱平移和将数值归一化到 ...
- 第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波4 - 分段线性变换 - 对比度拉伸
目录 分段线性变换 对比度拉伸 最大最小值拉伸 分段线性变换 优点 形式可以任意复杂 缺点 要求用户输入很多参数 对比度拉伸 光照不足.成像传感器的动态范围偏小.图像获取过程中镜头孔径的设置错误 点( ...
- python库skimage 图像直方图均衡化、自适应均衡化、对比度拉伸实现
直方图全局均衡化 from skimage import exposure # Equalization img_eq = exposure.equalize_hist(img) 直方图自适应均衡化 ...
- 灰度拉伸python_对比度拉伸(一些基本的灰度变换函数)基本原理及Python实现
1. 基本原理 对比度拉伸是扩展图像灰度级动态范围的处理.通过在灰度级中确定两个点来控制变换函数的形状.下面是对比度拉伸函数中阈值处理的代码示例,阈值为平均值. 2. 测试结果 图源自skimage ...
- 数字图像处理实验之对比度拉伸
一幅图像中,最高灰度级和最低灰度级的差成为对比度.一幅低对比度的图像,看起来细节会少很多.可以通过对比度拉伸提高图像对比度,显示更多细节.先来看看对比度拉伸的典型变换: 书本中(冈萨雷斯:数字图像处理 ...
- python图像对比处理_图像处理 | 灰度变换与图像对比度拉伸
一.问题与解决思路 图像实质上就是一个包含了许多像素点的矩阵. 具体计算过程如下: 通过min()函数以及max()函数分别求出处理前原图像的灰度级最小值与最大值: 对原图像进行归一化处理,即用[图像 ...
- 基于FPGA的视频图像直方图均衡 图像处理 图像增强 VGA对比度增强CLAHE
基于FPGA的视频图像直方图均衡 图像处理 图像增强 VGA对比度增强CLAHE 本设计是基于FPGA的视频图像直方图均衡,实现的效果是可以实时地将摄像头采集的图像进行直方图均衡,具体过程是FPGA控 ...
- 数字图像处理实验之对比度拉伸、直方图均衡化和规定化
[实验内容]: 一.运用Matlab对Lena进行对比度拉伸增强(利用 imadjust ) 二.运用Matlab对图像进行直方图均衡化和规定化 Matlab版本:R2015a 一.运用Matl ...
最新文章
- 三两下实现NLP训练和预测,这四个框架你要知道
- Java 8 一行代码解决了空指针问题,太厉害了...
- sublime text3 运行lua_[电脑常识] 用这4个系统垃圾清理软件,让电脑操作系统运行如飞 !...
- 【开发环境】Mac 中安装 Python3 最新版本 ( 下载 Python 最新版本 | 安装 Python3 | 验证 Python3 )
- 红外传感器型号和参数_LARK1Z CO2 20%VOL红外气体传感器
- Mysql的concat concat_ws group_concat
- python语言编程中的保留字_Python语言程序设计整理
- 干货 | 算法和编程面试题精选TOP50!(附代码+解题思路+答案)
- 脚本格式(写脚本完成后最好完成后做一些脚本格式初始化)
- 创造11,你pick哪位讲师?
- linux下ip协议(V4)的实现(三)
- 二级域名会不会分散主域名权重
- 什么是ESAM安全模块
- 远程桌面管理工具源码
- 【MOGDB/openGauss的txid_snapshot 数据类型和相关函数】
- 三峡学院计算机调剂,2018年重庆三峡学院考研预调剂信息公布
- Docker修改无法启动的容器的配置文件
- C/C++程序员学习路线
- 打造全新的网站群管理系统
- 自定义UDF、UDAF、UDTF函数
热门文章
- 最高75K,至多可拿16薪,这个岗位成财富密码?
- 后端开发实践:Spring Boot项目模板,拿去用吧!
- 蓝桥杯-8-1因式分解(java)
- JavaScript:window.onload问题
- crt mysql中文乱码_CRT 和mysql 中文乱码解决方式
- 求两条轨迹间的hausdorff距离_圆锥曲线三种定义间的关系
- 深入理解Lambda
- char转成string_真没想到,一个小小的String居然还有这么多窍门?
- ae 创建图像等高线 蒙版_Pixelmator ——图像处理软件
- java 反射 成员变量_java使用反射访问成员变量的值示例