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

你可能感兴趣的文章
OSI操作系统(NETBASE第八课)
查看>>
OSM数据如何下载使用(地图数据篇.11)
查看>>
OSPF 四种设备角色:IR、ABR、BR、ASBR
查看>>
OSPF 四种路由类型:Intra Area、Inter Area、第一、二类外部路由
查看>>
OSPF 学习
查看>>
OSPF 支持的网络类型:广播、NBMA、P2MP和P2P类型
查看>>
OSPF 概念型问题
查看>>
OSPF 的主要目的是什么?
查看>>
SQL Server 存储过程分页。
查看>>
OSPF不能发现其他区域路由时,该怎么办?
查看>>
OSPF两个版本:OSPFv3与OSPFv2到底有啥区别?
查看>>
SQL Server 存储过程
查看>>
OSPF在大型网络中的应用:高效路由与可扩展性
查看>>
OSPF太难了,这份OSPF综合实验请每位网络工程师查收,周末弯道超车!
查看>>
OSPF技术入门(第三十四课)
查看>>
OSPF技术连载10:OSPF 缺省路由
查看>>
OSPF技术连载11:OSPF 8种 LSA 类型,6000字总结!
查看>>
OSPF技术连载12:OSPF LSA泛洪——维护网络拓扑的关键
查看>>
OSPF技术连载13:OSPF Hello 间隔和 Dead 间隔
查看>>
OSPF技术连载14:OSPF路由器唯一标识符——Router ID
查看>>