直方图均衡化matlab程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

直方图和直方图均衡的Matlab完整程序(数字图像处理)

一、实验目的

掌握基本的图象增强方法,观察图象增强的效果,加深对灰度直方图及直方图均衡化的理解,掌握直方图均衡化方法。

二、实验内容

将一张彩色图片转换成灰色图片,画灰度直方图和均衡化后的直方图,并将灰度图和均衡化后的图片对比。

三、实验原理

灰度直方图是将数字图像中的所有像素,按照灰度值的大小,统计其所出现的频度。通常,灰度直方图的横坐标表示灰度值,纵坐标为像素个数,也可以采用某一灰度值的像素数占全图像素数的百分比作为纵坐标。

直方图均衡方法的基本原理是:对在图像中像素个数多的灰度值(即对画面起主要作用的灰度值)进行展宽,而对像素个数少的灰度值(即对画面不起主要作用的灰度值)进行归并。从而达到清晰图像的目的。

四、实验程序%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%函数功能,画出图像的直方图,并对图像进行直方图均衡

%直接读图像abc.jpg,读到tuu中

%graydis是原始直方图各灰度级像素个数

%原始直方图graydispro,利用原始直方图计算原始累计直方图graydispro

%t[]计算和原始灰度对应的新的灰度t[],建立映射关系,t坐标代表原始的灰度,t[]代表对应原始坐标的新坐标

%new_graydis是统计新直方图各灰度级像素个数

%计算新的灰度直方图new_graydispro,利用新的直方图计算新的累计直方图new_graydispro %计算直方图均衡后的新图new_tu

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clear all

close all

tuu=imread('abc.jpg');%读入图片

tu=rgb2gray(tuu);%将彩色图片转换为灰度图

graydis=zeros(1,256);%设置矩阵大小

graydispro=zeros(1,256);

new_graydis=zeros(1,256);

new_graydispro=zeros(1,256);

[h w]=size(tu);

new_tu=zeros(h,w);

%计算原始直方图各灰度级像素个数graydis

for x=1:h

for y=1:w

graydis(1,tu(x,y))=graydis(1,tu(x,y))+1;

end

end

%计算原始直方图graydispro

graydispro=graydis./sum(graydis);

subplot(1,2,1);

plot(graydispro);

title('灰度直方图');

xlabel('灰度值');ylabel('像素的概率密度');

%计算原始累计直方图

for i=2:256

graydispro(1,i)=graydispro(1,i)+graydispro(1,i-1);

end

%计算和原始灰度对应的新的灰度t[],建立映射关系

for i=1:256

t(1,i)=floor(254*graydispro(1,i)+0.5);

end

%统计新直方图各灰度级像素个数new_graydis

for i=1:256

new_graydis(1,t(1,i)+1)=new_graydis(1,t(1,i)+1)+graydis(1,i); end

%计算新的灰度直方图new_graydispro

new_graydispro=new_graydis./sum(new_graydis);

subplot(1,2,2);

plot(new_graydispro);

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

xlabel('灰度值');ylabel('像素的概率密度');

%计算直方图均衡后的新图new_tu

for x=1:h

for y=1:w

new_tu(x,y)=t(1,tu(x,y));

end

end

figure,imshow(tu,[]);

title('原图');

figure,imshow(new_tu,[]);

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

//////////////////////////////////////////////////////

另外两种代码:

代码

Matlab

下面的代码来自archiless,注释非常详细,适合初学。

%数字图像处理程序作业

%本程序能将JPG格式的彩色图像文件灰度化并进行直方图均衡

%

%输入文件:PicSample.jpg待处理图像

%输出文件:PicSampleGray.bmp灰度化后图像

%PicEqual.bmp均衡化后图像

%

%输出图形窗口说明

%figure NO1待处理彩色图像

%figure NO2灰度化后图像

%figure NO3直方图

%figure NO4均衡化后直方图

%figure NO5灰度变化曲线

%figure NO6均衡化后图像

%1,处理的图片名字要为PicSample.jpg

%2,程序每次运行时会先清空workspace

%作者;archiless lorder

clear all

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

PS=imread('PicSample.jpg');%读入JPG彩色图像文件imshow(PS)%显示出来figure NO1

相关文档
最新文档