數(shù)字圖像Matlab實驗操作手冊_第1頁
數(shù)字圖像Matlab實驗操作手冊_第2頁
數(shù)字圖像Matlab實驗操作手冊_第3頁
數(shù)字圖像Matlab實驗操作手冊_第4頁
數(shù)字圖像Matlab實驗操作手冊_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGE14數(shù)字圖像Matlab實驗?zāi)夸?.Matlab7.6簡單入門 11.1啟動 11.2Matlab的使用方式 11.3交互方式的使用 11.4Matlab的程序工作方式 11.5基本命令 21.6基本函數(shù) 21.7數(shù)據(jù)類型及運算 21.8Matlab程序控制流 3實驗1Matlab基本運算 5實驗2認識數(shù)字圖像 5實驗3圖像增強 10實驗4彩色圖象處理 14實驗5圖像變換 17實驗6頻域圖像增強 21習(xí)題6.1理想低通(高通)濾波器 21習(xí)題6.2Butterworth濾波器 22實驗7圖像編碼 23實驗8圖像分析 23習(xí)題8.1印刷體字符識別 23習(xí)題8.2手寫體字符識別 331.Matlab7.6簡單入門1.1啟動點擊Matlab/bin/matlab.exe,打開Matlab的工作窗(或指令窗)1.2Matlab的使用方式①指令行操作之直接交互工作方式;②使用matlab編程語言之程序設(shè)計方式.1.3交互方式的使用在Matlab工作窗(如圖1所示,CommandWindow)中一般輸入以下三種指令行:①命令②表達式③賦值語句:變量=表達式圖1Matlab工作窗1.4Matlab的程序工作方式step1.File→New→M-file %打開Matlab程序工作窗Editor/Debuggerstep2.編寫Matlab程序;Tools→Run1.5基本命令quit %退出Matlabclc %清除指令窗口clear %從內(nèi)存中清除變量和函數(shù)clf %清除當(dāng)前圖pack %合并工作內(nèi)存中的碎塊dir %列出文件cd %改變或顯示當(dāng)前工作目錄disp %顯示矩陣和文字內(nèi)容size %確定矩陣的維數(shù)demo %演示程序help %在線幫助delete %刪除文件whos %列出工作內(nèi)存中的變量細節(jié)xpimage %圖像處理性能的演示imagedemo %同上p=’’...%定義一個字符串變量myArray%生成一維數(shù)組arrayName(n)%調(diào)用一維數(shù)組的第n個元素;arrayName(n1:n2)%引用一維數(shù)組的第n1到第n2個元素arrayName([n1n2]))%引用一維數(shù)組中第n1和第n2個元素myArray=[123445;2324356;54678788;...]%定義一個二維數(shù)組arrayName(m,n);%引用二維數(shù)組的第m行n列的元素arrayName(m,:);%引用二維數(shù)組的第m行的所有列元素arrayName(m1:m2,n)%引用二維數(shù)組中第n列中第m1行到m2行的元素plot%二維繪圖函數(shù)hist%繪制直方圖1.6基本函數(shù)figure %創(chuàng)建圖形窗口figure(n)%創(chuàng)建單個圖形窗口,且該窗口編號為nsubplot(mnp)%創(chuàng)建多重子窗口image %創(chuàng)建圖形窗口imshow %顯示圖像figureimshow(f)%保留第一幅圖像并輸出第二幅圖像colormap %設(shè)置配色圖rgb2hsv %將rgb圖像轉(zhuǎn)換成hsv圖像hsv2rgb %將hsv圖像轉(zhuǎn)換成rgb圖像rgb2ycbcr %將rgb圖像轉(zhuǎn)換成ycbcr圖像ycbcr2rgb %將ycbcr圖像轉(zhuǎn)換成rgb圖像abs %幅值fft2 %二維快速Fourier變換ifft2 %二維快速Fourier反變換log %自然對數(shù)dct2 %二維快速余弦變換idct2 %二維快速余弦反變換image %與imshow相似imfinfo %顯示圖像參數(shù)1.7數(shù)據(jù)類型及運算1)Matlab的基本數(shù)據(jù)類型為矩陣(實數(shù)皆看成1×1的矩陣),矩陣的基本運算同線性代數(shù)A+B %矩陣相加B %矩陣相減A*B %矩陣相乘A.*B%矩陣對應(yīng)元素相乘2)標(biāo)量與矩陣進行運算的規(guī)定S+B=sE+Bs-B=sE-Bs=B-sEs*B=sE*B3)其他運算inv(B)=B-1A^n=An,A.^n=(aij^n)exp(A)=(exp(aij))log(A)=(log(aij))f(A)=(f(aij))A’=A/4)矩陣的輸入直接輸入A=[123;456;789]矩陣編輯器editA5)指令行結(jié)果的輸出(有如下三個要點)指令行后有分號,不輸出結(jié)果指令行后無分號,輸出運算結(jié)果表達式后按回車,則ans=之后,給出結(jié)果6)冒號運算符設(shè)A是m*n矩陣B=A(:,r)%由第r列元素組成的矩陣B=A(s,:)%由第s行元素組成的矩陣B=A(s1:s2,r1:r2)%取A的子矩陣B=A([135],:)%由A的1,3,5行組成的矩陣7)給矩陣作標(biāo)志L=X<=0.5;%標(biāo)志矩陣X中其值小于0.5的元素的位置(小于0.5的元素替換為1,其余為零,作成一個新矩陣)8)Laplacian算子del2()%五點離散拉普拉斯算子1.8Matlab程序控制流1)注釋%號為串首元素的一行字符串2)循環(huán)結(jié)構(gòu)for-endwhile-endfor循環(huán)變量=循環(huán)初值:增量值:循環(huán)終值語句組endwhile邏輯表達式語句組end3)分支結(jié)構(gòu)if-else-endswitch-case-endif邏輯表達式語句體1else語句體2endswitch表達式casevalue1語句體1casevalueN語句體Notherwise語句體N+1end

實驗1Matlab基本運算習(xí)題1.1四則運算.習(xí)題1.2矩陣運算.實驗2認識數(shù)字圖像imfinfo('test.jpg') %顯示圖像文件1.jpg的屬性習(xí)題2.1讀一幅圖像(灰度值圖像或彩色圖像),研究其圖像參數(shù).A=imread('test.jpg'); %讀圖像1.jpg,并將像素值陣列賦給矩陣Aimshow(A); %顯示圖像AA↙ %顯示圖像A的像素值(若圖像過大,顯示時間就會過長,按ctrl+C終止)whos↙ %顯示內(nèi)存中各變量的類型,包括A顯示圖像A的一個局部:B=A(1:100,1:100,:);C=A(101:200,101:200,:);imshow(B);imshow(C);subplot(1,3,1),imshow(A);subplot(1,3,2),imshow(B);subplot(1,3,3),imshow(C);習(xí)題2.2讀一幅彩色圖像,以灰度值圖像的形式顯示其RGB各分量,并比較之.B=imread('test.jpg'); %讀彩色圖像test.jpg,并將像素值陣列賦給矩陣Bimshow(B); %顯示圖像BB↙ %顯示圖像B的像素值whosBR=B(:,:,1); %B的紅色分量BG=B(:,:,2); %B的綠色分量BB=B(:,:,3); %B的藍色分量imshow(BR);imshow(BG);imshow(BB);whos%將三幅圖像放在一起進行比較:subplot(1,3,1),imshow(BR);subplot(1,3,2),imshow(BG);subplot(1,3,3),imshow(BB);習(xí)題2.4讀一幅彩色圖像,以彩色圖像的形式顯示其RGB各分量,并比較其異同.BRR=B;BRR(:,:,2)=0; %去掉B的綠色分量BRR(:,:,3)=0; %去掉B的藍色分量imshow(BRR);BGG=B;BGG(:,:,1)=0;BGG(:,:,3)=0; %去掉B的紅、藍色分量imshow(BGG);BBB=B;BBB(:,:,1)=0;BBB(:,:,2)=0; %去掉B的紅、綠色分量imshow(BBB);%將三幅圖像放在一起進行比較:subplot(1,3,1),imshow(BRR);subplot(1,3,2),imshow(BGG);subplot(1,3,3),imshow(BBB);習(xí)題2.5讀一幅彩色圖像,進行顏色模式轉(zhuǎn)換,以灰度值圖像的形式顯示其HSI各分量,并比較其異同.C=rgb2hsv(B); %將彩色圖像進行模式轉(zhuǎn)換H=C(:,:,1);S=C(:,:,2);I=C(:,:,3);imshow(H); %顯示B的色度分量imshow(S); %顯示B的飽和度分量imshow(I); %顯示B的亮度分量習(xí)題2.6研究imwrite,將一個矩陣里的數(shù)據(jù)寫進一個jpg圖像文件里.習(xí)題2.7傅立葉變換與濾波total_time_t=10; %總時間dalta_t=0.01; %采樣間隔frequency=1/dalta_t;dalta_u=frequency/N;N=total_time_t/dalta_t; %采樣點數(shù)t=0:dalta_t:total_time_t;y=sin(2*pi*t)+sin(4*2*pi*t)+sin(8*2*pi*t);subplot(4,1,1);plot(t,y);%顯示10秒原始信號ffty=fft(y); %y的傅立葉變換u=N/2+1; %取y的傅立葉變換數(shù)據(jù)用于顯示half_ffty=ffty(1:u);i=0:frequency/N:frequency/2;%frequency/N為頻率域空間采樣頻率subplot(4,1,2);plot(i,abs(half_ffty));%顯示信號的傅立葉變換h=5;w=4;%清除頻率為4的信號,清除寬度為hffty(N-w/dalta_u-h:N-w/dalta_u+h)=0;ffty(w/dalta_u-h:w/dalta_u+h)=0;w=8;%清除頻率為8的信號,清除寬度為hffty(N-w/dalta_u-h:N-w/dalta_u+h)=0;ffty(w/dalta_u-h:w/dalta_u+h)=0;half_ffty=ffty(1:u);subplot(4,1,3);plot(i,abs(half_ffty));%顯示濾波以后的信號的頻譜z=ifft(ffty);subplot(4,1,4);plot(t,real(z));%顯示濾波以后的信號習(xí)題2.8對圖象進行壓擴變換%clearall;I=imread('A.jpg');imshow(I);pause;tt=255;maxmax=log(1+tt*tt)/log(1+tt);y=(255/maxmax)*log(1+double(I)*tt)/log(1+tt);yy=uint8(y);imshow(yy);習(xí)題2.9第二章講義第33頁,對圖象進行像素復(fù)制整數(shù)倍放大.clearall;I=imread('AA.jpg');II=size(I);t=2;X=II(1)*t;Y=II(2)*t;B=zeros(X,Y);fori=1:X/tforj=1:Y/tB(i*t-1,j*t-1)=I(i,j);B(i*t-1,j*t)=I(i,j);B(i*t,j*t-1)=I(i,j);B(i*t,j*t)=I(i,j);endendimwrite(uint8(B),'b.bmp','bmp');習(xí)題2.10對圖像進行任意角度旋轉(zhuǎn)clearall;I=imread('AA.jpg');II=size(I)theta=1.2;X=fix(sqrt(II(1)*II(1)+II(2)*II(2))+1);Y=X;B=zeros(X,Y,3);%x-x0=cos(theta)*(i-i0)-sin(theta)*(j-j0)%y-y0=sin(theta)*(i-i0)+cos(theta)*(j-j0)x0=fix(II(1)/2);y0=fix(II(2)/2);i0=fix(X/2);j0=fix(Y/2);fori=1:Xforj=1:Yx=fix(x0+cos(theta)*(i-i0)-sin(theta)*(j-j0));y=fix(y0+sin(theta)*(i-i0)+cos(theta)*(j-j0));ifx>1&&x<II(1)&&y>1&&y<II(2)B(i,j,1)=I(x,y,1);B(i,j,2)=I(x,y,2);B(i,j,3)=I(x,y,3);endendendimshow(uint8(B));imwrite(uint8(B),'b.bmp','bmp');習(xí)題2.11圖像漸變clearallX1=imread('x1.jpg');X2=imread('x2.jpg');XX1=size(X1);XX2=size(X2);Y=X1;I=min(XX1(1),XX2(1));J=min(XX2(2),XX2(2));fori=1:9forxxx=1:Iforyyy=1:JY(xxx,yyy,:)=i/10*X1(xxx,yyy,:)+(1-i/10)*X2(xxx,yyy,:);endendZ=uint8(Y);subplot(3,3,i),imshow(Z);end習(xí)題2.12對bmp圖象文件進行操作實驗3圖像增強直接灰度變換習(xí)題3.1圖象反轉(zhuǎn)習(xí)題3.2對數(shù)變換習(xí)題3.3冪次變換AA=imread('A.jpg');CC=double(AA(:,:,1))+double(AA(:,:,2))+double(AA(:,:,3));BB=CC;WH=size(CC);W=WH(1);H=WH(2);fori=1:Wforj=1:HBB(i,j)=CC(i,j)+255*(1/(CC(i,j)+1))*CC(i,j);%BB(i,j)=255-CC(i,j);%BB(i,j)=255/log(155)*log(1+CC(i,j));endendcolormap(gray);subplot(1,2,1),imagesc(AA);subplot(1,2,2),imagesc(BB);習(xí)題3.4位面圖切割colormap(gray);bb=imread('head.jpg');fork=1:8cc=rem(double(bb),2^k);ee=fix(cc/2^(k-1));ff=ee*250;subplot(2,4,k),imagesc(ff);title(k-1);end;數(shù)據(jù)隱藏b=imread('a.bmp');%c=b(:,:,1);bb=imread('b.bmp');%請用圖畫做一個水印圖象b.bmp與a.bmp規(guī)格要相同cc=rem(double(bb),2);fork=1:8d=double(c)+2^(k-1)*double(cc);%subplot(2,4,k),imshow(uint8(d));subplot(2,4,k),imagesc(d);%subplot(2,4,k),image(d);title(k-1);end;圖像的灰度直方圖a=imread('a.jpg');b=a(:,:,1);imshow(b);figure,imhist(b,64); %作b的灰度直方圖,64可改為128,256等直方圖均衡化a=imread('a.jpg');b=a(:,:,1);imshow(b);c=histeq(b); %對b進行直方圖均衡化imshow(c);figure,imhist(b,64); %作b的灰度直方圖,64可改為128,256等領(lǐng)域平均法平滑濾波a=imread('a.jpg');b=a(:,:,1);c=[0.1 0.10.10.20.10.10.1];d=conv2(b,c);imagesc(d);中值濾波a=imread('a.jpg');b=a(:,:,1);d=medfilt2(b,[mn]); %[m,n]為濾波模板的規(guī)格imagesc(d);拉普拉斯銳化a=imread('1.jpg');b=a(:,:,1);c=[0101-41010]d=conv2(b,c);imagesc(d);習(xí)題3.5中值濾波a=imread('fig6.jpg');imshow(a);pause;d=medfilt2(a,[35]);imshow(d);與圖象濾波相關(guān)的幾個Matlab函數(shù)imnoise參見imnoise_test.mI=imread('Fig45.jpg');J=imnoise(I,'salt&pepper',0.02);subplot(1,2,1),imshow(I);subplot(1,2,2),imshow(J);fspecialfilter2參見filter2_test.mI=imread('cameraman.tif');subplot(2,2,1);imshow(I);title('OriginalImage');H=fspecial('motion',20,45);MotionBlur=imfilter(I,H,'replicate');subplot(2,2,2);imshow(MotionBlur);title('MotionBlurredImage');H=fspecial('disk',10);blurred=imfilter(I,H,'replicate');subplot(2,2,3);imshow(blurred);title('BlurredImage');H=fspecial('unsharp');sharpened=imfilter(I,H,'replicate');subplot(2,2,4);imshow(sharpened);title('SharpenedImage');medfilter2fftshift參見fftshift_test.m實驗4彩色圖象處理習(xí)題4.1直方圖的一個應(yīng)用(真假幣鑒別,僅供教學(xué)實驗參考)a=imread('rmb.jpg');subplot(2,2,1);imagesc(a);xlabel(‘真幣');b=rgb2hsv(a);b1=b(:,:,1);subplot(2,2,2);imhist(b1,64);xlabel(‘色調(diào)');b2=b(:,:,2);subplot(2,2,3);imhist(b2,64);xlabel(‘飽和度');b3=b(:,:,3);subplot(2,2,4);imhist(b3,64);xlabel(‘亮度');習(xí)題4.2運用調(diào)色板設(shè)計技術(shù)將灰度圖像彩色化。clearall;a1=imread('a1.jpg');%將原始圖像讀到a1里aa=double(a1);a2=uint8((aa(:,:,1)+aa(:,:,2)+aa(:,:,3))/3);%求原始圖像的灰度圖象,設(shè)為a2%以另外的圖像為素材,制作一個調(diào)色板d1=imread('a2.jpg');%讀該圖像dd=double(d1);d2=uint8((dd(:,:,1)+dd(:,:,2)+dd(:,:,3))/3);%求該圖象的灰度圖象table=ones(256,4);%設(shè)置一個調(diào)色板tabled=size(d2);%求d2的行寬和列寬%將亮度相同的像素進行統(tǒng)計,亮度相同的像素的RGB分量的值按分量全部加起來,并將結(jié)果放置在table里。fori=1:d(1)forj=1:d(2)table(d2(i,j)+1,1)=table(d2(i,j)+1,1)+dd(i,j,1);table(d2(i,j)+1,2)=table(d2(i,j)+1,2)+dd(i,j,2);table(d2(i,j)+1,3)=table(d2(i,j)+1,3)+dd(i,j,3);table(d2(i,j)+1,4)=table(d2(i,j)+1,4)+1;endend%規(guī)范調(diào)色板:將調(diào)色板中的值規(guī)范到0到255之間fori=1:256table(i,1)=uint8(table(i,1)/table(i,4));table(i,2)=uint8(table(i,2)/table(i,4));table(i,3)=uint8(table(i,3)/table(i,4));end%調(diào)色板制作完畢a3=a1;%設(shè)新圖像為a3%如下程序段將灰度圖象a2里的像素值用對應(yīng)的調(diào)色板里的RGB植代替,形成一個新圖像a3b=size(a2);fori=1:b(1)forj=1:b(2)a3(i,j,1)=table(a2(i,j)+1,1);a3(i,j,2)=table(a2(i,j)+1,2);a3(i,j,3)=table(a2(i,j)+1,3);endend%替代完成%顯示結(jié)果如下:aa=double(a3);a4=uint8((aa(:,:,1)+aa(:,:,2)+aa(:,:,3))/3);subplot(2,2,1);imshow(a1);xlabel('A:原始圖像');subplot(2,2,2);imshow(a2);xlabel('B:原始圖像的灰度圖象');subplot(2,2,3);imshow(uint8(a3));xlabel('C:還原圖像');subplot(2,2,4);imshow(a4);xlabel('D:再灰度化圖像');sa=0實驗5圖像變換習(xí)題5.1對數(shù)字圖像作圖像變換,觀察其振幅譜clearall;I=imread('fig6.jpg');subplot(2,2,1);imshow(I);F=FFT2(I);subplot(2,2,2);imshow(log(1+abs(F)),[010],'notruesize');C=dct2(I);subplot(2,2,3);imshow(log(1+abs(C)),[010],'notruesize');H=double(hadamard(512));HH=H*double(I)*H';subplot(2,2,4);imshow(log(1+abs(HH)),[010],'notruesize');習(xí)題5.2對數(shù)字圖像作圖像變換,觀察其振幅譜,并做反變換clearall;I=imread('fig6.jpg');subplot(2,3,1);imshow(I);C=dct2(I);subplot(2,3,2);imshow(log(1+abs(C)),[010],'notruesize');CC=idct2(C);subplot(2,3,3);imagesc(abs(CC));H=double(hadamard(512));HH=H*double(I)*H';subplot(2,3,5);imshow(log(1+abs(HH)),[-1010],'notruesize');HHH=H*HH*H'*512*512;subplot(2,3,6);imagesc(abs(HHH));習(xí)題5.3對圖像作圖像變換,去其高頻分量,再反變換clearall;a=imread('fig5.jpg');f=fft2(a);ff=f;h=0.99;xy=imfinfo('fig5.jpg');y=xy.Width/2;x=xy.Height/2; hx=x*h;hy=y*h;%(x,y)為圖象的中心%ff(x-hx:x+hx,y-hy:y+hy)=0;fori=1:xy.Widthforj=1:xy.Heightif(i-x)^2+(j-y)^2<hx^2ff(i,j)=0;endendendfff=ifft2(ff);subplot(2,3,1);imshow(a);xlabel('A:原始圖像');subplot(2,3,2);imshow(log(1+abs(f)),[010],'notruesize');xlabel('Fourier變換');subplot(2,3,3);imshow(log(1+abs(ff)),[010],'notruesize');xlabel('Fourier變換的高頻置0');subplot(2,3,4);imshow(abs(fff),[0,255]);xlabel('B:高頻置0后再反變換');fz=fff-double(a);n=5;s=5*1/(exp(n*log(h)));subplot(2,3,6);imshow(abs(s*fz),[0,255]);xlabel('A-B:原圖象減去“高頻置后再反變換”圖象');習(xí)題5.4傅立葉變換的逆變換,可以通過求其正變換而得到colormap(gray);a=imread('abc.jpg');%b=uint8(a(:,:,1));subplot(2,2,1);imshow(a);xlabel('原始圖像');f=fft2(double(a));subplot(2,2,2);imshow(log(1+abs(f)),[010],'notruesize');xlabel('傅立葉變換');ff=fft2(double(conj(f)));subplot(2,2,3);cc=abs(ff);imagesc(cc);xlabel('傅立葉變換的共軛的傅立葉變換');fff=ifft2(f);subplot(2,2,4);cc=abs(fff);imagesc(cc);xlabel('傅立葉反變換');習(xí)題5.5傅立葉變換的周期性clearall;a=imread('fig5.jpg');f=fft2(a);ij=size(a);i1=ij(1);j1=ij(2);n=2;ff=ones(n*i1,n*j1);fori=1:nforj=1:nff((i-1)*i1+1:i*i1,(j-1)*j1+1:j*j1)=f(:,:);endendfff=ifft2(ff);subplot(2,2,1);imshow(a);xlabel('A:原始圖像');subplot(2,2,2);imshow(log(1+abs(f)),[010],'notruesize');xlabel('Fourier變換');subplot(2,2,3);imshow(log(1+abs(ff)),[010],'notruesize');xlabel('倍Fourier變換');subplot(2,2,4);imshow(abs(fff),[0,255]);xlabel('倍反變換');習(xí)題5.6圖像重建a=imread('fig6.jpg');dt=180;r=radon(a,0:dt); %從0度開始,對b進行180個角度掃描,步長為1度ir=iradon(r,0:dt); %對投影數(shù)據(jù)r進行重建subplot(1,3,1);imshow(a);subplot(1,3,2);imagesc(r);subplot(1,3,3);imagesc(ir);實驗6頻域圖像增強習(xí)題6.1理想低通(高通)濾波器低通理想濾波a=imread('a.jpg');b=a(:,:,1);f=fft2(b);ff=f;h=10;xy=iminfo('a.jpg');x=xy.Width/2;y=xy.Height/2; %(x,y)為圖像的中心ff[x:y,x+h:y+h]=0;fff=ifft2(ff);高通濾波a=imread('a.jpg');b=a(:,:,1);f=fft2(b);ff=f;fff=fftshift(ff);fff[x:y,x+h:y+h]=0;fff=fftshift(fff);ffff=ifft2(fff,b);習(xí)題6.2Butterworth濾波器b=imread('tu05-15.gif');%b=(a(:,:,1)+a(:,:,2)+a(:,:,3))/3;colormap(gray);imagesc(b);c=size(b);x=c(1);y=c(2);fori=1:xforj=1:yd(i,j)=double(b(i,j));end;end;e=fft2(d);f=e;n=-4;d00=x/5;d0=d00*d00;fori=1:xforj=1:yf(i,j)=1/(1+(((i-x/2)^2+(j-y/2)^2)/d0)^n);end;end;g=f.*e;h=ifft2(g);imagesc(abs(h),[0,50]);xlabel('n=-4,d0=100');實驗7圖像編碼習(xí)題7.1.計算灰度圖像的信息熵和編碼效率clearall;a1=imread('a1.jpg');%將原始圖像讀到a1里aa=double(a1);a2=uint8((aa(:,:,1)+aa(:,:,2)+aa(:,:,3))/3);%求原始圖像的灰度圖象,設(shè)為a2b=size(a2);pixel=zeros(1,256);fori=1:b(1)forj=1:b(2)pixel(a2(i,j)+1)=pixel(a2(i,j)+1)+1;endendS=0;fori=0:255ifpixel(i+1)>0SS=pixel(i+1)/(b(1)*b(2))*log(pixel(i+1)/(b(1)*b(2)))/log(2);S=S+SS;endend-S-S/81-(-S/8)實驗8圖像分析習(xí)題8.1印刷體字符識別%%%%%%%%%%%%%%%%%%%%%%%xunlian.m%%%%%%%%%%%%%識別集合為1行clearall;debug1=1;%debug=1調(diào)試,debug=0運行SS='ABCDEFGHIJKLMNOPQRSTUVWXYZ-0123456789';globaldig;globalcount;globalX;globaldata_theta;data_theta=128;%1)讀圖像b=imread('dig.bmp'); bb=b(:,:,1); %取b的一個分量subplot(5,1,1),imshow(bb);%2)圖像分割%2.1)將b二值化(相當(dāng)于將字符圖象從背景里分割出來)bw=bb<250; subplot(5,1,2),imshow(bw);%2.2)確定字符圖像的范圍%2.2.1)求整個圖像的重心s=size(bw);x0=0;y0=0;S=0;fori=1:s(1)forj=1:s(2)S=S+bw(i,j);x0=x0+i*bw(i,j);y0=y0+j*bw(i,j);endendx0=x0/S;y0=y0/S;%2.2.2)求字符子圖像的范圍,本例為規(guī)則矩形x1=x0;y1=y0;%左上角坐標(biāo)x2=x0;y2=y0;%右下角坐標(biāo)fori=1:s(1)forj=1:s(2)ifbw(i,j)==1ifi<x1x1=i;endifj<y1y1=j;endifi>x2x2=i;endifj>y2y2=j;endendendend%2.2.3)顯示外框bbw=bw;tt=3;%字符間距y2=y2+tt;y1=y1-tt;fori=x1:x2bbw(i,y1)=1;bbw(i,y2)=1;endforj=y1:y2bbw(x1,j)=1;bbw(x2,j)=1;endsubplot(5,1,3),imshow(bbw);%2.3)分離單個字符,并確定字符個數(shù)count=0;%字符個數(shù)bbww=0;k1=1;k2=1;lstart(k1)=y1;%每個字符的左坐標(biāo)lend(k2)=y1;%每個字符的右坐標(biāo)forj=y1:y2status=0;forjj=x1:x2status=status+bw(jj,j);endst=status>0;ifst~=bbwwcount=count+1;ifst>bbwwlstart(k1)=j;k1=k1+1;elselend(k2)=j;k2=k2+1;end%框定每個字符forjj=x1:x2bbw(jj,j)=1;endbbww=st;endendcount=count/2;subplot(5,1,4),imshow(bbw);%分割出每個字符dig=zeros(x2-x1+1,x2-x1+1,count);fori=1:countforj=1:(x2-x1+1)fork=1:lend(i)-lstart(i)+1dig(j,k,i)=bw(x1-1+j,lstart(i)-1+k);endendend%對分割出的每個字符進行顯示fori=1:countA=dig(:,:,i);subplot(5,1,5),imshow(A),title(['分割出來的字符序號=',num2str(i)]);pause;end%3)計算每個字符的特征向量%特征向量長度為data_thetaX=zeros(count,data_theta+1);%第一個分量為字符的內(nèi)部代碼%X=vectors360(dig,count,data_theta);X=vectors_touying(dig,count,data_theta);fori=1:countX(i,1)=uint8(SS(i));endxlswrite('digit.xls',X);%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%shibie.m%%%%%%%%%%%%%%%%%%%%識別集合為1行ABCDEFGHIJKLMNOPQRSTUVWXYZ-0123456789clearall;debug1=1;%debug=1調(diào)試,debug=0運行g(shù)lobaldig;globalcount;globalX;globaldata_theta;data_theta=128;%1)讀圖像b=imread('dig5.bmp'); bb=b(:,:,1); %取b的一個分量subplot(3,2,1),imshow(bb);%2)圖像分割%2.1)將b二值化(相當(dāng)于將字符圖象從背景里分割出來)bw=bb<250; subplot(3,2,2),imshow(bw);%2.2)確定字符圖像的范圍%2.2.1)求整個圖像的重心s=size(bw);x0=0;y0=0;S=0;fori=1:s(1)forj=1:s(2)S=S+bw(i,j);x0=x0+i*bw(i,j);y0=y0+j*bw(i,j);endendx0=x0/S;y0=y0/S;%2.2.2)求字符子圖像的范圍,本例為規(guī)則矩形x1=x0;y1=y0;%左上角坐標(biāo)x2=x0;y2=y0;%右下角坐標(biāo)fori=1:s(1)forj=1:s(2)ifbw(i,j)==1ifi<x1x1=i;endifj<y1y1=j;endifi>x2x2=i;endifj>y2y2=j;endendendend%2.2.3)顯示外框bbw=bw;tt=3;%字符間距y2=y2+tt;y1=y1-tt;fori=x1:x2bbw(i,y1)=1;bbw(i,y2)=1;endforj=y1:y2bbw(x1,j)=1;bbw(x2,j)=1;endsubplot(3,2,3),imshow(bbw);%2.3)分離單個字符,并確定字符個數(shù)count=0;%字符個數(shù)bbww=0;k1=1;k2=1;lstart(k1)=y1;%每個字符的左坐標(biāo)lend(k2)=y1;%每個字符的右坐標(biāo)forj=y1:y2status=0;forjj=x1:x2status=status+bw(jj,j);endst=status>0;ifst~=bbwwcount=count+1;ifst>bbwwlstart(k1)=j;k1=k1+1;elselend(k2)=j;k2=k2+1;end%框定每個字符forjj=x1:x2bbw(jj,j)=1;endbbww=st;endendcount=count/2;subplot(3,2,4),imshow(bbw);%分割出每個字符dig=zeros(x2-x1+1,x2-x1+1,count);fori=1:countforj=1:(x2-x1+1)fork=1:lend(i)-lstart(i)+1dig(j,k,i)=bw(x1-1+j,lstart(i)-1+k);endendend%對分割出的每個字符進行顯示fori=1:countA=dig(:,:,i);subplot(3,2,5),imshow(A),title(['分割出來的字符序號=',num2str(i)]);pause;end%3)計算每個字符的特征向量%特征向量長度為data_thetaX=zeros(count,data_theta+1);%第一個分量為字符的內(nèi)部代碼%X=vectors360(dig,count,data_theta);X=vectors_touying(dig,count,data_theta);%4)調(diào)用字符特征向量數(shù)據(jù)庫MM=xlsread('digit.xls');MMM=size(MM);Xa=zeros(1,MMM(2)-1);Xb=Xa;%5)從庫中找最近距離向量str='';SS='ABCDEFGHIJKLMNOPQRSTUVWXYZ-0123456789';forj=1:countpause;Xa=X(j,2:data_theta+1);minX=0;minY=0;fori=1:MMM(1)Xb=MM(i,2:MMM(2));minY=(Xa*Xb')^2/(((Xa*Xa')*(Xb*Xb')));%相似性公式%minY=(Xa-Xb)*(Xa-Xb)';%相似性公式ifminX<minYminX=minY;X(j,1)=MM(i,1);endendij=X(j,1);%字符內(nèi)碼

溫馨提示

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

評論

0/150

提交評論