数字图像处理实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字图像处理实验报告
实验一数字图像处理编程基础
一、实验目的
1. 了解MA TLAB图像处理工具箱;
2. 掌握MA TLAB的基本应用方法;
3. 掌握MA TLAB图像存储/图像数据类型/图像类型;
4. 掌握图像文件的读/写/信息查询;
5. 掌握图像显示--显示多幅图像、4种图像类型的显示方法;
6. 编程实现图像类型间的转换。
二、实验内容
1. 实现对图像文件的读/写/信息查询,图像显示--显示多幅图像、4种图像类型的显示方法、图像类型间的转换。
2. 运行图像处理程序,并保存处理结果图像。
三、源代码
I=imread('cameraman.tif')
imshow(I);
subplot(221),
title('图像1');
imwrite('cameraman.tif')
M=imread('pout.tif')
imview(M)
subplot(222),
imshow(M);
title('图像2');
imread('pout.bmp')
N=imread('eight.tif')
imview(N)
subplot(223),
imshow(N);
title('图像3');
V=imread('circuit.tif')
imview(V)
subplot(224),
imshow(V);
title('图像4');
N=imread('C:\Users\Administrator\Desktop\1.jpg')
imshow(N);
I=rgb2gary(GRB)
[X.map]=gary2ind(N,2)
RGB=ind2 rgb(X,map)
[X.map]=gary2ind(I,2)
I=ind2 gary(X,map)
I=imread('C:\Users\dell\Desktop\111.jpg');
subplot(231),imshow(I);
title('原图');
M=rgb2gray(I);
subplot(232),imshow(M);
[X,map]=gray2ind(M,100);
subplot(233),imshow(X);
RGB=ind2rgb(X,map);
subplot(234),imshow(X);
[X,map]=rbg2ind(I);
subplot(235),imshow(X);
四、实验效果
实验二 图像几何变换实验
一、实验目的
1.学习几种常见的图像几何变换,并通过实验体会几何变换的效果;
2.掌握图像平移、剪切、缩放、旋转、镜像等几何变换的算法原理及编程实现;
3.掌握matlab 编程环境中基本的图像处理函数。
二、实验原理
1. 初始坐标为(,)x y 的点经过平移00(,)x y ,坐标变为(',')x y ,两点之间的关系为:00
''x x x y y y =+⎧⎨=+⎩,以矩阵形式表示为: 00'10'0110011x x x y y y ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦
2. 图像的镜像变换是以图象垂直中轴线或水平中轴线交换图像的变换,分为垂直镜像变换和水平镜像变换,两者的矩阵形式分别为:
'100'01010011x x y y -⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦
'100'01010011x x y y ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥=-⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦
3. 图像缩小和放大变换矩阵相同: '00'0010011X y
x S x y S y ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦
当1x S ≤,1y S ≤时,图像缩小;当1x S ≥,1y S ≥时,图像放大。
4. 图像旋转定义为以图像中某一点为原点以逆时针或顺时针方向旋转一定 角度。其变换矩阵为:
'cos sin 0'sin cos 010011x x y y θθθθ⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥=-⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦
该变换矩阵是绕坐标轴原点进行的,如果是绕一个指定点旋转,则先要将坐标系平移到该点,进行旋转,然后再平移回到新的坐标原点。
三、实验内容
1. 启动MA TLAB 程序,对图像文件分别进行平移、垂直镜像变换、水平镜像变换、缩放和
旋转操作。
2.运行图像处理程序,并保存处理结果图像。
四、源代码及实验效果
1.平移
I=imread('circuit.tif');
subplot(121),imshow(I);
title('before');
I=double(I);
M=zeros(size(I));
N=size(I);
x=10;
y=10;
M(x+1:N(1),y+1:N(2))=I(1:N(1)-x,1:N(2)-y); subplot(122),imshow(uint8(M));
title('after');
2.水平垂直镜像
I=imread('pout.tif');
subplot(131),imshow(I);
title('before');
I=double(I);
A=zeros(size(I));
B=zeros(size(I));
M=size(I);
A(1:M(1),1:M(2))=I(M(1):-1:1,1:M(2)); B(1:M(1),1:M(2))=I(1:M(1),M(2):-1:1); subplot(132),imshow(uint8(A));
title('竖直');
subplot(133),imshow(uint8(B));
title('水平');
3.缩放
I=imread('pout.tif');
subplot(131),imshow(I);
title('before');
I=double(I);