数字图像处理点运算和直方图处理

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

实验1 点运算和直方图处理

一、实验目的

1. 掌握利用Matlab图像工具箱显示直方图的方法

2. 掌握运用点操作进行图像处理的基本原理。

3. 进一步理解利用点操作这一方法进行图像处理的特点。

4. 掌握利用Matlab图像工具箱进行直方图均衡化的基本方法。

二、实验的硬件、软件平台

硬件:计算机

软件:操作系统:WINDOWS 7

应用软件:MATLAB

三、实验内容及步骤

1. 了解Matlab图像工具箱的使用。

2. 利用Matlab图像工具箱对图像进行点操作,要求完成下列3个题目中

的至少2个。

⑴图1灰度范围偏小,且灰度偏低,改正之。

⑵图2暗处细节分辨不清,使其能看清楚。

⑶图3亮处细节分辨不清,使其能看清楚。

图1 图2 图3

3. 给出处理前后图像的直方图。

4. 利用MatLab图像处理工具箱中函数对以上图像进行直方图均衡化操

作,观察结果。

四、思考题

1. 点操作能完成哪些图像增强功能?

2. 直方图均衡化后直方图为何并不平坦?为何灰度级会减少?

五、实验报告要求

1.对点操作的原理进行说明。

2.给出程序清单和注释。

3.对处理过程和结果进行分析(包括对处理前后图像的直方图的分析)。实验代码以及解析

点操作:

I = imread('POINT1.BMP'); %读入图像

j=rgb2gray(I); %将图像转为灰度图像

INFO=IMFINFO('POINT1.BMP') %获取图片的格式、尺寸、颜色数量、修改时间等信息[l,r]=size(j); %图片大小

figure; %建立一个图形框

subplot(221)

imshow(j) %在两行两列的第一个位置放置图片j

title('POINT1.BMP') %给该图片加上标题POINT1.BMP

for m=1:l

for n=1:r %从第一个像素循环到最后一个像素

p1(m,n)=j(m,n)*1.2; %把各点乘上1.2得到p1图

end

end

for m=1:l

for n=1:r

p2(m,n)=j(m,n)*2; %%把各点乘上2得到p2图

end

end

for m=1:l

for n=1:r

p3(m,n)=j(m,n)*2+50; %把各点乘上2再加50得到p2图

end

end

subplot(222)

imshow(p1)

title('j(m,n)*1.2') %p1图放在第二个位置且冠名j(m,n)*1.2

subplot(223)

imshow(p2)

title('j(m,n)*2') %p1图放在第三个位置且冠名j(m,n)* 2

subplot(224)

imshow(p3)

title('j(m,n)*2+50') %p1图放在第四个位置且冠名j(m,n)*2+50

figure; %建立一个新的窗口并且依次显示以上四个图的直方图subplot(221),imhist(j,64); title('原图直方图')

%64代表把0-250的灰度范围分为64份

subplot(223),imhist(p2,64);title('j(m,n)*2')

subplot(224),imhist(p3,64);title('j(m,n)*2+50')

%picture2 %这里把两个图片的点操作处理都放在了同一个程序里I2 = imread('POINT2.BMP'); %各语句意思同上

j2=rgb2gray(I2);

INFO2=IMFINFO('POINT2.BMP')

[l2,r2]=size(j2);

figure;

subplot(221)

imshow(j2)

title('POINT1.BMP')

for a=1:l2

for b=1:r2

q1(a,b)=j2(a,b)*1.2;

end

end

for a=1:l2

for b=1:r2

q2(a,b)=j2(a,b)*1.3;

end

end

for a=1:l2

for b=1:r2

q3(a,b)=j2(a,b)/2;

end

end

subplot(222)

imshow(q1)

title('j(m,n)*1.2')

subplot(223)

imshow(q2)

title('j(m,n)*2')

subplot(224)

imshow(q3)

title('j(m,n)*2+50')

figure;

subplot(221),imhist(j2,64);title('j2原图的直方图')

subplot(222),imhist(q1,64);title('j(m,n)*1.2')

subplot(223),imhist(q2,64);title('j(m,n)*2')

本程序共创建了四个窗口,分别是两个原图和处理后的图像对比,以及各图对应的直方图

POINT1.BMP

j(m,n)*1.2

j(m,n)*2j(m,n)*2+50

0j2原图的直方图

100

200

0j(m,n)*1.2

100

200

j(m,n)*2

100

200

j(m,n)*2+50

100

200

用函数

POINT2

histeq

相关文档
最新文档