ImageVerifierCode 换一换
格式:DOCX , 页数:35 ,大小:525.43KB ,
资源ID:9642288      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9642288.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(扑克纸牌识别报告.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

扑克纸牌识别报告.docx

1、扑克纸牌识别报告课程名称 题目名称 学生学院 专业班级 学 号 学生姓名 指导教师 年 月 日摘要 随着图像处理、人工智能、计算机技术的不断发展,计算机识别技术也日趋成熟,逐渐转为使用阶段,目前计算机识别方法主要有两种:1) 标记识别技术; 2) 基于图像处理的识别技术。第一种方法是先在识别目标上预先安设一个标记,标记可以是IC条形码等,再将目标的信息存储在标记中,则从标记中可以识别出目标及其它相关的内容。这种方法的优点是识别准确度高、速度快和可靠,但由于这种方法对硬件的要求,使得它存在了许多的局限性,若应用到扑克纸牌识别当中,需要为纸牌装有一个微型的IC,这样的设备价格十分昂贵,同时也摒弃了

2、纸牌的实际用途,普及实用性不强。 基于图像处理的识别技术相比较第一种方法的优势在于不需要给识别目标添加任何辅助设备就可以对其进行识别。应用到扑克纸牌识别当中,对目标信息的采集是非接触性的,可以实时识别,非人工操作,工作效率高。这种方法是基于计算机视觉和图像处理技术,作为一个软件系统,更方便维护和升级,通用性更强。存在着这几方面的优势,基于图像处理的识别技术具有很大的发展空间。 基于图像处理的纸牌识别主要包括纸牌图像预处理(倾斜校正与定位)、特征提取、特征匹配、纸牌识别等方面的技术。系统构成如上图所示,当系统发现监视图像发生变化时,触发图像采集,通过CCD摄像头摄取的纸牌图像,然后识别系统对纸牌

3、图像进行一系列处理从而识别出纸牌,输出识别结果。纸牌图像预处理 传感器触发CCD摄像头进行图像采集后可以得到一张图像,图像中包括背景和待识的目标纸牌,但目标纸牌在图像中并不一定是正放的,许多的时候纸牌与图像的边缘形成一定的倾斜角度,如下图所示: 因此,纸牌识别之前,必须先对目标纸牌进行倾斜校正和定位。对于整个纸牌识别系统来说,纸牌识别精确度的高低很大程度下取决于纸牌的倾斜校正与定位精确度高低,这是十分重要的一步。纸牌形状为一矩形,纸牌是否倾斜可以以纸牌的物理边缘是否与图像边缘倾斜为准则,若纸牌的物理边缘与图像边缘呈0或90度(平放或正放),则纸牌没有发生倾斜,反之,则存在倾斜。根据以上分析的特

4、点,可以利用Hough变换和边缘检测结合的方法实现纸牌的倾斜校正与定位。Hough变换是利用极坐标变换的方法,在图像中进行像素的累加,从而估算出最长直线与图像边缘所成倾斜的角度。如下左图所示,首先在原图像中引入、和L三个参数,通过和参数的变化可以累加出对应L的值(直线长度):利用Hough变换,可以很容易地得出在图像中最长直线的长度和该直线与图像边缘对应所成的角度。对于大多数的纸牌来说,我们可以直接把检测出来最大的L所对应的倾斜角视为纸牌的倾斜,这是因为,纸牌本身拥有的一条较长边缘,而任何角度上的直线像素累加都不能与之相比。但对于一些内部图案很复杂的纸牌,如J、Q、K和JOKER,由于图案边缘

5、复杂性的原因,Hough变换后就会产生一些非纸牌物理边缘而长度超过物理边缘的线条,此时,该线条对应的倾斜角就不是纸牌与图像所成的真实倾斜角度。 这些复杂线条信息的存在,会对纸牌物理边缘的确认产生十分大的影响,因此,在Hough变换之前,必须采取一些操作,最大程度地去除这些复杂的边缘信息的同时,保留纸牌的物理边缘信息。可以在经过边缘检测的前提下,通过形态学闭操作把纸牌内部的复杂线条模糊化,然后再对模糊化后的图像进行边缘检测,具体效果如下图: 经过以上的步骤后,再对图像进行Hough变换,就可以准确地确认出纸牌的物理边缘,然后对纸牌进行倾斜校正与定位,Matlab程序实现如下:function p

6、oker=rectify(rgbimage)%扑克目标校正且定位函数grey=rgb2gray(rgbimage); %灰度化图像ed1=edge(grey,sobel,both); %灰度化图象边缘化bw1=imclose(ed1,strel(disk,20); %形态学闭操作圆形结构体%以上形态学操作为了模糊纸牌内部的线条结构%从而减小J,Q,K,JOKER纸牌等内部复杂边缘对定位的影响ed2=edge(bw1,sobel,both); %对纸牌的物理边缘进行检测bw2=bwmorph(ed2,dilate); %结构性膨胀加强边缘效果hough=radon(bw2,-90:90); %-

7、90到90度的hough变换m,n=size(hough);rotate=0; %倾斜角值sline=0; %最长直线长度for i=1:m for j=1:n if hough(i,j)sline; rotate=j-1;sline=hough(i,j); end endended3=bwmorph(ed2,clean,10);bw3=imrotate(ed3,-rotate); %预校正m,n=find(bw3); %预测校正后的目标位置rgb=imrotate(rgbimage,-rotate,bilinear); %倾斜校正poker=rgb(min(m):max(m),min(n):

8、max(n),:); %定位m,n=size(poker);if nm poker=imrotate(poker,90,bilinear);end纸牌特征提取 纸牌具有很多的特征,如字符特征,花形特征,图案特征,颜色特征等,不同的纸牌具有不同的特征。根据特征的组合,可以产生出54纸不同的纸牌。纸牌识别的第一步,必须在待识别的纸牌中提取它所具备的特征。 由于纸牌内部的图案较复杂,对其操作运算量较大,不以其作为识别的特征。而字符和花形特征结构较为简单,易于操作,所以应该在纸牌中提取字符与花形的特征,并以这两个特征识别出纸牌。 在纸牌倾斜校正与定位后,根据纸牌的固有属性,可以大概地定位出纸牌上字符与

9、花形的位置,然后把字符与花形粗略提取出来。提取出字符与花形的大概位置后,必须对提取出的图像进行二值化,进一步提取特征。二值化是指整幅图像像素仅有黑、白二值的图像。由于 “非黑即白”的特性,二值图像在数字图像处理中占有非常重要的地位。二值化的关键是要找到合适的阈值来区分对象和背景。阈值选取有许多的方法,常用的阈值选取方法有:直方图双峰法、自适应局部阈值法、最佳阈值法等。 Ostu算法是最佳阈值算法的一种。Ostu算法是利用最大类间方差法,判决分析最小二乘法的原理基础上推导得出的。它的计算步骤是先计算图像的灰度直方图概率函数,然后以阈值为基准将灰度级划分为两类,Ostu算法求二值化最佳阈值的Mat

10、lab程序实现如下:function level=ostu(IMAGE)%最大类间方差ostu算法,求最佳阈值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

11、;HStore=zeros(1,256);for i=1:ranks 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); le

12、vel = (idx - 1) / (ranks - 1);else level = 0.0;end在字符和花形粗略定位并且二值化之后,有时会残留一些很长边缘信息。这些边缘信息多数来自于纸牌本身的图案边缘或背景残留。由于这些线条多数与字符和花形的颜色相近,因此在图像二值化之后仍然会保留下来。这些多余的边缘信息给特征的正确提取带来了很大的影响,所以在字符分割之前去除这些干扰是必要的。这些边缘信息都具有连续不跳变的特性,因此可以利用这个特性对二值化图像进行扫描,当出现超过一定长度不跳变的线条,把它视为干扰信息,并且把它去除。从左至右进行扫描,当列方向上出现超过1/3边长长度不跳变的线条,把它视为干

13、扰线条,并把它去除。 清除干扰线条的Matlab实现程序如下: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; %线条不连续 count=0;continue; else count=count+1; %连续不跳变点数增加 if count=m/3; %连续不跳变长度超过1/3边长 break; end end end if count=m/3 line(num)=j; num=num+1; %记录扫描到线条

14、位置 endendfor i=1:num-1 %清除干扰边缘 for j=1:m temp(j,line(i)=0; endendstr=logical(double(bwstr).*temp); 这个算法对断裂较多的线条没有作用,但能够在一定程度下消除了线条对目标信息的干扰,为纸牌识别的准确度提供一个保障。纸牌识别 在识别技术中,被广泛采用的有两类特征:结构特征和统计特征。常用的结构特征主要有:笔道密度函数、空洞和缺口、字符的特殊节点数。而常用的统计特征主要有复杂指数、粗网格特征、垂直和水平投影。 纸牌中有字符和花形两种字符,字符包括A、2、3、4、5、6、7、8、9、10、J、Q、K、JO

15、KER十四种;而花形包括:黑桃、红桃、梅花和方片四种。不论采用结构特征还是统计特征的匹配方法方法,均需要与一个系统预知道的标准符号模板库进行匹配。 结构特征匹配的识别准确率较高,但是运算量十分大,用于符号结构较复杂的识别;统计特征匹配识别准确率相对较低,但运算量少,适用于结构简单的符号识别。纸牌只有14个字符和4个花形符号,而且结构较简单,这里选用统计特征匹配。对于不同的符号,其投影均不相同。 因此,可以利用待识别符号投影与模板中各符号的投影求均方差,选择均方差最小(即与待识别符号投影偏离最小)所对应的模板符号作为识别结果。在符号中,JOKER信息像素所占数目较多,可以先对其确认。在匹配前先对

16、符号进行一定的结构性膨胀,由于JOKER具有多个字符,在膨胀后非零像素增加的数量定会大大的大于其它纸牌。这里设置一个临界值,当某待识别纸牌特征像素数量大于此临界值时把这张纸牌识别为JOKER,小于临界值再与其他模板进行匹配,这样就可以不需要额外加入JOKER模板,同时也一定程度下提高了系统的识别效率。Matlab - GUI程序实现 新建一个空的GUI任务: 设置菜单栏: 菜单栏选择项映射Callback函数: 各菜单选择项映射函数具体定义: 打开(O)打开一幅图像,并且显示到窗口上。function new_Callback(hObject, eventdata, handles)globa

17、l IMAGE;global POKER;global GRAY;global BW;global BWSTR;name=0;name,path=uigetfile(*.bmp;*.jpg;*,tif,打开图像);if name=0; %没有打开图像 return;endIMAGE=imread(strcat(path,name); %成功打开图像POKER=0;GRAY=0;BW=0;BWSTR=0; %其他图像复位subplot(1,1,1),imshow(IMAGE),title(扑克纸牌图像); 倾斜矫正与定位(Y)对纸牌图像进行倾斜校正和纸牌定位,计算定位耗时并显示。function

18、 tify_Callbackrec (hObject, eventdata, handles)global IMAGE;global POKER;if IMAGE=0;%未打开图像 msgbox(请先打开一幅扑克图像,错误,error);else tic; %计算校正与定位用时 POKER=rectify(IMAGE); %自定义函数rectify() if toc5 %设置超时时间为3秒 msgbox(图像校正定位超时,错误,error); return; end time=num2str(toc); str=strcat(校正与定位耗时,time,秒); subplot(1,1,1),im

19、show(POKER),title(扑克纸牌); msgbox(str,消息);end 图像二值化(B)对纸牌图像进行二值化,阈值用最佳阈值ostu算法计算得出。function binary_Callback(hObject, eventdata, handles)global IMAGE; %全局变量global POKER;global GRAY;global BW;if IMAGE=0 %未打开图像 msgbox(请先打开一幅扑克图像,错误,error);elseif POKER=0 %未进行图像校正 msgbox(请先对图像进行校正定位,错误,error);elseif GRAY=0

20、 %未进行图像灰度化 msgbox(请先对图像进行灰度化,错误,error);else bw=im2bw(GRAY,ostu(GRAY); %自定义函数ostu() BW=logical(abs(double(bw)-1); subplot(1,1,1),imshow(BW),title(图像二值化);end 纸牌字符提取(P)提取纸牌的特征字符。function getsymstr_Callback(hObject, eventdata, handles)global IMAGE;global POKER;global GRAY;global BW;global BWSTR;if IMAGE

21、=0 %未打开图像 msgbox(请先打开一幅扑克图像,错误,error);elseif POKER=0 %未进行图像校正 msgbox(请先对图像进行校正定位,错误,error);elseif GRAY=0 %未进行图像灰度化 msgbox(请先对图像进行灰度化,错误,error);elseif BW=0 %未进行图像二值化 msgbox(请先对图像进行二值化,错误,error);else m,n=size(GRAY); pokerstr=GRAY(2:m/2,n/20:n/5.5); %字符粗略定位 bw=im2bw(pokerstr,ostu(pokerstr); %自定义函数ostu(

22、) bw1=bwmorph(bw,clean); %清除孤立点 bw2=logical(abs(double(bw)-1); %二值图像反色 bw3=reduce(bw2); %自定义函数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%出现孤立线条 for j=1:m bw3(j,i-1)=0; %删除孤立线条列 end end end m,n=find(bw3);

23、BWSTR=bw3(min(m):max(m),min(n):max(n); subplot(1,1,1),imshow(BWSTR),title(纸牌特征字符);end 扑克识别(R)对字符特征进行匹配识别,并且输出识别结果。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 10 8,. 8 8 8

24、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 12 20 20 22

25、 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; %7str8

26、=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 16 10

27、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 2

28、0; %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 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(请先打开一幅扑克图像,错误,error);elseif POKER=0 %未进行图像校正 msgbox(请先对图像进行校正定位,错误,error);elseif GRAY=0 %未进行图像灰度化 msgbox(请先对图像进行灰度化,错误,

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1