数字图像处理:MATLAB编程基础与位图基础
实验目的:
1、掌握MATLAB基本操作。
2、深入理解BMP文件的组成。

实验内容及要求:
(一)MATLAB基本操作
一、matlab快速入门
1、矩阵与数组
(1)创建一维数组:a=[1 2 3 4]或a=[1,2,3,4]
(2)创建矩阵:A=[1 2 3;4 5 6;7 8 9]
或采用函数实现:如ones、zeros、rand等。如z=zeros(1,5)
(3)矩阵和数组运算:b=A+10
c=sin(A)
d=A’
p=A*inv(A)
p1=A.*A %按元素的乘法(除法、幂运算)
p2=A.^3
(4)数组连接:A1=[A,A]
A2=[A;A]
(5)复数:用i或j表示复数的虚部
c1=[3+4i,4+3j;-i,10j]
2、数组引用
B=magic(4)
(1)B(4,2)
(2)B(8) 按列
(3)B(1:3,2)
(4)B(1:3,:)
(5)B1=0:10:100 起始值:步长:终止值(向量)
3、字符串
myText=’Hello,world’
otherText=’You’’re right’
(1)whos myText
(2)longText=[myText,’-’,otherText]
(3)f=71;
c=(f-32)/1.8;
tempText=[‘Temperature is’,num2str(c),’C’]
4、函数调用
输入参数;输出参数;clc/clf
5、二维和三维图形
(1)用函数plot可以绘制二维线图。
x=0:pi/100:2*pi;
y=sin(x);
plot(x,y,’k’);
xlabel(‘x’);
ylabel(‘sin(x)’);
title(‘正弦函数曲线’)
(2)绘制两条或多条曲线
>> x=0:pi/100:2*pi;
>> y=sin(x);
>> plot(x,y)
>> hold on
>> y2=cos(x);
>> plot(x,y2,'r:')
>> legend('sin','cos')
(3)三维图形用于显示两变量函数z=f(x,y)的表面
如:计算z=
>> [X,Y]=meshgrid(-2:.2:2);
>> Z=X.*exp(-X.^2-Y.^2);
>> surf(X,Y,Z)
又如,调用函数,可以在一个图形窗口的不同子域显示多个图形。
>> t=0:pi/10:2*pi;
>> [X,Y,Z]=cylinder(4*cos(t));
>> subplot(2,2,1);mesh(X);title('X');
>> subplot(2,2,2);mesh(Y);title('Y');
>> subplot(2,2,3);mesh(Z);title('Z');
>> subplot(2,2,4);mesh(X,Y,Z);title('X,Y,Z');
二、MATLAB函数(要求查阅MATLAB帮助文档,并列出函数的详细分类)
如基础、数学、绘图、编程、数据与文件管理、GUI、高级软件开发等大类。
三、MATLAB编程
1、写出控制流语句的具体格式
(1)if
(2)for/parfor/while
(3)switch
2、编辑脚本方法
(1)edit fie_name
(2)New Script
3、定义MATLAB函数
Function[y1,…,yn]=myfun(x1,…,xm)
函数保存的文件名必须与函数名相同,扩展名为.m
如:定义一个名为stat的函数
function[m,s]=stat(x)
n=length(x);
m=sum(x)/n;
s=sqrt(sum((x-m).^2/n));
end
values=[12.7,45.4,98.9,26.6,53.1];
[ave,stdev]=stat(values)
又如:定义一个包含局部函数的函数stat2
function[m,s]=stat2(x)
n=length(x);
m=avg(x,n);
s=sqrt(sum((x-m).^2/n));
end
function m=avg(x,n)
m=sum(x)/n;
end
values=[12.7,45.4,98.9,26.6,53.1];
[ave,stdev]=stat2(values)
二、通过UltraEdit软件,深入分析理解位图lena64.bmp。要求分别详细说明文件头、信息头、调色板和位图数据,并计算文件大小(与属性值对应)

实验过程(记录):

BMP文件分文件头、信息头、调色板和数据区四个部分。文件头和信息头里包含一些信息,调色板顾名思义是调色的信息,数据区就是位图数据
(十六进制——十进制)
文件头(14字节)
42 4D, “BM”的ASCII码为B=66,M=7938 14 00 00,文件大小为5176
00 00 00 00,保留字节为0
36 04 00 00,数据区起始地址为1078
信息头(40字节)
28 00 00 00,信息头大小为40
40 00 00 00,图像宽度为64
40 00 00 00,图像高度为64
01 00, 目标设备的级别必须为1
08 00, 每个像素所需位数为8
00 00 00 00,位图压缩类型必须是0
02 10 00 00,位图的大小为4098
12 0B 00 00,位图水平分辨率为2834
12 0B 00 00,位图垂直分辨率为2834
00 00 00 00,位图实际使用的颜色表中的颜色数为0
00 00 00 00,位图显示过程中重要的的颜色数为0
因为256种颜色对应256个颜色索引号,每个索引号必须对应1个调色板信息,所以必须有256个调色板信息,而1个调色板信息又有4个字节,所以,调色板区站用字节一共是256*4=1024字节。也就是说,从文件开头到真正的位图数据,一共间隔14+40+1024=1078字节