博客
关于我
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/

你可能感兴趣的文章
Node-RED中使用html节点爬取HTML网页资料之爬取Node-RED的最新版本
查看>>
Node-RED中使用JSON数据建立web网站
查看>>
Node-RED中使用json节点解析JSON数据
查看>>
Node-RED中使用node-random节点来实现随机数在折线图中显示
查看>>
Node-RED中使用node-red-browser-utils节点实现选择Windows操作系统中的文件并实现图片预览
查看>>
Node-RED中使用node-red-contrib-image-output节点实现图片预览
查看>>
Node-RED中使用node-red-node-ui-iframe节点实现内嵌iframe访问其他网站的效果
查看>>
Node-RED中使用Notification元件显示警告讯息框(温度过高提示)
查看>>
Node-RED中使用range范围节点实现从一个范围对应至另一个范围
查看>>
Node-RED中实现HTML表单提交和获取提交的内容
查看>>
Node-RED中将CSV数据写入txt文件并从文件中读取解析数据
查看>>
Node-RED中建立TCP服务端和客户端
查看>>
Node-RED中建立Websocket客户端连接
查看>>
Node-RED中建立静态网页和动态网页内容
查看>>
Node-RED中解析高德地图天气api的json数据显示天气仪表盘
查看>>
Node-RED中连接Mysql数据库并实现增删改查的操作
查看>>
Node-RED中通过node-red-ui-webcam节点实现访问摄像头并截取照片预览
查看>>
Node-RED中配置周期性执行、指定时间阶段执行、指定时间执行事件
查看>>
Node-RED安装图形化节点dashboard实现订阅mqtt主题并在仪表盘中显示温度
查看>>
Node-RED怎样导出导入流程为json文件
查看>>