资源简介
图像亮度增强,采用各种非线性函数变换,包括幂函数、指数函数、对数函数等等,以及直方图均衡化方法。
代码片段和文件信息
%函数变换法的思想是通过拉伸暗区并压缩亮区,从而达到亮度增强的目的
%直方图均衡化的思想是通过改变灰度分布来增强对比度
I=imread(‘lena.jpg‘); %图片读入
[heightwidth] = size(I);
model=input(‘请选择变换函数:1.方根;2.对数函数;3.指数函数;4.幂函数;5.直方图均衡化:‘);
if(model==5)
figure;%显示
subplot(221);imshow(I);title(‘原图‘);
subplot(223);imhist(I);title(‘原图直方图‘);%显示原始图像直方图
NumPixel=zeros(1256);%统计各灰度数目,共256个灰度级
for i=1:height
for j=1: width
NumPixel(I(ij)+1) = NumPixel(I(ij)+1)+1;%对应灰度值像素点数量增加1
end
end
%计算灰度分布密度
ProbPixel = zeros(1256);
for i = 1:256
ProbPixel(i) = NumPixel(i) / (height * width * 1.0);
end
%计算累计直方图分布
CumuPixel = zeros(1256);
for i = 1:256
if i == 1
CumuPixel(i)=ProbPixel(i);
else
CumuPixel(i)=CumuPixel(i-1)+ProbPixel(i);
end
end
%累计分布取整
CumuPixel =uint8(255 .*CumuPixel+0.5);
%对灰度值进行映射(均衡化)
for i=1:height
for j=1:width
I(ij)=CumuPixel(I(ij)+1);
end
end
subplot(222);imshow(I);title(‘直方图均衡化后的图像‘);
subplot(224);imhist(I);title(‘直方图均衡化的直方图‘);
imwrite(I‘直方图均衡化后的图像.jpg‘);%写新图
else
switch(model)
case 3
a_exponent=input(‘请输入大于1的底数(建议为1.01):‘);
c
评论
共有 条评论