【数字图像处理】直方图均衡化

这篇具有很好参考价值的文章主要介绍了【数字图像处理】直方图均衡化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 算法原理

直方图均衡化是一种常见的图像增强方法,可以增强图像的对比度。其数学原理如下:

首先,我们需要了解直方图的概念。直方图是对图像像素分布的一种统计,它将每个像素值出现的次数记录下来,并以图形的方式呈现出来。在一幅图像中,像素值的范围通常是有限的。例如,对于一个 8 位灰度图像,像素值的范围是 0 到 255。

直方图均衡化的目的是将一幅图像的直方图变成一个均匀分布的直方图,从而增强图像的对比度。具体来说,直方图均衡化的步骤如下:

  1. 统计原始图像的直方图。我们可以计算每个像素值出现的次数,然后将它们归一化,得到每个像素值的频率。

  2. 计算累计分布函数(CDF)。CDF 是对频率分布函数(PDF)的积分,它表示每个像素值在原始图像中出现的概率。CDF 可以通过对 PDF 进行累加计算得到。对于一个灰度值 i,CDF 的计算公式如下:
    【数字图像处理】直方图均衡化
    其中, P ( j ) P(j) P(j) 表示灰度值为 j j j 的像素在图像中出现的频率。

  3. 计算均衡化后的像素值。我们需要将原始图像中的每个像素值映射到一个新的像素值,使得均衡化后的直方图近似为一个均匀分布的直方图。这个映射函数可以通过以下公式计算:
    【数字图像处理】直方图均衡化
    其中, H ( i ) H(i) H(i) 表示映射后的像素值, M M M N N N 分别表示图像的宽度和高度, L L L 表示像素值的范围, m i n min min 表示原始图像中的最小像素值。

  4. 将原始图像中的像素值替换为映射后的像素值。这样就完成了直方图均衡化的过程。

总的来说,直方图均衡化的数学原理就是通过对原始图像的直方图进行变换,将其变成一个均匀分布的直方图,从而增强图像的对比度。

2. 算法缺陷及改进

2.1 缺陷

尽管直方图均衡化是一种简单且有效的图像增强算法,但它也存在一些缺陷:

  1. 全局变换:直方图均衡化是一种全局变换方法,它将整个图像的直方图都变成了均匀分布的直方图,这可能会导致一些像素值的细节信息丢失或被模糊化。

  2. 非线性变换:直方图均衡化的映射函数是非线性的,这意味着它会改变像素值之间的距离,从而可能导致一些图像特征的失真。

  3. 计算复杂度:直方图均衡化需要计算原始图像的直方图和累计分布函数,这可能会增加算法的计算复杂度,尤其是对于大型图像。

  4. 对噪声敏感:由于直方图均衡化是一种全局变换,它对图像中的噪声也会进行增强,可能会使噪声更加明显。

因此,在实际应用中,直方图均衡化算法可能需要结合其他方法进行优化或改进,以克服其缺陷。例如,可以使用局部直方图均衡化等技术来改进算法的局限性。

2.2 改进

限制对比度自适应直方图均衡化(CLAHE)是一种改进的直方图均衡化算法,它通过在图像的局部区域内进行直方图均衡化,以保留图像的局部细节信息。

CLAHE 的基本原理如下:

  1. 将原始图像分成许多小块(或称为子图像),每个小块大小为 N × N N \times N N×N

  2. 对于每个小块,计算其直方图,并将直方图进行均衡化,得到映射函数。

  3. 对于每个小块,使用对应的映射函数对其像素值进行变换。

  4. 由于像素值在小块之间可能存在不连续的变化,因此需要进行插值处理,以使得整个图像的对比度保持连续。

CLAHE 的优点如下:

  1. 保留了图像的局部细节信息,不会将整个图像都变成均匀分布的直方图。

  2. 具有自适应性,可以根据图像的局部特征来调整直方图均衡化的参数。

  3. 通过限制对比度,可以有效地减少直方图均衡化算法对噪声的敏感性。

CLAHE 的缺点如下:

  1. 对计算资源的要求较高,需要对整个图像进行分块、直方图均衡化和插值处理,因此计算量较大。

  2. 对算法的参数设置较为敏感,需要合理地设置参数,以获得良好的增强效果。

  3. 由于对比度的限制,可能会导致一些像素值的变化受到限制,从而降低图像的视觉效果。

综上所述,CLAHE 是一种比较优秀的图像增强算法,可以有效地保留图像的局部细节信息,但其计算量较大,对算法的参数设置较为敏感,需要进行合理的参数设置和优化。

3. 实现

3.1 调包侠版本

import cv2
import numpy as np
import matplotlib.pyplot as plt

# 读取原始图像
img = cv2.imread('example.jpg', 0)

# 判断图像是否为灰度图
if len(img.shape) == 2:
    print('The image is a grayscale image.')
else:
    # 将RGB图像转换为灰度图像
    img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    print('The image is a RGB image. Converting to grayscale...')

# 降低图像的对比度
img = img.astype(np.float32) / 255.0
img_low_contrast = np.power(img, 2.2) * 255.0

# 将图像转换为uint8
img_low_contrast = np.uint8(img_low_contrast)
# 进行直方图均衡化
img_he = cv2.equalizeHist(img_low_contrast)
# 进行自适应直方图均衡化
clahe = cv2.createCLAHE(clipLimit=2.0, tileGridSize=(8, 8))
img_clahe = clahe.apply(img_low_contrast)

# 显示原始图像、降低对比度后的图像和均衡化后的图像
plt.subplot(221), plt.imshow(img, cmap='gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(222), plt.imshow(img_low_contrast, cmap='gray')
plt.title('Low Contrast Image'), plt.xticks([]), plt.yticks([])
plt.subplot(223), plt.imshow(img_he, cmap='gray')
plt.title('Equalized Image'), plt.xticks([]), plt.yticks([])
plt.subplot(224), plt.imshow(img_clahe, cmap='gray')
plt.title('Adaptive Equalized Image'), plt.xticks([]), plt.yticks([])
plt.show()

【数字图像处理】直方图均衡化

3.2 自由发挥版本

TODO文章来源地址https://www.toymoban.com/news/detail-412080.html

到了这里,关于【数字图像处理】直方图均衡化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA图像处理仿真实验——直方图均衡化

    直方图均衡化实验,主要包括三部分,直方图统计、计算累加直方图、均衡化。 1、直方图统计        直方图统计就是记录每个灰度值在图片中出现的像素次数,灰度图片有0-255个灰度级,如果我们定义256个寄存器来存储数据比较麻烦,所以借用RAM来实现直方图统计。当输入

    2024年02月07日
    浏览(43)
  • C#使用OpenCv(OpenCVSharp)图像直方图均衡化处理实例

    本文实例演示C#语言中如何使用OpenCv(OpenCVSharp)对图像进行直方图均衡化处理。 直方图均衡化原理 直方图均衡化(Histogram Equalization)是一种常用的图像增强技术,用于改善图像的对比度和亮度分布。它通过重新分配图像灰度级的像素值,使得图像的直方图在灰度范围内更加

    2024年02月07日
    浏览(67)
  • FPGA图像处理与直方图均衡化的综合应用:理论支撑、仿真波形与详细代码

    FPGA直方图均衡化 直方图拉伸 FPGA图像处理 工程和算法包含以下内容: 1,MATLAB中实现图像处理。 2,verilog代码利用MATLAB联合modelsim仿真实现的图像处理。 3,小梅哥AC620和正点原子新起点 开拓者的FPGA板卡上实现的图像处理。 4,效果展示。 有理论支撑,有仿真波形,有详细代

    2024年04月27日
    浏览(33)
  • 彩色图像处理之彩色图像直方图处理的python实现——数字图像处理

    彩色图像的直方图处理是一种重要的图像处理技术,用于改善图像的视觉效果,增强图像的对比度,或为后续的图像处理任务(如图像分割、特征提取)做准备。彩色图像通常由红色(R)、绿色(G)、蓝色(B)三个颜色通道组成,因此彩色图像的直方图处理相比单色图像更

    2024年01月23日
    浏览(61)
  • (数字图像处理MATLAB+Python)第五章图像增强-第二节:基于直方图修正的图像增强

    基于直方图修正的图像增强 :是一种常见的图像处理方法。该方法通过对图像的像素值分布进行调整,以改善图像的对比度和亮度等视觉效果。具体地,直方图校正方法将图像的像素值转换为一个新的值域范围,使得像素值的分布更加均匀,从而增强图像的细节和对比度。这

    2023年04月19日
    浏览(40)
  • Python图像增强之直方图均衡化(全局直方图均衡、局部直方图均衡)

    图像增强是有目的地强调图像的整体或局部特性,将原来不清晰的图像变得清晰或强调某些感兴趣的特征,扩大图像中不同物体特征之间的差别,抑制不感兴趣的特征,使之改善图像质量、丰富信息量,加强图像判读和识别效果,满足某些特殊分析的需要。 图像增强通常划分

    2024年02月13日
    浏览(34)
  • OpenCV10-图像直方图:直方图绘制、直方图归一化、直方图比较、直方图均衡化、直方图规定化、直方图反射投影

    图像直方图就是统计图像中每个灰度值的个数,之后将灰度值作为横轴,以灰度值个数或者灰度值所占比率作为纵轴的统计图。通过直方图,可以看出图像中哪些灰度值数目较多,哪些较少,可以通过一定的方法将灰度值较为集中的区域映射到较为稀疏的区域,从而使图像在

    2024年01月16日
    浏览(48)
  • 【matlab图像处理】图像直方图操作和matlab画图

    中国史之【平王东迁】: 公元前771年,因镐京曾遭地震,残破不堪,又接近戎、狄等外患威胁,周平王遂在郑、秦、晋等诸侯的护卫下,将国都东迁至洛邑,东周历史由此开始。 ——来源:全历史APP 【路漫漫其修远兮,吾将上下而求索】 今天介绍图像的直方图操作以及用

    2024年02月04日
    浏览(38)
  • 我在Vscode学OpenCV 图像处理五(直方图处理)

    直方图是一种统计图,显示了图像中每个灰度级别(或颜色通道)的像素数量。通过分析图像的直方图,可以获得关于图像对比度、亮度和颜色分布等方面的重要信息。 了解图像的对比度、亮度和色彩分布等信息。你可以使用OpenCV中的函数来计算和绘制图像的直方图,从而进

    2024年01月21日
    浏览(70)
  • OpenCV-Python中的图像处理-图像直方图

    通过直方图你可以对整幅图像的灰度分布有一个整体的了解。直方图的 x 轴是灰度值( 0 到 255), y 轴是图片中具有同一个灰度的点的数目。 BINS:上面的直方图显示了每个灰度值对应的像素数。如果像素值为 0到255,你就需要 256 个数来显示上面的直方图。但是,如果你不需

    2024年02月12日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包