數(shù)字圖像處理實(shí)驗(yàn)答案_第1頁(yè)
數(shù)字圖像處理實(shí)驗(yàn)答案_第2頁(yè)
數(shù)字圖像處理實(shí)驗(yàn)答案_第3頁(yè)
數(shù)字圖像處理實(shí)驗(yàn)答案_第4頁(yè)
數(shù)字圖像處理實(shí)驗(yàn)答案_第5頁(yè)
已閱讀5頁(yè),還剩7頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

實(shí)驗(yàn)名稱:圖像的銳化處理實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)用銳化處理技術(shù)來(lái)加強(qiáng)圖像的目標(biāo)邊界和圖像細(xì)節(jié)。對(duì)圖像進(jìn)行梯度算子、Roberts算子、Sobel算子邊緣檢測(cè)處理和Laplace算子邊緣增強(qiáng)處理,使圖像的某些特征(如邊緣、輪廓等)得以進(jìn)一步的增強(qiáng)和突出。實(shí)驗(yàn)內(nèi)容編寫(xiě)梯度算子和Roberts算子濾波函數(shù)。編寫(xiě)Sobel算子濾波函數(shù)。編寫(xiě)Laplace算子邊緣增強(qiáng)濾波函數(shù)。觀察頻域中用高低通濾波技術(shù)對(duì)圖像進(jìn)行的平滑和銳化處理。實(shí)驗(yàn)方法及編程用Matlab進(jìn)行編程,主要是對(duì)照著實(shí)驗(yàn)書(shū)上面的算法流程圖進(jìn)行代碼的編 寫(xiě),主要編寫(xiě)代碼如下所示:functionnewbuf=RobFilter(oldbuf,M,N);%*************************************************************************%函數(shù)名稱:%RobFilter()%說(shuō)明:%'Robert梯度'濾波算法。%*************************************************************************fori=1:M-1forj=1:N-1newbuf(i,j)=abs(oldbuf(i,j)-oldbuf(i+1,j+1))+abs(oldbuf(i+1,j)-oldbuf(i,j+1));endend%-------------------------------------------------------------------------functionnewbuf=SobFilter(oldbuf,M,N);%*************************************************************************%函數(shù)名稱:%SobFilter()%說(shuō)明:%'Sobel'濾波算法。%*************************************************************************fori=2:M-1forj=2:N-1sx=oldbuf(i+1,j-1)+2*oldbuf(i+1,j)+oldbuf(i+1,j+1)-oldbuf(i-1,j-1)-2*oldbuf(i-1,j)-oldbuf(i-1,j+1);sy=oldbuf(i-1,j+1)+2*oldbuf(i,j+1)+oldbuf(i+1,j+1)-oldbuf(i-1,j-1)-2*oldbuf(i,j-1)-oldbuf(i+1,j-1);newbuf(i,j)=abs(sx)+abs(sy);endend%-------------------------------------------------------------------------functionnewbuf=LapFilter(oldbuf,M,N);%*************************************************************************%函數(shù)名稱:%LapFilter()%說(shuō)明:%'Laplace'濾波算法。%************************************************************************fori=2:M-1forj=2:N-1newbuf(i,j)=5*oldbuf(i,j)-oldbuf(i-1,j)-oldbuf(i+1,j)-oldbuf(i,j-1)-oldbuf(i,j+1);endend實(shí)驗(yàn)結(jié)果及分析(原圖像和處理后的圖像比較及分析)如上圖所示即為實(shí)驗(yàn)結(jié)果。如上圖所示Robert算子能夠檢測(cè)出原圖像的邊緣,并且顯示出來(lái);Sobel在Robert算子的基礎(chǔ)上增強(qiáng)了邊緣,所以圖像上結(jié)果會(huì)顯示比原圖像邊緣要更加粗一些;Laplace算子與其他邊緣增強(qiáng)方法不同,即其邊緣的增強(qiáng)程度和邊緣的方向無(wú)關(guān),所以圖像的細(xì)節(jié)明顯比原來(lái)更加突出。實(shí)驗(yàn)名稱:圖像方塊編碼實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)編程實(shí)驗(yàn),掌握方塊編碼的基本方法及壓縮性能。實(shí)驗(yàn)內(nèi)容編程實(shí)現(xiàn)子塊為nxn的方塊編碼基本算法,分別取n=2,4,8方塊尺寸進(jìn)行編解碼實(shí)驗(yàn),計(jì)算編碼后的均方誤差和壓縮比。實(shí)驗(yàn)圖像可為任意圖像。實(shí)驗(yàn)方法及編程用Matlab進(jìn)行編程,主要是對(duì)照著實(shí)驗(yàn)書(shū)上面的算法流程圖進(jìn)行代碼的編 寫(xiě),下面是主要的實(shí)驗(yàn)代碼:functionnewbuf=BtcCode(oldbuf,M,N,n)%*************************************************************************%函數(shù)名稱:%BtcCode()方塊編碼函數(shù)%參數(shù):%oldbuf原圖像數(shù)組%MN原圖像尺寸%n方塊尺寸%說(shuō)明:%調(diào)用方塊編碼算法函數(shù),輸出編碼后的圖像%*************************************************************************newbuf=oldbuf;rowblocks=M/n;colblocks=N/n;fori=1:rowblocks-1row=i*n;forj=1:colblocks-1col=j*n;fori=1:nforj=1:ninbuf(i,j)=oldbuf(i+row,j+col);endendoutbuf=BtcBlock(inbuf,n);fori=1:nforj=1:nnewbuf(i+row,j+col)=outbuf(i,j);endendendend%-------------------------------------------------------------------------functionoutbuf=BtcBlock(inbuf,n)%*************************************************************************%函數(shù)名稱:%btcblock()方塊編碼算法函數(shù)%參數(shù):%inbuf方塊數(shù)組%n方塊尺寸%outbuf存放處理后的方塊圖像%說(shuō)明:%把原圖像分成n*n子塊,對(duì)每個(gè)方塊的圖像數(shù)據(jù)分別計(jì)算xt,a0,a1值,再用分辨率分%量(a0,a1)替代方塊原來(lái)的數(shù)據(jù)最后放入方塊圖像數(shù)組中并返回該數(shù)組。%*************************************************************************temp=0;temp0=0;temp1=0;q=0;m=n*n;inbuf=double(inbuf);fori=1:nforj=1:ntemp=temp+inbuf(i,j);endendxt=temp/m;fori=1:nforj=1:nif(inbuf(i,j)>=xt)q=q+1;temp1=temp1+inbuf(i,j);elsetemp0=temp0+inbuf(i,j);endendendifq~=ma0=round(temp0/(m-q));endifq~=0a1=round(temp1/q);endfori=1:nforj=1:nif(inbuf(i,j)<xt)outbuf(i,j)=a0;elseoutbuf(i,j)=a1;endendEnd實(shí)驗(yàn)結(jié)果及分析(原圖像和處理后的圖像比較及分析)如上圖所示,即為實(shí)驗(yàn)結(jié)果。實(shí)驗(yàn)將圖像分為m=n*n的子圖像塊,然后進(jìn)行方塊編碼;由實(shí)驗(yàn)結(jié)果可知,窗口愈大時(shí),方塊效應(yīng)越明顯,方塊編碼圖像變得越模糊;窗口愈小時(shí),編碼圖像接近于原圖像。實(shí)驗(yàn)名稱:圖像線性預(yù)測(cè)編碼實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)編程設(shè)計(jì),掌握幀內(nèi)DPCM的編解碼方法(預(yù)測(cè),量化)及其壓縮性能。實(shí)驗(yàn)內(nèi)容編制一維前值預(yù)測(cè)DPCM編解碼程序,預(yù)測(cè)系數(shù)取(1,0,0,0)。編制二維前值預(yù)測(cè)DPCM編解碼程序,預(yù)測(cè)系數(shù)?。?/2,1/4,0,1/4)。重建圖像與原圖像誤差圖像,用絕對(duì)誤差表示如下:式中的n為放大因子,以便觀察誤差的分布情況。本實(shí)驗(yàn)采用15個(gè)量化分層的主觀量化器,其量化電平分別?。?,+5,+10,+17,+28,+39,+52,+67)。分別計(jì)算重建后圖像的PSNR。實(shí)驗(yàn)的圖像為cla0或cla1。實(shí)驗(yàn)方法及編程用Matlab進(jìn)行編程,主要是對(duì)照著實(shí)驗(yàn)書(shū)上面的算法流程圖進(jìn)行代碼的編 寫(xiě),主要的代碼如下所示:functionnewbuf=Dpcm_code(oldbuf,M,N,dim);%*************************************************************************%函數(shù)名稱:%Dpcm_Code()“線性預(yù)測(cè)編解碼器”算法函數(shù)%參數(shù):%oldbuf原圖像數(shù)組%M,N原圖像尺度%dim選擇預(yù)測(cè)編碼維數(shù)%newbuf存放處理后的圖像二維數(shù)組%說(shuō)明:%根據(jù)線性預(yù)測(cè)編解碼算法調(diào)用各個(gè)子模塊,對(duì)原圖像進(jìn)行1D/2D線性預(yù)測(cè)編碼和解碼,%解碼后的恢復(fù)圖像放在newbuf數(shù)組中。%*************************************************************************globalnewbuf;%定義全局變量fori=1:Mforj=1:Npre_val=Predict_Value(i,j,N,dim);err=oldbuf(i,j)-pre_val;quan_err=Quant_Value(err);res_val=Restor_Value(quan_err,pre_val);newbuf(i,j)=Clip_Value(res_val);endend%-------------------------------------------------------------------------functionnewbuf=Error_Code(M,N,dim);%*************************************************************************%函數(shù)名稱:%Error_Code()“傳輸誤碼解碼器”算法函數(shù)%參數(shù):%M,N原圖像尺度%dim選擇預(yù)測(cè)編碼維數(shù)%newbuf存放處理后的圖像二維數(shù)組%說(shuō)明:%模擬信道傳輸過(guò)程中產(chǎn)生的誤碼,觀察傳輸誤碼經(jīng)解碼后對(duì)恢復(fù)圖像的影響,解碼%后的恢復(fù)圖像放在newbuf數(shù)組中。%*************************************************************************globalnewbuf;wrong=zeros(M,N);wrong(100,100)=120;fori=1:Mforj=1:Npre_val=Predict_Value(i,j,N,dim);err=wrong(i,j);quan_err=Quant_Value(err);res_val=Restor_Value(quan_err,pre_val);newbuf(i,j)=Clip_Value(res_val);endend%-------------------------------------------------------------------------functionPvalue=Predict_Value(row,col,N,dim)%*************************************************************************%{Thisfunctionisusedtogivepredictedvalueaslinearpredictor.%Thepredictionformulaisasfollows:%1_DDPCM:^x[i,j]=128ifj=1%x'[i,j-1]ifj>1%2_DDPCM:^x[i,j]=128ifi=1,j=1%x'[i,j-1]ifi=1,j>1%x'[i-1,j]ifi>1,j=1orN%1/2x'[i,j-1]ifi>1,j>1%1/8x'[i-1,j-1](Pirsch'spredictor)%1/4x'[i-1,j]%1/8x'[i-1,j+1]%Dim:Dimensionofprediction%Row:verticalcoordinateofcurrentpixeltobepredicted%COL:horizontalcoordinateofcurrentpixeltobepredicted}%*************************************************************************globalnewbuf;switchdim%預(yù)測(cè)算法編程case1ifcol==1Pvalue=128;elsePvalue=newbuf(row,col-1);endcase2if(row==1&&col==1)Pvalue=128;endif(row==1&&col>1)Pvalue=newbuf(row,col-1);endif(row>1&&col==1)||(row>1&&col==N)Pvalue=newbuf(row-1,col);endif(row>1&&col>1&&col<N)Pvalue=(1/2)*newbuf(row,col-1)+(1/4)*newbuf(row-1,col-1)+...(1/4)*newbuf(row-1,col+1);endend%-------------------------------------------------------------------------functionQvalue=Quant_Value(err);%*************************************************************************%Thisfunctionisusedaslinearquantizer.Thequantizerhastotally%13quantizationlevel:%0,-+7,-+16,-+27,-+38,-+51,-+66%*************************************************************************if(abs(err)<=3)lev=0;elseif(abs(err)<=11)lev=7;elseif(abs(err)<=21)lev=16;elseif(abs(err)<=32)lev=27;elseif(abs(err)<=44)lev=38;elseif(abs(err)<=58)lev=51;elselev=66;end;end;end;end;end;end;Qvalue=lev;if(err~=0)Qvalue=lev*(err/abs(err));end%-------------------------------------------------------------------------functionRvalue=Restor_Value(quan_err,pre_val)%*************************************************************************%ThisfunctionisusedtogetrestoredvalueofDPCM%x=^x+Quant_Error%*************************************************************************Rvalue=quan_err+pre_val;%-------------------------------------------------------------------------functionCvalue=Clip_Value(res_val)%*************************************************************************%Thisfunctionisusedtocliptorestoredvalueto8_bitvalue%0ifx<0%x'=255ifx>255%xotherwise%*************************************************************************if(res_val<0)Cvalue=0;elseif(res_val>255)Cvalue=255;elseCvalue=res_val;end;end;實(shí)驗(yàn)結(jié)果及分析(原圖像和處理后的圖像比較及分析)如上圖所示,即為實(shí)驗(yàn)所得的結(jié)果圖像。由實(shí)驗(yàn)結(jié)果可以看出,一維和二維預(yù)測(cè)編碼圖像非常接近原圖像;從誤碼圖像中可以看出,一維預(yù)測(cè)編碼會(huì)將誤差延續(xù)到行末端,而二維預(yù)測(cè)編碼其將誤碼延續(xù)至其后的斜后方,所以二維預(yù)測(cè)編碼的誤差會(huì)偏小。實(shí)驗(yàn)名稱:JPEG壓縮編碼實(shí)驗(yàn)?zāi)康恼莆課xn子塊的DCT圖像變換及頻譜特點(diǎn)。熟悉JPEG基本系統(tǒng)的圖像編解碼方法。實(shí)驗(yàn)內(nèi)容編程實(shí)現(xiàn)nxn子塊DCT變換的圖像頻譜顯示,8x8子塊DCT變換系數(shù)按“Z”掃描圖像重建,計(jì)算圖像的均方根誤差RMSE,顯示誤差圖像和誤差直方圖。編程實(shí)現(xiàn)JPEG壓縮編碼,進(jìn)行8x8子塊的DCT圖像變換,JPEG量化矩陣的量化與反量化,8x8子塊DCT的圖像重建,計(jì)算圖像的均方根誤差RMSE,顯示誤差圖像和誤差直方圖。實(shí)驗(yàn)方法及編程用Matlab進(jìn)行編程,主要是對(duì)照著實(shí)驗(yàn)書(shū)上面的算法流程圖進(jìn)行代碼的編 寫(xiě),主要的代碼如下所示:functionnewbuf=DctBlock(oldbuf,Block)%*************************************************************************%函數(shù)名稱:%DctBlock()DCTn*n塊頻譜函數(shù)%%參數(shù):%oldbuf原圖像數(shù)組%BlockDCTn*n當(dāng)前塊選擇值%newbuf存放處理后的圖像二維數(shù)組%%說(shuō)明:%根據(jù)Block塊的當(dāng)前選擇值,計(jì)算原圖像的n*n塊DCT變換,并轉(zhuǎn)換為可視頻譜圖,%有利于頻譜的觀察。%*************************************************************************oldbuf=double(oldbuf);%添加程序H=dctmtx(Block);newbuf=blkproc(oldbuf,[BlockBlock],'P1*x*P2',H,H');newbuf=log(abs(newbuf));subplot(2,2,2);imshow(newbuf,[]);%-------------------------------------------------------------------------functionnewbuf=DctCode(oldbuf,DCTch)%*************************************************************************%函數(shù)名稱:%DctCode()DCT8*8塊系數(shù)“Z”字掃描圖像壓縮函數(shù)%%參數(shù):%oldbuf原圖像數(shù)組%DCTchDCT8*8塊“Z”掃描當(dāng)前系數(shù)選擇值%newbuf存放處理后的圖像二維數(shù)組%%說(shuō)明:%計(jì)算圖像的8×8子塊DCT變換,按“Z”字掃描順序,根據(jù)DCTch參數(shù),只保留64個(gè)%DCT系數(shù)中的前DCTch個(gè)系數(shù),對(duì)修改后的DCT系數(shù)用逆DCT變換重建圖像,得到DCT變%換的壓縮圖像。計(jì)算重建圖像的均方根誤差RMSE;顯示誤差圖像和誤差直方圖。%*************************************************************************zigzag=[126715162829%設(shè)置z掃描順序35814172730434913182631424410121925324145541120243340465355212334394752566122353848515760623637495058596364];tbuf=ones(8);%定義8*8全1數(shù)組maskbuf=tbuf.*zigzag<=DCTch;%根據(jù)當(dāng)前DCTch值得到“Z”字掃描的二值掩模oldbuf=double(oldbuf);H=dctmtx(8);%添加程序dctno=blkproc(oldbuf,[88],'P1*x*P2',H,H');newbuf=blkproc(dctno,[88],'P1*(x.*P2)*P3',H',maskbuf,H);subplot(2,2,2);imshow(newbuf,[]);eimag(oldbuf,newbuf);%-------------------------------------------------------------------------functionnewbuf=JpegCode(oldbuf)%*************************************************************************%函數(shù)名稱:%JpegCode()JPEG近似基準(zhǔn)編碼%%參數(shù):%oldbuf原圖像數(shù)組%newbuf存放處理后的圖像二維數(shù)組%%說(shuō)明:%實(shí)現(xiàn)JPEG壓縮編碼,進(jìn)行8×8子塊DCT變換、JPEG量化矩陣的量化與反量化,%8×8子塊DCT的圖像重建;計(jì)算重建圖像的均方根誤差RMSE;顯示誤差圖像和誤差直方圖。%*************************************************************************z=[1611101624405161.121214192658605514131624405769561417222951878062182237566810910377243555648110411392496478871031211201017292959811210010399];%標(biāo)準(zhǔn)亮度量化表oldbuf=double(oldbuf);%原圖像數(shù)據(jù)轉(zhuǎn)換為雙精度H=dctmtx(8);%添加程序dctno=blkproc(oldbuf,[88],'P1*x*P2',H,H');jpegno=blkproc(dctno,[88],'round(x./P1)',z);jpegno1=blkproc(jpegno,[88],'x.*P1',z);newbuf=blkproc(jpegno1,[88],'P1*x*P2',H',H);subplot(2,2,2);imshow(newbuf,[]);eimag(oldbuf,newbuf);%-----------------------------

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論