MATLAB图像均衡

项目场景:MATLAB图像均衡

问题描述:

影响图像的视觉效果的一个重要的因素就是图像的对比度,如果图像的对比度很小,表现在直方图当中就是灰度值偏向一侧,对比度小,就会使得图像看起来要么很暗要么很亮。直方图均衡的本质是灰度值映射。而映射函数可以由分布曲线(累积直方图)得到。提高图像对比度的变换函数f(x)需要满足一下条件:f(x)在0<=x<=L−1上单调递增(不要求严格单调递增),其中L表示灰度级(L=256),f(x)的范围是[0,L−1]。图像直方图完全均匀分布的时候,此时图像的熵是最大的(随机变量每个值的概率都相同时,概率最大),图像对比度是最大的。有一个重要的函数,能够满足上面的条件:
在这里插入图片描述

px(x)表示概率密度函数,在离散的图像中,表示直方图的每个灰度级的概率。可以使用求和代替积分,差分代替微分,所以上述的变换函数就是:在这里插入图片描述
例如均衡前后直方图为:

在这里插入图片描述

srcImageHit=imread('E:\DigitalImage\直方图\TestImageHit.jpg');%需要均衡处理的图像
subplot(2,3,1);
imshow(srcImageHit);
title('原图');
[MH,NH,CH]=size(srcImageHit);%获取图像参数
frqImage=zeros(3,256);
grayValue=0:1:255;
for rgb=1:3
for i=1:MH
	for j=1:NH
		for num=1:256
			if(srcImageHit(i,j,rgb)==num-1)
				frqImage(rgb,num)=frqImage(rgb,num)+1;
				break;
			end
		end
	end
end
end

frqImage=frqImage/MH/NH;
subplot(2,3,2);
bar(grayValue,frqImage(1,:));
xlim([0,255]);
title('原图R通道灰度直方图');
subplot(2,3,3);
bar(grayValue,frqImage(2,:));
xlim([0,255]);
title('原图G通道灰度直方图');
subplot(2,3,5);
bar(grayValue,frqImage(3,:));
xlim([0,255]);
title('原图B通道灰度直方图');

figure;
%图像均衡化处理
s = zeros(3,256);
for rgb=1:3
for i = 1:256
	for j = 1:i
		s(rgb,i) = s(rgb,i)+255*frqImage(rgb,j);
	end
end
s(rgb,:) = uint8(s(rgb,:));
for i = 1:MH
	for j = 1:NH
		for k = 1:256
			if srcImageHit(i,j,rgb) == k-1
				srcImageHit(i,j,rgb) = s(rgb,k);
				break;
			end
		end
	end
end
end

subplot(2,3,1);
imshow(srcImageHit);
title('均衡化后的图像');
imwrite(srcImageHit,'E:\DigitalImage\直方图\JTestImageHit.jpg');
frqImage=zeros(3,256);
	
grayValue=0:1:255;
for rgb=1:3
for i=1:MH
	for j=1:NH
		for num=1:256
			if(srcImageHit(i,j,rgb)==num-1)
				frqImage(rgb,num)=frqImage(rgb,num)+1;
				break;
			end
		end
	end
end
end

frqImage=frqImage/MH/NH;
	
subplot(2,3,2);
bar(grayValue,frqImage(1,:));
xlim([0,255]);
title('均衡图R通道灰度直方图');
subplot(2,3,3);
bar(grayValue,frqImage(2,:));
xlim([0,255]);
title('均衡图G通道灰度直方图');
subplot(2,3,5);
bar(grayValue,frqImage(3,:));
xlim([0,255]);
title('均衡图B通道灰度直方图');

实验结果:

在这里插入图片描述
在这里插入图片描述


注:本次程序代码中直方图的绘制,图像二值化方法等部分的内容可以调用matlab相关函数,由于该部分代码由我自己编写,所以代码相对冗杂,大家只需要了解其数学算法原理即可。**

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值