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