您好,欢迎来到好走旅游网。
搜索
您的当前位置:首页实验3 图像的直方图均衡化

实验3 图像的直方图均衡化

来源:好走旅游网
实验3 图像的直方图均衡化

一、实验目的:理解直方图的概念,利用Matlab获取和绘制图像的直方图,并进行直方图均衡化处理。

二、实验内容:学习并应用imhist, histeq等函数进行直方图处理

三、实验要求:提交原图像和各种直方图曲线,以及按直方图处理后的图像。

四、实验步骤

1、生成并绘制图像的直方图

在处理图像直方图的工具箱中,核心函数是imhist,其基本语法为:h=imhist(f,b)。其中,f为输入图像,h为其直方图,b是用于形成直方图的灰度级的个数,默认值为256。例如,若我们要处理一幅uint8类图像并令b=2,则亮度范围被分成两部分:0至127和128至255。所得的直方图将有两个值:h(1)等于图像在区间[0,127]内的像素总数,h(2)等于图像在区间[128,255]内的像素总数。使用p=imhist(f,b)/numel(f)可以得到归一化直方图。函数numel(f)给出数组f中的元素个数(即图像中的像素数)。

(1) 阅读imhist的帮助文件;

(2) 读入一幅图像,使用imhist( )函数产生图像的直方图,分析它的直方

图分布及反映图像的特点;

(3) 使用imadjust( )函数产生图像的对比度图,并使用imhist( )函数产生两

个图像的直方图,分析图像对比度变化后的效果;

实验结果:

>> I=imread('C:\\Documents and Settings\\Administrator\\桌面\\实验\\图像库\if\\boats720x576.tif'); >> J=histeq(I); %对原图像进行直方图均衡化处理

%对直方图均衡化后图像进行屏幕控制;作一幅子图,并排两幅图的第1幅 subplot(2,2,1);imshow(I); %显示原图像 title('原图像'); %给原图像加标题名 subplot(2,2,2);imshow(J);

title('直方图均衡化后的图像') ; subplot(2,2,3);

imhist(I,); %将原图像直方图显示为级灰度 title('原图像直方图') ; %给原图像直方图加标题名 subplot(2,2,4);

imhist(J,) ; %将均衡化后图像的直方图显示为级灰度 title('均衡变换后的直方图') ; %给均衡化后图像直方图加标题名

原图像直方图均衡化后的图像x 1024原图像直方图1500010000均衡变换后的直方图150000010020001002000

2、直方图均衡化

直方图均衡化由工具箱中的函数histeq实现,该函数语法为g=histeq(f,nlev)。式中,f为输入图像,nlev是为输出图像指定的灰度级数。histeq中的默认值为nlev=。一般来说,我们将nlev赋值为灰度级的最大可能数量(通常为256)。

读入一幅图像,使用histeq ( )函数均衡化图像,分析变化后图像的效果)。

实验结果:

function varargout = histeq_my(image) % HISTEQ_MY直方图均衡化函数 imageeq = zeros(size(image));

[hist,grayx] = imhist_my(image); % 归一化 histn = hist/numel(image); histc = cumsum(histn); L = intmax(class(image));

eval(['L = ' class(histc) '(L);']) tk = floor(histc*(L - 1) + 0.5); histeq = zeros(size(hist)); for k = 1:L

histeq(tk(k) + 1) = histeq(tk(k) + 1) + hist(k); end % 图像灰度映射 for p = 1:size(imageeq,1)

for q = 1:size(imageeq,2)

imageeq(p,q) = tk(image(p,q) + 1); end end

imageeq = mat2gray(imageeq);

eval(['imageeq = im2' class(image) '(imageeq);']) % 输出 if nargout == 0 subplot(221) imshow(image) title('原始图像') subplot(222) imshow(imageeq)

title('直方图均衡化后图像') subplot(223)

stem(grayx,hist,'Marker','none'); xlim([0 max(grayx)]); xlabel('灰度值') ylabel('统计个数'); title('原始直方图') subplot(224)

stem(grayx,histeq,'Marker','none'); xlim([0 max(grayx)]); xlabel('灰度值') ylabel('统计个数'); title('均衡化后直方图') else

varargout = {imageeq,grayx,histeq,hist}; end

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- haog.cn 版权所有 赣ICP备2024042798号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务