版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
图像增强算法的深度剖析与实践应用一、引言1.1研究背景与意义在数字化信息飞速发展的当下,图像作为承载和传递信息的关键媒介,在人们的生活和众多领域中扮演着举足轻重的角色。从日常使用的手机拍照记录生活,到医学领域中辅助医生进行疾病诊断的医学影像;从交通领域里帮助自动驾驶系统识别路况的摄像头图像,到安防领域用于监控和身份识别的监控画面,图像无处不在,其重要性不言而喻。然而,在图像的获取、传输以及存储过程中,常常会受到各种因素的干扰,导致图像质量下降。例如,在低光照环境下拍摄的照片,往往会出现亮度不足、细节模糊的问题;在拍摄运动物体时,由于相机抖动或物体快速移动,图像可能会产生模糊、重影等现象;在图像传输过程中,受到网络带宽限制、信号干扰等因素影响,图像可能会丢失部分信息,出现块状效应、噪声增加等问题。这些质量下降的图像,不仅会影响人们对图像内容的直观感受,更会对基于图像分析和处理的各种应用造成严重阻碍。图像增强技术作为图像处理领域的核心研究方向之一,旨在通过一系列算法和技术手段,对图像进行处理和优化,改善图像的视觉质量,提高图像的清晰度、对比度和色彩鲜艳度等,使图像更加符合人类视觉系统的感知需求,同时也为后续的图像分析、识别、分类等任务提供更优质的图像数据。例如,在医学领域,通过图像增强技术可以使X光、CT、MRI等医学影像更加清晰,帮助医生更准确地发现病变和疾病特征,提高诊断的准确性;在安防监控领域,图像增强可以提升监控画面中人物和物体的辨识度,有助于及时发现异常情况和犯罪行为;在卫星遥感领域,对卫星图像进行增强处理,能够更清晰地展现地形地貌、植被覆盖、城市布局等信息,为资源勘探、环境监测、城市规划等提供有力支持。随着计算机技术、人工智能技术以及大数据技术的快速发展,图像增强技术在近年来取得了显著的进步。从传统的基于空域和频域的图像增强方法,如直方图均衡化、高斯滤波、小波变换等,到近年来兴起的基于深度学习的图像增强算法,如卷积神经网络(CNN)、生成对抗网络(GAN)等,图像增强技术不断演进,为解决各种复杂的图像质量问题提供了更多有效的解决方案。同时,图像增强技术的应用领域也在不断拓展,从最初的军事、航天等领域,逐渐延伸到医疗、交通、安防、教育、娱乐等众多民用领域,对推动各领域的发展起到了积极的促进作用。然而,尽管图像增强技术已经取得了长足的发展,但在实际应用中,仍然面临着诸多挑战。例如,如何在不同的场景和应用需求下,选择最合适的图像增强算法,以达到最佳的增强效果;如何在提高图像质量的同时,避免引入过多的噪声或失真,保证图像的真实性和可靠性;如何进一步提高图像增强算法的效率和实时性,以满足对图像实时处理的需求等。因此,深入研究图像增强算法,探索更加高效、准确、鲁棒的图像增强方法,具有重要的理论意义和实际应用价值。1.2国内外研究现状图像增强技术的研究在国内外均受到广泛关注,随着计算机技术和人工智能技术的飞速发展,该领域取得了众多成果,研究方向也不断拓展。从早期的传统图像增强算法,到近年来基于深度学习的新兴算法,每一次技术的革新都为图像增强带来了新的突破和应用前景。在国外,图像增强技术的研究起步较早,发展也较为迅速。早期,传统的图像增强算法是研究的重点。例如,直方图均衡化(HistogramEqualization)作为一种经典的空域增强算法,通过对图像的灰度直方图进行调整,使图像的灰度分布更加均匀,从而达到增强图像对比度的目的,广泛应用于图像的初步处理阶段。像在卫星图像的初步分析中,直方图均衡化可以快速提升图像的整体视觉效果,帮助研究人员初步识别地形地貌特征。而高斯滤波(GaussianFiltering)则是基于频域的图像增强算法,它通过对图像进行高斯卷积,能够有效地平滑图像,去除噪声,在医学影像处理中,常被用于对X光图像的预处理,减少图像中的噪声干扰,提高图像的清晰度。随着计算机技术的发展,基于模型的图像增强算法逐渐成为研究热点。Retinex算法基于人眼视觉系统特性,通过对图像进行多尺度高斯模糊处理和颜色恢复操作,有效改善图像的亮度、对比度和颜色等视觉效果,在低光照图像增强方面表现出色。在夜间拍摄的城市街景图像中,Retinex算法可以显著提升图像的亮度,清晰展现街道和建筑物的细节。近年来,深度学习技术的兴起为图像增强领域带来了革命性的变化。卷积神经网络(CNN)由于其强大的特征提取能力,被广泛应用于图像增强任务。例如,一些基于CNN的图像增强算法通过学习大量的图像数据,能够自动提取图像的特征,并根据这些特征对图像进行增强处理,在图像去噪、去模糊、超分辨率等任务中取得了显著的效果。生成对抗网络(GAN)由生成器和判别器组成,通过两者的对抗学习,生成器能够生成更加逼真的图像,在图像增强领域展现出独特的优势。如SRGAN、ESRGAN等基于GAN的图像增强模型,能够实现高质量的图像超分辨率增强,将低分辨率图像转换为高分辨率图像,在图像放大、图像修复等应用中发挥了重要作用。Google提出的DeepImagePrior方法,通过学习一组图像的内部数据分布,成功实现了图像去噪、去模糊等任务,为图像增强技术开辟了新的思路。在国内,图像增强技术同样是一个热门的研究领域,众多高校和科研机构积极投身于该领域的研究,取得了一系列具有影响力的成果。华南理工大学的谢飞教授团队提出了一种基于深度学习的图像增强算法,该算法能够有效地去除图像中的噪声和模糊,显著提高图像的清晰度和视觉效果。在实际应用中,对于一些因拍摄设备或环境因素导致质量下降的图像,该算法能够进行精准的修复和增强,使图像恢复清晰。中科院自动化所、清华大学、浙江大学等研究团队也在图像增强领域进行了深入研究,涵盖了从传统算法的改进到深度学习算法的创新应用等多个方面。他们的研究成果不仅在学术领域得到了广泛的认可,也在实际应用中发挥了重要作用,推动了图像增强技术在医疗、安防、交通等领域的应用和发展。在应用研究方面,国内外均致力于将图像增强技术与实际场景相结合,拓展其应用领域。在医学领域,图像增强技术用于提高X光、CT、MRI等医学影像的质量,帮助医生更准确地诊断疾病。在安防监控领域,通过图像增强技术提升监控画面的清晰度和辨识度,有助于及时发现异常情况和犯罪行为。在自动驾驶领域,图像增强技术可以改善摄像头捕获的图像质量,提高自动驾驶系统对路况的识别能力,保障行车安全。在卫星遥感领域,图像增强技术能够增强卫星图像的细节,为资源勘探、环境监测等提供更准确的信息。1.3研究内容与方法1.3.1研究内容本论文主要围绕图像增强算法展开深入研究,旨在全面、系统地分析各类图像增强算法的原理、性能以及应用场景,具体研究内容如下:各类图像增强算法原理剖析:深入研究传统图像增强算法,如直方图均衡化、高斯滤波、Retinex算法等的基本原理、数学模型和处理流程。对于直方图均衡化,详细分析其如何通过调整图像灰度直方图来实现图像对比度的增强;针对高斯滤波,探究其基于高斯函数对图像进行平滑处理,去除噪声的机制;对于Retinex算法,研究其基于人眼视觉特性,通过多尺度高斯模糊和颜色恢复操作改善图像视觉效果的原理。同时,对基于深度学习的图像增强算法,如卷积神经网络(CNN)、生成对抗网络(GAN)等进行原理性分析。分析CNN如何通过卷积层、池化层等结构自动提取图像特征,实现图像增强;研究GAN中生成器和判别器的对抗学习过程,以及其如何应用于图像增强任务,生成高质量的增强图像。图像增强算法对比分析:从多个维度对不同类型的图像增强算法进行对比研究。在增强效果方面,通过定性和定量的方法,比较各算法对图像对比度、清晰度、亮度等指标的提升程度。例如,使用峰值信噪比(PSNR)、结构相似性指数(SSIM)等量化指标来客观评价算法的增强效果,同时结合主观视觉感受,对增强后的图像进行视觉质量评估。在算法复杂度方面,分析各算法的计算量、所需的存储空间以及运行时间等,评估其在实际应用中的计算效率。研究不同算法在面对噪声、低光照、模糊等不同图像质量问题时的适应性,探讨其在不同场景下的优势和局限性。图像增强算法的应用研究:结合实际应用领域,如医学影像、安防监控、卫星遥感等,研究图像增强算法的具体应用。在医学影像领域,探索图像增强算法如何帮助医生更准确地诊断疾病,提高医学影像的诊断价值。例如,通过对X光、CT、MRI等医学影像进行增强处理,突出病变部位的特征,减少误诊和漏诊的概率。在安防监控领域,研究图像增强算法如何提升监控画面的清晰度和辨识度,实现对目标物体的更准确识别和跟踪,为安防预警和犯罪侦查提供有力支持。在卫星遥感领域,分析图像增强算法如何增强卫星图像的细节信息,帮助研究人员更好地进行地理信息分析、资源勘探和环境监测等工作。图像增强算法的未来发展趋势探讨:关注图像增强领域的最新研究动态和技术发展趋势,探讨未来图像增强算法的研究方向和发展前景。分析随着人工智能、大数据、云计算等技术的不断发展,图像增强算法可能面临的机遇和挑战。研究如何将新兴技术与图像增强算法相结合,如利用量子计算技术提高算法的计算效率,借助大数据技术获取更多的训练数据,提升算法的泛化能力;探索如何进一步提高图像增强算法的智能化水平,实现自适应、个性化的图像增强处理。1.3.2研究方法为了深入研究图像增强算法,本论文采用以下研究方法:文献研究法:广泛查阅国内外关于图像增强算法的学术论文、研究报告、专利文献等资料,全面了解图像增强技术的研究现状、发展历程和前沿动态。通过对相关文献的梳理和分析,总结各类图像增强算法的原理、特点和应用情况,为后续的研究提供理论基础和研究思路。同时,关注学术界和工业界的最新研究成果,及时掌握图像增强领域的研究热点和发展趋势,为论文的研究方向提供参考。实验分析法:搭建图像增强算法实验平台,选择多种不同类型的图像,包括自然场景图像、医学影像、安防监控图像等,作为实验数据。对不同的图像增强算法进行实验验证,通过调整算法参数,观察算法在不同条件下的增强效果。利用图像质量评价指标,如PSNR、SSIM等,对实验结果进行量化分析,客观评价各算法的性能。通过实验对比,深入分析不同算法在增强效果、算法复杂度、适应性等方面的差异,为算法的选择和优化提供依据。案例分析法:结合实际应用案例,对图像增强算法在医学影像、安防监控、卫星遥感等领域的应用进行深入分析。收集和整理相关领域的实际应用案例,分析图像增强算法在解决实际问题中的具体应用方式、取得的效果以及存在的问题。通过案例分析,总结图像增强算法在实际应用中的经验和教训,为算法的改进和推广提供实践参考。对比研究法:对传统图像增强算法和基于深度学习的图像增强算法进行对比研究,从算法原理、实现方式、增强效果、计算效率等多个方面进行详细比较。分析两种类型算法的优势和劣势,探讨它们在不同应用场景下的适用性。通过对比研究,为根据具体应用需求选择合适的图像增强算法提供指导,同时也为算法的融合和创新提供思路。二、图像增强算法基础理论2.1图像增强的概念与目的在数字化信息时代,图像作为信息的重要载体,广泛应用于各个领域。然而,由于图像在获取、传输和存储过程中不可避免地受到各种因素的干扰,如噪声污染、光照不均、成像设备的局限性等,导致图像质量下降,无法满足人们对图像视觉效果和信息提取的需求。图像增强技术应运而生,旨在通过一系列算法和处理手段,改善图像的视觉质量,使其更符合人类视觉系统的感知特性,同时为后续的图像分析、识别和理解等任务提供更优质的数据基础。图像增强的定义可以概括为:通过特定的算法和技术,对图像进行处理和优化,有目的地强调图像的整体或局部特性,扩大图像中不同物体特征之间的差别,抑制不感兴趣的特征,从而改善图像的视觉效果,满足特定应用场景的需求。例如,在医学影像领域,图像增强可以帮助医生更清晰地观察病变部位的细节,提高诊断的准确性;在安防监控领域,图像增强能够提升监控画面中人物和物体的辨识度,便于及时发现异常情况;在卫星遥感领域,图像增强可以增强图像中地理特征的对比度,有助于资源勘探和环境监测等工作。图像增强的目的主要体现在以下几个方面:改善图像的视觉效果:通过增强图像的对比度、亮度、色彩饱和度等视觉特征,使图像更加清晰、生动,符合人类视觉系统的感知习惯。例如,对于低对比度的图像,通过直方图均衡化等算法,可以扩展图像的灰度动态范围,使图像的细节更加明显,从而提高图像的视觉质量,让观看者能够更轻松地获取图像中的信息。提升图像的清晰度:去除图像中的噪声、模糊等干扰因素,突出图像的边缘和细节,使图像更加清晰锐利。在图像采集过程中,由于受到传感器噪声、拍摄时的抖动等因素影响,图像可能会出现噪声和模糊现象。通过高斯滤波、中值滤波等去噪算法以及基于高频增强的锐化算法,可以有效地去除噪声,增强图像的边缘信息,提升图像的清晰度。增强图像的特征:突出图像中感兴趣的物体或区域的特征,抑制不感兴趣的背景信息,以便更好地进行图像分析和识别。在目标检测任务中,通过图像增强算法可以增强目标物体的特征,使其更容易被检测算法识别出来,提高检测的准确率。适应不同的应用需求:针对不同的应用场景和任务,对图像进行特定的增强处理,以满足各种应用对图像质量的要求。在医学领域,需要增强医学影像中病变部位的特征,帮助医生进行诊断;在工业检测中,需要突出产品表面的缺陷特征,以便进行质量检测。2.2图像增强算法分类图像增强算法种类繁多,根据其处理方式和原理的不同,大致可分为空间域算法、频率域算法以及基于深度学习的算法三大类。每一类算法都有其独特的原理、优势和适用场景,在实际应用中发挥着重要作用。2.2.1空间域算法空间域算法是直接在图像的像素空间上进行操作,通过对像素值的直接处理来实现图像增强。这类算法主要包括直方图均衡化、灰度变换、图像平滑、图像锐化等。直方图均衡化是一种经典的空间域图像增强算法,其核心原理是通过对图像的灰度直方图进行调整,使图像的灰度分布更加均匀,从而达到增强图像对比度的目的。在一幅图像中,灰度直方图反映了图像中各个灰度级出现的频率。如果图像的灰度分布集中在较窄的范围内,图像就会显得对比度较低,细节不清晰。直方图均衡化通过一种数学变换,将原图像的灰度直方图拉伸成均匀分布的直方图,使得图像的灰度级在整个动态范围内得到更充分的利用。具体来说,它首先计算图像中每个灰度级的概率,然后通过累积分布函数将原灰度级映射到新的灰度级,从而实现灰度分布的均匀化。例如,对于一幅低对比度的医学影像,直方图均衡化可以使图像中的组织和病变区域的边界更加清晰,便于医生观察和诊断。灰度变换是一种简单而直接的空间域增强方法,它通过对图像中每个像素的灰度值进行某种数学变换,如线性变换、非线性变换(对数变换、指数变换等),来改变图像的灰度分布,从而达到增强图像的目的。线性变换可以通过调整图像的亮度和对比度来改善图像的视觉效果。当图像整体偏暗时,可以通过线性变换增加每个像素的灰度值,提高图像的亮度;当图像对比度较低时,可以通过调整线性变换的系数,扩大灰度值的动态范围,增强图像的对比度。对数变换和指数变换则可以对图像的灰度进行非线性调整,对数变换常用于增强图像的低灰度区域,使暗部细节更加清晰;指数变换则常用于增强图像的高灰度区域,突出亮部的特征。图像平滑是空间域算法中用于去除图像噪声的重要方法,主要通过邻域平均法和中值滤波法等实现。邻域平均法,如均值滤波,是利用邻域内像素灰度的平均值来代替每个像素的灰度,从而达到平滑图像、减弱噪声的目的。对于一幅受到高斯噪声污染的图像,使用均值滤波可以有效地降低噪声的影响,使图像变得更加平滑。然而,均值滤波在去除噪声的同时,也容易导致图像边缘的模糊,因为它对邻域内的所有像素一视同仁,包括边缘像素。中值滤波则是基于排序统计理论的一种非线性平滑滤波方法,它首先确定一个以某个像素为中心点的邻域,然后将邻域中各像素的灰度值进行排序,取其中间值作为中心像素灰度的新值。中值滤波在去除椒盐噪声等脉冲噪声方面表现出色,因为它能够有效地保留图像的边缘和细节信息,避免了均值滤波对边缘的模糊效应。图像锐化的目的是突出图像中的边缘和细节信息,使图像更加清晰。它基于微分数学原理,通过增强图像中的高频成分来实现。在离散系统中,一阶导数和二阶导数被用于检测图像中的灰度变化。一阶导数可以检测图像中的边缘,当灰度值发生突变时,一阶导数会有较大的响应;二阶导数对灰度变化更加敏感,能够突出灰度变化最剧烈的地方,如图像的边缘和细节。常用的图像锐化算法包括梯度法、Sobel算子、Laplacian算子等。Sobel算子通过计算图像在水平和垂直方向上的梯度,来增强图像的边缘信息;Laplacian算子则是一种二阶微分算子,它对图像中的细节和噪声有较强的响应,能够有效地增强图像的锐度。2.2.2频率域算法频率域算法是将图像从空间域转换到频率域,通过对频率分量进行处理来实现图像增强,然后再将处理后的图像转换回空间域。这类算法主要基于傅里叶变换、同态滤波等原理。傅里叶变换是频率域图像增强的基础,它将图像从空间域转换到频率域,揭示了图像中不同频率成分的分布。在频率域中,图像的信息表现为不同频率分量的组合。低频分量对应着图像中变化缓慢的部分,如大面积的背景区域,它决定了图像的基本形状和轮廓;高频分量对应着图像中变化剧烈的部分,如物体的边缘、纹理和噪声等,它包含了图像的细节信息。通过对频率域中的不同频率分量进行处理,可以实现不同的图像增强效果。低通滤波通过保留低频分量,去除高频噪声,使图像变得模糊,常用于去除图像中的噪声干扰;高通滤波则增强图像的边缘和细节,去除低频背景,使得图像看起来更加锐利,常用于突出图像中的边缘信息。同态滤波是一种基于图像的照度-反射模型的频率域增强方法,它可以同时对图像的动态范围和对比度进行调整。在图像的照度-反射模型中,图像可以看作是照度分量和反射分量的乘积。照度分量反映了图像的整体亮度,它通常是缓慢变化的低频分量;反射分量反映了物体的表面特性,它包含了图像的细节和纹理信息,通常是高频分量。同态滤波通过对频率域中的照度分量和反射分量进行不同的处理,来实现图像的增强。它可以压缩图像的动态范围,增强图像的对比度,使图像中的细节更加清晰,同时保留图像的低频背景信息。例如,对于一幅光照不均匀的图像,同态滤波可以有效地调整图像的亮度,使图像的整体光照更加均匀,同时增强图像中物体的边缘和细节,提高图像的视觉质量。2.2.3基于深度学习的算法近年来,随着深度学习技术的飞速发展,基于深度学习的图像增强算法在图像处理领域取得了显著的成果。这类算法主要基于卷积神经网络(CNN)、生成对抗网络(GAN)等深度学习模型,通过对大量图像数据的学习,自动提取图像的特征,并实现图像增强。卷积神经网络(CNN)是一种专门为处理图像数据而设计的深度学习模型,它具有强大的特征提取能力。在图像增强任务中,CNN通过卷积层、池化层、激活函数等组件,自动学习图像中的特征表示。卷积层通过卷积核在图像上滑动,对图像进行卷积操作,提取图像的局部特征;池化层则对卷积层的输出进行下采样,减少数据量,同时保留图像的主要特征;激活函数则为模型引入非线性因素,增强模型的表达能力。基于CNN的图像增强算法可以针对不同的图像增强任务,如去噪、去模糊、超分辨率等,设计不同的网络结构和训练方法。一些基于CNN的图像去噪算法通过学习大量含噪图像和干净图像之间的映射关系,能够有效地去除图像中的噪声,恢复图像的真实信息;基于CNN的超分辨率算法可以将低分辨率图像转换为高分辨率图像,通过学习图像的高频细节信息,提高图像的清晰度和细节表现力。生成对抗网络(GAN)由生成器和判别器组成,通过两者的对抗学习来实现图像增强。生成器的任务是生成逼真的增强图像,使其与真实的高质量图像难以区分;判别器的任务是判断输入的图像是真实的高质量图像还是生成器生成的增强图像。在训练过程中,生成器不断优化自己的参数,以生成更加逼真的图像,欺骗判别器;判别器则不断提高自己的辨别能力,以准确地区分真实图像和生成图像。通过这种对抗学习的过程,生成器最终能够生成高质量的增强图像。在图像超分辨率任务中,基于GAN的算法如SRGAN、ESRGAN等能够生成具有丰富细节和高分辨率的图像,其生成的图像在视觉效果上明显优于传统算法。此外,GAN还可以用于图像去噪、图像修复等任务,通过学习大量的图像数据,能够有效地恢复图像的受损部分,生成与原始图像相似的高质量图像。三、典型图像增强算法原理与实现3.1直方图均衡化算法3.1.1原理详解直方图均衡化是一种基于灰度变换的经典图像增强算法,其核心目的在于通过对图像的灰度直方图进行特定的变换,使图像的灰度分布更加均匀,进而达到增强图像对比度的效果,让图像的细节和特征更加清晰地呈现出来。在数字图像中,灰度直方图是一个反映图像中各个灰度级像素出现频率的统计图表。横坐标表示灰度级(通常范围是0-255,0代表黑色,255代表白色),纵坐标表示该灰度级像素在图像中出现的次数或频率。对于一幅对比度较低的图像,其灰度直方图往往集中在某一较窄的灰度区间内,这意味着大部分像素的灰度值相近,图像缺乏层次感和细节。例如,在低光照环境下拍摄的照片,灰度值可能主要集中在低灰度区域,导致图像整体偏暗,物体的轮廓和细节难以分辨。直方图均衡化的原理基于图像灰度的概率分布理论。假设图像的灰度级范围是[0,L-1](对于8位灰度图像,L=256),原图像的灰度概率密度函数为p_r(r),其中r表示原图像的灰度值。通过一个变换函数s=T(r),将原灰度值r映射到新的灰度值s。为了实现直方图均衡化,使变换后的灰度直方图均匀分布,这个变换函数T(r)被定义为原灰度值的累积分布函数(CDF),即:T(r)=\int_{0}^{r}p_r(\omega)d\omega在离散情况下,对于一幅大小为M\timesN的图像,灰度级为k的像素个数为n_k,则灰度级k的概率p_k为:p_k=\frac{n_k}{M\timesN}累积分布函数T(k)可表示为:T(k)=\sum_{i=0}^{k}p_i=\sum_{i=0}^{k}\frac{n_i}{M\timesN}经过变换后,新的灰度值s_k=T(k),将原图像中灰度级为k的像素映射到新的灰度级s_k。由于累积分布函数具有单调递增的性质,并且其取值范围是[0,1],通过将s_k乘以(L-1),将其映射回图像的灰度级范围[0,L-1],得到最终的均衡化后的灰度值s_k'=round(s_k\times(L-1)),其中round表示四舍五入取整操作。通过这样的变换,原图像中出现频率较高的灰度级会被分散到更广泛的灰度范围内,而出现频率较低的灰度级也会得到相应的提升,从而使得图像的灰度分布更加均匀,对比度得到增强。例如,对于一幅原本灰度集中在低灰度区域的图像,经过直方图均衡化后,低灰度区域的像素会被映射到更宽的灰度范围,图像的亮度得到提升,同时,高灰度区域的像素也会相应地调整,使得图像的整体对比度增强,细节更加清晰可见。3.1.2实现步骤与代码示例下面以Python和OpenCV库为例,详细介绍直方图均衡化的实现步骤及代码。读取图像:使用OpenCV的cv2.imread()函数读取图像,将图像存储为一个多维数组。转换为灰度图像:如果读取的是彩色图像,需要将其转换为灰度图像,以便进行直方图均衡化操作。可以使用cv2.cvtColor()函数将彩色图像从BGR颜色空间转换为灰度空间。计算直方图:使用cv2.calcHist()函数计算灰度图像的直方图。该函数会返回一个包含256个元素的数组,每个元素表示对应灰度级的像素个数。计算累积分布函数(CDF):根据计算得到的直方图,计算每个灰度级的累积分布函数。累积分布函数表示从灰度级0到当前灰度级的像素累计概率。进行灰度变换:根据累积分布函数,对每个像素的灰度值进行变换,得到均衡化后的灰度值。显示结果:使用cv2.imshow()函数显示原始图像和直方图均衡化后的图像,对比增强效果。以下是具体的Python代码实现:importcv2importnumpyasnpimportmatplotlib.pyplotasplt#读取图像image=cv2.imread('test.jpg')#转换为灰度图像gray_image=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)#计算直方图hist=cv2.calcHist([gray_image],[0],None,[256],[0,256])#计算累积分布函数(CDF)cdf=hist.cumsum()cdf_normalized=cdf*hist.max()/cdf.max()#进行灰度变换equalized_image=erp(gray_image.flatten(),np.arange(0,256),cdf_normalized).reshape(gray_image.shape).astype(np.uint8)#显示原始图像和直方图plt.subplot(2,2,1)plt.imshow(cv2.cvtColor(gray_image,cv2.COLOR_GRAY2RGB))plt.title('OriginalImage')plt.axis('off')plt.subplot(2,2,2)plt.plot(hist,color='r')plt.title('OriginalHistogram')plt.xlim([0,256])#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()importnumpyasnpimportmatplotlib.pyplotasplt#读取图像image=cv2.imread('test.jpg')#转换为灰度图像gray_image=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)#计算直方图hist=cv2.calcHist([gray_image],[0],None,[256],[0,256])#计算累积分布函数(CDF)cdf=hist.cumsum()cdf_normalized=cdf*hist.max()/cdf.max()#进行灰度变换equalized_image=erp(gray_image.flatten(),np.arange(0,256),cdf_normalized).reshape(gray_image.shape).astype(np.uint8)#显示原始图像和直方图plt.subplot(2,2,1)plt.imshow(cv2.cvtColor(gray_image,cv2.COLOR_GRAY2RGB))plt.title('OriginalImage')plt.axis('off')plt.subplot(2,2,2)plt.plot(hist,color='r')plt.title('OriginalHistogram')plt.xlim([0,256])#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()importmatplotlib.pyplotasplt#读取图像image=cv2.imread('test.jpg')#转换为灰度图像gray_image=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)#计算直方图hist=cv2.calcHist([gray_image],[0],None,[256],[0,256])#计算累积分布函数(CDF)cdf=hist.cumsum()cdf_normalized=cdf*hist.max()/cdf.max()#进行灰度变换equalized_image=erp(gray_image.flatten(),np.arange(0,256),cdf_normalized).reshape(gray_image.shape).astype(np.uint8)#显示原始图像和直方图plt.subplot(2,2,1)plt.imshow(cv2.cvtColor(gray_image,cv2.COLOR_GRAY2RGB))plt.title('OriginalImage')plt.axis('off')plt.subplot(2,2,2)plt.plot(hist,color='r')plt.title('OriginalHistogram')plt.xlim([0,256])#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()#读取图像image=cv2.imread('test.jpg')#转换为灰度图像gray_image=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)#计算直方图hist=cv2.calcHist([gray_image],[0],None,[256],[0,256])#计算累积分布函数(CDF)cdf=hist.cumsum()cdf_normalized=cdf*hist.max()/cdf.max()#进行灰度变换equalized_image=erp(gray_image.flatten(),np.arange(0,256),cdf_normalized).reshape(gray_image.shape).astype(np.uint8)#显示原始图像和直方图plt.subplot(2,2,1)plt.imshow(cv2.cvtColor(gray_image,cv2.COLOR_GRAY2RGB))plt.title('OriginalImage')plt.axis('off')plt.subplot(2,2,2)plt.plot(hist,color='r')plt.title('OriginalHistogram')plt.xlim([0,256])#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()image=cv2.imread('test.jpg')#转换为灰度图像gray_image=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)#计算直方图hist=cv2.calcHist([gray_image],[0],None,[256],[0,256])#计算累积分布函数(CDF)cdf=hist.cumsum()cdf_normalized=cdf*hist.max()/cdf.max()#进行灰度变换equalized_image=erp(gray_image.flatten(),np.arange(0,256),cdf_normalized).reshape(gray_image.shape).astype(np.uint8)#显示原始图像和直方图plt.subplot(2,2,1)plt.imshow(cv2.cvtColor(gray_image,cv2.COLOR_GRAY2RGB))plt.title('OriginalImage')plt.axis('off')plt.subplot(2,2,2)plt.plot(hist,color='r')plt.title('OriginalHistogram')plt.xlim([0,256])#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()#转换为灰度图像gray_image=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)#计算直方图hist=cv2.calcHist([gray_image],[0],None,[256],[0,256])#计算累积分布函数(CDF)cdf=hist.cumsum()cdf_normalized=cdf*hist.max()/cdf.max()#进行灰度变换equalized_image=erp(gray_image.flatten(),np.arange(0,256),cdf_normalized).reshape(gray_image.shape).astype(np.uint8)#显示原始图像和直方图plt.subplot(2,2,1)plt.imshow(cv2.cvtColor(gray_image,cv2.COLOR_GRAY2RGB))plt.title('OriginalImage')plt.axis('off')plt.subplot(2,2,2)plt.plot(hist,color='r')plt.title('OriginalHistogram')plt.xlim([0,256])#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()gray_image=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)#计算直方图hist=cv2.calcHist([gray_image],[0],None,[256],[0,256])#计算累积分布函数(CDF)cdf=hist.cumsum()cdf_normalized=cdf*hist.max()/cdf.max()#进行灰度变换equalized_image=erp(gray_image.flatten(),np.arange(0,256),cdf_normalized).reshape(gray_image.shape).astype(np.uint8)#显示原始图像和直方图plt.subplot(2,2,1)plt.imshow(cv2.cvtColor(gray_image,cv2.COLOR_GRAY2RGB))plt.title('OriginalImage')plt.axis('off')plt.subplot(2,2,2)plt.plot(hist,color='r')plt.title('OriginalHistogram')plt.xlim([0,256])#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()#计算直方图hist=cv2.calcHist([gray_image],[0],None,[256],[0,256])#计算累积分布函数(CDF)cdf=hist.cumsum()cdf_normalized=cdf*hist.max()/cdf.max()#进行灰度变换equalized_image=erp(gray_image.flatten(),np.arange(0,256),cdf_normalized).reshape(gray_image.shape).astype(np.uint8)#显示原始图像和直方图plt.subplot(2,2,1)plt.imshow(cv2.cvtColor(gray_image,cv2.COLOR_GRAY2RGB))plt.title('OriginalImage')plt.axis('off')plt.subplot(2,2,2)plt.plot(hist,color='r')plt.title('OriginalHistogram')plt.xlim([0,256])#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()hist=cv2.calcHist([gray_image],[0],None,[256],[0,256])#计算累积分布函数(CDF)cdf=hist.cumsum()cdf_normalized=cdf*hist.max()/cdf.max()#进行灰度变换equalized_image=erp(gray_image.flatten(),np.arange(0,256),cdf_normalized).reshape(gray_image.shape).astype(np.uint8)#显示原始图像和直方图plt.subplot(2,2,1)plt.imshow(cv2.cvtColor(gray_image,cv2.COLOR_GRAY2RGB))plt.title('OriginalImage')plt.axis('off')plt.subplot(2,2,2)plt.plot(hist,color='r')plt.title('OriginalHistogram')plt.xlim([0,256])#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()#计算累积分布函数(CDF)cdf=hist.cumsum()cdf_normalized=cdf*hist.max()/cdf.max()#进行灰度变换equalized_image=erp(gray_image.flatten(),np.arange(0,256),cdf_normalized).reshape(gray_image.shape).astype(np.uint8)#显示原始图像和直方图plt.subplot(2,2,1)plt.imshow(cv2.cvtColor(gray_image,cv2.COLOR_GRAY2RGB))plt.title('OriginalImage')plt.axis('off')plt.subplot(2,2,2)plt.plot(hist,color='r')plt.title('OriginalHistogram')plt.xlim([0,256])#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()cdf=hist.cumsum()cdf_normalized=cdf*hist.max()/cdf.max()#进行灰度变换equalized_image=erp(gray_image.flatten(),np.arange(0,256),cdf_normalized).reshape(gray_image.shape).astype(np.uint8)#显示原始图像和直方图plt.subplot(2,2,1)plt.imshow(cv2.cvtColor(gray_image,cv2.COLOR_GRAY2RGB))plt.title('OriginalImage')plt.axis('off')plt.subplot(2,2,2)plt.plot(hist,color='r')plt.title('OriginalHistogram')plt.xlim([0,256])#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()cdf_normalized=cdf*hist.max()/cdf.max()#进行灰度变换equalized_image=erp(gray_image.flatten(),np.arange(0,256),cdf_normalized).reshape(gray_image.shape).astype(np.uint8)#显示原始图像和直方图plt.subplot(2,2,1)plt.imshow(cv2.cvtColor(gray_image,cv2.COLOR_GRAY2RGB))plt.title('OriginalImage')plt.axis('off')plt.subplot(2,2,2)plt.plot(hist,color='r')plt.title('OriginalHistogram')plt.xlim([0,256])#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()#进行灰度变换equalized_image=erp(gray_image.flatten(),np.arange(0,256),cdf_normalized).reshape(gray_image.shape).astype(np.uint8)#显示原始图像和直方图plt.subplot(2,2,1)plt.imshow(cv2.cvtColor(gray_image,cv2.COLOR_GRAY2RGB))plt.title('OriginalImage')plt.axis('off')plt.subplot(2,2,2)plt.plot(hist,color='r')plt.title('OriginalHistogram')plt.xlim([0,256])#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()equalized_image=erp(gray_image.flatten(),np.arange(0,256),cdf_normalized).reshape(gray_image.shape).astype(np.uint8)#显示原始图像和直方图plt.subplot(2,2,1)plt.imshow(cv2.cvtColor(gray_image,cv2.COLOR_GRAY2RGB))plt.title('OriginalImage')plt.axis('off')plt.subplot(2,2,2)plt.plot(hist,color='r')plt.title('OriginalHistogram')plt.xlim([0,256])#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()#显示原始图像和直方图plt.subplot(2,2,1)plt.imshow(cv2.cvtColor(gray_image,cv2.COLOR_GRAY2RGB))plt.title('OriginalImage')plt.axis('off')plt.subplot(2,2,2)plt.plot(hist,color='r')plt.title('OriginalHistogram')plt.xlim([0,256])#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()plt.subplot(2,2,1)plt.imshow(cv2.cvtColor(gray_image,cv2.COLOR_GRAY2RGB))plt.title('OriginalImage')plt.axis('off')plt.subplot(2,2,2)plt.plot(hist,color='r')plt.title('OriginalHistogram')plt.xlim([0,256])#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()plt.imshow(cv2.cvtColor(gray_image,cv2.COLOR_GRAY2RGB))plt.title('OriginalImage')plt.axis('off')plt.subplot(2,2,2)plt.plot(hist,color='r')plt.title('OriginalHistogram')plt.xlim([0,256])#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()plt.title('OriginalImage')plt.axis('off')plt.subplot(2,2,2)plt.plot(hist,color='r')plt.title('OriginalHistogram')plt.xlim([0,256])#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()plt.axis('off')plt.subplot(2,2,2)plt.plot(hist,color='r')plt.title('OriginalHistogram')plt.xlim([0,256])#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()plt.subplot(2,2,2)plt.plot(hist,color='r')plt.title('OriginalHistogram')plt.xlim([0,256])#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()plt.plot(hist,color='r')plt.title('OriginalHistogram')plt.xlim([0,256])#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()plt.title('OriginalHistogram')plt.xlim([0,256])#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()plt.xlim([0,256])#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()#显示均衡化后的图像和直方图plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(equalized_image,cv2.COLOR_GRAY2RGB))plt.title('EqualizedImage')plt.axis('off')plt.subplot(2,2,4)equalized_hist=cv2.calcHist([equalized_image],[0],None,[256],[0,256])plt.plot(equalized_hist,color='g')plt.title('EqualizedHistogram')plt.xlim([0,256])plt.show()plt.subplot(2,2,3)plt.imshow(cv2.cvtColor(eq
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 乙类数学考试题及答案
- 1万吨冷库(储藏保鲜)建设项目可行性研究报告
- 1400亩芭乐标准化种植技改项目可行性研究报告
- 100KW太阳能光伏建筑一体化示范项目可行性研究报告
- 汇报工作沟通表达培训方案
- 军人炊事员试题及答案
- 企业数字化营销中台搭建方案
- 交管12123驾驶证学法减分新版考试题目答案
- 短期集训班组织方案
- 搅拌站司机安全培训试题及答案
- DL-T5334-2016电力工程勘测安全规程
- TB 10012-2019 铁路工程地质勘察规范
- 19J102-1 19G613混凝土小型空心砌块墙体建筑与结构构造
- 零星维修工程服务方案设计
- 【新大纲新教材】2022年初级会计职称《经济法基础》精讲课件(1-8章完整版)
- 人教版高一英语必修一《Workbook》教学设计
- WPSOffice办公软件应用PPT完整全套教学课件
- 《无人机组装与调试》第5章-多旋翼无人机调试
- 重庆大学 工程力学 课程试卷
- GB/T 28733-2012固体生物质燃料全水分测定方法
- GB/T 26172.2-2010折叠翻靠床安全要求和试验方法第2部分:试验方法
评论
0/150
提交评论