计算机视觉——实验一:图像直方图均衡

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

一、实验目的与要求

实验目的:

1.熟悉图像的表示及基本元素、通道操作;

2.掌握基本灰度图像变换方法;

3.掌握OpenCV计算机视觉库;

实验要求:

1. 实验提交文件为实验报告和相关程序代码,以压缩包的形式提交,命名规则为“学号数字+姓名+Task1”,如2023154099张三Task1;

2. 所有素材和参考材料需列明出处,实验报告中的图片和程序代码建议标注个人水印或标识信息:姓名,班级,学号信息;

二、实验内容与方法

实验内容:不调用库函数,自己动手编程实现图像的直方图均衡化,并与OpenCV的库函数进行效果对比分析;

三、实验步骤与过程

1.定义和公式

1.1灰度图像变换方法

灰度图像变换是指通过对图像的每个像素进行某种数学运算,改变其灰度级别的方法。常见的灰度图像变换方法包括线性变换、非线性变换、对数变换、幂次变换等。这些方法可以通过定义一个映射函数来将原始图像的像素灰度级别映射到新的像素灰度级别,从而实现灰度图像的变换。

而直方图均衡化是一种特定的灰度图像变换方法,旨在通过重新分布图像的像素灰度级别,使得图像的直方图在灰度级别上具有更均匀的分布。直方图均衡化通过计算图像的累积分布函数(CDF),并将原始图像的像素值映射为新的像素值,使得均衡化后的图像具有更广的动态范围和更好的对比度。

1.2直方图均衡化

计算机视觉——实验一:图像直方图均衡,计算机视觉,计算机视觉,人工智能

2.图像直方图均衡化

2.1图像直方图均衡化公式推导

目标是将一幅图像的像素占有全部可能的灰度级且分布均匀,能够具有高对比度。

使用的方法是灰度级变换:

s=T(r)

基本思想是把原始图的直方图变换为均匀分布的形式,这样就增加了像素灰度值的动态范围从而达到增强图像整体对比度的效果。

计算机视觉——实验一:图像直方图均衡,计算机视觉,计算机视觉,人工智能

2.2图像直方图均衡化流程图

计算机视觉——实验一:图像直方图均衡,计算机视觉,计算机视觉,人工智能

1.读取图像:

        使用Python的图像处理库读取待处理的图像,并将其转换为灰度图像。

2.计算直方图:

        遍历灰度图像的每个像素,统计每个灰度级别的像素数量,得到原始图像的直方图。

3.计算累积分布函数(CDF):

        对直方图进行归一化处理,计算每个灰度级别的累积分布函数。

4.映射像素值:

        对于每个输入像素,使用CDF将其灰度级别映射为新的像素值,以实现均衡化。即将归一化的 sk乘以 L−1,再四舍五入,以使得均衡化后图像的灰度级与归一化前的原始图像一致。

5.构建均衡化后的图像:

        遍历原始图像的每个像素,根据映射后的像素值构建均衡化后的图像。

2.3直方图均衡化实现

2.3.1伪代码

def histogram_equalization(image)

    # 1. 计算像素个数

    total_pixels = image.shape[0] * image.shape[1]

    # 2. 计算灰度直方图

    histogram = np.zeros(256, dtype=int)

    for i in range(image.shape[0]):

        for j in range(image.shape[1]):

            pixel_value = image[i, j]

            histogram[pixel_value] += 1

    # 3. 计算分布概率

    probability = histogram / total_pixels

    # 4. 计算累计分布概率

    cdf = np.cumsum(probability)

    cdf_normalized = cdf * 255

    # 5. 映射像素值

    equalized_image = np.zeros_like(image)

    for i in range(image.shape[0]):

        for j in range(image.shape[1]):

            pixel_value = image[i, j]

            equalized_image[i, j] = cdf_normalized[pixel_value]

    return equalized_image

3.结果对比

3.1直方图均衡化效果

  

计算机视觉——实验一:图像直方图均衡,计算机视觉,计算机视觉,人工智能

计算机视觉——实验一:图像直方图均衡,计算机视觉,计算机视觉,人工智能

3.2 OpenCV库函数效果

OpenCV库函数

equalized_image = cv2.equalizeHist(image)

hist_equalized = cv2.calcHist([equalized_image], [0], None, [256], [0, 256])

计算机视觉——实验一:图像直方图均衡,计算机视觉,计算机视觉,人工智能

3.3 与OpenCV库函数效果对比

计算机视觉——实验一:图像直方图均衡,计算机视觉,计算机视觉,人工智能

分析:

两个方法实现的直方图均衡化结果差不多,都有效的实现了均衡化效果,但是总体来看,OpenCV的效果会更好,比如在下面这一部分OpenCV的优势比较明显。

计算机视觉——实验一:图像直方图均衡,计算机视觉,计算机视觉,人工智能

原因:

        查询OpenCV的特点时发现,它实现了优化的算法:OpenCV是一种专门用于计算机视觉任务的库,它在图像处理方面进行了高度的优化。除此之外,OpenCV库函数通常使用并行计算技术,可以利用多核处理器或图形处理器 (GPU) 进行加速。这种并行处理能力使得库函数能够同时处理多个像素或图像块,从而大大提高了直方图均衡化的处理速度。

        在底层优化方面,OpenCV底层使用了优化的C/C++代码,以及针对不同硬件平台的优化指令集。这些优化可以提高算法的执行效率,使得直方图均衡化函数在处理图像时更加高效。

        还有可能是直方图计算方式和累计分布概率计算方式不同。

四、实验结论或体会

结论:

        OpenCV库函数的实现直方图均衡化效率更高。

心得体会:

        本次实验中,我学习了解实践了直方图均衡化。技术上我通过手动编程实现图像直方图均衡化,加深了对图像处理算法的理解和掌握。了解了直方图的概念和计算方法,以及如何利用累积分布函数进行像素值映射。

        操作上我进行图像直方图均衡化的操作,掌握了如何读取图片、如何计算像素点等,在实验过程中,学会使用了一些图像处理库或工具,例如NumPy用于数组计算、Matplotlib用于可视化等。

        除此之外,我还通过实现直方图均衡化,深入理解了直方图均衡化算法的原理和作用。了解了如何通过调整像素值的分布来增强图像的对比度和亮度。与OpenCV的库函数进行对比分析,可以发现库函数的实现效率更高,但对于理解算法原理和自定义处理过程,手动实现更具有教育和学习意义。

        图像直方图均衡化是一种简单但强大的图像处理技术,能够改善图像的视觉效果。通过手动编程实现直方图均衡化,不仅加深了对图像处理算法的理解,还提高了对图像处理库函数的使用理解。这个实验让我更加熟悉了图像的表示和基本元素,并掌握了基本的灰度图像变换方法。同时,通过与OpenCV库函数进行对比,也能够分析和评估不同方法的优缺点,为以后的图像处理任务提供更好的选择和决策。

五、思考题

尝试查找除直方图均衡化以外的图像增强方法,并简述其原理。

1.自适应直方图均衡化(Adaptive Histogram Equalization,AHE):

        自适应直方图均衡化是一种在局部区域内进行直方图均衡化的方法,可以提高图像的对比度并保持局部细节。它将图像分成多个小块,然后在每个小块中进行直方图均衡化。

AHE:

输入:图像I,块大小block_size

对于图像中的每个块(从左上角开始):

    提取当前块(大小为block_size)的子图像

    对子图像进行直方图均衡化

    将均衡化后的子图像放回原图像的相应位置

输出:均衡化后的图像

2.对比度拉伸(Contrast Stretching):

        对比度拉伸是一种通过线性变换来增加图像的对比度的方法。它将图像的像素值范围映射到更广的范围,从而增强图像的动态范围。

Contrast Stretching:

输入:图像I,最低像素值min_value,最高像素值max_value

对于图像中的每个像素(x, y):

    原始像素值 = I(x, y)

    新的像素值 = (原始像素值 - min_value) * (255 / (max_value - min_value))

    将新的像素值限制在0到255之间

    将新的像素值赋值给图像I的相应位置

输出:增强后的图像

3.双边滤波(Bilateral Filtering):

        双边滤波是一种能够减少噪声的滤波方法,同时保留图像的边缘信息。它在滤波过程中考虑了像素之间的空间距离和灰度差异,以进行加权平均。

Bilateral Filtering:

输入:图像I,滤波器参数sigma_s,滤波器参数sigma_r

对于图像中的每个像素(x, y):

    计算滤波器权重:

        权重 = exp(-((x - xi)^2 + (y - yi)^2) / (2 * sigma_s^2)) * exp(-((I(x, y) - I(xi, yi))^2) / (2 * sigma_r^2))

    计算加权平均:

        像素值 = ∑(权重 * I(xi, yi)) / ∑权重

输出:滤波后的图像文章来源地址https://www.toymoban.com/news/detail-809837.html

到了这里,关于计算机视觉——实验一:图像直方图均衡的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

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

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

    2024年02月07日
    浏览(34)
  • 数字图像处理实验(直方图均衡化&规定化)

    图像均衡化   图像均衡化是一种图像处理技术,它的目的是改善图像的对比度。   具体来说,对于一张图像,其直方图就是统计图像中各灰度级出现的次数的图像。通常情况下,图像的直方图会呈现不平衡的状态,即图像的某些灰度级出现的次数很多,而其它灰度级出现的

    2024年02月04日
    浏览(38)
  • OpenCV:图像直方图计算

    图像直方图为图像中像素强度的分布提供了有价值的见解。通过了解直方图,你可以获得有关图像对比度、亮度和整体色调分布的信息。这些知识对于图像增强、图像分割和特征提取等任务非常有用。 本文旨在为学习如何使用 OpenCV 执行图像直方图计算提供清晰且全面的指南

    2024年02月16日
    浏览(38)
  • 【计算机视觉 | 图像分类】arxiv 计算机视觉关于图像分类的学术速递(6月 29 日论文合集)

    基于多示例学习的全幻灯片图像分类的伪袋混合增强 论文地址: 鉴于十亿像素图像建模的特殊情况,多实例学习(MIL)已成为全幻灯片图像(WSI)分类最重要的框架之一。 在当前实践中,大多数 MIL 网络在训练中经常面临两个不可避免的问题:i)WSI 数据不足,ii)神经网络

    2024年02月11日
    浏览(41)
  • 【计算机视觉 | 图像分割】arxiv 计算机视觉关于图像分割的学术速递(8 月 30 日论文合集)

    Novis:端到端近在线视频实例分割实例 直到最近,视频实例分割(VIS)社区在以下共同信念下操作:离线方法通常优于逐帧在线处理。然而,最近在线方法的成功质疑这种信念,特别是对于具有挑战性和长视频序列。我们将这项工作理解为对最近观察结果的反驳,并呼吁社区

    2024年02月09日
    浏览(42)
  • 【计算机视觉 | 图像分割】arxiv 计算机视觉关于图像分割的学术速递(7 月 6 日论文合集)

    面向跨域语义分割的提示扩散表示法 虽然最初设计用于图像生成,扩散模型最近已证明提供了优秀的预训练的特征表示语义分割。这一结果引起了兴趣,我们开始探索扩散预训练表示如何推广到新的领域,这是任何表示的关键能力。我们发现,扩散预训练实现了非凡的领域泛

    2024年02月12日
    浏览(37)
  • 计算机视觉——图像视觉显著性检测

    目录 系列文章目录 零、问题描述 一、图像显著性检测 1.定义 2.难点 二、常用评价标准和计算方法 1.综述 2.ROS曲线详述 2.1 混淆矩阵 2.2 ROC曲线简介 2.3 ROC曲线绘制及其判别标准 2.4 ROC曲线补充 三、Fast and Efficient Saliency (FES) 1.算法简介 2.项目导入与解析 3.FES注意预测实践 4.评价

    2024年02月03日
    浏览(42)
  • 计算机视觉----图像拼接

     一.简介 图像拼接(Image Stitching)是一种利用实景图像组成全景空间的技术,它将多幅图像拼接成一幅大尺度图像或360度全景图,接可以看做是场景重建的一种特殊情况,其中图像仅通过平面单应性进行关联。图像拼接在运动检测和跟踪,增强现实,分辨率增强,视频压缩和图

    2024年02月09日
    浏览(42)
  • 计算机视觉--图像拼接

    单应性变换是指一个平面上的点通过一个矩阵变换映射到另一个平面上的点,这个变换矩阵是一个 3 × 3 3 times 3 3 × 3 的矩阵,称为单应性矩阵。单应性变换可以分为仿射变换和投影变换两种类型。 在单应性变换中,仿射变换是其中一种特殊的变换。仿射变换是指在变换前后

    2024年02月04日
    浏览(39)
  • 计算机视觉 -- 图像分割

    引入问题: 在自动驾驶系统中,如果用之前的检测网络(例如Faster-Rcnn),试想,倘若前方有一处急转弯,系统只在道路上给出一个矩形标识,这样一来车辆很有可能判断不出是该避让还是径直上前,车祸一触即发。因此,对新技术的诉求应运而生,该技术须能识别具体路况

    2024年02月11日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包