數(shù)字圖像處理:MATLAB編程基礎(chǔ)與位圖基礎(chǔ)
實(shí)驗(yàn)?zāi)康模?/strong>
1、掌握MATLAB基本操作。
2、深入理解BMP文件的組成。

實(shí)驗(yàn)內(nèi)容及要求:
(一)MATLAB基本操作
一、matlab快速入門
1、矩陣與數(shù)組
(1)創(chuàng)建一維數(shù)組:a=[1 2 3 4]或a=[1,2,3,4]
(2)創(chuàng)建矩陣:A=[1 2 3;4 5 6;7 8 9]
?????或采用函數(shù)實(shí)現(xiàn):如ones、zeros、rand等。如z=zeros(1,5)
(3)矩陣和數(shù)組運(yùn)算:b=A+10
?????????????????????c=sin(A)
?????????????????????d=A’
?????????????????????p=A*inv(A)
?????????????????????p1=A.*A ?%按元素的乘法(除法、冪運(yùn)算)
?????????????????????p2=A.^3
(4)數(shù)組連接:A1=[A,A]
???????????????A2=[A;A]
(5)復(fù)數(shù):用i或j表示復(fù)數(shù)的虛部
??????????????c1=[3+4i,4+3j;-i,10j]
2、數(shù)組引用
???????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、函數(shù)調(diào)用
輸入?yún)?shù);輸出參數(shù);clc/clf
5、二維和三維圖形
(1)用函數(shù)plot可以繪制二維線圖。
x=0:pi/100:2*pi;
y=sin(x);
plot(x,y,’k’);
xlabel(‘x’);
ylabel(‘sin(x)’);
title(‘正弦函數(shù)曲線’)
(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)三維圖形用于顯示兩變量函數(shù)z=f(x,y)的表面
如:計(jì)算z=
>> [X,Y]=meshgrid(-2:.2:2);
>> Z=X.*exp(-X.^2-Y.^2);
>> surf(X,Y,Z)
又如,調(diào)用函數(shù),可以在一個(gè)圖形窗口的不同子域顯示多個(gè)圖形。
>> 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函數(shù)(要求查閱MATLAB幫助文檔,并列出函數(shù)的詳細(xì)分類)
如基礎(chǔ)、數(shù)學(xué)、繪圖、編程、數(shù)據(jù)與文件管理、GUI、高級(jí)軟件開發(fā)等大類。
三、MATLAB編程
1、寫出控制流語句的具體格式
(1)if
(2)for/parfor/while
(3)switch
2、編輯腳本方法
(1)edit fie_name
(2)New Script
3、定義MATLAB函數(shù)
Function[y1,…,yn]=myfun(x1,…,xm)
函數(shù)保存的文件名必須與函數(shù)名相同,擴(kuò)展名為.m
?
如:定義一個(gè)名為stat的函數(shù)
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)
?
又如:定義一個(gè)包含局部函數(shù)的函數(shù)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。要求分別詳細(xì)說明文件頭、信息頭、調(diào)色板和位圖數(shù)據(jù),并計(jì)算文件大?。ㄅc屬性值對(duì)應(yīng))

實(shí)驗(yàn)過程(記錄):

BMP文件分文件頭、信息頭、調(diào)色板和數(shù)據(jù)區(qū)四個(gè)部分。文件頭和信息頭里包含一些信息,調(diào)色板顧名思義是調(diào)色的信息,數(shù)據(jù)區(qū)就是位圖數(shù)據(jù)
(十六進(jìn)制——十進(jìn)制)
文件頭(14字節(jié))
42?4D,???????“BM”的ASCII碼為B=66,M=7938?14?00?00,文件大小為5176
00?00?00?00,保留字節(jié)為0
36?04?00?00,數(shù)據(jù)區(qū)起始地址為1078
信息頭(40字節(jié))
28?00?00?00,信息頭大小為40
40?00?00?00,圖像寬度為64
40?00?00?00,圖像高度為64
01?00,????????目標(biāo)設(shè)備的級(jí)別必須為1
08?00,????????每個(gè)像素所需位數(shù)為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,位圖實(shí)際使用的顏色表中的顏色數(shù)為0
00?00?00?00,位圖顯示過程中重要的的顏色數(shù)為0
?
因?yàn)?56種顏色對(duì)應(yīng)256個(gè)顏色索引號(hào),每個(gè)索引號(hào)必須對(duì)應(yīng)1個(gè)調(diào)色板信息,所以必須有256個(gè)調(diào)色板信息,而1個(gè)調(diào)色板信息又有4個(gè)字節(jié),所以,調(diào)色板區(qū)站用字節(jié)一共是256*4=1024字節(jié)。也就是說,從文件開頭到真正的位圖數(shù)據(jù),一共間隔14+40+1024=1078字節(jié)