數字影象處理實驗MATLAB版+實驗報告親筆
實驗一 影象開啟、儲存與顯示
一、實驗目的:
掌握數字影象的基本型別及其表示。熟悉Matlab軟體環境,瞭解Matlab中對影象資料的讀入、顯示和輸出等操作,實現影象檔案的開啟、顯示與儲存功能。
二、實驗環境:
計算機、WindowsXP作業系統,Matlab7.0
三、實驗內容:
實驗前準備工作:
所使用的影象檔案都儲存在Matlab安裝目錄下的\toolbox\images\imdemos子目錄下。將實驗中需要使用的影象檔案,事先拷貝到Matlab安裝目錄下的\work子目錄下。(Matlab預設處理當前工作目錄下的影象檔案)
1、運用Matlab影象處理工具箱中的imread函式分別讀入灰度影象pout.tif、二值影象blobs.png、索引影象trees.tif和RGB影象peppers.png,觀察相應的影象矩陣,並運用imshow函式顯示相應影象。
2、對一個RGB彩色影象peppers.png,分別抽取其R、G、B三個分量層,並顯示各層影象。
3、向灰度影象pout.tif中分別加入高斯噪聲和椒鹽噪聲,顯示並儲存帶有噪聲的影象。
實驗二 影象灰度直方圖統計
一、實驗目的:
理解並掌握灰度直方圖的概念、計算灰度直方圖的方法以及如何應用直方圖均衡化來增強影象對比度。
二、實驗環境:
計算機、WindowsXP作業系統,Matlab7.0
三、實驗內容:
以灰度影象pout.tif為例,運用Matlab程式設計實現灰度直方圖的統計以及直方圖均衡化處理過程:
(1)計算並繪製原始影象的灰度直方圖;
(2)根據離散累計分佈函式,對原始灰度直方圖進行均衡化處理,繪製均衡化後的灰度直方圖;
(3)生成均衡化處理後的新影象,顯示並儲存。
(4)比較原始影象和新影象的對比度。
注:基於MATLAB強大的處理影象和支援數學計算的功能,該課程所有實驗皆用MATLAB實現。
實驗一:
程式碼實現:
>> I_huidu=imread('pout.tif'); >> figure(1),imshow(I_huidu); >> I_erzhi=imread('blobs.png'); >> figure(2),imshow(I_erzhi); >> I_erzhi2=imread('circles.png'); >> figure(3),imshow(I_erzhi2); >> [I_suoyin,colormap]=imread('trees.tif'); >> figure(4),imshow(I_suoyin); >> imshow(I_suoyin,colormap); >> I_reb=imread('peppers.png'); >> R=I_reb(:,:,1); >> figure(5),imshow(R); >> subplot(2,2,1),imshow(I_reb); >> subplot(2,2,2),imshow(R); >> G=I_reb(:,:,2); >> B=I_reb(:,:,3); >> subplot(2,2,3),imshow(G); >> subplot(2,2,4),imshow(B); >> I=imread('pout.tif'); >> G=imnoise(I,'gaussian'); >> figure(6),subplot(1,3,1),imshow(I); >> subplot(1,3,2),imshow(G); >> J=imnoise(I,'salt & pepper'); >> J=imnoise(I,'salt & pepper',0.05); >> subplot(1,3,3),imshow(J); >> imwrite(G,'gpout.tif'); >> imwrite(J,'jpout.tif');
實驗報告:
實驗二:程式碼實現:(.m檔案)
grayimage=imread('pout.tif');
[m,n]=size(grayimage);
gp=zeros(1,256);
for i=1:256
gp(i)=length(find(grayimage==(i-1)))/(m*n);
end
subplot(2,2,1),imshow(grayimage);
subplot(2,2,2),bar(0:255,gp);
S1=zeros(1,256);
S2=zeros(1,256);
temp=0;
for i=1:256
temp=temp+gp(i);
S1(i)=temp;
end
S2=round(S1*255);
newgp=zeros(1,256);
for i=1:256
newgp(i)=sum(gp(find(S2==(i-1))));
end
subplot(2,2,4),bar(0:255,newgp);
newgrayimage=grayimage;
for i=1:256
newgrayimage(find(grayimage==(i-1)))=S2(i);
end
subplot(2,2,3),imshow(newgrayimage);
imwrite(newgrayimage,'newpout.tif');
實驗報告: