數(shù)字圖象處理基礎(chǔ)_第1頁(yè)
數(shù)字圖象處理基礎(chǔ)_第2頁(yè)
數(shù)字圖象處理基礎(chǔ)_第3頁(yè)
數(shù)字圖象處理基礎(chǔ)_第4頁(yè)
數(shù)字圖象處理基礎(chǔ)_第5頁(yè)
已閱讀5頁(yè),還剩35頁(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)介

1、本科生實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)課程 數(shù)字圖像處理基礎(chǔ) 學(xué)院名稱 信息科學(xué)與技術(shù)學(xué)院 專(zhuān)業(yè)名稱 軟件工程 學(xué)生姓名 學(xué)生學(xué)號(hào) 指導(dǎo)教師 實(shí)驗(yàn)地點(diǎn) 6A502 實(shí)驗(yàn)成績(jī) 實(shí)驗(yàn)一實(shí)驗(yàn)?zāi)康模?)熟練掌握MatLAB圖像處理工具讀入圖像、顯示圖像、保存多種類(lèi)型圖像文件和圖像基本信息顯示。2)熟練掌握MatLAB矩陣索引與圖像基本處理(圖像旋轉(zhuǎn)、裁剪、抽樣)3) 熟練掌握?qǐng)D像算術(shù)運(yùn)算在圖像處理中應(yīng)用。實(shí)驗(yàn)內(nèi)容:(1) 讀入一幅彩色圖像文件,用rgb2gray(f)函數(shù)轉(zhuǎn)換成灰度圖象并作如下操作: 1) 顯示圖像,提取本圖像的基本信息,保存不同類(lèi)型的圖像文件并提取保存 圖像文件信息。 2) 應(yīng)用矩陣索引作圖像的裁剪、抽

2、樣和翻轉(zhuǎn)等基本處理。(2)用M文件分別采用循環(huán)方法和代數(shù)法編寫(xiě)生成一幅f(x,y)=A*sin(ux+vy) 圖像程 序。令u= ,v=顯示圖像。(3) 應(yīng)用圖像算術(shù)運(yùn)算完成下面的操作: 1)作圖像與常數(shù)的算術(shù)運(yùn)算 2)作兩幅圖像的算術(shù)運(yùn)算設(shè)計(jì)與實(shí)現(xiàn):內(nèi)容一:f=imread('d:1.jpg'); imshow(f);whos fimwrite(f,'d:1a1.tif');imfin 'd:1a1.tif'imfinfo 'd:1a1.tif'imfinfo 'd:1a2.jpg'imwrite(f,'

3、d:1112.jpg','quality',25);imfinfo 'd:1112.jpg'g = rgb2gray(f); imshow(g); g1=g'g2=g(50:150,50:150);g3=g(1:2:end,1:2:end);g4=g(end:-1:1,:);subplot(2,2,1);imshow(g1); title('圖像旋轉(zhuǎn)90度');subplot(2,2,2);imshow(g2);title('圖像裁剪');subplot(2,2,3);imshow(g3);title('圖

4、像抽取');subplot(2,2,4);imshow(g4);title('圖像翻轉(zhuǎn)');執(zhí)行結(jié)果:內(nèi)容二:f=imread('d:1.jpg');f=sin; plot(f(100,:) );imwrite(f,'e:13.tif');function f = sin()A=1;u=1/(4*pi);v=1/(4*pi);M=256;N=256;tic for x=1:M ux=u*(x-1); for y=1:N vy=v*(y-1); f(x,y)=A*sin(ux+vy); endendt1=toc; t1;ticx=0:M-1

5、;y=0:N-1;Y,X=meshgrid(y,x);g=A*sin(u*X+v*Y);t2=toc;t2;figure,imshow(f);figure,imshow(g);end執(zhí)行結(jié)果:內(nèi)容三:f=imread('d:1.jpg');f1=imread('d:2.jpg');f=rgb2gray(f);f1=rgb2gray(f1);g=imadd(f,30);imshow(g);A=f(10:80,10:80);B=f(10:80,10:80);C=A+B;D=C-A;subplot(2,3,1);imshow(f);title('A圖像'

6、;);subplot(2,3,2);imshow(mat2gray(C);title('C=A+B圖像');subplot(2,3,3);imshow(B);title('B圖像');subplot(2,3,4);imshow(mat2gray(C);title('C圖像');subplot(2,3,5);imshow(A);title('A圖像');subplot(2,3,6);imshow(mat2gray(D);title('D=C-A圖像');f=imread('d:1b.jpg');f1=

7、imread('d:2b.jpg');f=grb2gray(f);f=rgb2gray(f);f1=rgb2gray(f1);f=f(10:80,10:80);A=f1(10:80,10:80);B=f+A;C=B-A;subplot(2,3,1);imshow(f);title('f圖像');subplot(2,3,2);imshow(A);title('A圖像');subplot(2,3,3);imshow(B);title('B=f+A圖像');subplot(2,3,4);imshow(B);title('B圖像&

8、#39;);subplot(2,3,5);imshow(A);title('A圖像');subplot(2,3,6);imshow(C);title('C=B-A圖像');g=imcomplement(f1);gg=mat2gray(double(f1);g1=immultiply(gg,3);imshow(g);imshow(g1);>> a執(zhí)行結(jié)果:心得體會(huì):通過(guò)實(shí)驗(yàn)一的完成,初次熟練掌握了MATLAB的一些常用方法的使用如圖像的裁剪,旋轉(zhuǎn),抽樣,圖像的灰度處理,圖像的計(jì)算,圖像的讀入,顯示,保存等方法。實(shí)驗(yàn)二實(shí)驗(yàn)?zāi)康模赫莆栈叶茸儞Q(線性、指數(shù)、

9、對(duì)數(shù)變換、對(duì)比度拉伸、求補(bǔ)計(jì)算)和直方圖修正技術(shù)等方法在圖像增強(qiáng)中的應(yīng)用,并熟練掌握Matlab函數(shù):g=imadjust(f,low_in high_in,low_out high_out,gama)g = hiseq(f,count)的應(yīng)用。實(shí)驗(yàn)內(nèi)容:1)編寫(xiě)一個(gè)實(shí)現(xiàn)灰度變換(線性、指數(shù)和對(duì)數(shù)、對(duì)比度拉伸和求補(bǔ))圖像增強(qiáng)的 matlab程序并分析各種方法的效果。2)編寫(xiě)一個(gè)實(shí)現(xiàn)直方圖均衡化處理程序,并理解直方圖均衡化實(shí)現(xiàn)步驟。設(shè)計(jì)與實(shí)現(xiàn):內(nèi)容1:編碼:function g = intrans(f,varargin) % 亮度變換% f:輸入圖像% varargin: 函數(shù)可變參數(shù)數(shù)目err

10、or(nargchk(2,7,nargin)classin = class(f); %測(cè)試圖像文件的類(lèi)型if strcmp(class(f),'double') & max(f(:)>1 & strcmp(varargin1,'log')f=mat2gray(f); %轉(zhuǎn)換灰度 else f = im2double(f);endmethod = varargin1;leng = length(varargin);switch method case 'neg' %獲得圖像負(fù)片 g=imcomplement(f); case

11、'log' %對(duì)數(shù)變換 if leng=1 c=1; else if leng=2 c=varargin2;else error('Incorrect number of input for the log option.'); end end g = c*(log(1+double(f); case 'gamma' %灰度調(diào)整變換 if leng<2 error('Not enough inputs for the gamma option.'); end gam = varargin2; if leng=2 g = im

12、adjust(f,gam); else if leng=4 low_out=varargin3; high_out=varargin4; g = imadjust(f, ,low_out high_out,gam); else low_in=varargin3; high_in=varargin4; low_out=varargin5; high_out=varargin6; g = imadjust(f,low_in high_in,low_out high_out,gam); end endcase 'stretch' %對(duì)比度拉伸變換if leng=1 m=mean2(f

13、); % 求f圖像的平均值 E=4.0;else if leng=3 m=varargin2; E=varargin3; else error('Incorrect number of input for the log option.') end g=1./(1+(m./(f+eps).E);end otherwise error('Unknow method.')end% 轉(zhuǎn)換圖像類(lèi)型g = changeclass(classin,g);f=imread('e:Penguins.jpg');f=rgb2gray(f);g=intrans(f,

14、'neg');imshow(g);g=intrans(f,'gamma',0.3,0.2,0.8);imshow(g);g=intrans(f,'gamma',1,0.1,0.9);imshow(g);f=double(f);v=mean2(im2double(f);g=intrans(f,'stretch',v,0.9);imshow(g,);運(yùn)行結(jié)果: 內(nèi)容2:編碼:function ghisteg(f,varargin)subplot(2,2,1);imshow(f); h=imhist(f);h1=h(1:1:256);h

15、orz=1:1:256;subplot(2,2,2);bar(horz,h1);if length(varargin)=0 g=histeq(f);else b = varargin1 g=histeq(f,b);endsubplot(2,2,3);imshow(g);h=imhist(g);h1=h(1:1:256);horz=1:1:256;subplot(2,2,4);bar(horz,h1);f=imread('D:1.jpg');f=rgb2gray(f);ghisteg(f);運(yùn)行結(jié)果:心得體會(huì):通過(guò)實(shí)驗(yàn)二的完成,掌握灰度變換如:線性,指數(shù),對(duì)數(shù)變換,對(duì)比度拉伸,求

16、補(bǔ)運(yùn)算。直方圖修正技術(shù)等方法在圖像增強(qiáng)中的應(yīng)用,且熟練掌握了MATLAB的一些函數(shù)。如函數(shù)imadjust(f,low_in high_in,low_out high_out,gama),imcomplement(f); hiseq(f,count)。實(shí)驗(yàn)三實(shí)驗(yàn)?zāi)康模豪秒p峰高斯函數(shù)或cos函數(shù)擬合規(guī)定直方圖并作灰度變換處理:h=imhist(f,n);g=histeq(f,hspec)plot(x,cdf)bar(horz,h1)實(shí)驗(yàn)內(nèi)容:1) 編寫(xiě)一個(gè)雙峰高斯函數(shù)或cos函數(shù)程序。2)分別應(yīng)用雙峰高斯函數(shù)或cos函數(shù)作直方圖規(guī)定化處理。3)與直方圖均衡化處理結(jié)果比較雙峰高斯函數(shù):其中:a1

17、,a2:兩個(gè)峰的振幅值,取值(01)之間K:函數(shù)偏移值3.實(shí)驗(yàn)源碼與執(zhí)行結(jié)果設(shè)計(jì)與實(shí)現(xiàn):內(nèi)容1編碼:function p = twomodegauss(m1,sig1,m2,sig2,a1,a2,k)% 雙峰高斯函數(shù)c1 = a1*(1/(2*pi)0.5)*sig1);k1 = 2*(sig12);c2 = a2*(1/(2*pi)0.5)*sig2);k2 = 2*(sig22);z = linspace(0,1,256);p = k+c1*exp(-(z-m1).2)./k1)+c2*exp(-(z-m2).2)./k2);p = p./sum(p(:);plot(p);function

18、 p = SinA(k)N=256;v0=pi;z=linspace(0,v0,256);p = k+sin(z);p=p./sum(p(:);plot(p); f=imread('d:1.jpg');f=rgb2gray(f);f=im2double(f);p=twomodegauss(0.2,0.05,0.7,0.05,0.6,0.1,0.002); g=histeq(f,p); figure,imshow(g); h=imhist(g); figure,plot(h); p1=SinA(0.1); g1=histeq(f,p1); figure,imshow(g1); h

19、=imhist(g1); figure,plot(h);運(yùn)行結(jié)果: 內(nèi)容2:編碼:f=imread(d/1.jpg');f=rgb2gray(f);f=imadjust(f,0 0.5,1);subplot(3,2,1);imshow(f);h=imhist(f);title('線形變換后圖像');subplot(3,2,2);plot(h);g=histeq(f,250);subplot(3,2,3);imshow(g);h1=imhist(g);title('均衡化后圖像');subplot(3,2,4);plot(h1);p=twomodegaus

20、s(0.2,0.05,0.7,0.05,0.6,0.1,0.002);g1=histeq(f,p);subplot(3,2,5);imshow(g1);title('規(guī)定化后圖像');subplot(3,2,6);h2=imhist(g1);plot(h2);運(yùn)行結(jié)果:心得體會(huì):通過(guò)完成實(shí)驗(yàn)三,掌握了利用雙高峰函數(shù)和cos函數(shù)擬合規(guī)定直方圖并作灰度變換處理發(fā)現(xiàn)了雙高峰函數(shù)與cos函數(shù)作直方圖處理的效果與直方圖均衡化處理效果的不同與差異。實(shí)驗(yàn)四實(shí)驗(yàn)?zāi)康模?應(yīng)用傅里葉變換與頻率濾波方法作圖像增強(qiáng)處理,以掌握傅里葉變換的應(yīng)用并加深理論的理解。實(shí)驗(yàn)內(nèi)容:內(nèi)容一:1)讀入一幅圖像并作該圖

21、像的傅里葉變換,顯示傅里葉變換后的傅里葉譜的圖像和采用對(duì)數(shù)方式增強(qiáng)顯示,并理解其意義。2)分別采用不同的低通和高通濾波函數(shù)方法實(shí)現(xiàn)對(duì)噪聲消除和圖像銳化處理。3)利用傅里葉逆變換實(shí)現(xiàn)圖像顯示,并觀察不同的低通和高通濾波函數(shù)方法圖像處理效果。內(nèi)容2:修改上述程序中的濾波器為高通濾波器,并重新執(zhí)行上述命令。內(nèi)容3:修改上述程序,分別采用理想低通和高通濾波器,巴特沃斯低通和高通濾波器,高斯低通濾和高通濾波器對(duì)圖像作濾波處理,并且將他們的結(jié)果顯示在一個(gè)圖像窗口內(nèi)。重新執(zhí)行上述命令。設(shè)計(jì)與實(shí)現(xiàn):內(nèi)容一:function g=hfilter1(f)AB=size(f);PQ=2*AB;M=PQ(1); N=

22、PQ(2);u=0:(M-1); v=0:(N-1);idx = find(u>M/2);u(idx)=u(idx)-M;idy = find(v>N/2);v(idy)=v(idy)-N;V,U=meshgrid(v,u);D=sqrt(U.2+V.2);D0 = 0.05*PQ(1);H=exp(-(D.2)./(2*(D02);%H=1-H; %高通濾波器H1=fftshift(H);F=fft2(f,size(H,1),size(H,2);F1=fftshift(F);F1=log(1+abs(F1);g=real(ifft2(H.*F);g=g(1:size(f,1),1

23、:size(f,2);subplot(2,2,1); imshow(f,);title(原始圖像);subplot(2,2,2); imshow(H1,);title(濾波器圖像);subplot(2,2,3); imshow(F1,);title(傅里葉頻譜圖像);subplot(2,2,4); imshow(g,);title(低通濾波后圖像);function p=work04_01()f=imread('d:1.jpg'); f=rgb2gray(f);f1= imnoise(f,'salt & pepper',0.1);g=hfilter1(f

24、1);運(yùn)行結(jié)果:內(nèi)容二,三:function g=hfilter3(f)AB=size(f);PQ=2*AB;M=PQ(1);N=PQ(2);u=0:(M-1);v=0:(N-1);idx = find(u>M/2);u(idx)=u(idx)-M;idy = find(v>N/2);v(idy)=v(idy)-N;V,U=meshgrid(v,u);D=sqrt(U.2+V.2);D0 = 0.05*PQ(1);La=double(D<=D0);Lb=1./(1+(D./D0).2);Lc=exp(-(D.2)./(2*(D02);Ha=1-La;Hb=1-Lb;Hc=1-

25、Lc;F=fft2(f,size(La,1),size(La,2);Lg1=real(ifft2(La.*F);Hg1=real(ifft2(Ha.*F);Lg2=real(ifft2(Lb.*F);Hg2=real(ifft2(Hb.*F);Lg3=real(ifft2(Lc.*F);Hg3=real(ifft2(Hc.*F);figure,imshow(f,);title('原始圖像');figure;subplot(3,2,1);imshow(Lg1(1:size(f,1),1:size(f,2),);title('理想低通濾波圖像');subplot(3

26、,2,2);imshow(Hg1(1:size(f,1),1:size(f,2),);title('理想高通濾波圖像');subplot(3,2,3);imshow(Lg2(1:size(f,1),1:size(f,2),);title('巴特沃斯低通濾波圖像');subplot(3,2,4);imshow(Hg2(1:size(f,1),1:size(f,2),);title('巴特沃斯高通濾波圖像');subplot(3,2,5);imshow(Lg3(1:size(f,1),1:size(f,2),);title('高斯低通濾波圖像

27、');subplot(3,2,6);imshow(Hg3(1:size(f,1),1:size(f,2),);title('高斯高通濾波圖像');執(zhí)行:f=imread('D:/1.jpg');f=rgb2gray(f);hfilter3(f);執(zhí)行效果:心得體會(huì):通過(guò)這次實(shí)驗(yàn)的完成,掌握了應(yīng)用傅里葉變換與頻率濾波方法作圖像增強(qiáng)處理,與此同時(shí),掌握了傅里葉變換的應(yīng)用并且加深了理論的理解。實(shí)驗(yàn)中分別實(shí)現(xiàn)了不同的高通濾波和低通濾波效果,并從圖像可以看出他們很大的差別,但是不同的高(低)通濾波函數(shù)顯示的圖像的變化并不是太大。實(shí)驗(yàn)五實(shí)驗(yàn)?zāi)康模赫莆湛沼蚱交瑸V波和中

28、值濾波等方法實(shí)現(xiàn)圖像消噪處理和圖像邊緣檢測(cè)處理。主要掌握Matlab函數(shù):(1) 濾波函數(shù)g=imfilter(f,w,filtering_mode,boundary_options,size_options)(2) 中值濾波函數(shù)g=medfilt2(f, ,padopt)(3) 加噪函數(shù)g=imnoise(f, type,parameters)(4) 生成掩模函數(shù)w=fspecial(type,parameters);實(shí)驗(yàn)內(nèi)容:1、編寫(xiě)一個(gè)能適應(yīng)用戶給定任意已知掩模的空域平滑matlab程序。2、編寫(xiě)一個(gè)能適應(yīng)用戶給定任意大小掩模的中值濾波程序。3、編寫(xiě)一個(gè)零交點(diǎn)的邊緣檢測(cè)算法程序并用該實(shí)現(xiàn)

29、圖像的邊緣檢測(cè)。設(shè)計(jì)與實(shí)現(xiàn):內(nèi)容一:f=imread('f:1.jpg');f=rgb2gary(f)w=ones(31);f=im2double(f);subplot(3,2,1);Imshow(f);title('原始圖像');g=imnoise(f,'gaussian',0.1);subplot(3,2,2);Imshow(g);title('加高斯噪聲圖像');g=imfilter(g,w);subplot(3,2,3);Imshow(g,);title('空間濾波圖像');w=1 1 1 1 -8 1 1

30、 1 1;g1=imfilter(f,w,'replicate');subplot(3,2,4);Imshow(g1,);title('拉普拉斯圖像銳化');w1 = fspecial('prewitt');w2 = fspecial('log',5 5,1.45);ph = imfilter(f,w1,'replicate');pv = imfilter(f,w1','replicate');g2 = ph.2+pv.2;subplot(3,2,5);Imshow(g2,);title(&

31、#39;prewitt圖像銳化');g3 = imfilter(f,w2,'replicate');subplot(3,2,6);Imshow(g3,);title('log圖像銳化');運(yùn)行結(jié)果:內(nèi)容二:f1 = imread('D:1.jpg');f1=rgb2gray(f1);figure,imshow(f1);f = imnoise(f1,'salt & pepper',0.1);figure,imshow(f); g=ordfilt2(f,5,ones(3,3),'symmetric');

32、figure,imshow(g);g1=medfilt2(f,3 3, 'symmetric');f2=imnoise(g1,'gaussian',0.1); g2=medfilt2(f2,3 3, 'symmetric'); figure,imshow(g2);運(yùn)行結(jié)果: 內(nèi)容三:function ZeroAcross(x,sig)count=2*int16(2*sqrt(2)*sig)+1n = double(int16(count/2)-1for i=-n:n for j=-n:n w(i+n+1,j+n+1)=1.0/(2*pi*sig4

33、)*(i2+j2)/(sig2)-2)*exp(-(i2+j2)/(2*sig2); endend執(zhí)行:x=imread('D:1.jpg');figure,imshow(x);x=rgb2gray(x);w=1 1 1 1 -8 1 1 1 1;g=imfilter(x,w,'symmetric');g1=g>0;g1=255*g1;figure,imshow(g1);g2=edge(x,'canny');figure,imshow(g2);運(yùn)行結(jié)果:心得體會(huì):在這次實(shí)驗(yàn)中,掌握了空域平滑濾波和中值濾波等方法實(shí)現(xiàn)圖像消噪處理和圖像邊緣處理

34、,掌握了一些matlab函數(shù)如:imfilter(f,w,filtering_mode,boundary_options,size_options),medfilt2(f, ,padopt)imnoise(f, type,parameters),fspecial(type,parameters);的應(yīng)用。并利用他們實(shí)現(xiàn)了能適應(yīng)用戶給定任意已知掩模的空域平滑,任意大小掩模的中值濾波程序,零交叉點(diǎn)的邊緣檢測(cè)算法程序并實(shí)現(xiàn)了圖像的邊緣檢測(cè)。實(shí)驗(yàn)六實(shí)驗(yàn)?zāi)康模褐饕莆請(qǐng)D像編碼(Huffman數(shù)據(jù)壓縮)過(guò)程。分別理解源約簡(jiǎn)和碼分配過(guò)程的huffman、 huffman數(shù)據(jù)壓縮和huffman解碼程序及其m

35、atlab與C語(yǔ)言混合編程的應(yīng)用方法。實(shí)驗(yàn)內(nèi)容:1)編寫(xiě)一個(gè)源約簡(jiǎn)和碼分配過(guò)程的huffman程序2)編寫(xiě)一個(gè)huffman數(shù)據(jù)壓縮程序3) 編寫(xiě)一個(gè)huffman解碼程序設(shè)計(jì)與實(shí)現(xiàn):內(nèi)容1function CODE =huffman(p)%霍夫曼編碼global CODECODE=cell(length(p),1);if length(p)>1 p = p/sum(p); s = reduce(p); makecode(s,);else CODE='1'endfunction makecode(sc,codeword)global CODEif isa(sc,'

36、cell') makecode(sc1,codeword 0); makecode(sc2,codeword 1);else CODEsc=char('0'+codeword);endfunction s = reduce(p);s =cell(length(p),1);for i=1:length(p) si=i;endwhile size(s,1) > 2 p,i=sort(p); p(2)=p(1)+p(2); p(1)=; s=s(i); s2=s1,s2; s(1)=;endfunction y=mat2huff(x)% 霍夫曼圖像壓縮y.size =

37、uint32(size(x);x =round(double(x);xmin = min(x(:);xmax = max(x(:);pmin = double(int16(xmin);pmin = uint16(pmin+32768);y.min = pmin;x = x(:)'h = histc(x,xmin:xmax);if max(h)>65535 h = 65535*h/max(h);endh = uint16(h);figure,plot(h);y.hist =h;map = huffman(double(h);hx = map(x(:)-xmin+1);hx = ch

38、ar(hx)'function cr = imratio(f1,f2)% 求壓縮比error(nargchk(2,2,nargin);cr = bytes(f1)/bytes(f2);function b = bytes(f)if ischar(f) info = dir(f); b =info.bytes;elseif isstruct(f) b=0; fields = fieldnames(f); for k = 1:length(fields) b = b + bytes(f.(fieldsk); end else info = whos('f'); b = in

39、fo.bytes; end執(zhí)行:f=imread('d:1.jpg');f=rgb2gray(f);g=mat2huff(f); % huffman壓縮c=imratio(f,g) % 求壓縮比save filename g; % 保存數(shù)據(jù)壓縮文件運(yùn)行結(jié)果內(nèi)容2:function x = huff2mat(y)sz = double(y.size);m = sz(1);n = sz(2);xmin = double(y.min)-32768;map = huffman(double(y.hist);code = cellstr(char('','0

40、9;,'1');link = 2; 0; 0;left = 2 3;found =0;tofind = length(map);while length(left) & (found<tofind) look = find(strcmp(map,codeleft(1); if look link(left(1) = -look; left = left(2:end); found =found + 1; else len = length(code);link(left(1) = len + 1; link = link; 0; 0; codeend+1 = st

41、rcat(codeleft(1),'0'); codeend+1 = strcat(codeleft(1),'1'); left = left(2:end); left = left len+1 len+2; endendx = unravel(y.code',link,m*n);x = x+xmin-1;x =reshape(x,m,n);C程序:#include "mex.h"void unravel(unsigned short *hx,double *link,double *x,double xsz,int hxsz) in

42、t i=15,j=0, k=0,n=0; while(xsz-k) if(*(link+n)>0) if(*(hx+j)>>i) & 0x0001) n = *(link + n); else n = *(link + n)-1; if (i) i-; else j+; i=15; if(j>hxsz) mexErrMsgTxt("out of code bits ?"); else *(x+k+) =-*(link+n); n=0; if(k=xsz-1) *(x+k+) =-*(link+n); void mexFunction (int

43、 nlhs,mxArray *plhs,int nrhs, const mxArray *prhs) double *link,*x,xsz; unsigned short *hx; int hxsz; if(nrhs !=3) mexErrMsgTxt("three inputs required."); else if(nlhs >1) mexErrMsgTxt("too many output arguments."); if(!mxIsDouble(prhs2) mxIsComplex(prhs2) mxGetN(prhs2)*mxGetM

44、(prhs2)!=1) mexErrMsgTxt("Input XSIZE must be a scalar.");hx = mxGetPr(prhs0); link=mxGetPr(prhs1); xsz = mxGetScalar(prhs2); hxsz = mxGetM(prhs0); plhs0 = mxCreateDoubleMatrix(xsz,1,mxREAL); x = mxGetPr(plhs0); unravel(hx,link,x,xsz,hxsz); 執(zhí)行:mex unravel.cf=load(filename) ; %裝入壓縮數(shù)據(jù)fg1=huf

45、f2mat(f.g); %解壓縮g1=mat2gray(g1);imshow(g1);運(yùn)行結(jié)果:心得體會(huì):通過(guò)這次實(shí)驗(yàn)掌握了圖像編碼(Huffman數(shù)據(jù)壓縮)過(guò)程。分別理解了源約簡(jiǎn)和碼的分配過(guò)程的huffman,huffman數(shù)據(jù)壓縮和huffman解碼程序及其matlab與C語(yǔ)言混合編程的應(yīng)用方法。并加深了對(duì)huffman編碼的理解。實(shí)驗(yàn)七實(shí)驗(yàn)?zāi)康模?理解引起圖像退化的因素和圖像恢復(fù)幾種基本算法(逆濾波、維納濾波、自相關(guān)函數(shù)維納濾波和約束最小二剩方濾波)的基本理論。掌握matlab函數(shù)的使用方法。實(shí)驗(yàn)內(nèi)容:1)利用點(diǎn)擴(kuò)散函數(shù)叫噪聲的方法生成一幅退化圖像g。2)分別采用逆濾波、維納濾波、自相關(guān)

46、函數(shù)維納濾波圖像恢復(fù)方法恢復(fù)圖像并比較它們的結(jié)果。3)用約束最小二剩方濾波和L-R非線性復(fù)原算法作圖像恢復(fù)處理。設(shè)計(jì)與實(shí)現(xiàn):內(nèi)容1:function f,g,PSF,noise=tuihuaf=checkerboard(8); %產(chǎn)生8X8黑白方格圖像subplot(2,2,1);imshow(f);title('原始圖像');PSF=fspecial('motion',7,45); % 產(chǎn)生點(diǎn)擴(kuò)散空間濾波器gb=imfilter(f,PSF,'circular'); %生成退化圖像subplot(2,2,2);imshow(gb);title(

47、'退化模糊圖像');noise=imnoise(zeros(size(f),'gaussian',0,0.01); %生成高斯噪聲圖像subplot(2,2,3);imshow(noise,);title('噪聲圖像');g=gb+noise;subplot(2,2,4);imshow(g);title('退化+噪聲模糊圖像');內(nèi)容2:function reImage(f,g,PSF,noise)subplot(2,2,1);imshow(g);title('退化圖像');fr=deconvwnr(g,PSF);

48、 % 逆濾波圖像恢復(fù)subplot(2,2,2);imshow(fr);title('逆濾波圖像');sn=abs(fft2(noise).2; %噪聲功率譜nA=sum(sn(:)/prod(size(noise); % 噪聲平均功率sf=abs(fft2(f).2; %圖像功率譜fA=sum(sf(:)/prod(size(f); %圖像平均功率R=nA/fA; %噪信比f(wàn)r1=deconvwnr(g,PSF,R); %維納濾波圖像恢復(fù)subplot(2,2,3);imshow(fr1);title('維納濾波圖像');NCORR = fftshift(re

49、al(ifft2(sn); %計(jì)算噪聲自相關(guān)矩陣ICORR = fftshift(real(ifft2(sf); %計(jì)算圖像自相關(guān)矩陣fr2=deconvwnr(g,PSF,NCORR,ICORR); %自相關(guān)維納濾波圖像恢復(fù)subplot(2,2,4);imshow(fr2);title('自相關(guān)維納濾波圖像')f,g,PSF,noise=tuihua;reImage(f,g,PSF,noise);運(yùn)行結(jié)果: 內(nèi)容3:function reImage1(g,PSF)subplot(2,2,1);imshow(g);title('退化圖像');AB=size(g

50、);NOISEPOWER=(AB(1)*AB(2)*0.001;fr=deconvreg(g,PSF,NOISEPOWER,1e-7 1e7);subplot(2,2,2);imshow(fr);title('最小二剩方算法圖像復(fù)原');DAMPAR=0.1;LIM = ceil(size(PSF,1)/2);WEIGHT=zeros(size(g);WEIGHT(LIM+1:end-LIM,LIM+1:end-LIM)=1;NUMIT = 5;fr1 = deconvlucy(g,PSF,NUMIT,DAMPAR,WEIGHT);subplot(2,2,3);imshow(f

51、r1);title('L-R算法5次迭代圖像復(fù)原');NUMIT = 30;fr1 = deconvlucy(g,PSF,NUMIT,DAMPAR,WEIGHT);subplot(2,2,4);imshow(fr1);title('L-R方法30次迭代圖像復(fù)原');運(yùn)行結(jié)果:心得體會(huì):在這次實(shí)驗(yàn)中,理解了引起圖像退化的因素和圖像恢復(fù)的幾種基本算法(逆濾波,維納濾波,自相關(guān)函數(shù)維納濾波和約束最小二乘方濾波)的基本理論。掌握了Matlab 的一些使用方法。比較了幾種濾波方法的結(jié)果,從圖像結(jié)果上了解了不同濾波方法之間的差異和圖像恢復(fù)處理的結(jié)果。實(shí)驗(yàn)八實(shí)驗(yàn)?zāi)康模赫莆詹噬?/p>

52、變換中的RGB轉(zhuǎn)換HIS和HIS轉(zhuǎn)換RGB;掌握彩色圖像的增強(qiáng)技術(shù);掌握區(qū)域分割方法Matlab程序設(shè)計(jì)方法。實(shí)驗(yàn)內(nèi)容:1)編寫(xiě)一個(gè)RGB轉(zhuǎn)換HIS實(shí)現(xiàn)Matlab程序并測(cè)試該程序2)編寫(xiě)一個(gè)HIS轉(zhuǎn)換RGB 實(shí)現(xiàn)Matlab程序并測(cè)試該程序3)編寫(xiě)一個(gè)彩色圖像增強(qiáng)的Matlab程序,并實(shí)現(xiàn)中值濾波、空間平均濾波、拉普拉斯算子圖象銳化和圖像邊緣檢測(cè)。4)編寫(xiě)一個(gè)區(qū)域生長(zhǎng)法的圖像分割Matlab程序。設(shè)計(jì)與實(shí)現(xiàn):內(nèi)容一、二:function hsi=rgb2hsi(f)f=im2double(f);r=f(:,:,1);g=f(:,:,2);b=f(:,:,3);num=0.5*(r-g)+(r-b);den=sqrt(r-g).2+(r-b).*(g-b);theta = acos(num./den+eps);H=theta;H(b>g) = 2*pi-H(b>g);H=H/(2*pi);num = min(min(r,g),b);den = r+g+b;den(den=0)=eps;S=1-3.*num./den;H(S=0)=0;I = (r+g+b)/3;figure,imshow(H);figure,imshow(S);figu

溫馨提示

  • 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)論