下面是內(nèi)容預(yù)覽(圖片在附件中下載):
數(shù)字圖像處理課內(nèi)實(shí)驗(yàn)指導(dǎo)書 李文杰施文娟 編 鹽城師范學(xué)院新能源與電子工程學(xué)院 二○一七年二月 說明:1 講義中給出的部分代碼供同學(xué)們參考,鼓勵同學(xué)自己編寫運(yùn)行效率更高或者可讀性更好的代碼,將作為成績評定的重要依據(jù)。
2 實(shí)驗(yàn)中的仿真圖是仿真算法的主要結(jié)果,由于是在實(shí)驗(yàn)室機(jī)房中做實(shí)驗(yàn),仿真后的圖文件,請每位同學(xué)以fig文件和矢量圖文件emf兩種格式保存于自己的移動存儲設(shè)備中(注意每個(gè)文件名稱,例如可采用:實(shí)驗(yàn)1_圖1.fig),實(shí)驗(yàn)結(jié)束后,仿真圖文件的電子版也需要上交。
3 每次實(shí)驗(yàn)結(jié)束后,在一周內(nèi)請及時(shí)交實(shí)驗(yàn)報(bào)告,實(shí)驗(yàn)報(bào)告上交是否及時(shí)也將作為實(shí)驗(yàn)報(bào)告成績的依據(jù)。
4 每個(gè)實(shí)驗(yàn)仿真圖請自行打印后粘貼于實(shí)驗(yàn)報(bào)告的相關(guān)位置。 5 每個(gè)實(shí)驗(yàn)的思考題請按照要求認(rèn)真完成。
實(shí)驗(yàn)一 計(jì)算圖像的基本統(tǒng)計(jì)指標(biāo)
一、實(shí)驗(yàn)?zāi)康?/font>
1熟悉MATLAB圖像處理工具箱的使用方法。
2了解計(jì)算圖像的統(tǒng)計(jì)指標(biāo)的方法及其在圖像處理中的意義。
二.實(shí)驗(yàn)主要儀器設(shè)備
1 微型計(jì)算機(jī):Intel Pentium及更高。
2 MATLAB(安裝了圖像處理工具箱,即Image Processing Toolbox)
3 典型的灰度、彩色圖像文件。
三、實(shí)驗(yàn)原理
1 可以將一幅圖像看成一個(gè)二維矩陣,因此用MATLAB處理圖像是十分方便的。
2 利用MATLAB圖像處理工具箱讀、寫和顯示圖像文件。
①采用imread函數(shù)讀出圖像。
②采用imwrite函數(shù)寫入圖像。
③采用imshow函數(shù)顯示圖像。
3 計(jì)算圖像的有關(guān)統(tǒng)計(jì)參數(shù)。
① 圖像的大小。圖像的大小是圖像的重要屬性,數(shù)值是寬度(M,單位為:像素)與高度(N,單位為:像素)的乘積。
② 圖像的灰度平均值。該指標(biāo)指圖像法f所以灰度值的算術(shù)平均值,反映了一幅圖像的平均亮度。 ③協(xié)方差矩陣(variance-covariance matrix)
設(shè) f(x,y)和g(x,y)是大小為M×N的兩幅圖像,則兩幅圖像之間的協(xié)方差矩陣 為
協(xié)方差矩陣是兩幅圖像之間的相關(guān)程度的一種度量。協(xié)方差矩陣為零時(shí)表明兩幅圖像之間相互獨(dú)立,反之表示兩圖像之間相互依賴越大,相關(guān)程度越強(qiáng)。
若f=g,則單幅圖像的協(xié)方差即為該圖像的方差(自協(xié)方差)。
④圖像的灰度標(biāo)準(zhǔn)差(standard deviation)。由方差按數(shù)據(jù)的平方來計(jì)算,與灰度值相差大,難以直觀地衡量,所以對方差開平方得到標(biāo)準(zhǔn)差SD,標(biāo)準(zhǔn)差是評價(jià)離散的較好指標(biāo)。
⑤圖像的相關(guān)系數(shù)。協(xié)方差可以作為兩幅圖像相關(guān)性的一種度量,但它受兩幅圖像像素?cái)?shù)值的影響。因此,經(jīng)常將其歸一化成相關(guān)系數(shù)。兩個(gè)圖像f(x,y)和g(x,y)的相關(guān)系數(shù) 是描述圖像相關(guān)程度的統(tǒng)計(jì)量,反映了兩圖像相互的線性聯(lián)系密切程度的統(tǒng)計(jì)參數(shù)。相關(guān)系數(shù)在0~1范圍內(nèi)變動,其值越接近1,兩個(gè)圖像見的線性相關(guān)越密切;其值越接近0,相關(guān)越不密切。
四、實(shí)驗(yàn)內(nèi)容
1 利用MATLAB圖像處理工具箱讀、寫和顯示圖像文件。
2 計(jì)算圖像的有關(guān)統(tǒng)計(jì)參數(shù)。
五、實(shí)驗(yàn)步驟
參考教材附錄B:常用MATLAB圖像處理Toolbox 函數(shù)完成以下操作。
(1) 利用“讀圖像文件I/O”函數(shù)讀入圖像。 (2) 利用“讀圖像文件I/O”的iminfo函數(shù)了解圖像文件的基本信息。利用“像素和統(tǒng)計(jì)處理”函數(shù)計(jì)算讀入圖像的二維相關(guān)系數(shù)(corr2函數(shù))、確定像素顏色(impixel函數(shù))、像素的平均值(mean2函數(shù))、計(jì)算像素的標(biāo)準(zhǔn)偏移(std2函數(shù))等。
注意:Impixel函數(shù)返回指定的圖像像素的RGB(紅red、綠green、藍(lán)blue)顏色值。在下面的語法中,impixel函數(shù)顯示輸入圖像,并等待你用鼠標(biāo)指定像素:
P =impixel(img);
如果省略輸入?yún)?shù),impixel作用于當(dāng)前使用的圖像。使用鼠標(biāo)左鍵單擊來選擇像素,可以在不同位置單擊來選擇多個(gè)像素。按backspace或delete刪除先前選擇的像素。按住shift點(diǎn)擊鼠標(biāo)左鍵,單擊鼠標(biāo)右鍵或者雙擊鼠標(biāo)左鍵,都可以添加最后一個(gè)像素并結(jié)束選擇顯示結(jié)果;按回車鍵可以結(jié)束選擇并且不添加像素。完成像素的選擇后,impixel向輸出參數(shù)中返回一個(gè)代表所選像素RGB值的m×3的矩陣,m為所選像素的個(gè)數(shù)。如果你沒有提供輸出參數(shù),impixel將矩陣返回到ans中。
(3) 利用“幾何操作”剪切圖像、改變圖像大小(imresize函數(shù))、旋轉(zhuǎn)圖像(imrotate函數(shù))等。
(4) 將經(jīng)上述不同操作的圖像用“讀圖像文件I/O”函數(shù)分別寫入到各自的圖像文件中。
六、實(shí)驗(yàn)報(bào)告要求
1 說明利用MATLAB圖像處理工具箱讀、寫和顯示圖像文件、計(jì)算圖像的有關(guān)統(tǒng)計(jì)參數(shù)的原理。
2 記錄讀取和幾何變換處理后的圖像、圖像的統(tǒng)計(jì)數(shù)據(jù)。
3 記錄點(diǎn)運(yùn)算的結(jié)果圖。
4 回答思考題。
5 總結(jié)心得和體會。
七、預(yù)習(xí)要求
(1)了解MATLAB圖像處理工具箱的功能。
(2)了解圖像基本指標(biāo)的含義。
八、思考題
(1)說明圖像的統(tǒng)計(jì)特征對圖像處理的意義。
(2)比較不同圖像的統(tǒng)計(jì)特征的差別,并分析原因。
實(shí)驗(yàn)二 圖像變換與二維數(shù)字濾波
一、實(shí)驗(yàn)?zāi)康?/font>
1 了解離散余弦正弦變換和逆變換的原理。
2 理解離散余弦變換系數(shù)的特點(diǎn)。
3 了解離散余弦變換在圖像數(shù)據(jù)壓縮中的應(yīng)用。
二、實(shí)驗(yàn)主要儀器設(shè)備
1 微型計(jì)算機(jī) :Intel Pentium及更高。
2 MATLAB軟件。
三、實(shí)驗(yàn)原理
1 二維離散余弦變換和離散余弦逆變換的計(jì)算公式。
2 MATLAB中DCT變換的實(shí)現(xiàn)函數(shù)是dct2();DCT逆變換的實(shí)現(xiàn)函數(shù)是idct2()。
四、實(shí)驗(yàn)內(nèi)容
在MATLAB環(huán)境中,進(jìn)行圖像的離散余弦變換和離散余弦逆變換,初步理解DCT變換在壓縮編碼中的應(yīng)用。減少DCT系數(shù),觀察重建信號和誤差信號。
五、實(shí)驗(yàn)步驟
1 打開MATLAB。
2 新建DCTtranslation.m文件
3 選取rose.jpg文件,進(jìn)行離散余弦變換,并對其進(jìn)行離散余弦反變換,觀察其結(jié)果。
4 選擇不同的閾值,觀察重構(gòu)圖像。
5 計(jì)算重構(gòu)圖像的MSE。
參考程序:
%DCTtranslation.m
I = imread('rose.jpg');
clear all; close all; G=imread('rose.jpg'); figure(1);imshow(G); %G=rgb2gray(F); dctG=dct2(G); figure(2);imshow(log(abs(dctG)),[]); T1=5;T2=50; dctG(abs(dctG)<T1)=0; idctF1=idct2(dctG); figure(3);imshow(idctF1,[0 255]); dctG(abs(dctG)<T2)=0; idctF2=idct2(dctG); figure(4);imshow(idctF2,[0 255]); [M N]=size(G); MSE1=sum(sum((idctF1-double(G)).^2))/(M*N) MSE2=sum(sum((idctF2-double(G)).^2))/(M*N) 上述程序同樣可以實(shí)現(xiàn)DCT的正、反變換。
六、實(shí)驗(yàn)報(bào)告要求
1 說明離散余弦正、反變換的原理。
2 分析重建圖像、誤差圖像和DCT系數(shù)的關(guān)系。
七、預(yù)習(xí)要求
了解MATLAB環(huán)境和它的使用方法。
八、思考題
對重建圖像進(jìn)行主觀評價(jià)和客觀評價(jià),分析重建圖像的質(zhì)量與DCT重建系數(shù)的關(guān)系。
實(shí)驗(yàn)三 圖像編碼與壓縮
一、實(shí)驗(yàn)?zāi)康?/font>
1 了解圖像的壓縮編碼原理;
2 掌握常用圖像壓縮算法。
二、實(shí)驗(yàn)主要儀器設(shè)備
1 微型計(jì)算機(jī):Intel Pentium及更高。
2 MATLAB軟件(含圖像處理工具箱)。
三、實(shí)驗(yàn)原理
1 去除數(shù)據(jù)冗余度可以有效地壓縮數(shù)據(jù)。
2 圖像編碼壓縮的主要技術(shù)指標(biāo)。(1)壓縮化;(2)客觀評價(jià)SNR;(3)主觀評價(jià)。
四、實(shí)驗(yàn)內(nèi)容
1 利用變換編碼壓縮圖像信息。
2 計(jì)算壓縮算法的性能。
五、實(shí)驗(yàn)步驟
1 自己選擇測試圖像。
2 根據(jù)設(shè)計(jì)要求選擇合適的圖像編碼與壓縮方法。
3 設(shè)計(jì)編碼與壓縮算法。
4 顯示原始圖像與壓縮重構(gòu)圖像。
例1 基于FFT的圖像壓縮技術(shù)
考慮一幅512*512像素,灰度級為256的標(biāo)準(zhǔn)圖像lena,用FFT實(shí)現(xiàn)圖像數(shù)據(jù)的壓縮,首先將圖像分割成(512/8)^2個(gè)8*8子圖像,對每個(gè)子圖像進(jìn)行FFT,這樣每個(gè)子圖像有64個(gè)傅里葉變換系數(shù)。按照每個(gè)系數(shù)的方差來排序,由于圖像是實(shí)值的,其64個(gè)復(fù)系數(shù)只有一半是有差別的。舍去小的變換系數(shù),就可以實(shí)現(xiàn)數(shù)據(jù)壓縮。此處32個(gè)系數(shù),實(shí)現(xiàn)2:1的數(shù)據(jù)壓縮,然后進(jìn)行逆變換,其matlab程序如下:
%設(shè)置壓縮比 cr = 0.5; % cr = 0.5為2:1壓縮,cr = 0.125 為8:1壓縮
%讀入并顯示原始圖像
I1 = imread(‘lena.bmp’);
I1 = double(I1)/255; %圖像為256級灰度圖像,對圖像進(jìn)行歸一化操作
figure(1); %顯示原始圖像
imshow(I1);
%對圖像進(jìn)行FFT
fftcoe = blkproc(I1,[8 8],’fft2(x)’); %將圖像分割成8*8的子圖像進(jìn)行FFT
coevar = im2col(fftcoe,[8 8],’distinct’); %將變換系數(shù)矩陣重新排列
coe = coevar;
[y,ind] = sort(coevar);
[m,n] = size(coevar);
snum = 64-64*cr; %根據(jù)壓縮比確定要變0的系數(shù)個(gè)數(shù)
%舍去不重要的系數(shù)
for i = 1:n
coe(ind(1:snum),i) = 0; %將最小的snum個(gè)變換系數(shù)清0
end
B2 = col2im(coe,[8 8],[512 512],’distinct’); %重新排列系數(shù)矩陣
%對子圖像塊進(jìn)行FFT逆變換獲得各個(gè)子圖像的復(fù)原圖像,并顯示壓縮圖像
I2 = blkproc(B2,[8 8],’ifft2(x)’);
figure(2) %顯示壓縮后的圖像
imshow(I2);
%計(jì)算均方根誤差erms
e = double(I1) – double(I2)
[m , n] = size(e);
erms = sqrt(sum(e(:).^2)/(m*n));
當(dāng)cr = 0.5時(shí),上述程序?qū)崿F(xiàn)的圖像壓縮比為2:1,均方根系數(shù)為erms = 0.0398;
cr=0.125時(shí),實(shí)現(xiàn)的圖像壓縮比為8:1,均方根系數(shù)為 erms =0.0474
上述程序中的主要函數(shù)功能:
(1) blkproc 函數(shù),它能夠?qū)⒚總(gè)顯示塊從圖像中提取出來,然后將其作為參數(shù)傳遞給任何用戶函數(shù),另外,blkproc函數(shù)還將用戶函數(shù)返回的顯示塊進(jìn)行組合,從而生成最后輸出的圖像,語法格式為: B = blkproc (A,[m n],fun)
其功能是對圖像A的每個(gè)不同m*n塊應(yīng)用函數(shù)fun進(jìn)行處理,fun 為運(yùn)算函數(shù),其形式為y=fun(x),可以是一個(gè)包含函數(shù)名的字符串,也可以是帶表達(dá)式的字符串。另外,還可以將用戶函數(shù)指定為一個(gè)嵌入式函數(shù)。
(2)im2col函數(shù),它能夠?qū)D像塊排列成向量,其語法格式為:
B = im2col(A , [m n],block_type)
功能是將圖像A的每一個(gè)m*n塊轉(zhuǎn)換成一列,重新組合成矩陣B,block_type指定排列的方式,當(dāng)block_type為disinct時(shí),圖像塊不重疊,當(dāng)其為sliding時(shí),圖像塊滑動。
(3)col2im函數(shù),它用于將向量重新排列成圖像塊,語法格式為:
B = col2im(A,[n n],[nm nn],block_type)
其功能將圖像A的每一列排列成m*n的圖像塊,block_type指定排列的方式,當(dāng)其為distinct時(shí),圖像塊不重疊,其為sliding時(shí),圖像塊滑動,并用這些圖像塊組合成mm*nn的圖像A
例2 基于DCT的圖像壓縮技術(shù)
與前面相同的圖像,首先將圖像分割成(512/8)^2個(gè)8*8子圖像,對于每個(gè)子圖像進(jìn)行DCT,這樣每個(gè)子圖像有64個(gè)變換系數(shù),舍去50%小的變換系數(shù),即保留32個(gè)系數(shù),進(jìn)行2:1的壓縮,其Matlab程序如下所示:
%設(shè)置壓縮比
cr = 0.5 % cr = 0.5為2:1壓縮,cr = 0.125 為8:1壓縮
%讀入并顯示原始圖像
initialimage =imread('lena_numbers_512.tiff');
initialimage = double(initialimage)/255;
figure(1);
imshow(initialimage);
%對圖像進(jìn)行DCT
t = dctmtx(8);
dctcoe = blkproc(initialimage,[88],'P1*x*P2',t,t');
coevar = im2col(dctcoe,[8 8],'distinct');
coe = coevar;
[y,ind] = sort(coevar);
[m,n] = size(coevar);
%舍去不重要的系數(shù)
snum = 64 - 64*cr;
for i = 1 : n
coe(ind(1:snum),i) = 0;
end
b2 = col2im(coe,[8 8],[512 512],'distinct');
%對截取后的變換系數(shù)進(jìn)行DCT逆變換
i2 = blkproc(b2,[8 8],'P1*x*P2', t',t);
%顯示壓縮圖像
figure(2);
imshow(i2);
%計(jì)算均方根誤差
e = double (initialimage) - double(i2);
[m , n] = size(e);
erms = sqrt(sum(e(:).^2)/(m*n));
六、實(shí)驗(yàn)報(bào)告要求
1 說明壓縮原理與算法。
2 原始圖像和壓縮圖像重構(gòu)圖像。
3 計(jì)算壓縮性能,說明為什么同一壓縮算法對不同的圖像壓縮效果不同。
4 回答思考題。
5 心得和體會。
七、預(yù)習(xí)要求
1 了解圖像編碼壓縮的基本原理和算法。
2 掌握MATLAB圖像處理工具箱(ImageProcessing ToolBox)中有關(guān)圖像編碼壓縮的函數(shù)。 3 編寫相應(yīng)的程序。
八、思考題
1 DFT與DCT的性能比較。
2 討論用一算法對不同原始圖像壓縮性能的影響。
實(shí)驗(yàn)四 圖像增強(qiáng)一、實(shí)驗(yàn)?zāi)康?/font>
1 熟悉并學(xué)會使用MATLAB中圖像增強(qiáng)的相關(guān)函數(shù)。
2 了解圖像增強(qiáng)的方法、噪聲去除的方法和去噪的效果。
二、實(shí)驗(yàn)主要儀器設(shè)備
1 微型計(jì)算機(jī):Intel Pentium及更高。
2 MATLAB軟件(含圖像處理工具箱)。
3 典型的灰度、彩色圖像文件。
三、實(shí)驗(yàn)原理
1 將一幅圖像看成是一個(gè)二維矩陣,因此用MATLAB進(jìn)行圖像增強(qiáng)是十分方便的。
2 灰度變換可以使圖像的動態(tài)范圍加大,圖像的對比度擴(kuò)展、圖像更為清晰,是圖像增強(qiáng)的重要手段。
圖像的點(diǎn)運(yùn)算
(1)線性擴(kuò)展
灰度級變換函數(shù)s=T(r)可為
file:///Z:\TEMP\msohtmlclip1\01\clip_image012.gif
(2)非線性擴(kuò)展
灰度級變換函數(shù)s=T(r)可為
s=clog(1+r)
(3)灰度倒置
灰度級變換函數(shù)s=T(r)可為
s=255-r
(4)二值化
確定一閾值r1,file:///Z:\TEMP\msohtmlclip1\01\clip_image014.gif。file:///Z:\TEMP\msohtmlclip1\01\clip_image016.gif的灰度值置白,file:///Z:\TEMP\msohtmlclip1\01\clip_image018.gif的灰度值置黑。
3 利用MATLAB圖像處理工具箱讀函數(shù)、顯示函數(shù)、加噪函數(shù)、濾波函數(shù)進(jìn)行圖像去噪處理。采取 imread函數(shù)讀圖像、imshow函數(shù)顯示圖像、imnoise函數(shù)對圖像進(jìn)行加噪處理、filter2函數(shù)對圖像進(jìn)行濾波。 4 各種去噪方法:鄰域平均、中值濾波。
四、實(shí)驗(yàn)內(nèi)容及步驟
1 % 直接灰度變換
clear all;
clc;
I =imread('cameraman.tif'); figure;imshow(I);
I1 =imadjust(I,[0 1],[1 0],1.0); figure;subimage(I1);
%直方圖灰度變換
I =imread('cameraman.tif'); figure;imshow(I);
figure;imhist(I); J = imadjust(I,[0.15 0.9], [0 1]); figure;imshow(J);
figure;imhist(J, 64); 2 圖像的空域點(diǎn)處理增強(qiáng) (1)選擇一幅圖像 lena.jpg,設(shè)置輸入選擇一幅圖像lena.jpg,設(shè)置輸入/輸出變換的灰度級范圍,a=0.3,b=0.6,c=0.1,d=0.9;
(2)設(shè)置非線性擴(kuò)展函數(shù)的參數(shù)c=2;
(3)采用灰度倒置變換函數(shù)s=255-r進(jìn)行圖像變換;
(4)設(shè)置二值化圖像的閾值,分別為level=0.4,level=0.7。
參考程序如下:
I=imread('lena.bmp');
figure;subplot(1,3,1);
imshow(I);
title('原圖');
J=imadjust(I,[0.30.6],[0.1 0.9]); subplot(1,3,2);imshow(J);
title('線性擴(kuò)展');
I1=double(I);
I2=I1/255;
C=2;
K=C*log(1+I2);
subplot(1,3,3);
imshow(K);
title('非線性擴(kuò)展');
M=255-I;
figure;
subplot(1,3,1);imshow(M);
title('灰度倒置');
N1=im2bw(I,0.4);
N2=im2bw(I,0.7);
subplot(1,3,2);
imshow(N1);
title('二值化閾值0.4');
subplot(1,3,3);
imshow(N2);
title('二值化閾值0.7');
2 對圖像加入噪聲(imnoise),選擇不同的去噪方法,如鄰域平均(filter2)、中值濾波(medfilt2)等方法,對圖像進(jìn)行增強(qiáng)處理。
3 分析各種去噪方法對不同噪聲圖像處理的結(jié)果。
六、實(shí)驗(yàn)報(bào)告要求
1 說明利用MATLAB圖像處理工具箱進(jìn)行圖像的讀、顯示、加噪、去噪處理的方法。
2 記錄原圖像、增強(qiáng)圖像、加噪圖像、去噪處理后的圖像。
3 列出上述圖像處理的程序。
4 回答思考題。
5 心得和體會。
七、預(yù)習(xí)要求
1 了解MATLAB圖像處理工具箱的功能。
2 了解圖像去噪的方法。
八、思考題
1 比較同一種噪聲、不同去噪方法處理的效果。
2 比較同一種噪方法、針對不同噪聲處理的效果。
3 對數(shù)非線性變換能否使圖像的低灰度級壓縮,高灰度級擴(kuò)展或者低灰度級擴(kuò)展,高灰度級壓縮?選擇不同的閾值,觀察閾值對圖像二值化的影響。
全部資料下載地址:
數(shù)字圖像處理實(shí)驗(yàn).rar
(466.96 KB, 下載次數(shù): 29)
2017-6-8 15:08 上傳
點(diǎn)擊文件名下載附件
|