图像处理之直方图匹配
如何进行高效的图像匹配和图像配准
![如何进行高效的图像匹配和图像配准](https://img.taocdn.com/s3/m/3aad744803020740be1e650e52ea551810a6c989.png)
如何进行高效的图像匹配和图像配准图像匹配和图像配准是计算机视觉领域中常见的任务,其目的是通过计算机算法将两幅或多幅图像进行比较,从而找出它们之间的相似性或者进行图像的对齐。
本文将介绍一些高效的图像匹配和图像配准的方法。
一、图像匹配图像匹配即是将一幅图像中的特征在另一幅图像中找到对应物体或者区域。
下面是一些常见的图像匹配方法:1.特征点匹配特征点匹配是最常见的图像匹配方法之一,它通过在图像中提取特征点,并计算特征点的描述子,然后使用某种度量来比较两幅图像的特征点,找出最相似的特征点对。
常用的特征点匹配算法包括SIFT、SURF和ORB等。
2.直方图匹配直方图匹配是一种基于图像全局颜色或纹理分布的匹配方法,它将图像的直方图进行比较,通过计算直方图之间的相似性度量来进行匹配。
直方图匹配适用于颜色和纹理信息较为明显的图像匹配任务。
3.模板匹配模板匹配是一种基于像素点灰度值的匹配方法,它通过将一个预定义的模板图像滑动或者扫描到待匹配图像上,计算模板和图像之间的相似性度量,从而找到最佳匹配位置。
模板匹配适用于物体检测和目标跟踪等应用场景。
4.特征描述子匹配特征描述子匹配是一种将图像中的局部特征点的描述子进行比较的匹配方法,它通过计算特征点描述子之间的相似性度量找到最佳匹配。
常用的特征描述子匹配算法包括基于二值描述子的BRISK和ORB,基于二进制描述子的BRIEF和FREAK,以及基于浮点数描述子的SIFT、SURF和AKAZE等。
二、图像配准图像配准是将两幅或多幅图像进行对齐,使得它们在空间上或者几何上具有一致性。
下面是一些常用的图像配准方法:1.特征点配准特征点配准是将两幅图像中的特征点进行对应的一种配准方法,它通过计算特征点的几何变换关系,然后将其中一幅图像进行变换,使得两幅图像的特征点对应一致。
常用的特征点配准方法包括RANSAC、LMS和Hough变换等。
2.像素级配准像素级配准是将两幅图像的像素进行一一对应的配准方法,它通过计算图像间的几何变换关系,然后将其中一幅图像进行变换,使得两幅图像在几何上对应一致。
ENVI实习直方图匹配,校正,分类
![ENVI实习直方图匹配,校正,分类](https://img.taocdn.com/s3/m/1876320f4a7302768e993986.png)
ENVI实习一实验目的(1)主要学习ENVI软件的基本功能(2)ENVI 软件完成影像增强(包括直方图匹配和去云)、融合、正射校正和监督、非监督分类四个大方面的试验。
(3)掌握视窗操作模块的功能和操作技能二软件和设备ENVI4.5一套三实验原理各个任务的试验原理和操作详细见下面操作,再次不详述。
一、图像增强(算法、原理、对比图)1、直方图匹配在ENVI 中使用Histogram Matching 工具可以自动地把一幅实现图像的直方图匹配到另一幅上,从而使两幅图像的亮度分布尽可能地接近。
使用该功能以后,在该功能被启动的窗口内,输入直方图将发生变化,以与所选图像显示窗口的当前输出直方图相匹配。
在灰阶和彩色图像上,都可以使用该功能。
操作步骤:选择Enhance > Histogram Matching,出现Histogram Matching Input parameters 对话框,在Match To中选择想匹配的图像。
在Input Histogram 会有Image、Scroll、Zoom、Band、、ROI来选择如数直方图的来源,下图为输入图像数据及其所用的拉伸(直方图匹配之前):下图为Match To 想匹配的图像及其拉伸:利用直方图匹配后图像2的直方图结果:从结果可以看出,匹配后的图像在亮度上已经明显增强,从偏暗增强为较亮;其直方图与#1中的图像直方图在亮度上分布也很接近。
2、图像去云常规的云处理算法会随云的覆盖类型的不同而不同,对在大范围内存在薄云的影像来说,采用同态滤波法较好。
同态滤波法把频率过滤与灰度变化结合起来,分离云与背景地物,最终从影像中去除云的影响,这种方法由于涉及到滤波器以及截至频率的选择,在滤波的过程中有时会导致一些有用信息的丢失。
对于局部有云的影像来说,一般使用时间平均法,这种算法适用于地物特征随时间变化较小的地区,如荒漠、戈壁等地区;对于植被覆盖茂密的地区,由于植被的长势与时间有密切的关系,不同时相的植被长势在影像中有明显的区别,这种简单的替代算法不再适用。
图像匹配的算法种类和原理
![图像匹配的算法种类和原理](https://img.taocdn.com/s3/m/84c70cba8662caaedd3383c4bb4cf7ec4afeb6dd.png)
图像匹配的算法种类和原理
图像匹配是一种广泛应用于计算机视觉领域的技术,用于判断两个或多个图像之间的相似性或是否存在某种关联。
以下是几种常见的图像匹配算法和其原理:
1. 直方图匹配:该算法基于图像的颜色分布,通过比较两个图像的直方图来评估它们的相似性。
直方图是一种将图像像素值与其频率关联起来的统计工具。
2. 特征点匹配:该算法通过提取图像中的特征点,如角点、边缘等,然后比较两个图像中的特征点之间的距离或相似性来确定它们之间的匹配关系。
常见的特征点匹配算法包括SIFT、SURF 和ORB。
3. 模板匹配:该算法使用一个预先定义好的模板图像,将其与输入图像进行比较,找出最佳匹配的位置。
模板匹配算法通常使用相关性或差异性度量来评估匹配程度。
4. 形状匹配:该算法旨在比较图像中的形状特征,例如提取图像边界上的轮廓,并计算它们之间的相似性。
形状匹配通常与图像分割和轮廓提取技术结合使用。
5. 神经网络匹配:近年来,深度学习和卷积神经网络(CNN)等技术的发展为图像匹配带来了新的突破。
使用深度神经网络,可以学习到更高级别的特征表示,并通过训练模型来实现图像匹配任务。
这些算法各有优缺点,并且在不同应用场景下具有不同的适用性。
在实际应用中,经常需要结合多种算法来实现更准确的图像匹配结果。
ENVI实习直方图匹配,校正,分类
![ENVI实习直方图匹配,校正,分类](https://img.taocdn.com/s3/m/53033b723169a4517723a3b0.png)
ENVI实习一实验目的(1)主要学习ENVI软件的基本功能(2)ENVI 软件完成影像增强(包括直方图匹配和去云)、融合、正射校正和监督、非监督分类四个大方面的试验。
(3)掌握视窗操作模块的功能和操作技能二软件和设备ENVI4.5一套三实验原理各个任务的试验原理和操作详细见下面操作,再次不详述。
一、图像增强(算法、原理、对比图)1、直方图匹配在ENVI 中使用Histogram Matching 工具可以自动地把一幅实现图像的直方图匹配到另一幅上,从而使两幅图像的亮度分布尽可能地接近。
使用该功能以后,在该功能被启动的窗口内,输入直方图将发生变化,以与所选图像显示窗口的当前输出直方图相匹配。
在灰阶和彩色图像上,都可以使用该功能。
操作步骤:选择Enhance > Histogram Matching,出现Histogram Matching Input parameters 对话框,在Match To中选择想匹配的图像。
在Input Histogram 会有Image、Scroll、Zoom、Band、、ROI来选择如数直方图的来源,下图为输入图像数据及其所用的拉伸(直方图匹配之前):下图为 Match To 想匹配的图像及其拉伸:利用直方图匹配后图像2的直方图结果:从结果可以看出,匹配后的图像在亮度上已经明显增强,从偏暗增强为较亮;其直方图与#1中的图像直方图在亮度上分布也很接近。
2、图像去云常规的云处理算法会随云的覆盖类型的不同而不同,对在大范围内存在薄云的影像来说,采用同态滤波法较好。
同态滤波法把频率过滤与灰度变化结合起来,分离云与背景地物,最终从影像中去除云的影响,这种方法由于涉及到滤波器以及截至频率的选择,在滤波的过程中有时会导致一些有用信息的丢失。
对于局部有云的影像来说,一般使用时间平均法,这种算法适用于地物特征随时间变化较小的地区,如荒漠、戈壁等地区;对于植被覆盖茂密的地区,由于植被的长势与时间有密切的关系,不同时相的植被长势在影像中有明显的区别,这种简单的替代算法不再适用。
图像处理技术中的直方图匹配方法介绍
![图像处理技术中的直方图匹配方法介绍](https://img.taocdn.com/s3/m/bfb984868ad63186bceb19e8b8f67c1cfad6ee91.png)
图像处理技术中的直方图匹配方法介绍直方图匹配是图像处理技术中常用的一种方法,它可以用来改变图像的亮度分布,使之符合特定的标准。
本文将介绍直方图匹配的原理、方法和应用。
直方图是图像中各灰度级的统计信息,它可以反映图像的亮度分布。
直方图匹配的目标是通过对比两个图像的直方图,调整一个图像的像素值,使其直方图与另一个图像的直方图相匹配。
直方图匹配的原理是将原始图像的亮度分布映射到目标图像的亮度分布上。
具体过程包括以下步骤:计算原始图像和目标图像的直方图。
直方图可以通过统计每个灰度级的像素个数计算得出。
将原始图像的直方图进行归一化处理,以使得图像的亮度范围保持一致。
计算原始图像和目标图像的累积直方图。
累积直方图反映了每个灰度级及其前面所有灰度级的像素个数累加值。
接着,根据原始图像和目标图像的累积直方图,计算像素值映射表。
该映射表可以通过将原始图像上的每个灰度级映射到目标图像上对应的灰度级来实现直方图匹配。
使用像素值映射表将原始图像的像素值映射到目标图像上,完成直方图匹配。
在图像处理中,直方图匹配有多种应用。
其中一个主要应用是图像增强。
通过将一幅图像的直方图匹配到另一幅具有良好亮度分布的图像上,可以增强原始图像的对比度和细节,改善图像的视觉效果。
直方图匹配也可以用于图像配准。
在医学影像、遥感影像等领域,图像配准是一个重要的任务。
通过直方图匹配,可以使两幅图像在亮度上具有一致性,从而提高图像配准的准确性。
直方图匹配还可以用于图像分类和目标检测。
通过将图像的直方图与训练样本的直方图进行匹配,可以实现图像的自动分类和目标的自动检测。
需要注意的是,直方图匹配虽然可以改善图像的亮度分布,但也可能导致图像的颜色失真。
因此,在应用直方图匹配时需要谨慎,根据具体情况进行权衡和调整。
总结来说,直方图匹配是图像处理中常用的方法,可以通过调整图像的亮度分布实现图像增强、图像配准、图像分类和目标检测。
在实际应用中,需要充分考虑图像的特点和需求,谨慎选择合适的参数和方法,以达到最佳效果。
histogram matching 匀色算法
![histogram matching 匀色算法](https://img.taocdn.com/s3/m/3a96975f640e52ea551810a6f524ccbff021ca46.png)
histogram matching 匀色算法直方图匹配(Histogram Matching)是一种用于调整图像颜色分布的图像处理技术,以使其与参考图像的颜色分布相匹配。
匹配的目标是使图像的颜色分布更均匀,从而改善图像的视觉质量。
以下是直方图匹配的一般算法步骤:
1. 计算直方图:对于待处理图像和参考图像,首先计算它们的颜色直方图。
颜色直方图表示图像中各个颜色级别的分布情况。
2. 累积分布函数:计算待处理图像和参考图像的颜色分布的累积分布函数(CDF)。
CDF表示颜色级别的累积分布情况,可用于比较两个图像的颜色分布。
3. 匹配直方图:对于每个颜色级别,将待处理图像的CDF映射到参考图像的CDF。
这意味着将待处理图像的颜色级别映射到参考图像中的相应颜色级别。
这个映射可以通过简单的插值或其他变换方法来实现。
4. 调整图像:使用新的CDF映射,对待处理图像中的颜色级别进行调整,以匹配参考图像的颜色分布。
这通常涉及重新分配颜色级别的像素值。
5. 输出结果:输出调整后的图像,其颜色分布应与参考图像匹配。
直方图匹配的目标是改善图像的视觉一致性,使其具有与参考图像相似的颜色特性。
这在图像处理、计算机视觉和计算机图形学中用于各种应用,包括颜色校正、图像合成和图像增强。
图像处理实践中常见问题及解决方案
![图像处理实践中常见问题及解决方案](https://img.taocdn.com/s3/m/54cb0324dcccda38376baf1ffc4ffe473268fd7d.png)
图像处理实践中常见问题及解决方案图像处理是指对图像进行数字化处理、分析及修改的一种技术。
在图像处理实践中,常常会遇到一些问题,如图像质量、噪声、颜色处理等等。
本文将介绍图像处理实践中常见的问题,并提供相应的解决方案。
一个常见的问题是图像质量的提升。
在现实环境中,图像可能会因为光照不足、噪声干扰等因素而失真。
为了提高图像质量,可以采取以下几个解决方案。
首先,可以采用图像增强技术。
图像增强技术可以通过增加图像的对比度、清晰度和亮度来改善图像的质量。
一种常用的图像增强方法是直方图均衡化,它可以增强图像的细节并改善图像的对比度。
其次,可以使用图像去噪技术。
噪声是影响图像质量的一个常见问题。
为了减少图像中的噪声,可以采用滤波器。
滤波器可以通过平滑图像的局部区域来去除噪声,并保持图像的细节。
一种常用的滤波器是高斯滤波器,它可以通过平滑图像中的像素点来减少噪声。
另外,颜色处理也是图像处理中的一个重要问题。
在不同的应用场景中,可能需要对图像的色彩进行调整。
为了在图像处理中实现颜色的调整,可以采用以下几个解决方案。
首先,可以使用颜色空间转换。
颜色空间转换可以将图像从一种颜色空间转换到另一种颜色空间,从而实现颜色的调整。
常用的颜色空间包括RGB、CMYK和HSV等。
通过选择合适的颜色空间,可以改变图像的色调、亮度和饱和度。
其次,可以使用直方图匹配技术。
直方图匹配可以通过比较图像的直方图来调整图像的颜色分布。
通过将图像的直方图与目标直方图进行匹配,可以实现颜色的调整和特定效果的实现。
此外,还可能遇到图像分割的问题。
图像分割是将图像分成不同的区域或目标的过程。
为了实现图像分割,可以采用以下两种常见的方法。
第一种方法是基于阈值的分割。
基于阈值的分割是通过将图像的像素点分成两个或多个类别来实现分割的。
通过设置合适的阈值,可以将图像中不同的区域分割出来。
这种方法简单易用,但对于复杂的图像可能效果不理想。
第二种方法是基于边缘的分割。
图像的直方图均衡、匹配及图像分割【数字图像处理大作业】
![图像的直方图均衡、匹配及图像分割【数字图像处理大作业】](https://img.taocdn.com/s3/m/354576385727a5e9856a6115.png)
数字图像处理—————————————————————————————Porject3:图像的直方图均衡、匹配及图像分割摘要:本文利用matlab的编程,绘出图像的直方图。
本文用了一般的直方图均衡和自适应的直方图均衡的算法分别对各个直方图进行均衡,得到了不同的效果。
本文讨论了单映射规则和组映射规则的直方图匹配技术。
本文采用了一般的直方图图像分割技术对图像进行分割,同时还讨论了一种基于梯度的直方图阈值图像分割技术。
2012 年4 月12 日星期四项目题目:共10 幅经变亮或者变暗处理的源图像;要求:1.把附件图像的直方图画出;2.把所有图像进行直方图均衡;输出均衡后的图像和源图像进行比对;分析改善内容;3.进一步把图像按照对源图像直方图的观察,各自指定不同源图像的直方图,进行直方图匹配,进行图像增强;4.利用直方图对图像elain和woman 进行分割;技术分析1. 画出附件的直方图,先利用读取图像数据的函数将图像的数据点读取出来,然后再对数据点的值进行排序,然后再统计每个灰度值出现的次数,然后再用这些数据值绘出直方图2. 把所有图像进行直方图均衡;输出均衡后的图像和源图像进行比对;分析改善内容;先说说直方图均衡的原理:从数学上来说图像直方图是图像各灰度值统计特性与图像灰度值的函数,它是对图像中每一灰度值出现频率的统计,从图形上来说,它是一个二维图,横坐标表示图像中各个像素点的灰度级,纵坐标为各个灰度级上图像各个像素点出现的次数或概率。
灰度直方图性质:①表征了图像的一维信息。
只反映图像中像素不同灰度值出现的次数(或频数)而未反映像素所在位置。
②与图像之间的关系是多对一的映射关系。
一幅图像的直方图基本上可描述图像的概貌,如图像的阴暗状况和对比度等特征都可以通过直方图反映出来。
既然一幅图像的概貌可以通过直方图反映出来,反之,可以通过修改直方图的方法来调整图像的灰度分布情况,因为直方图反映的是一个图像的灰度值的概率统计特征,所以,基于直方图的图像增强技术是以概率统计学理论为基础的,直方图反映的是一个图像的灰度值的概率统计特征。
数字图像处理3-直方图均衡,直方图匹配,空间滤波相关等
![数字图像处理3-直方图均衡,直方图匹配,空间滤波相关等](https://img.taocdn.com/s3/m/2115dc87d1f34693dbef3e2d.png)
Timg(原图) im_1(MATLAB均衡处理) im_2(ps均衡处理)原图的rgb直方图r通道直方图(原图)g通道直方图(原图)b通道直方图(原图)r通道直方图(im_1)g通道直方图(im_1)b通道直方图(im_1)r通道直方图(im_2)g通道直方图(im_2)b通道直方图(im_2)这里找到了一张对比度较低的图像timg,其原本的对比度很低。
之后分别用MATLAB和ps对其进行了直方图均衡,生成了im_1与im_2,可见其处理的效果是有区别的。
MATLAB处理的结果色彩更加艳丽但是相对于原图来说其每个区域的颜色和旁边的区域颜色差别会很巨大,就是使得边界更明显,同时对比度提高了很多。
而ps处理的结果可以看出新的直方图和原直方图相比产生了很多形状上的差别,可见ps的直方图均衡采用了更为复杂的算法。
同时图像对比度以及颜色艳丽的程度得到了提升,但是没有MATLAB处理的效果明显,保持了原图的色调以及部分颜色关系。
Ps中直方图均衡可以一键实现,因此在此不做重点描写,我们来看如何用MATLAB实现这种操作。
MATLAB代码如下:主程序:im=imread('timg.jpg');im_r=change(im(:,:,1));im_g=change(im(:,:,2));im_b=change(im(:,:,3));im1(:,:,1)=im_r;im1(:,:,2)=im_g;im1(:,:,3)=im_b;figure;imshow(im1);imwrite(im1,'im1.jpg');Change函数:function [n] = change(m)n=m;sum=0;for i=0:255for j=1:407for k=1:500if(m(j,k)==i)sum=sum+1;endendendchan=sum/(407*500);chan1=fix(chan*255+0.5);for j=1:407for k=1:500if(m(j,k)==i)n(j,k)=chan1;endendendend[x,xout] = hist(n(:), 0:255);figure;bar(xout, x); xlim([0 255]);MATLAB其实本身有实现直方图均衡效果的函数,这里为了理解算法自己做了这个函数。
图像处理与计算机视觉的基础知识
![图像处理与计算机视觉的基础知识](https://img.taocdn.com/s3/m/69b01d4bf68a6529647d27284b73f242336c31da.png)
图像处理与计算机视觉的基础知识随着计算机技术的飞速发展,图像处理和计算机视觉技术日益成为人们关注的焦点。
图像处理是指对图像进行数字化处理,改变图像的特性或增强图像的质量。
而计算机视觉是通过计算机对图像和视频进行分析和理解,模仿人类的视觉系统来实现某种目标。
图像处理与计算机视觉的基础知识包括图像采集、图像预处理、图像增强、图像压缩、图像分割、特征提取、目标检测和分类等内容。
首先,图像采集是图像处理与计算机视觉的起点。
图像可以通过光电传感器、摄像头或扫描仪等设备采集。
其中,光电传感器是一种将物理量转化为电信号的装置,常见的光电传感器有CCD和CMOS。
摄像头的原理与光电传感器相似。
扫描仪可以将纸质图像转换为数字图像。
其次,图像预处理是为了减少噪声、增加对比度等目的对图像进行预处理的过程。
主要包括去噪、增加对比度、图像平滑等操作。
去噪可以通过滤波操作实现,常见的滤波方法有均值滤波、中值滤波和高斯滤波等。
增加对比度可以通过直方图均衡化等方法实现。
图像平滑可以通过平滑滤波器实现,减少图像中的噪声。
然后,图像增强是为了改善图像质量,使图像更加清晰、鲜艳等。
常见的图像增强方法包括直方图均衡化、直方图匹配、对比度拉伸等。
直方图均衡化是一种调整图像灰度级分布的方法,可以增强图像的对比度。
直方图匹配是通过将目标图像的直方图与参考图像的直方图进行匹配,从而改变图像的特性。
对比度拉伸是根据图像的像素值范围进行非线性拉伸,使得图像的对比度更加明显。
随后,图像压缩是为了减少图像数据量,提高图像存储和传输的效率。
常见的图像压缩算法有无损压缩和有损压缩。
无损压缩算法能保证压缩后的图像与原始图像完全一致,常见的无损压缩算法有LZW算法、RLE算法等。
而有损压缩算法则会在压缩过程中丢失一定的信息,常见的有损压缩算法有JPEG算法和HEVC算法等。
接着,图像分割是将图像划分成若干区域的过程。
图像分割可用于物体检测、图像分析和目标跟踪等应用中。
图像处理基础(8):图像的灰度直方图、直方图均衡化、直方图规定化(匹配)
![图像处理基础(8):图像的灰度直方图、直方图均衡化、直方图规定化(匹配)](https://img.taocdn.com/s3/m/2b9f146a793e0912a21614791711cc7931b77895.png)
图像处理基础(8):图像的灰度直⽅图、直⽅图均衡化、直⽅图规定化(匹配)本⽂主要介绍了灰度直⽅图相关的处理,包括以下⼏个⽅⾯的内容:利⽤OpenCV 计算图像的灰度直⽅图,并绘制直⽅图曲线直⽅图均衡化的原理及实现直⽅图规定化(匹配)的原理及实现图像的灰度直⽅图⼀幅图像由不同灰度值的像素组成,图像中灰度的分布情况是该图像的⼀个重要特征。
图像的灰度直⽅图就描述了图像中灰度分布情况,能够很直观的展⽰出图像中各个灰度级所占的多少。
图像的灰度直⽅图是灰度级的函数,描述的是图像中具有该灰度级的像素的个数:其中,横坐标是灰度级,纵坐标是该灰度级出现的频率。
不过通常会将纵坐标归⼀化到[0,1]区间内,也就是将灰度级出现的频率(像素个数)除以图像中像素的总数。
灰度直⽅图的计算公式如下:p (r k )=n kMN其中,r k 是像素的灰度级,n k 是具有灰度r k 的像素的个数,MN 是图像中总的像素个数。
OpenCV 灰度直⽅图的计算直⽅图的计算是很简单的,⽆⾮是遍历图像的像素,统计每个灰度级的个数。
在OpenCV 中封装了直⽅图的计算函数calcHist ,为了更为通⽤该函数的参数有些复杂,其声明如下:void calcHist( const Mat* images, int nimages,const int* channels, InputArray mask,OutputArray hist, int dims, const int* histSize,const float** ranges, bool uniform = true, bool accumulate = false );该函数能够同时计算多个图像,多个通道,不同灰度范围的灰度直⽅图.其参数如下:images ,输⼊图像的数组,这些图像要有相同⼤⼤⼩,相同的深度(CV_8U CV_16U CV_32F ).nimages ,输⼊图像的个数channels ,要计算直⽅图的通道个数。
图像处理中的灰度直方图匹配算法介绍
![图像处理中的灰度直方图匹配算法介绍](https://img.taocdn.com/s3/m/d2bd67828ad63186bceb19e8b8f67c1cfad6ee91.png)
图像处理中的灰度直方图匹配算法介绍随着数字图像处理技术的不断发展,图像处理的各种应用已经渗透到了我们日常的生活中。
其中,灰度直方图匹配算法是图像处理中的一个非常重要的工具,它可以帮助我们快速地对图像进行灰度级的调整,从而使我们得到更加清晰明亮的图像。
在本文中,我们将会对灰度直方图匹配算法进行介绍,并探讨一些该算法的相关技术和应用。
一、什么是灰度直方图匹配算法?灰度直方图匹配算法是一种常用的图像处理算法,它可以将一张图像的灰度级转换为另一种灰度级。
在灰度直方图匹配算法中,我们利用图像的灰度直方图来判断该图像的灰度级分布情况,然后去匹配一个新的灰度级分布,以达到改变图像灰度级的效果。
二、灰度直方图匹配算法的原理灰度直方图是指图像中各个灰度级的像素点个数的统计数据,它包含了图像的整体亮度分布情况。
灰度直方图匹配算法可以通过将原始图像的灰度级值进行映射,使其变得更加清晰明亮。
在具体实现时,我们可以采用以下步骤来完成灰度直方图匹配算法:1、统计原始图像的灰度直方图,得到其像素点分布情况。
2、统计目标图像的灰度直方图,得到其像素点分布情况。
3、利用原始图像的灰度级和目标图像的灰度级之间的分布关系,对原始图像的每一个像素进行映射。
这一步可以通过一些数学公式来实现,例如线性变换、S形变换等。
4、得到新的映射后的图像,并进行保存。
三、灰度直方图匹配算法的应用灰度直方图匹配算法在图像处理中有着广泛的应用,例如在数字图像矫正、影像亮度调整、图像增强等方面,都可以采用该算法进行处理。
1、数字图像矫正数字图像矫正是图像处理中的一个重要应用。
传统的数字图像矫正方法通常需要进行图像的旋转、平移等操作,而这些操作常常会导致图像的质量下降。
灰度直方图匹配算法可以在数字图像矫正中起到重要的作用,通过对原始图像和目标图像进行灰度直方图匹配,可以使图像得到更加精确的矫正效果。
2、影像亮度调整影像亮度调整是指对影像中的亮度进行调整,以实现影像明暗的调整。
数字图像处理中的直方图均衡化使用注意事项
![数字图像处理中的直方图均衡化使用注意事项](https://img.taocdn.com/s3/m/37344713ac02de80d4d8d15abe23482fb4da0290.png)
数字图像处理中的直方图均衡化使用注意事项直方图均衡化是一种通过分布调整来改善图像对比度的方法。
它通过重新分布图像的像素值以增强其视觉效果。
在数字图像处理中,直方图均衡化是一项常用的技术,但在使用过程中需要注意以下几个方面。
首先,直方图均衡化可能会导致图像细节丢失的问题。
因为直方图均衡化会根据像素值的分布进行调整,从而扩展像素值的范围,使得亮度范围更广。
但这也可能导致低对比度区域的细节消失,从而影响图像细节。
因此,在进行直方图均衡化时,应该密切关注图像的细节信息,尽量避免过度调整图像的对比度。
其次,直方图均衡化可能引起噪声的增加。
在直方图均衡化的过程中,图像的亮度分布被调整,可能会增加图像的噪声。
这是因为噪声通常与图像的低亮度区域有关,当低亮度区域被调整时,噪声也可能被放大。
为了减少噪声的影响,可以在均衡化之前对图像进行去噪处理,或者采用自适应的直方图均衡化方法,以避免过度增加图像噪声。
另外,直方图均衡化也可能导致图像的颜色失真问题。
因为直方图均衡化是基于像素值的灰度分布进行调整,对彩色图像来说,它可能会改变图像的颜色分布,从而造成颜色失真。
为了避免这种情况,可以在进行直方图均衡化前将图像转换为HSV颜色空间,并只对亮度(Value)通道进行均衡化,这样可以避免颜色的偏移。
此外,直方图均衡化的效果可能受到图像的动态范围限制。
在某些情况下,图像的动态范围可能不足以支持完整的直方图均衡化。
比如,当图像的某些区域非常亮或非常暗时,直方图可能会在动态范围两端产生剧烈的波动,从而导致图像的细节丢失或噪声增加。
为了解决这个问题,可以采用自适应的直方图均衡化方法,以根据图像的局部动态范围来进行调整,减少对整体图像的影响。
最后,直方图均衡化的选择需要根据具体的应用需求来确定。
直方图均衡化可以改善图像的对比度,使图像更加清晰和易于处理。
但对于一些特定的图像处理任务,如目标检测、图像识别等,直方图均衡化可能并不适用。
测绘技术中的数据配准方法介绍
![测绘技术中的数据配准方法介绍](https://img.taocdn.com/s3/m/f8ed0f68abea998fcc22bcd126fff705cc175c2a.png)
测绘技术中的数据配准方法介绍测绘技术是指通过测量和观测现实世界中的地理要素和地理现象,利用一定的方法和技术手段,将其转化为数学模型并进行编码和表示的一门学科。
数据配准是测绘技术中的重要环节,它是指将从不同传感器、不同时间或不同空间分辨率获取的遥感影像或地理数据进行对齐和匹配,以便进一步进行分析和应用。
下面将介绍几种常见的数据配准方法。
1. 直方图匹配法(Histogram Matching)直方图匹配法通过比较两幅遥感影像的像元灰度直方图,将待配准影像的像元灰度值映射到参考影像的像元灰度值上。
该方法的基本思想是使待配准影像的像元灰度分布与参考影像的像元灰度分布尽量相似,从而达到数据配准的目的。
直方图匹配法的优点是简单易用,但在存在较大的地物变化或图像质量较差的情况下,效果可能不尽如人意。
2. 特征点匹配法(Feature Point Matching)特征点匹配法是通过提取图像中具有唯一性和鲁棒性的特征点,并将其在不同影像中进行匹配,最终确定两幅影像之间的几何关系。
常用的特征点匹配算法包括SIFT、SURF和ORB等。
特征点匹配法适用于存在较大几何变形的影像配准,如地表山脉、河流等地物。
3. 惯性导航系统(Inertial Navigation System)辅助配准法惯性导航系统辅助配准法是通过利用一种高精度的惯性测量单元(Inertial Measurement Unit, IMU),测量和记录载具在三维空间中的加速度和角速度信息,并与卫星定位系统(如GPS)进行辅助配准。
该方法可以提高影像的空间准确性,并减小传感器误差对配准精度的影响。
惯性导航系统辅助配准法在航空影像和卫星影像中得到了广泛应用。
4. 数据融合法(Data Fusion)数据融合法是指将来自不同传感器的多幅影像或地理数据进行综合,以获得更全面和准确的地理信息。
数据融合法中的数据配准是其中的关键步骤,它通过对多幅影像进行几何和光谱上的一致性校正,实现数据在时空域的对齐。
(精品)数字图像处理实验报告--直方图规定化
![(精品)数字图像处理实验报告--直方图规定化](https://img.taocdn.com/s3/m/ece725b04afe04a1b171de0d.png)
数字图像处理实验报告直方图匹配规定化直方图均衡化能够自动增强整个图像的对比度,但它的具体增强效果不容易控制,处理的结果总是得到全局均匀化的直方图。
实际上有时需要变换直方图,使之成为某个特定的形状,从而有选择地增强某个灰度值范围内的对比度。
这时可以采用比较灵活的直方图规定化。
一般来说正确地选择规定化的函数可以获得比直方图均衡化更好的效果。
所谓直方图规定化,就是通过一个灰度映像函数,将原灰度直方图改造成所希望的直方图。
所以,直方图修正的关键就是灰度映像函数。
直方图匹配方法主要有3个步骤(这里设M和N分别为原始图和规定图中的灰度级数,且只考虑N≤M的情况):(1) 如同均衡化方法中,对原始图的直方图进行灰度均衡化:(2) 规定需要的直方图,并计算能使规定的直方图均衡化的变换:(3) 将第1个步骤得到的变换反转过来,即将原始直方图对应映射到规定的直方图,也就是将所有pf(fi)对应到pu(uj)去。
一、A图直方图规定B图Matlab程序:%直方图规定化clear allA=imread('C:\Users\hp\Desktop\A.tif'); %读入A图像imshow(A) %显示出来title('输入的A图像')%绘制直方图[m,n]=size(A); %测量图像尺寸B=zeros(1,256); %预创建存放灰度出现概率的向量for k=0:255B(k+1)=length(find(A==k))/(m*n); %计算每级灰度出现的概率,将其存入B中相应位置endfigure,bar(0:255,B,'g'); %绘制直方图title('A图像直方图')xlabel('灰度值')ylabel('出现概率')axis([0,260,0,0.015])C=imread('C:\Users\hp\Desktop\B.tif');%读入B图像imshow(C) %显示出来title('输入的B图像')%绘制直方图[m,n]=size(C); %测量图像尺寸D=zeros(1,256); %预创建存放灰度出现概率的向量for k=0:255D(k+1)=length(find(C==k))/(m*n); %计算每级灰度出现的概率,将其存入D中相应位置endfigure,bar(0:255,D,'g'); %绘制直方图title('B图像直方图')xlabel('灰度值')ylabel('出现概率')axis([0,260,0,0.015])S1=zeros(1,256);for i=1:256for j=1:iS1(i)=D(j)+S1(i); %计算B灰度图累计直方图endendcounts=Bfigure,bar(0:255,counts,'r')title('A图像直方图 ')S2=zeros(1,256);for i=1:256for j=1:iS2(i)=counts(j)+S2(i);endend; %"累计"规定化直方图%对比直方图,找到相差最小的灰度级for i=1:256for j=1:255if S1(j)<=S2(i)&S1(j+1)>=S2(i)if abs(S1(j)-S2(i))<=abs(S1(j+1)-S2(i)) T(i)=j;else T(i)=j+1;endendendend%确定变换关系,重组直方图H=zeros(1,256);H(1)=S2(1);for i=2:255if T(i-1)>0for k=(T(i-1)+1):T(i)H(i)=H(i)+D(k);endelse H(i)=0;endendfigure,bar(0:255,H,'g') %显示规定化后的直方图title('A规定B后的直方图')xlabel('灰度值')ylabel('出现概率')axis([0,260,0,0.6])%显示规定图PA=C; %将各个像素归一化后的灰度值赋给这个像素for i=1:mfor j=1:nfor k=2:255if T(k-1)<=C(i,j)&C(i,j)<=T(k)PA(i,j)=k;break;endendendendfigure,imshow(PA) %显示规定化后的图像title('A规定B后图像')imwrite(PA,'guidinghua.bmp');二、用已知直方图规定A图规定灰度为[zeros(1,49),0.3,zeros(1,49),0.1,zeros(1,49),0.2,zeros(1,49),0.1,zeros(1,49 ),0.2,zeros(1,49),0.1]Matlab程序:clear allA=imread('C:\Users\hp\Desktop\B.tif'); %读入A图像imshow(A) %显示出来title('输入的A图像')%绘制直方图[m,n]=size(A); %测量图像尺寸B=zeros(1,256); %预创建存放灰度出现概率的向量for k=0:255B(k+1)=length(find(A==k))/(m*n); %计算每级灰度出现的概率,将其存入B中相应位置endfigure,bar(0:255,B,'g'); %绘制直方图title('A图像直方图')xlabel('灰度值')ylabel('出现概率')axis([0,260,0,0.015])S1=zeros(1,256);for i=1:256for j=1:iS1(i)=B(j)+S1(i); %计算原灰度图累计直方图endendcounts=[zeros(1,49),0.3,zeros(1,49),0.1,zeros(1,49),0.2,zeros(1,49),0.1,zer os(1,49),0.2,zeros(1,49),0.1];%规定化直方图figure,bar(1:300,counts,'r')title('规定化直方图')S2=zeros(1,256);for i=1:256for j=1:iS2(i)=counts(j)+S2(i);endend; %"累计"规定化直方图%对比直方图,找到相差最小的灰度级for i=1:256for j=1:256if S1(j)<=S2(i)&S1(j+1)>=S2(i)if abs(S1(j)-S2(i))<=abs(S1(j+1)-S2(i)) T(i)=j;else T(i)=j+1;endendendend%确定变换关系,重组直方图H=zeros(1,256);H(1)=S2(1);for i=2:256if T(i-1)>0for k=(T(i-1)+1):T(i)H(i)=H(i)+B(k);endelse H(i)=0;endendfigure,bar(0:255,H,'g') %显示规定化后的直方图title('规定化后的直方图')xlabel('灰度值')ylabel('出现概率')axis([0,260,0,0.6])%显示规定图PA=A; %将各个像素归一化后的灰度值赋给这个像素for i=1:mfor j=1:nfor k=2:256if T(k-1)<=A(i,j)&A(i,j)<=T(k)PA(i,j)=k;break;endendendendfigure,imshow(PA) %显示规定化后的图像title('规定化后图像')imwrite(PA,'guidinghua.bmp');。
直方图匹配原理
![直方图匹配原理](https://img.taocdn.com/s3/m/9cf634dff71fb7360b4c2e3f5727a5e9856a270a.png)
直方图匹配是一种基于图像的机器视觉技术,在安防、过程控制、机
器人等行业领域得到广泛应用。
主要用于解决待识别物体的大小、形状、位置等特征识别问题。
直方图匹配的基本原理是通过分析从图像中获取的所有像素点的亮度
分布,用一个合适的直方图模型描述,然后再根据图像特定值来进行
直方图匹配。
在直方图匹配过程中,会得到匹配度,根据匹配度,就
可以对对象进行判断。
直方图匹配一般使用曼哈顿距离作为相似度度量公式。
曼哈顿距离是
两点距离的绝对值,称为曼哈顿距离,它表示两点之间的距离和所有
维度的坐标差之和。
根据这个绝对距离的相等性,任何变化的量纲都
不会影响距离的计算结果:对于任意误差,正距离和负距离也能够抵消。
曼哈顿距离又叫城市区块距离,它表示由笛卡尔坐标系中两点之间的
曼哈顿距离,曼哈顿距离有效地利用了像素点的亮度值,能有效应用
在图像处理过程中。
曼哈顿距离可以根据两个直方图的相对密集程度,
来评估两个图像的相似程度,可给出一个较精准的结果。
直方图匹配的价值不仅仅体现在一般的图像处理领域中,还可以应用
于机器人、建筑自动化、人类识别分析等。
如通过识别不同的建筑物
形状,颜色等特征,为自动导航提供相应的定位,或者通过自动对不
同人员形象特征进行匹配,进行安防处理。
可以总结,直方图匹配技术可以根据图像中所有像素点的亮度分布,
使用曼哈顿距离给出最相似或者定位或者识别的结果,具有极大的价值,在很多行业得到了广泛应用。
任务2 遥感影像的辐射增强_直方图匹配.
![任务2 遥感影像的辐射增强_直方图匹配.](https://img.taocdn.com/s3/m/f78227d40242a8956bece4d9.png)
03 结果展示
直方图匹配结果如下图所示:
原始图像
参考图像
直方图匹配后图像
03 结果展示
经过直方图匹配处理后的影像与参照影像直 方图分别如下图所示:
详见该知识点视频!
林业遥感技术
项目二 遥感影像增强处理
任务二 遥感影像的辐射增强
知识点九 直方图匹配
主要内容
01 直方图匹配原理 02 直方图匹配操作 03 结果展示
01 直方图匹配原理
直方图匹配 (Histogram Match) 是对图像查找表 进行数学变换,使一幅图像某个波段的直方图与另一幅图 像对应波段类似,或使一幅图像所有波段的直方图与另一 幅图像所有对应波段类似。直方图匹配经常作为相邻图像 拼接或应用多时相遥感图像进行动态变化研究的预处理工 作,通过直方图匹配可以部分消除由于太阳高度角或大气 影响造成的相邻图像的效果差异。
02 直方图匹配操作
在 ERDAS 图标面板工具条,单击 Interpreter 图标 → Radiometric Enhancement→Histogram Matching 命令,打开 Histogram Matching 对话框:
02 直方图匹配操作
在 Histogram Matching 对话框中,主要设置下列参数: •输入文件; •匹配文件; •匹配波段; •输出文件;
Matlab中的图像匹配和配准方法
![Matlab中的图像匹配和配准方法](https://img.taocdn.com/s3/m/0198e790d0f34693daef5ef7ba0d4a7302766ce1.png)
Matlab中的图像匹配和配准方法引言在当今数字图像处理和计算机视觉的领域中,图像匹配和配准是非常重要的任务。
图像匹配和配准的目的是找到两幅或多幅图像之间的对应关系,以实现图像间的对比、分析和融合等应用。
Matlab作为一种常用的科学计算和图像处理工具,提供了许多强大的函数和工具箱,用于实现图像匹配和配准。
本文将介绍Matlab中的几种常见的图像匹配和配准方法,并分析其优缺点以及适用场景。
1. 直方图匹配直方图匹配是一种简单但有效的图像匹配方法。
其原理是通过将目标图像的灰度直方图调整为与参考图像的灰度直方图相似,从而实现两幅图像的对比。
在Matlab中,可以使用“imhistmatch”函数来实现直方图匹配。
该函数通过计算参考图像和目标图像的灰度直方图,并将目标图像的灰度值调整为与参考图像的灰度值分布相似的方式完成匹配。
直方图匹配的优点在于简单易懂、计算快速,并且适用于大多数图像配准问题。
然而,直方图匹配方法无法处理图像变换导致的几何形变。
此外,当参考图像和目标图像的灰度分布不一致时,直方图匹配可能会产生不理想的结果。
2. 特征点匹配特征点匹配是一种基于图像局部特征的匹配方法。
其主要思想是在参考图像和目标图像中提取出一组特征点,并通过计算特征点间的相似度来寻找两幅图像之间的对应关系。
Matlab中提供了多种特征点提取和匹配函数,如“detectSURFFeatures”和“matchFeatures”。
特征点匹配的优点在于对图像的几何变换具有较好的鲁棒性,并且可以处理较大的图像变形。
然而,特征点匹配方法对图像的光照变化、噪声干扰和遮挡等问题敏感,可能会导致匹配结果不准确。
3. 基于互信息的配准基于互信息的配准是一种常用的图像配准方法,其基本原理是通过最大化两幅图像之间的互信息来确定其几何变换关系。
在Matlab中,可以使用“imregister”函数来实现基于互信息的图像配准。
该函数通过优化互信息度量函数,寻找最优的图像变换参数,从而实现图像的配准。
如何解决计算机视觉技术中的图像配准问题
![如何解决计算机视觉技术中的图像配准问题](https://img.taocdn.com/s3/m/a4c77a61bdd126fff705cc1755270722192e59da.png)
如何解决计算机视觉技术中的图像配准问题图像配准是计算机视觉技术中的一个重要任务,它的目标是将多个图像对齐到同一个坐标系中,使它们能够进行准确的比较和分析。
在许多实际应用中,如遥感图像处理、医学影像诊断和人脸识别等领域,图像配准都起着至关重要的作用。
然而,由于图像间的变形、旋转、平移和尺度变换等因素,图像配准一直是一个具有挑战性的问题。
为了解决图像配准问题,许多方法和算法被提出并取得了显著的进展。
下面我将介绍几种常见的图像配准方法:1. 特征点匹配法:特征点是图像中具有独特性质的点,如角点、边缘点等。
特征点匹配法通过检测和匹配图像中的特征点来实现图像配准。
该方法首先在两幅图像中提取特征点,然后根据特征点的位置和描述子信息进行匹配,并计算出图像之间的变换矩阵。
特征点匹配方法在处理小尺度的图像配准任务上表现出色,但对于大尺度变换和遮挡较多的图像配准问题仍然存在一定的挑战。
2. 直方图匹配法:直方图是图像中各个灰度级出现的频率统计图。
直方图匹配法通过比较图像的直方图来实现图像配准。
该方法首先计算出两幅图像的直方图,并进行直方图均衡化,使它们的灰度值分布相似。
然后,通过计算直方图的差异,找到图像之间的变换矩阵。
直方图匹配方法简单快速,对于灰度级较少的简单图像配准任务效果较好,但在处理具有复杂纹理和背景的图像时可能会受到噪声和光照变化的影响。
3. 基于特征描述子的方法:特征描述子是对图像中特征点局部区域进行表示和描述的向量。
基于特征描述子的图像配准方法通过提取和匹配图像中的特征点及其描述子来实现图像配准。
该方法首先在两幅图像中提取特征点,并计算出它们的描述子。
然后,通过比较和匹配特征点的描述子,找到图像之间的变换矩阵。
基于特征描述子的方法具有较强的鲁棒性和稳定性,在处理大尺度变形和遮挡较多的图像配准问题上表现出色。
除了上述方法外,还有一些其他的图像配准方法,如基于区域的方法、基于梯度的方法和基于模板匹配的方法等。
直方图处理(均衡化与匹配)解析
![直方图处理(均衡化与匹配)解析](https://img.taocdn.com/s3/m/cfc1e411a32d7375a5178002.png)
0 r
上式表明,当变换函数为r的累积直方图函数 时,能达到直方图均衡化的目的。
对于离散的数字图像,用频率来代替概率 , 则 变换函数T(rk)的离散形式可表示为:
sk T (rk ) pr (rj )
j 0 j 0 k k
nj n
上式表明,均衡后各像素的灰度值 sk 可直接由 原图像的直方图算出。
一幅图像的sk与rk之间的关系称为该图像的累积灰 度直方图。
Pr(rk) 1.0 S(rk)
rk 1.0 1.0
rk
直方图均衡化的计算 直方图均衡化过程(算法):
(1) 列出原始图灰度级rk;
0 1 1 2
0 1 1 2
3
3 3 5 7 7
3
3 3 5 7 7
3
3 3 5 7 7
3
3 3 5 7 7
3
3 3 5 7 7
3
3 3 5 7 7
3
3 3 5 7 7
3
3 3 5 7 7
3
3 3 5 7 7
3
3 3 5 7 7
k rk , k 0,1, , L 1 L 1 求得:rk=0,1/7,2/7, …, 6/7
3.3 直方图处理
一、灰度直方图 直方像图反映了图的像素的灰度分布是反映一幅图像 中的灰度级与出现这种灰度级的像素的概率之间关系 的图形。 直方图的横坐标为灰度级(用r表示),纵坐标是具 有该灰度级的像素个数或出现此灰度级的概率P(rk)。 设N(=a×b)为一幅图像中像素总数,nk为第k级灰 度的像素数;r k表示第k个灰度级。则: P(rk)= nk /N (归一化后k级灰度像素数) 定义:反映各灰度级出现频数的分布情况,进而反映 图像对(清晰)度,但不反映各灰度级的空间位置分 布。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if (srcBmp == null || matchingBmp == null) {
dstBmp = null;
//R
for (int i = 0; i < 256; i++) {
diffBR = 1;
for (int j = kR; j < 256; j++) {
//找到两个累计分布函数中最相似的位置
diffAR = Math.Abs(srcCpR[i] - matchCpR[j]);
if (diffAR - diffBR < 1.0E-08) {//当两概率之差小于0.000000001时可近似认为相等
double[] srcCpG = null;
double[] srcCpB = null;
double[] matchCpB = null;
double[] matchCpG = null;
double[] matchCpR = null;
//分别计算两幅图像的累计概率分布
getCumulativeProbabilityRGB(tempSrcBmp, out srcCpR, out srcCpG, out srcCpB);
tempG[0] = hG[0];
tempB[0] = hB[0];
}
cpR[i] = (tempR[i] / totalPxl);
cpG[i] = (tempG[i] / totalPxl);
cpB[i] = (tempB[i] / totalPxl);
}
}
/// <summary>
///获取图像三个分量的直方图数据
hB[ptr[j * 3]]++;
hG[ptr[j * 3 + 1]]++;
hR[ptr[j * 3 + 2]]++;
}
}
}
srcBmp.UnlockBits(bmpData);
return;
}
for (int i = 0; i < 256; i++) {
if (i != 0) {
tempR[i] = tempR[i - 1] + hR[i];
tempG[i] = tempG[i - 1] + hG[i];
tempB[i] = tempB[i - 1] + hB[i];
}
else {
tempR[0] = hR[0];
hB = new int[256];
hG = new int[256];
BitmapData bmpData = srcBmp.LockBits(new Rectangle(0, 0, srcBmp.Width, srcBmp.Height), ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
}
//映射变换
BitmapData bmpData = dstBmp.LockBits(new Rectangle(0, 0, dstBmp.Width, dstBmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb);
unsafe {
return;
}
cpR = new double[256];
cpG = new double[256];
cpB = new double[256];
int[] hR = null;
int[] hG = null;
int[] hB = null;
double[] tempR = new double[256];
ptr[j * 3 + 1] = mapPixelG[ptr[j * 3 + 1]];
ptr[j * 3] = mapPixelB[ptr[j * 3]];
}
}
}
dstBmp.UnlockBits(bmpData);
return true;
}
/// <summary>
///计算各个图像分量的累计概率分布
private static void getCumulativeProbabilityRGB(Bitmap srcBmp, out double[] cpR, out double[] cpG, out double[] cpB) {
if (srcBmp == null) {
cpB = cpG = cpR = null;
diffBR = diffAR;
//记录下此时的灰度级
kR = (byte)j;
}
else {
kR = (byte)Math.Abs(j - 1);
break;
}
}
if (kR == 255) {
for (int l = i; l < 256; l++) {
mapPixelR[l] = kR;
}
break;
return false;
}
dstBmp = new Bitmap(srcBmp);
Bitmap tempSrcBmp = new Bitmap(srcBmp);
Bitmap tempMatchingBmp = new Bitmap(matchingBmp);
double[] srcCpR = null;
直方图匹配,又称直方图规定化,即变换原图的直方图为规定的某种形式的直方图,从而使两幅图像具有类似的色调和反差。直方图匹配属于非线性点运算。
直方图规定化的原理:对两个直方图都做均衡化,变成相同的归一化的均匀直方图,以此均匀直方图为媒介,再对参考图像做均衡化的逆运算
/// <summary>
///直方图匹配
/// </summary>
/// <param name="srcBmp">原始图像</param>
/// <param name="matchingBmp">匹配图像</param>
/// <param name="dstBmp">处理后图像</param>
/// <returns>处理成功true失败false</returns>
unsafe {
byte* ptr = null;
for (int i = 0; i < srcBmp.Height; i++) {
ptr = (byte*)bmpData.Scan0 + i * bmpData.Stride;
for (int j = 0; j < srcBmp.Width; j++) {
/// </summary>
/// <param name="srcBmp">原始图像</param>
/// <param name="cpR">R分量累计概率分布</param>
/// <param name="cpG">G分量累计概率分布</param>
/// <param name="cpB">B分量累计概率分布</param>
byte kR = 0, kG = 0, kB = 0;
//逆映射函数
byte[] mapPixelR = new byte[256];
byte[] mapPixelG = new byte[256];
byte[] mapPixelB = new byte[256];
//分别计算RGB三个分量的逆映射函数
diffBG = diffAG;
kG = (byte)j;
}
else {
kG = (byte)Math.Abs(j - 1);
break;
}
}
if (kG == 255) {
for (int l = i; l < 256; l++) {
mapPixelG[l] = kG;
}
break;
}
mapPixelG[i] = kG;
double[] tempG = new double[256];
double[] tempB = new double[256];
getHistogramRGB(srcBmp, out hR, out hG, out hB);
int totalPxl = srcBmp.Width * srcBmp.Height;
}
//B
for (int i = 0; i < 256; i++) {
diffBB = 1;
for (int j = kB; j < 256; j++) {
diffAB = Math.Abs(srcCpB[i] - matchCpB[j]);
if (diffAB - diffBB < 1.0E-08) {
byte* ptr = null;
for (int i = 0; i < dstBmp.Height; i++) {
ptr = (byte*)bmpData.Scan0 + i * bmpData.Stride;