python直方图均衡化代码_基于matlab的直方图均衡化代码

基于matlab的直方图均衡化代码

2007-04-15 20:15

clear all

%一,图像的预处理,读入彩***像将其灰度化

PS=imread('1.jpg');                 %读入JPG彩***像文件

imshow(PS)                                  %显示出来

title('输入的彩色JPG图像')

imwrite(rgb2gray(PS),'PicSampleGray.bmp'); %将彩***片灰度化并保存

PS=rgb2gray(PS);                            %灰度化后的数据存入数组

%二,绘制直方图

[m,n]=size(PS);                             %测量图像尺寸参数

GP=zeros(1,256);                            %预创建存放灰度出现概率的向量

for k=0:255

GP(k+1)=length(find(PS==k))/(m*n);      %计算每级灰度出现的概率,将其存入GP中相应位置

end

figure,bar(0:255,GP,'g')                    %绘制直方图

title('原图像直方图')

xlabel('灰度值')

ylabel('出现概率')

%三,直方图均衡化

S1=zeros(1,256);

for i=1:256

for j=1:i

S1(i)=GP(j)+S1(i);                 %计算Sk

end

end

S2=round((S1*256)+0.5);                          %将Sk归到相近级的灰度

for i=1:256

GPeq(i)=sum(GP(find(S2==i)));           %计算现有每个灰度级出现的概率

end

figure,bar(0:255,GPeq,'b')                  %显示均衡化后的直方图

title('均衡化后的直方图')

xlabel('灰度值')

ylabel('出现概率')

%四,图像均衡化

PA=PS;

for i=0:255

PA(find(PS==i))=S2(i+1);                %将各个像素归一化后的灰度值赋给这个像素

end

figure,imshow(PA)                           %显示均衡化后的图像

title('均衡化后图像')

imwrite(PA,'PicEqual.bmp');

用imadjust函数

imadjust:调整图像的强度值或颜色用法形式:

J = imadjust(I)

J = imadjust(I,[low_in; high_in],[low_out; high_out])

J = imadjust(I,[low_in; high_in],[low_out; high_out],gamma)

newmap = imadjust(map,[low_in; high_in],[low_out; high_out],gamma)

RGB2 = imadjust(RGB1,...)

用法说明:

J = imadjust(I)将灰度图像I中的亮度值映射到J中的新值并使1%的数据是在低高强度和饱和,这增加了输出图像J的对比度值;

此用法相当于imadjust(I,stretchlim(I)).

J = imadjust(I,[low_in; high_in],[low_out; high_out])   将图像I中的亮度值映射到J中的新值,即将low_in至hige_in之间的值映射到low_out至high_out之间的值。low_in以下与high_in以上的值被剪切掉了,也就是说,low_in以下的值映射到low_out,high_in以上的值映射到high_out。它们都可以使用空的矩阵[],默认值是[0 1]。

J = imadjust(I,[low_in; high_in],[low_out; high_out],gamma) 将图像I中的亮度值映射到J中的新值,其中gamma指定描述值I和值J关系的曲线形状。如果gamma小于1,此映射偏重更高数值(明亮)输出,如果gamma大于1,此映射偏重更低数值(灰暗)输出,如果省略此参数,默认为1(线性映射).

newmap = imadjust(map,[low_in; high_in],[low_out; high_out],gamma)调整索引***像的调色板map。如果low_in, high_in, low_out, high_out和gamma都是标量,那么对r,g,b分量同时都做此映射。对于每个颜色分量都有唯一的映射,当low_in和high_in同时为1*3向量或者low_out 和 high_out 同时为1*3向量或者gamma为1*3向量时。调整后的颜色矩阵newmap 和map有相同的大小。

RGB2 = imadjust(RGB1,...) 对RGB图像RGB1的红、绿、蓝调色板分别进行调整。随着颜色矩阵的调整,每一个调色板都有唯一的映射值。

注意:如果high_out < low_out, 输出图像是颠倒的,像摄像底片.

举例:

调整低对比度灰度图像:

I = imread('pout.tif');

J = imadjust(I);

imshow(I), figure, imshow(J)

调整灰度图像,指定范围:

K = imadjust(I,[0.3 0.7],[]);figure, imshow(K)调整RGB图像

RGB1 = imread('football.jpg');RGB2 = imadjust(RGB1,[.2 .3 0; .6 .7 1],[]);imshow(RGB1), figure, imshow(RGB2)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值