版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課 程 設(shè) 計(jì)課程名稱 題目名稱 學(xué)生學(xué)院 專業(yè)班級(jí) 學(xué) 號(hào) 學(xué)生姓名 指導(dǎo)教師 年 月 日摘要隨著圖像處理、人工智能、計(jì)算機(jī)技術(shù)的不斷發(fā)展,計(jì)算機(jī)識(shí)別技術(shù)也日趨成熟,逐漸轉(zhuǎn)為使用階段,目前計(jì)算機(jī)識(shí)別方法主要有兩種:1) 標(biāo)記識(shí)別技術(shù); 2) 基于圖像處理的識(shí)別技術(shù)。第一種方法是先在識(shí)別目標(biāo)上預(yù)先安設(shè)一個(gè)標(biāo)記,標(biāo)記可以是IC條形碼等,再將目標(biāo)的信息存儲(chǔ)在標(biāo)記中,則從標(biāo)記中可以識(shí)別出目標(biāo)及其它相關(guān)的內(nèi)容。這種方法的優(yōu)點(diǎn)是識(shí)別準(zhǔn)確度高、速度快和可靠,但由于這種方法對(duì)硬件的要求,使得它存在了許多的局限性,若應(yīng)用到撲克紙牌識(shí)別當(dāng)中,需要為紙牌裝有一個(gè)微型的IC,這樣的設(shè)備價(jià)格十分昂貴,同時(shí)也摒棄了紙牌
2、的實(shí)際用途,普及實(shí)用性不強(qiáng)。基于圖像處理的識(shí)別技術(shù)相比較第一種方法的優(yōu)勢(shì)在于不需要給識(shí)別目標(biāo)添加任何輔助設(shè)備就可以對(duì)其進(jìn)行識(shí)別。應(yīng)用到撲克紙牌識(shí)別當(dāng)中,對(duì)目標(biāo)信息的采集是非接觸性的,可以實(shí)時(shí)識(shí)別,非人工操作,工作效率高。這種方法是基于計(jì)算機(jī)視覺和圖像處理技術(shù),作為一個(gè)軟件系統(tǒng),更方便維護(hù)和升級(jí),通用性更強(qiáng)。存在著這幾方面的優(yōu)勢(shì),基于圖像處理的識(shí)別技術(shù)具有很大的發(fā)展空間。傳感器觸發(fā)CCD攝像頭圖像采集紙牌圖像預(yù)處理紙牌特征提取特征匹配撲克紙牌識(shí)別數(shù)據(jù)庫傳輸基于圖像處理的紙牌識(shí)別系統(tǒng)構(gòu)成數(shù)據(jù)輸出基于圖像處理的紙牌識(shí)別主要包括紙牌圖像預(yù)處理(傾斜校正與定位)、特征提取、特征匹配、紙牌識(shí)別等方面的技術(shù)
3、。系統(tǒng)構(gòu)成如上圖所示,當(dāng)系統(tǒng)發(fā)現(xiàn)監(jiān)視圖像發(fā)生變化時(shí),觸發(fā)圖像采集,通過CCD攝像頭攝取的紙牌圖像,然后識(shí)別系統(tǒng)對(duì)紙牌圖像進(jìn)行一系列處理從而識(shí)別出紙牌,輸出識(shí)別結(jié)果。紙牌圖像預(yù)處理傳感器觸發(fā)CCD攝像頭進(jìn)行圖像采集后可以得到一張圖像,圖像中包括背景和待識(shí)的目標(biāo)紙牌,但目標(biāo)紙牌在圖像中并不一定是正放的,許多的時(shí)候紙牌與圖像的邊緣形成一定的傾斜角度,如下圖所示:紙牌物理與圖像邊緣形成傾斜角度。因此,紙牌識(shí)別之前,必須先對(duì)目標(biāo)紙牌進(jìn)行傾斜校正和定位。對(duì)于整個(gè)紙牌識(shí)別系統(tǒng)來說,紙牌識(shí)別精確度的高低很大程度下取決于紙牌的傾斜校正與定位精確度高低,這是十分重要的一步。紙牌形狀為一矩形,紙牌是否傾斜可以以紙牌
4、的物理邊緣是否與圖像邊緣傾斜為準(zhǔn)則,若紙牌的物理邊緣與圖像邊緣呈0或90度(平放或正放),則紙牌沒有發(fā)生傾斜,反之,則存在傾斜。根據(jù)以上分析的特點(diǎn),可以利用Hough變換和邊緣檢測(cè)結(jié)合的方法實(shí)現(xiàn)紙牌的傾斜校正與定位。Hough變換是利用極坐標(biāo)變換的方法,在圖像中進(jìn)行像素的累加,從而估算出最長(zhǎng)直線與圖像邊緣所成傾斜的角度。如下左圖所示,首先在原圖像中引入、和L三個(gè)參數(shù),通過和參數(shù)的變化可以累加出對(duì)應(yīng)L的值(直線長(zhǎng)度):利用Hough變換,可以很容易地得出在圖像中最長(zhǎng)直線的長(zhǎng)度和該直線與圖像邊緣對(duì)應(yīng)所成的角度。對(duì)于大多數(shù)的紙牌來說,我們可以直接把檢測(cè)出來最大的L所對(duì)應(yīng)的傾斜角視為紙牌的傾斜,這是因
5、為,紙牌本身擁有的一條較長(zhǎng)邊緣,而任何角度上的直線像素累加都不能與之相比。紙牌本身具有一條較長(zhǎng)的邊緣。但對(duì)于一些內(nèi)部圖案很復(fù)雜的紙牌,如J、Q、K和JOKER,由于圖案邊緣復(fù)雜性的原因,Hough變換后就會(huì)產(chǎn)生一些非紙牌物理邊緣而長(zhǎng)度超過物理邊緣的線條,此時(shí),該線條對(duì)應(yīng)的傾斜角就不是紙牌與圖像所成的真實(shí)傾斜角度。紙牌內(nèi)部出線了大量的線條信息,影響對(duì)紙牌物理邊緣的確認(rèn)。這些復(fù)雜線條信息的存在,會(huì)對(duì)紙牌物理邊緣的確認(rèn)產(chǎn)生十分大的影響,因此,在Hough變換之前,必須采取一些操作,最大程度地去除這些復(fù)雜的邊緣信息的同時(shí),保留紙牌的物理邊緣信息??梢栽诮?jīng)過邊緣檢測(cè)的前提下,通過形態(tài)學(xué)閉操作把紙牌內(nèi)部的
6、復(fù)雜線條模糊化,然后再對(duì)模糊化后的圖像進(jìn)行邊緣檢測(cè),具體效果如下圖:第二次的邊緣檢測(cè)只保留了紙牌的物理邊緣。采用圓形結(jié)構(gòu)的形態(tài)學(xué)閉操作模糊了內(nèi)部的邊緣信息。撲克牌內(nèi)部存在邊緣信息。經(jīng)過以上的步驟后,再對(duì)圖像進(jìn)行Hough變換,就可以準(zhǔn)確地確認(rèn)出紙牌的物理邊緣,然后對(duì)紙牌進(jìn)行傾斜校正與定位,Matlab程序?qū)崿F(xiàn)如下:function poker=rectify(rgbimage)%撲克目標(biāo)校正且定位函數(shù)grey=rgb2gray(rgbimage);%灰度化圖像ed1=edge(grey,'sobel','both');%灰度化圖象邊緣化bw1=imclose(e
7、d1,strel('disk',20);%形態(tài)學(xué)閉操作圓形結(jié)構(gòu)體%以上形態(tài)學(xué)操作為了模糊紙牌內(nèi)部的線條結(jié)構(gòu)%從而減小J,Q,K,JOKER紙牌等內(nèi)部復(fù)雜邊緣對(duì)定位的影響ed2=edge(bw1,'sobel','both');%對(duì)紙牌的物理邊緣進(jìn)行檢測(cè)bw2=bwmorph(ed2,'dilate');%結(jié)構(gòu)性膨脹加強(qiáng)邊緣效果hough=radon(bw2,-90:90);%-90到90度的hough變換m,n=size(hough);rotate=0;%傾斜角值sline=0;%最長(zhǎng)直線長(zhǎng)度for i=1:m for j=1:n
8、 if hough(i,j)>sline; rotate=j-1;sline=hough(i,j); end endended3=bwmorph(ed2,'clean',10);bw3=imrotate(ed3,-rotate);%預(yù)校正m,n=find(bw3);%預(yù)測(cè)校正后的目標(biāo)位置rgb=imrotate(rgbimage,-rotate,'bilinear');%傾斜校正poker=rgb(min(m):max(m),min(n):max(n),:);%定位m,n=size(poker);if n>m poker=imrotate(poker
9、,90,'bilinear');end紙牌特征提取紙牌具有很多的特征,如字符特征,花形特征,圖案特征,顏色特征等,不同的紙牌具有不同的特征。根據(jù)特征的組合,可以產(chǎn)生出54紙不同的紙牌。紙牌識(shí)別的第一步,必須在待識(shí)別的紙牌中提取它所具備的特征。由于紙牌內(nèi)部的圖案較復(fù)雜,對(duì)其操作運(yùn)算量較大,不以其作為識(shí)別的特征。而字符和花形特征結(jié)構(gòu)較為簡(jiǎn)單,易于操作,所以應(yīng)該在紙牌中提取字符與花形的特征,并以這兩個(gè)特征識(shí)別出紙牌。在紙牌傾斜校正與定位后,根據(jù)紙牌的固有屬性,可以大概地定位出紙牌上字符與花形的位置,然后把字符與花形粗略提取出來。提取出字符與花形的大概位置后,必須對(duì)提取出的圖像進(jìn)行二值
10、化,進(jìn)一步提取特征。二值化是指整幅圖像像素僅有黑、白二值的圖像。由于 “非黑即白”的特性,二值圖像在數(shù)字圖像處理中占有非常重要的地位。二值化的關(guān)鍵是要找到合適的閾值來區(qū)分對(duì)象和背景。閾值選取有許多的方法,常用的閾值選取方法有:直方圖雙峰法、自適應(yīng)局部閾值法、最佳閾值法等。Ostu算法是最佳閾值算法的一種。Ostu算法是利用最大類間方差法,判決分析最小二乘法的原理基礎(chǔ)上推導(dǎo)得出的。它的計(jì)算步驟是先計(jì)算圖像的灰度直方圖概率函數(shù),然后以閾值為基準(zhǔn)將灰度級(jí)劃分為兩類,Ostu算法求二值化最佳閾值的Matlab程序?qū)崿F(xiàn)如下:function level=ostu(IMAGE)%最大類間方差ostu算法,
11、求最佳閾值m,n,s=size(IMAGE);if s=1 image=IMAGE;endif s=3 image=RGB2gray(IMAGE);endranks=256;counts=imhist(image,ranks);p=counts/sum(counts);omega=cumsum(p);mu=cumsum(p.*(0:ranks-1)');mu_t = mu(end);sigma2=0;%otsu類間方差T=0;%原始閾值h=0;Hmax=0;w0=0;w1=0;u0=0;u1=0;HStore=zeros(1,256);for i=1:ranks圖像二值化前后效果對(duì)比。
12、 if (omega(i)=0)|(1-omega(i)=0) continue; end; w0=omega(i);w1=1-w0; u0=mu(i)/w0;u1=(mu_t-mu(i)/w1; sigma2=w0*(u0-mu_t).2+w1*(u1-mu_t).2; h=sigma2;HStore(i)=h;endHmax = max(HStore);isfinite_maxval = isfinite(Hmax);if isfinite_maxval idx = mean(find(HStore = Hmax); level = (idx - 1) / (ranks - 1);else
13、 level = 0.0;end在字符和花形粗略定位并且二值化之后,有時(shí)會(huì)殘留一些很長(zhǎng)邊緣信息。這些邊緣信息多數(shù)來自于紙牌本身的圖案邊緣或背景殘留。由于這些線條多數(shù)與字符和花形的顏色相近,因此在圖像二值化之后仍然會(huì)保留下來。這些多余的邊緣信息給特征的正確提取帶來了很大的影響,所以在字符分割之前去除這些干擾是必要的。這些邊緣信息都具有連續(xù)不跳變的特性,因此可以利用這個(gè)特性對(duì)二值化圖像進(jìn)行掃描,當(dāng)出現(xiàn)超過一定長(zhǎng)度不跳變的線條,把它視為干擾信息,并且把它去除。從左至右進(jìn)行掃描,當(dāng)列方向上出現(xiàn)超過1/3邊長(zhǎng)長(zhǎng)度不跳變的線條,把它視為干擾線條,并把它去除。粗略定位并二值化后,出現(xiàn)了干擾線條。 清除干擾線
14、條的Matlab實(shí)現(xiàn)程序如下:function str=reduce(bwstr);%去除干擾邊緣信息m,n=size(bwstr);temp=ones(m,n);num=1;for j=1:n count=0; for i=1:m if bwstr(i,j)=0;%線條不連續(xù) count=0;continue; else count=count+1;%連續(xù)不跳變點(diǎn)數(shù)增加 if count>=m/3;%連續(xù)不跳變長(zhǎng)度超過1/3邊長(zhǎng) break; end end end if count>=m/3 line(num)=j;清除干擾線條后分割出字符與花形。 num=num+1;%記錄掃
15、描到線條位置 endendfor i=1:num-1%清除干擾邊緣 for j=1:m temp(j,line(i)=0; endendstr=logical(double(bwstr).*temp);清除干擾線條前后效果比較。這個(gè)算法對(duì)斷裂較多的線條沒有作用,但能夠在一定程度下消除了線條對(duì)目標(biāo)信息的干擾,為紙牌識(shí)別的準(zhǔn)確度提供一個(gè)保障。紙牌識(shí)別在識(shí)別技術(shù)中,被廣泛采用的有兩類特征:結(jié)構(gòu)特征和統(tǒng)計(jì)特征。常用的結(jié)構(gòu)特征主要有:筆道密度函數(shù)、空洞和缺口、字符的特殊節(jié)點(diǎn)數(shù)。而常用的統(tǒng)計(jì)特征主要有復(fù)雜指數(shù)、粗網(wǎng)格特征、垂直和水平投影。紙牌中有字符和花形兩種字符,字符包括A、2、3、4、5、6、7、8、
16、9、10、J、Q、K、JOKER十四種;而花形包括:黑桃、紅桃、梅花和方片四種。不論采用結(jié)構(gòu)特征還是統(tǒng)計(jì)特征的匹配方法方法,均需要與一個(gè)系統(tǒng)預(yù)知道的標(biāo)準(zhǔn)符號(hào)模板庫進(jìn)行匹配。結(jié)構(gòu)特征匹配的識(shí)別準(zhǔn)確率較高,但是運(yùn)算量十分大,用于符號(hào)結(jié)構(gòu)較復(fù)雜的識(shí)別;統(tǒng)計(jì)特征匹配識(shí)別準(zhǔn)確率相對(duì)較低,但運(yùn)算量少,適用于結(jié)構(gòu)簡(jiǎn)單的符號(hào)識(shí)別。紙牌只有14個(gè)字符和4個(gè)花形符號(hào),而且結(jié)構(gòu)較簡(jiǎn)單,這里選用統(tǒng)計(jì)特征匹配。對(duì)于不同的符號(hào),其投影均不相同。符號(hào)“A”的水平投影圖。符號(hào)“黑桃”的水平投影圖。因此,可以利用待識(shí)別符號(hào)投影與模板中各符號(hào)的投影求均方差,選擇均方差最小(即與待識(shí)別符號(hào)投影偏離最?。┧鶎?duì)應(yīng)的模板符號(hào)作為識(shí)別結(jié)果
17、。在符號(hào)中,JOKER信息像素所占數(shù)目較多,可以先對(duì)其確認(rèn)。在匹配前先對(duì)符號(hào)進(jìn)行一定的結(jié)構(gòu)性膨脹,由于JOKER具有多個(gè)字符,在膨脹后非零像素增加的數(shù)量定會(huì)大大的大于其它紙牌。這里設(shè)置一個(gè)臨界值,當(dāng)某待識(shí)別紙牌特征像素?cái)?shù)量大于此臨界值時(shí)把這張紙牌識(shí)別為JOKER,小于臨界值再與其他模板進(jìn)行匹配,這樣就可以不需要額外加入JOKER模板,同時(shí)也一定程度下提高了系統(tǒng)的識(shí)別效率。Matlab - GUI程序?qū)崿F(xiàn)新建一個(gè)空的GUI任務(wù):創(chuàng)建一個(gè)空的GUI模板設(shè)置任務(wù)名稱和保存路徑設(shè)置菜單欄:編輯菜單欄添加菜單選項(xiàng)菜單欄選擇項(xiàng)映射Callback函數(shù):about_Callback()binary_Call
18、back()recognition_Callback()getsymstr_Callback()gray_Callback()recitify_Callback()new_Callback()exit_Callback()各菜單選擇項(xiàng)映射函數(shù)具體定義:打開(O)打開一幅圖像,并且顯示到窗口上。function new_Callback(hObject, eventdata, handles)global IMAGE;global POKER;global GRAY;global BW;global BWSTR;name=0;name,path=uigetfile('*.bmp'
19、'*.jpg''*,tif','打開圖像');if name=0;%沒有打開圖像 return;endIMAGE=imread(strcat(path,name);%成功打開圖像POKER=0;GRAY=0;BW=0;BWSTR=0;%其他圖像復(fù)位subplot(1,1,1),imshow(IMAGE),title('撲克紙牌圖像');顯示紙牌圖像打開一張紙牌圖像 傾斜矯正與定位(Y)對(duì)紙牌圖像進(jìn)行傾斜校正和紙牌定位,計(jì)算定位耗時(shí)并顯示。function rectify_Callback(hObject, eventdata, h
20、andles)global IMAGE;global POKER;if IMAGE=0;%未打開圖像 msgbox('請(qǐng)先打開一幅撲克圖像','錯(cuò)誤','error');else tic;%計(jì)算校正與定位用時(shí) POKER=rectify(IMAGE);%自定義函數(shù)rectify() if toc>5%設(shè)置超時(shí)時(shí)間為3秒 msgbox('圖像校正定位超時(shí)','錯(cuò)誤','error'); return; end time=num2str(toc); str=strcat('校正與定位耗時(shí)&
21、#39;,time,'秒'); subplot(1,1,1),imshow(POKER),title('撲克紙牌'); msgbox(str,'消息');end顯示傾斜校正和定位耗時(shí) 圖像二值化(B)對(duì)紙牌圖像進(jìn)行二值化,閾值用最佳閾值ostu算法計(jì)算得出。function binary_Callback(hObject, eventdata, handles)global IMAGE;%全局變量global POKER;global GRAY;global BW;if IMAGE=0%未打開圖像 msgbox('請(qǐng)先打開一幅撲克圖像
22、39;,'錯(cuò)誤','error');elseif POKER=0%未進(jìn)行圖像校正 msgbox('請(qǐng)先對(duì)圖像進(jìn)行校正定位','錯(cuò)誤','error');elseif GRAY=0%未進(jìn)行圖像灰度化 msgbox('請(qǐng)先對(duì)圖像進(jìn)行灰度化','錯(cuò)誤','error');else bw=im2bw(GRAY,ostu(GRAY);%自定義函數(shù)ostu() BW=logical(abs(double(bw)-1); subplot(1,1,1),imshow(BW),titl
23、e('圖像二值化');end灰度化圖像 紙牌字符提取(P)提取紙牌的特征字符。function getsymstr_Callback(hObject, eventdata, handles)global IMAGE;global POKER;global GRAY;global BW;global BWSTR;if IMAGE=0%未打開圖像 msgbox('請(qǐng)先打開一幅撲克圖像','錯(cuò)誤','error');elseif POKER=0%未進(jìn)行圖像校正 msgbox('請(qǐng)先對(duì)圖像進(jìn)行校正定位','錯(cuò)誤
24、39;,'error');elseif GRAY=0%未進(jìn)行圖像灰度化 msgbox('請(qǐng)先對(duì)圖像進(jìn)行灰度化','錯(cuò)誤','error');elseif BW=0%未進(jìn)行圖像二值化 msgbox('請(qǐng)先對(duì)圖像進(jìn)行二值化','錯(cuò)誤','error');else m,n=size(GRAY); pokerstr=GRAY(2:m/2,n/20:n/5.5);%字符粗略定位 bw=im2bw(pokerstr,ostu(pokerstr);%自定義函數(shù)ostu() bw1=bwmorph(
25、bw,'clean');%清除孤立點(diǎn) bw2=logical(abs(double(bw)-1);%二值圖像反色 bw3=reduce(bw2);%自定義函數(shù)reduce() m,n=size(bw3); temp=sum(bw3);shadow(2:n+1)=temp;shadow(1)=0;shadow(n+2)=0; for i=2:n+1 if shadow(i)=0&shadow(i-1)=0&shadow(i+1)=0%出現(xiàn)孤立線條 for j=1:m bw3(j,i-1)=0;%刪除孤立線條列 end end end m,n=find(bw3);
26、BWSTR=bw3(min(m):max(m),min(n):max(n); subplot(1,1,1),imshow(BWSTR),title('紙牌特征字符');end花形字符 撲克識(shí)別(R)對(duì)字符特征進(jìn)行匹配識(shí)別,并且輸出識(shí)別結(jié)果。function recognition_Callback(hObject, eventdata, handles)global IMAGE;global POKER;global GRAY;global BW;global BWSTR%紙牌字符模板,34*22投影str1=6 6 6 6 8 8 10 10 10 10 8 8 8 8 10
27、 10 8,. 8 8 8 12 12 16 16 12 12 8 8 8 8 16 16 16 16;%Astr2=10 10 16 16 12 12 12 12 12 12 6 6 4 4 8 8,. 8 8 6 6 6 6 6 6 6 6 8 8 10 10 22 22 22 22;%2str3=22 22 14 14 10 10 8 8 8 8 8 12 12 14 14 6,. 6 4 4 4 4 4 4 4 4 8 8 8 12 12 18 18 12 12;%3str4=2 2 4 4 6 6 8 8 10 10 12 12 10 10 10 10 8 8,. 10 10 12
28、12 20 20 22 22 6 6 6 6 6 6 8 8;%4str5=18 18 16 16 4 4 4 4 4 16 16 16 16 6 6 4 4 4 4,. 4 4 4 4 4 4 10 12 12 16 16 12 12 2 2;%5str6=9 9 15 15 7 7 5 5 3 3 5 5 14 14 18 18 12 12 9,. 9 9 9 11 11 11 11 7 7 10 10 14 14 11 11;%6str7=15 15 22 22 14 14 9 9 5 5 5 5 5 5 4 4 4 4 6 6,. 4 4 4 4 6 6 4 4 4 4 4 4 4 4
29、;%7str8=10 10 16 16 10 10 6 6 8 8 6 6 12 12 14 14 14 14,. 10 10 8 8 8 8 8 8 8 8 14 14 18 18 10 10;%8str9=14 14 16 16 8 8 8 8 12 12 12 10 10 12 12 12 12,. 18 18 16 16 4 4 4 4 6 6 6 12 12 14 14 8 8;%9str10=10 10 16 16 14 14 12 12 12 12 12 12 12 12 12 12,. 12 12 12 12 12 12 12 12 12 12 12 12 16 16 16 1
30、6 10 10;%10str11=13 13 11 11 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5,. 5 5 5 9 9 9 9 14 14 13 13 4 4;%Jstr12=11 11 10 10 10 10 6 6 6 6 6 6 6 6 6 6 6 10 10,. 14 14 16 16 12 12 10 10 10 10 10 18 18 12 12;%Qstr13=20 20 20 20 12 12 10 10 10 10 10 10 8 8 12 12,. 12 12 12 12 10 10 10 10 10 10 8 8 10 10 18 18 20
31、 20;%KSTR=str1;str2;str3;str4;str5;str6;str7;str8;str9;str10;str11;str12;str13;%紙牌花形模板,24*20投影style1=4 4 6 6 8 8 12 12 16 16 16 16,. 20 20 20 20 20 20 14 14 6 6 6 6;%黑桃style2=12 12 20 20 20 20 20 20 18 18 16 16,. 14 14 12 12 8 8 6 6 4 4 2 2;%紅桃style3=4 4 8 8 10 10 10 10 8 8 16 16,. 20 20 20 20 20 20
32、 12 12 4 4 4 4;%梅花style4=2 2 4 4 6 6 12 12 16 16 20 20 20 20,. 16 16 12 12 6 6 6 6 2 2;%方片STYLE=style1;style2;style3;style4;if IMAGE=0%未打開圖像 msgbox('請(qǐng)先打開一幅撲克圖像','錯(cuò)誤','error');elseif POKER=0%未進(jìn)行圖像校正 msgbox('請(qǐng)先對(duì)圖像進(jìn)行校正定位','錯(cuò)誤','error');elseif GRAY=0%未進(jìn)行圖像
33、灰度化 msgbox('請(qǐng)先對(duì)圖像進(jìn)行灰度化','錯(cuò)誤','error');elseif BW=0%未進(jìn)行圖像二值化 msgbox('請(qǐng)先對(duì)圖像進(jìn)行二值化','錯(cuò)誤','error');elseif BWSTR=0%未提取特征 msgbox('請(qǐng)先提取圖像字符','錯(cuò)誤','error');else sym=imclose(BWSTR,strel('disk',3);%粗略估算特征面積大小 shadow=sum(sym); if max
34、(shadow)>=40%像素過多識(shí)別為為JOKER result=strcat('識(shí)別結(jié)果:','JOKER'); msgbox(result,'消息','warn'); else sym=bwmorph(BWSTR,'clean');%清除孤立點(diǎn) shadow=(sum(sym,2)'%側(cè)面投影 len=length(shadow); for i=2:len-1%搜索數(shù)字符號(hào)與花形符號(hào)的分界點(diǎn) if shadow(i)=0&shadow(i+1)=0%檢測(cè)到靠近數(shù)字一邊的邊界 bonder
35、1=i+1; i=bonder1; continue; end if shadow(i)<=1&shadow(i+1)>1%檢測(cè)到靠近花形一邊的邊界 bonder2=i; break; end end bonder=(bonder1+bonder2)/2;%取兩個(gè)邊界的中間作為符號(hào)分界線 SYM1=sym(1:bonder,:);%數(shù)字符號(hào) m,n=find(SYM1); SYM1=SYM1(min(m):max(m),min(n):max(n); SYM1=imresize(SYM1,34 22);%模板歸一化 SYM2=sym(bonder:len,:);%花形符號(hào) m
36、,n=find(SYM2); SYM2=SYM2(min(m):max(m),min(n):max(n); SYM2=imresize(SYM2,24,20);%模板歸一化 shadow1=(sum(SYM1,2)'shadow2=(sum(SYM2,2)' %字符匹配 errormean=50;sn1=0; for i=1:13%搜索最佳匹配的模板 temp=STR(i,:); error=abs(shadow1-temp); error=mean(error,2);%求絕對(duì)均差 if error<errormean; sn1=i;errormean=error; en
37、d end if errormean>=3;%誤差過大 sn1=0; end %花形匹配 errormean=50;sn2=0; for i=1:4%搜索最佳匹配的模板 temp=STYLE(i,:); error=abs(shadow2-temp); error=mean(error,2);%求絕對(duì)均差 if error<errormean; sn2=i;errormean=error; end end if errormean>=3;%誤差過大 sn2=0; end %特征映射 switch sn1 case 0 result1='不能識(shí)別出字符' cas
38、e 1 result1='A' case 10 result1='10' case 11 result1='J' case 12 result1='Q' case 13 result1='K' otherwise result1=num2str(sn1);%對(duì)應(yīng)數(shù)字轉(zhuǎn)成字符型 end switch sn2 case 1 result2='黑桃' case 2 result2='紅桃' case 3 result2='梅花' case 4 result2='方片
39、' otherwise result2='不能識(shí)別出花形' end result=strcat('識(shí)別結(jié)果:',result2,result1); msgbox(result,'消息','warn'); endend輸出紙牌識(shí)別結(jié)果 心得體會(huì)程序能夠較準(zhǔn)確地實(shí)現(xiàn)紙牌識(shí)別功能,但此識(shí)別系統(tǒng)對(duì)圖像中紙牌的要求較為嚴(yán)格,攝像時(shí)不能出現(xiàn)紙牌扭曲,或者攝像頭與紙牌存在較大的傾斜角。在研究過程中,感覺到還有許多可以進(jìn)一步提高對(duì)紙牌識(shí)別的能力的方法值得繼續(xù)研究。對(duì)于此紙牌識(shí)別系統(tǒng)來說,最需要改進(jìn)的地方我覺得有如下幾個(gè)方面:(1) 符號(hào)的定位方面。只根
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 航線配船方法課程設(shè)計(jì)
- 水利工程師水利工程設(shè)計(jì)與運(yùn)維
- 營(yíng)養(yǎng)科護(hù)士助健康飲食
- 科學(xué)實(shí)驗(yàn)小班班級(jí)工作計(jì)劃
- 采礦工程行業(yè)工程師的工作總結(jié)
- 家庭用品行業(yè)采購(gòu)工作總結(jié)
- 餐飲服務(wù)行業(yè)技術(shù)工作總結(jié)
- 醫(yī)藥健康領(lǐng)域科技整合顧問工作總結(jié)
- 冶金行業(yè)行政后勤工作總結(jié)
- 公務(wù)員工作總結(jié)工作成果與貢獻(xiàn)評(píng)價(jià)
- 新中國(guó)史2023年春季學(xué)習(xí)通超星課后章節(jié)答案期末考試題庫2023年
- 大學(xué)生安全知識(shí)教育高職PPT完整全套教學(xué)課件
- 同步電機(jī)的基本理論和運(yùn)行特性
- 焦度計(jì)的光學(xué)結(jié)構(gòu)原理
- 民法典法律知識(shí)普及講座村居版本
- 低值易耗品的驗(yàn)收
- 抖音短視頻運(yùn)營(yíng)部門薪酬績(jī)效考核體系(抖音、快手、B站、西瓜視頻、小紅書短視頻運(yùn)營(yíng)薪酬績(jī)效)
- 附件2.英文預(yù)申請(qǐng)書(concept note)模板
- 食品食材配送人員配置和工作職責(zé)
- 大病救助申請(qǐng)書
- GA/T 669.6-2008城市監(jiān)控報(bào)警聯(lián)網(wǎng)系統(tǒng)技術(shù)標(biāo)準(zhǔn)第6部分:視音頻顯示、存儲(chǔ)、播放技術(shù)要求
評(píng)論
0/150
提交評(píng)論