博客
关于我
Python OpenCV学习笔记之:图像直方图均衡化
阅读量:673 次
发布时间:2019-03-15

本文共 1250 字,大约阅读时间需要 4 分钟。

如何进行图像直方图均衡化处理以提升图像质量

在图像处理领域,直方图均衡化是提升图像质量的重要技术之一。通过对图像的直方图进行规范化处理,可以有效地提高图像的对比度,增强视觉效果。本文将详细介绍如何使用Python进行图像直方图均衡化,并分析其效果。

首先,我们需要准备输入图像。代码如下:

import cv2import numpy as npfrom matplotlib import pyplot as plt# 读取图像img = cv2.imread('fish.jpg', 0)

接下来,我们计算原始图像的直方图。使用NumPy的np.histogram函数可以实现这一点。代码如下:

# 计算直方图hist, bins = np.histogram(img.flatten(), 256, [0, 256])# 计算累积分布函数(CDF)cdf = hist.cumsum()cdf_normalized = (cdf * hist.max()) / cdf.max()

通过计算并标准化累积分布函数(CDF),我们可以更直观地观察图像的直方图特性。plt.figure()创建一个新-figure窗口,plt.plot(cdf_normalized, 'b')绘制标准化的CDF曲线。

plt.figure()plt.plot(cdf_normalized, color='b')plt.hist(img.flatten(), 256, [0, 256], color='r')plt.xlim([0, 256])plt.legend(('CDF', 'histogram'), loc='upper left')

运行上述代码后,可以看到原始图像和其直方图的对比。接下来,我们对图像进行均衡化处理。具体步骤如下:

# 均衡化处理cdf_m = np.ma.masked_equal(cdf, 0)cdf_m = (cdf_m - cdf_m.min()) * 255 / (cdf_m.max() - cdf_m.min())cdf = np.ma.filled(cdf_m, 0).astype('uint8')# 应用均衡化图像img2 = cdf[img]# 显示结果plt.figure()plt.subplot(121)plt.imshow(img, 'gray')plt.subplot(122)plt.imshow(img2, 'gray')

通过上述处理后,均衡化后的图像(img2)应显著提升图像质量。为了进一步验证效果,我们可以计算并比较原始图像和处理后图像的直方图。

# 处理后直方图hist, bins = np.histogram(img2.flatten(), 256, [0, 256])# 查看处理后图像的直方图特性

通过比较直方图图像,可以更直观地观察均衡化处理对图像质量的提升效果。本文介绍的直方图均衡化方法简单有效,是图像处理的基础步骤之一。

转载地址:http://rwfqz.baihongyu.com/

你可能感兴趣的文章
OK335xS UART device registe hacking
查看>>
ok6410内存初始化
查看>>
one_day_one--mkdir
查看>>
OpenCV 中的图像转换
查看>>
opencv5-图像混合
查看>>
opencv9-膨胀和腐蚀
查看>>
OpenCV与AI深度学习 | YOLO11介绍及五大任务推理演示(目标检测,图像分割,图像分类,姿态检测,带方向目标检测)
查看>>
OpenCV与AI深度学习 | 使用Python和OpenCV实现火焰检测(附源码)
查看>>
OpenCV与AI深度学习 | 使用YOLO11实现区域内目标跟踪
查看>>
OpenCV与AI深度学习 | 基于PyTorch实现Faster RCNN目标检测
查看>>
OpenCV与AI深度学习 | 基于PyTorch语义分割实现洪水识别(数据集 + 源码)
查看>>
OpenCV与AI深度学习 | 基于机器视觉的磁瓦表面缺陷检测方案
查看>>
Opencv中KNN背景分割器
查看>>
OpenCV中基于已知相机方向的透视变形
查看>>
opencv保存图片路径包含中文乱码解决方案
查看>>
opencv图像分割2-GMM
查看>>
OpenCV:概念、历史、应用场景示例、核心模块、安装配置
查看>>
Openlayers高级交互(10/20):绘制矩形,截取对应部分的地图并保存
查看>>
Openlayers高级交互(19/20): 地图上点击某处,列表中显示对应位置
查看>>
openlayers:圆孔相机根据卫星经度、纬度、高度、半径比例推算绘制地面的拍摄的区域
查看>>