【MATLAB图像融合】[10]直方图匹配法的IHS变换图像融合

时间:2024-06-22 22:14:17 编辑: 来源:

基于文章【9】的图像图匹图像步进方法

在这里插入图片描述

这是使用直接替换法所产生的融合图像,发现融合图像的融合融合亮度好像不太正常,这是直方因为不同的传感器具有不同的感光/等的传感特性差异。这些差异隐藏在图像当中,配法人眼看不出来这样的变换特性,但是图像图匹图像当对它们进行处理之后,问题就会暴露出来。融合融合所以在这一章中,直方需要使用直方图匹配法和IHS变换的配法方法做一个衔接。先放出实验的变换结果吧:

在这里插入图片描述

直方图匹配

网上对直方图匹配的方法解释有许多,我本人对数学表示的图像图匹图像方法非常喜欢,但是融合融合,感觉没看明白,直方懵懵的配法。

好在,变换像素是离散的。。。Δx,Δy都是等于1,这就很好算了有没有。。所以这里介绍的直方图匹配原理,我就不用数学语言描述了,改用图像+实例讲解。!

在这里插入图片描述

这张图就是直方图了,它代表是什么呢?横坐标是0~255,代表256级的灰度;纵坐标是该等级灰度的像素点占整体像素点的比例。

显然,将0~255的纵坐标值加起来,等于1。这个直方图其实就是概率的分布,也是图像的传感器特性。

这里我们用双峰函数为例,当做B图像进行演示。

在这里插入图片描述

它的曲线和我们的图像的曲线显然不同,直方图匹配的目的就是让图像A的概率分布变得和B一样,具备B的传感器特性。

在这里插入图片描述

经过直方图匹配后,A图像具有和B相似的概率分布了。这样的变化之后,再进行IHS变换,就会获得良好的融合效果了。

直方图匹配原理

那么如何让A,B两图像的概率分布相似呢?算法思想是很简单的:

1、计算A,B两个图片的概率。

2、计算累积概率(做到此步可以完成直方图均衡)。

3、在A的累积概率中寻找B的匹配项,也就是得到的匹配为B在A中的匹配。,得到B在A上的映射。

4、第3步的作用就是让累积概率进行相似化,调整累计概率,这种调整是单向的,不存在灰度值高的像素比灰度值低的像素更早被调整至某一灰度。

5、根据3进行灰度替换即可。

如果需要知道得非常清晰,还是建议去看看数学公式,可能才知道为什么要这样做。

在这里插入图片描述

MATLAB实现

1、计算概率,累积概率。

A=imread();A=double(A);[m,n]=size(A);Pa=zeros(1,256);             %计算概率分布for i=1:m    for j=1:n        t=A(i,j);        Pa(1,t+1)=Pa(1,t+1)+1;    endendPa=Pa./(m*n);F1=cumsum(Pa);                %计算累积概率

2、替换灰度

for i=1:256    temp{i}=F1-F2(1,i);    temp{i}=abs(temp{i});          %因为要找距离最近的点,所以取绝对值    [x,num(i)]=min(temp{i});   %找到两个累积直方图距离最近的点endout=zeros(m,n);for i=1:m   for j=1:n      out(i,j)=num(B(i,j)+1)-1;    %由原图的灰度通过索引映射到新的灰度   endend

上述代码片无法直接运行,需要结合文章【9】以及自己修改才可以用。我不是不放源码,是因为我做完后不小心删掉了-,-,这代码写了有段时间不好复现了,所以上面那些都是直接打出来的代码,新鲜出炉,没连接去运行。但是拿着用是没问题的,算法思想和步骤没错的,嗯。如果有人运行了跑不了再告诉我吧。

总结

1、IHS处理色彩的问题很好用,比较新的论文也有围绕它们来做的,但是不在方法上创新,想着在应用上找不同。。有点下乘了。

2、只实现了最基本的功能,可以改进的地方有许多,举例来说:①、min系统函数的调用可以改进提高匹配精度吧。②、代码重复度高,几个for循环和A,B两幅图的相同操作可以用同一个函数实现。③、IHS2RGB的变换公式可以改下吧,把1/3,1/3,1/3改成1/6,2/3,1/6也许视觉效果会更好。④、等等改进。

下面的进度回到传统小波变换。

p.s.学数学好痛苦0.0