




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
PAGE33實驗一、圖像的顯示與格式變換1、實驗目的1)熟悉常用的圖像文件格式與格式轉換;2)熟悉圖像矩陣的顯示方法(灰度、索引、黑白、彩色);3)熟悉圖像矩陣的格式轉換2、實驗內容練習圖像讀寫命令imread和imwrite并進行圖像文件格式間的轉換。特別是索引圖像與1,4,8,16比特圖像的存儲與轉換。實驗步驟用圖像讀命令(imread)從你的硬盤中讀取圖像 (cameramen.tif);b.用圖像顯示功能(imshow)將剛讀入的圖像顯示在一圖像窗中;c.顯示顏色條功能(colorbar)在圖像的左邊畫一條顏色亮度顯 示條; d.用(imfinfo)功能得到(gray.bmp)圖像的相關信息;e.用(colormap)獲取當前圖像的調色板,觀察調色板中的顏色設置;f.用(getimage)功能從坐標軸取得當前圖像數據;g.用(imagesc)功能顯示圖像從64-128的灰度值;h.用(immovie)功能將一個4-D圖像創(chuàng)建多幀索引圖的電影動畫;i.用(warp)功能將圖像('testpat1.tif)顯示到紋理映射柱面;思考:怎樣讓(cameraman.tif)圖像如下圖一樣顯示?實驗結果及代碼a.代碼:>>X=imread(‘cameraman.tif’)b.代碼:>>y=imshow(X)顯示的圖像為:c、代碼:>>I=colorbar('cameraman.tif')H=imshow('cameraman.tif')顯示的圖像為d、代碼:>>info=imfinfo(‘gray.bmp')顯示結果為:Filename:[1x71char]FileModDate:'16-Apr-201011:23:52'FileSize:107786Format:'bmp'FormatVersion:'Version3(MicrosoftWindows3.x)'Width:409Height:259BitDepth:8ColorType:'indexed'FormatSignature:'BM'NumColormapEntries:256Colormap:[256x3double]RedMask:[]GreenMask:[]BlueMask:[]ImageDataOffset:1078BitmapHeaderSize:40NumPlanes:1CompressionType:'none'BitmapSize:106708HorzResolution:0VertResolution:0NumColorsUsed:0NumImportantColors:0e、代碼:>>x=imread(‘256.bmp’)color1=colormap%獲取當前圖象的調色板image(x)info=imfinfo(’256.bmp’)color2=info.Colormap%注意觀察調色板有多少種顏色colormap(color2)f、代碼:>>I=getimageg、代碼:>>imagesc(x,[64128])h、代碼:>>loadmri;mov=immovie(D,map);movie(mov,3)顯示圖像為:i.源代碼:>>[x,y,z]=cylinder;I=imread('testpat1.tif');warp(x,y,z,I),圖像顯示為:思考:代碼:>>X=inread('cameramen.tif');Y=[XX];[x,-y,z]=cylinder;I=imread(Y);warp(x,y,z,I)顯示圖像為:實驗二、圖像增強實驗目的理解圖像直方圖的含義;了解直方圖的應用;掌握直方圖均衡化的實現方法。二、實驗內容Imagehistogram.imhist-Showthehistogramoftheimage.subplot-dividesthecurrentfigureintorectangularpanesthatarenumberedrow-wise.(畫子圖)subimage-顯示子圖imadjust-Adjustimageintensityvaluesorcolormap(灰度調整)histeq-直方圖均衡化三、實驗步驟a.Loadlena_adjust.bmpimagefromyourharddisk(usingfunctionimread).b.Showtheimageinafigurewindow.c.Showthehistogramoftheimage(usingfunctionimhist).d.理解函數adjust的用法,把下列命令輸入M文件以便調試>>clearx=imread('lena_adjust.bmp')figuresubplot(2,2,1)imshow(x)subplot(2,2,2)imhist(x)subplot(2,2,3)y=imadjust(x,[],[0.40.6])imshow(y)subplot(2,2,4)imhist(y)顯示圖像為:改變imadjust的參數,觀察其結果如:imadjust(x,[0.50.8],[],0.5)顯示圖像為:考慮問題,有一幅256階的灰度圖desert.bmp,我們想把它進行二值化,那就要選擇閾值,一般選擇中間值。但是有些圖象偏黑或偏白,那就應該觀察它的直方圖來決定閾值。>>x=imread('gray1.bmp');figuresubplot(2,2,1)imhist(x);y=imhist(x);subplot(2,2,2)subimage(x)subplot(2,2,3)subimage(x>200)subplot(2,2,4)w=im2bw(x);%im2bw為MATLAB把圖象轉化為二值圖象的函數subimage(w)直方圖均衡化如何進行直方圖均衡化,關鍵是找到其轉換函數g(x,y)=T[f(x,y)]。由課本的證明得知轉換函數就是其直方圖的積分,離散數據則為累計積分。>>clearallx=imread('lena_adjust.bmp');subplot(2,2,1);imshow(x);subplot(2,2,2);imhist(y)subplot(2,2,3);y=cumtrapz(imhist(x));%累計積分,即直方圖的均衡化轉換函數plot(y);%問題:如何利用y進行映射得到
新的圖象g(x,y)?請嘗試實現。代碼:>>clearallx=imread('lena_adjust.bmp');subplot(2,2,1);imshow(x);subplot(2,2,2);imhist(y)subplot(2,2,3);y=cumtrapz(imhist(x));%累計積分,即直方圖的均衡化轉換函數plot(y);%J=histeq(x);imshow(J);subplot(2,2,4)imhist(J)顯示圖像為:實驗三、空域濾波實驗目的了解空域濾波的方法;掌握幾種模板的基本原理。二、實驗內容使用函數fspecial()生成幾種特定的模板;使用函數imfilter()配合模板對圖象數據進行二維卷積;比較各種濾波器的效果。三、實驗步驟及結果線性平滑(低通)濾波器用h=fspecial(‘average’)得到的h為3×3的鄰域平均模板,然后用h來對圖象cameraman.tif進行平滑處理。>>x=imread(‘cameraman.tif’);h=fspecial(‘average’)//3×3的鄰域平均模板(7×7的鄰域平均模板h=fspecial(‘average’,[7,7]))y=imfilter(x,h);subplot(1,2,1)imshow(x)subplot(1,2,2)imshow(y)把模板大小改變fspecial()的參數為高斯低通模板fspecial(‘gaussian’),再以上同樣的平滑處理,觀察其結果。>>x=imread(‘cameraman.tif’);h=fspecial(‘gaussian’)//3×3的鄰域平均模板(7×7的鄰域平均模板h=fspecial(‘gaussian’,[7,7]))y=imfilter(x,h);subplot(2,3,1)imshow(x)subplot(2,3,2)imshow(y)h1=fspecial(‘gaussian’,[7,7])y1=imfilter(x,h1);subplot(2,3,3)imshow(y1)h2=fspecial(‘gaussian’,[9,9])y2=imfilter(x,h2);subplot(2,3,4)imshow(y2)h3=fspecial(‘gaussian’,[11,11])y3=imfilter(x,h3);subplot(2,3,5)imshow(y3)可以用mesh函數直觀觀察模板:>>clearh1=fspecial(‘gaussian’,100,3);[xy]=meshgrid(1:100);mesh(x,y,h1);h2=fspecial(‘gaussian’,100,10);figuremesh(x,y,h2)非線性平滑濾波器中值(median)濾波器是非線性濾波器的一種,它工作原理如下:將模板在圖中漫游,并將模板中心與圖中某個象素位置重合;讀取模板下各對應象素的灰度值;將這些灰度值從小到大排成一列;找出這些值中排在中間的1個;將這個中間值賦給對應模板中心位置的象素。先用imnoise()函數給圖象加噪聲,如對圖象增加高斯白噪聲y=imnoise(x,’gaussian’)代碼:>>x=imread('cameraman.tif');y=imnoise(x,'gaussian');subplot(1,2,1)imshow(x)subplot(1,2,2)imshow(y)對圖象eight.tif添加胡椒鹽噪聲(salt&pepper),然后分別用前面的均值濾波器和中值濾波器medfilt2()進行去噪聲處理,比較結果。中值濾波代碼:>>x=imread('eight.tif');h=imnoise(x,'salt&pepper',0.02);y=medfilt2(h);subplot(1,2,1)imshow(x)subplot(1,2,2)imshow(y)線性銳化濾波器線性銳化濾波器的模板為h=[-1-1-1;-18-1;-1-1-1;]用該模板對圖象cameraman.tif進行銳化處理;代碼:>>x=imread('cameraman.tif');h=[-1-1-1;-18-1;-1-1-1 ]y=imfilter(x,h);subplot(1,2,1)imshow(x)subplot(1,2,2)imshow(y)也可以fspecial('laplacian')函數得到銳化模板;代碼:>>x=imread('cameraman.tif');h=fspecial('laplacian')y=imfilter(x,h);subplot(1,2,1)imshow(x)subplot(1,2,2)imshow(y)另外一種有趣的作法是:用原圖象減去經過低通處理的圖象,再經過灰度拉伸得到高通(銳化)的圖象。索貝爾(sobel)算子h1=[-101;-202;-101;]h2=[121;000;-1-2-1;]分別使用以上算子對圖象進行處理可以得到圖象的邊緣。>>x=imread('cameraman.tif');h1=[-101;-202;-101;]y=imfilter(x,h);subplot(1,2,1)imshow(x)subplot(1,2,2)imshow(y)>>x=imread('cameraman.tif');h2=[121;000;-1-2-1;]y=imfilter(x,h);subplot(1,2,1)imshow(x)subplot(1,2,2)imshow(y)實驗四、頻域濾波一.實驗目的1.了解頻域濾波的方法;2.掌握頻域濾波的基本步驟。二、實驗內容使用二維快速傅立葉變換函數fft2()及其反變換函數ifft2()對圖象進行變換;自己編寫函數生成各種頻域濾波器;比較各種濾波器的特點。三、實驗步驟及結果圖象的傅立葉變換對圖象1.bmp做傅立葉變換。代碼:>>x=imread(‘1.bmp’);f=fft2(x);imshow(real(f))%顯示變換后的實部圖象figuref1=fftshift(f);imshow(real(f1))f實部圖像:f1實部圖像:對圖象cameraman.tif進行傅立葉變換,分別顯示變換后的實部圖象。代碼:>>x=imread('cameraman.tif');f=fft2(x);imshow(real(f))實部圖像:頻域濾波的步驟求圖象的傅立葉變換得F=fft2(x)用函數F=fftshit(F)進行移位生成一個和F一樣大小的濾波矩陣H.用F和H相乘得到G,G=F.*H求G的反傅立葉變換得到g就是我們經過處理的圖象。這其中的關鍵就是如何得到H。理想低通濾波器函數dftuv()在文件夾中,它用生成二維變量空間如:[UV]=dftuv(11,11)生成理想低通濾波器>>[UV]=dftuv(51,51);D=sqrt(U.^2+V.^2);H=double(D<=15);Mesh(U,V,H)應用以上方法,對圖象cameraman.tif進行低通濾波;>>closeallQ=0.7x=imread('cameraman.tif')F=fft2(x);[UV]=dftuv(size(F,1),size(F,2));D=sqrt(U.^2+V.^2);H=double(D<=size(F,1)/2*Q);G=F.*H;imshow(real(fftshift(F)))figureimshow(real(fftshift(G)))g=real(ifft2(G));figureimshow(uint8(g))fftshift(F)實部的圖像:fftshift(G)實部圖像:處理后的圖像:4.巴特沃茲低通濾波器代碼:>>closeallf=imread('cameraman.tif');PQ=size(f);[UV]=dftuv(PQ(1),PQ(2));D0=0.07*PQ(2);F=fft2(f,PQ(1),PQ(2));H=exp(-(U.^2+V.^2)/(2*(D0^2)));mesh(U,V,H)figureG=F.*H;imshow(real(fftshift(F)))figureimshow(real(fftshift(G)))g=real(ifft2(G));figureimshow(uint8(g))mesh(U,V,H)圖像:fftshift(F)實部圖像:fftshift(G)實部圖像:處理后的5.高通濾波器a.我們可以參照理想低通濾波器的思路,得到>>[UV]=dftuv(51,51);D=sqrt(U.^2+V.^2);H=double(D>=115);Mesh(U,V,H)b.對圖象cameraman.tif進行高通濾波代碼:>>closeallx=imread('cameraman.tif');F=fft2(x);[UV]=dftuv(size(F,1),size(F,2));D=sqrt(U.^2+V.^2);H=double(D>=size(F,1)/2*0.4);G=F.*H;imshow(real(fftshift(F)))figureimshow(real(fftshift(G)))g=real(ifft2(G));figureimshow(uint8(g))w=histeq(g);figureimshow(w)fftshift(G)實部圖像:uint8(g)的圖像:處理后的圖像:實驗五、圖象復原一.實驗目的了解圖象退化的幾種原因;掌握對相應退化原因的復原方法。二、實驗內容使用函數fspecial()和imfilter()模擬產生退化圖象;使用平滑濾波器和維納濾波器復原圖象。三、實驗步驟加性噪聲退化圖象a.先用imnoise()函數給圖象加噪聲,如對圖象增加高斯白噪聲x=imread(‘cameraman.tif’);x=imnoise(x,’gaussian’)imshow(x)b.使用平滑濾波器對其進行濾波h=fspecial(‘average’)y=imfilter(x,h);figureimshow(y)c.使用維納濾波器進行處理w=wiener2(x)figureimshow(w)d.使用演示程序比較各種濾波器的效果>>nrfiltdemo運動退化圖象使用fspecial()和imfilter()模擬產生運動退化圖象clearI=imread('flowers.tif');figure;imshow(I);title('OriginalImage');%createPSFLEN=31;THETA=15;PSF=fspecial('motion',LEN,THETA);%blurtheimageBlurred=imfilter(I,PSF,'circular','conv');figure;imshow(Blurred);title('BlurredImage');b.使用維納濾波器進行處理%deblurtheimagewnr1=deconvwnr(Blurred,PSF);figure;imshow(wnr1);title('Restored,TruePSF');圖像壓縮(系數截取樣點:10)%ImagecompressusingDCT(8*8)clc;I=imread('cameraman.tif');I=im2double(I);T=dctmtx(8);B=blkproc(I,[8,8],'P1*x*P2',T,T');%對圖像進行分塊DCT變換mask=[1111000011100000110000001000000000000000000000000000000000000000];%二值掩模,用來確定保留的DCT變換系數C=blkproc(B,[8,8],'P1.*x',mask);%壓縮I2=blkproc(C,[8,8],'P1*x*P2',T',T);%IDCTsubplot(1,2,1);imshow(I);title('原圖');%顯示原圖像subplot(1,2,2);imshow(I2);title('壓縮圖像(系數截取樣點:10)');%顯示壓縮圖像%ImagecompressusingDCT(8*8)clc;I=imread('cameraman.tif');I=im2double(I);T=dctmtx(8);B=blkproc(I,[8,8],'P1*x*P2',T,T');%對圖像進行分塊DCT變換mask=[11100000110000000000000000000000];%二值掩模,用來確定保留的DCT變換系數C=blkproc(B,[8,8],'P1.*x',mask);%壓縮I2=blkproc(C,[8,8],'P1*x*P2',T',T);%IDCTsubplot(1,2,1);imshow(I);title('原圖');%顯示原圖像subplot(1,2,2);imshow(I2);title('壓縮圖
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度廠房裝修工程合同管理及咨詢服務
- 2025年系列自動遙測氣象站項目建議書
- 秋季重點學科教學方案計劃
- 秘書職業(yè)女性的挑戰(zhàn)與機遇計劃
- 幼兒表達能力提升計劃
- 社區(qū)親和力提升的途徑計劃
- 資金流動性管理策略計劃
- 急診科應急響應機制強化計劃
- 藝術設計行業(yè)新年工作策略計劃
- 營造積極班級氣氛的實踐計劃
- 2025年南陽科技職業(yè)學院高職單招數學歷年(2016-2024)頻考點試題含答案解析
- 加油站復工復產方案
- 2025-2030年中國增韌劑(MBS高膠粉)行業(yè)發(fā)展現狀及前景趨勢分析報告
- 2025年高考物理復習新題速遞之萬有引力與宇宙航行(2024年9月)
- 2025年首都機場集團公司招聘筆試參考題庫含答案解析
- 2025云南省貴金屬新材料控股集團限公司面向高校畢業(yè)生專項招聘144人高頻重點提升(共500題)附帶答案詳解
- 蘇州市區(qū)2024-2025學年五年級上學期數學期末試題一(有答案)
- 暑期預習高一生物必修二知識點
- (高清版)DB43∕T 1147-2015 太陽能果蔬烘干機
- 醫(yī)院人體器官捐獻及獲取流程
- 結腸造瘺還納手術配合
評論
0/150
提交評論