数字图像处理点运算和直方图处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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