一种应用于即时通讯工具的表情机器人的制作方法

文档序号:6372510阅读:185来源:国知局
专利名称:一种应用于即时通讯工具的表情机器人的制作方法
技术领域
本发明是一种基于即时通讯工具的表情机器人,具体涉及屏幕捕捉、图像识别技术领域。
背景技术
即时通讯工具又称为即时聊天工具,是一种基于互联网的服务,经过十几年的发展,如今已经拥有大量的固定用户,渗透到我们生活和工作中的方方面面。表情符号诞生在互联网,原本只是一种网络次文化,但随着网络的迅速发展与普及,它得到了人们的广泛接
受。 一般的即时通讯工具都拥有插入表情符号的功能,极大方便了用户的表达,增强了交流乐趣和用户体验。目前,表情符号主要朝着更加多元,更加生动和复杂的方向发展,本发明提出了一条创造性的发展道路让表情符号更加真实化。该方案能够对即时通讯工具的窗口界面进行监测,然后识别用户使用的表情符号的含义,并且针对被识别的表情符号做出符合该表情符号含义的响应。通过表情机器人用户可以更加直观地感受到聊天过程中所使用的表情符号,由此来增加即时通讯用户的体验感和乐趣。这是一个创新性的产品,鲜有对前人经验的借鉴。在进行表情符号识别方案的设计时,首先想到的是对即时通讯工具传输的数据包进行解密分析,从中提取出表情符号的代码,从而实现识别。但是目前的即时通讯工具都会在聊天内容的传送过程中对其进行很复杂加密,破译密钥需要比较长的时间,难度较大,而且即时通讯工具通常会不定期的升级,每次升级都会重新设定密钥,因此即时通讯工具升级后需要重新破译密钥的缺陷,这就带来了该方案的需要不断破译密钥的缺陷、复杂程度高、实时性不佳,从而无法批量的生产和推广。

发明内容
有鉴于此,本发明提供了一种应用于即时通讯工具的表情机器人,它可以实时地识别用户所使用的表情符号,并且做出与该表情符号所代表含义一样的响应。而且,其表情识别方法并非采用对即时通讯工具传输的数据包进行解密分析的方法,避免了采用这种方案所带来的复杂程度高、实时性不佳、即时通讯工具升级后需要重新破译密钥的缺陷。该方法是这样实现的—种基于即时通讯工具的表情机器人,包括聊天窗口监测模块、表情符号定位模块、表情符号识别模块和响应模块;所述聊天窗口监测模块,用于在确定当前焦点窗口是即时通讯工具的聊天窗口后,对所述聊天窗口进行监测,定时或当用户有新的聊天消息显示出来时,将聊天窗口的图像截取下来,并保存为图片;所述表情符号定位模块,用于分析聊天窗口监测模块所截取下来的图片,寻找其中的表情符号,找到表情符号之后,将表情符号的位置发送给所述表情符号识别模块;
所述表情符号识别模块,用于当接收到表情符号定位模块发过来的表情符号的位置后,将该位置的表情符号与现有表情符号库中的表情符号进行对比,从而确定该表情符号所代表的意义,然后将结果发送给响应模块;所述响应模块,用于在接收到表情符号识别模块发送过来的结果后,通过设定的表现方法进行响应。其中,所述响应模块通过声音、图像和/或动作进行响应。优选地,所述表情符号定位模块包括切割模块、灰度化模块、平滑模块和哈夫Hough检测模块切割模块,用于根据对话栏在聊天窗口中的位置,从聊天窗口的图像中将对话栏的图像切割出来,将切割出来的图像发送给灰度化模块;灰度化模块,用于将所接收的图像进行灰度化出来,得到灰度图,发送给平滑模块;平滑模块,用于对接收到的灰度图进行高斯平滑处理;Hough检测模块,用于对高斯平滑处理后的图像进行Hough变换,检测出圆形的表情符号所在的位置;只输出识别出的表情符号中坐标x、y都是最大的表情符号的位置;其中X轴、y轴以对话栏的左上角为零点。优选地,所述Hough检测模块的Hough变换从对话栏的右下角开始,按照从右至左,从下至上的顺序计算,当检测到第一个圆时,输出圆心位置,并停止检测。优选地,所述表情符号识别模块包括提取模块、匹配模块和识别模块;所述提取模块,用于根据表情符号定位模块输出的位置,从切割模块获得的所述对话栏的图像中获得表情符号图像,发送给匹配模块;所述匹配模块,用于将所接收的表情符号图像作为模板,将预先存储的包含所有默认表情符号的图像作为全局图像,然后进行模板匹配,最后找出表情符号图像在全局图像中的位置;所述识别模块,用于根据已知的全局图像中每个默认表情符号的位置范围和表情含义,判断所述匹配模块找出的表情符号图像的位置对应哪个表情含义,将表情含义发送给响应模块。有益效果本发明提供了一种应用于即时通讯工具的表情机器人,可以实时地识别用户所使用的表情符号,并且做出与该表情符号所代表含义一样的响应,而且更重要的是,该表情及其人的表情识别方法并非采用对即时通讯工具传输的数据包进行解密分析的方法,即时通讯工具升级后不需要重新破译密钥,因此通用性好,适用于各种即时通讯工具。而且该方法依靠截图进行表情识别,方法简单,可以借助很多现有的图像处理方法,实现起来十分简单,而且计算量也不大,从而有利于提高表情识别的实时性。其次,在Hough圆检测后可能会得到多个位于不同位置的圆,这里根据即时通讯工具的特点只输出x、y最大的圆的位置,从而避免了多个圆位置输出带来的后续匹配计算量多,响应混乱等缺陷。再次,在进行Hough检测计算是,直接从对话栏的右下角开始计算,按照从右到左,从下到上的顺序,将第一个检测到的圆位置输出,且不需要进行后续计算,这样可以减、少计算量。


图I为本发明的系统功能模块图。图2为截图模块流程图。图3为截图模块效果图。图4为QQ默认表情符号图。图5为表情符号定位模块处理流程图。图6为QQ聊天窗口分解图。
图7为灰度化后的效果图。图8为高斯平滑之后的效果图。图9为表情符号定位结果图。图10为表情符号识别模块流程图。图11为QQ全部默认表情符号划分图。图12为表情符号识别结果图。
具体实施例方式下面结合附图并举实施例,对本发明进行详细描述。本发明采用了一种无需对聊天内容进行解密分析的方法,通过对聊天窗口监测截图,分析出表情符号,称为截图比对法。该方法思路是,首先对即时通讯工具用户的聊天窗口进行监测,然后选取合适的时机进行截图并保存,接下来对聊天窗口的图像进行分析比对,找出表情符号位置,最后识别出表情符号所代表的含义。由于表情符号的大小是固定的,所以可以采取模式识别中模板匹配的方案来实现。该截图比对法的优势是绕过了破解加密消息的环节,因此方法简单、实时性好,并且可以很容易的做到跨即时通讯工具。图I为本发明即时通讯工具的表情机器人的组成框图,如图I所示,该表情机器人包括聊天窗口监测模块、表情符号定位模块、表情符号识别模块和响应模块。其中,聊天窗口监测模块,用于在确定当前焦点窗口是即时通讯工具的聊天窗口后,对所述聊天窗口进行监测,定时或当用户有新的聊天消息显示出来时,将聊天窗口的图像截取下来,并保存为图片;其中,焦点窗口是指用户当前正在操作的窗口,通过Windows下的API函数可以很容易的判断出焦点窗口。表情符号定位模块,用于分析聊天窗口监测模块所截取下来的图片,寻找其中的表情符号,找到表情符号之后,将表情符号的位置发送给所述表情符号识别模块;表情符号识别模块,用于当接收到表情符号定位模块发过来的表情符号的位置后,将该位置的表情符号与现有表情符号库中的表情符号进行对比,从而确定该表情符号所代表的意义,然后将结果发送给响应模块;响应模块,用于在接收到表情符号识别模块发送过来的结果后,通过设定的表现方法进行响应。
下面针对每个模块的功能进行详细描述。 聊天窗口监测模块聊天窗口监测截图模块的主要功能是对用户的聊天窗口进行监视,当用户有新的聊天消息显示出来时,就将聊天窗口截取下来,并保存为图片,以备后期的处理和分析,聊天窗口监测模块工作流程如图2所示。以腾讯公司的QQ为例,聊天窗口监测模块大致的流程是这样,当系统运行时首先判断用户当前的焦点窗口是不是QQ聊天窗口,如果是就进入下一步,如果不是就不做响应。当已经确定用户的焦点窗口是QQ聊天窗口后,需要判断是否有新的消息进入,如果有就截图并保存下来。或者可以采用定时截图的办法,每隔一个固定的时间就对聊天窗口截图。对于是否有新聊天消息的加入可以通过监控聊天窗口上图像的变化实现,当聊天窗口内图像变化时,认为有新的聊天消息进入。截图模块的效果如图3所示。 表情符号定位模块·通过聊天窗口监测模块得到了 QQ聊天窗口的截图,接下来面临的问题就是怎么样分析截取到的图片中是否含有表情符号,以及如何确定表情符号的位置。首先分析QQ自带的默认表情符号,如图4所示。出于实用性和技术原因的考虑,本系统目前只考虑支持QQ默认表情中的圆形经典表情符号。这一系列表情符号有两个很突出的特征I)形状上是圆形。2)都以黄色为主要颜色。考虑到用户在聊天时所用的主要是汉字、英文字母、数字、表情符号,前三项作为识别过程中的干扰项,不具备表情符号的圆形的形状特征,但是QQ用户可以自定义聊天文本的颜色,所以也可能具有黄色这个特征。在综合考虑之后决定通过圆形这个特征来标记并提取表情符号,这也是大多及时通讯工具所使用的表情符号的特征。前面分析了表情符号不同于汉子、英文字母、数字的特征,这里就需要用到一些图像处理的技术来寻找圆形的表情符号,如图5所示,首先要对图像进行切割的处理,除去不需要的干扰区域可以提高后续处理的效率,切割之后是对图像进行灰度化和图像平滑,这两个流程的目的都是增强图像,以便提高检测的精确率,最后就是检测表情符号,用到了Hough圆检测函数,结果就是返回表情符号的位置即圆形的坐标。因此,该表情符号定位模块包括切割模块、灰度化模块、平滑模块和Hough检测模块。切割模块,用于根据对话栏在聊天窗口中的位置,从聊天窗口的图像中将对话栏的图像切割出来,将切割出来的图像发送给灰度化模块。仍以QQ为例,QQ聊天窗口的截图如图6所示,首先来分析一下输入的截图,可以看到QQ聊天窗口主要可以分为四个区域,用红线将他们划分出来,分别为功能栏、聊天记录显示窗口、输入栏、QQ秀栏,很明显在本系统里需要的是聊天记录显示窗口的信息,其它三个区域不会出现表情符号。所以,切割这一步目的是将聊天记录显示窗口从其它三个区域的包围中分离出来,通过实验我发现虽然QQ聊天窗口的大小是可以根据用户的需要而改变的,但是功能栏的高输入栏的高”以及QQ秀栏的宽,W51 ”,是一个固定值,不会随着窗口的缩放而改变。经过测量H功能=105像素,11输入=155像素,W秀=145像素。根据这三个数据很容易就可以推算出聊天记录显示窗口的起始坐标为(O,105),右下角坐标为(W-145,H-155)其中W为整个截图的宽,H为整个截图的高。通过这些数据很容易就可以将聊天记录显示窗口单独显示出来了,这样做剔除了很大的干扰区域,使得后续的处理更加高效。灰度化模块,用于将所接收的图像进行灰度化出来,得到灰度图,发送给平滑模块。
灰度化是将彩色图像转换为灰度图像。在本系统中的截图模块所获取的图像是彩色图像,彩色图像是这样一种图像,它的每个像素点都对应有三个分量(R,G,B),这三个分量代表红色、绿色、蓝色,每个分量可以取0到255中的整数值,每一组值就代表了一个颜色,这样一个像素点可以有1600多万的颜色的取值选择,即使是对于计算机来说这个数字也是十分庞大的,所以为了方便处理需要对图像进行灰度化,灰度图像是这样一种图像,它的像素点也由R、G、B三个分量来表示,但是这三个分量的取值相同,可见,在灰度图像中一个像素点的取值范围只有255种,并且跟彩色图像一样它仍然可以反映整幅图像的整体和局部的色度和亮度等级的分布和特征。所以在对数字图像进行处理时,一般先将被处理对象转换成灰度图像,这样做可以大大减少后续处理的计算量。灰度化结果如图7所示。平滑模块,用于对接收到的灰度图进行高斯平滑处理。图像平滑的主要目的是为了消除原图像中的噪声,并且尽量保持原图像的边缘轮廓和线条。图像中的噪声并不仅仅限于人类眼睛所能觉察到的图像失真和变形,很多噪声只有在进行计算机图像处理是才能被发现,并且这些噪声都是随机分布,大小、形状也都是不规则的。图像平滑的方法有很多种,包括线性、非线性平滑和锐化处理,伪彩色处理,滤波等。利用高斯平滑去除杂乱无章并且随机分布的噪声时,会收到比其它几种平滑方法更好的效果,最重要的一点是它可以得到比较好的图像边缘,这样在后续进行圆形检测时可以有不错的精确度。所以对输入的图像进行高斯平滑处理,处理后的效果如图8所示。经过高斯平滑处理这一步之后的图像,是一个完成去噪的灰度图像,已经具备了进行圆形检测的前置条件。当在图像处理中需要从图像中识别简单几何图案时,有一种基本的方法叫做哈夫(Hough)变换,Hough变换是实现边缘检测的一种基本的有效方法,是图像处理中从原图像中识别出简单几何形状的基本方法之一。Hough变换的基本原理是利用点与线在数学中的对偶性,将原始图像空间中的选定点变换到参数空间的的一条曲线或曲面,具有同一参量特征的点经过变换后在参量空间中相交,这样就可以通过判断交点处的积累程度即峰值来完成对特征曲线的检测。利用Hough变换可以把原始图像中的曲线检测问题转化为寻找参数空间中的峰值问题,也就是把检测整体特性转化为检测局部特性。基于参量性质的不同,Hough变换可以检测直线、圆、椭圆、曲线等。Hough变换是一种具有全局性的检测方法,它对随机噪声和部分遮盖现象不敏感,具有极强的抗干扰能力,能够很好的抑制数据点过于集中所产生的干扰。Hough变换在检测已知形状的目标方面具有良好的容错性和鲁棒性,即使目标有缺损或污染也能够被正确的识别。所以本发明采用了这种方法来检测表情符号的圆形。由于表情符号的半径是已知的约为25个像素点,所以只要定位到圆心就可以将表情符号找到并分离出来,效果如图9所
/Jn o为了测试本方法的有效性和抗干扰能力,特别在截图里包含了数字、英文字母、汉字等主要的干扰项目,为了方便观察检测结果,这里将检测结果进行了输出和标识。结果图中检测出了两个圆形,并且这两个圆形正是表情符号,圆形的圆心用绿色点标识了出来,并且将圆心坐标进行了输出,结果基本与预期的一样。当定位模块检测完一副截图之后,会有几秒的时间,来等待新截图的输入,由于这个时间很短,所以,新截图中的聊天记录内容会与以前的截图有部分的重叠,如果重叠部分中包含了表情符号,那么这个表情符号已经是被定位过的了,如果这时候将检测到的结果输出,那么就会产生重复。产生这个问题的原因是,QQ显 示聊天记录的区域是固定的,当有新的聊天记录到来时,旧的聊天记录就会被顶上去,如果一个表情符号出现在了一副截图的最底层,即用户刚收到这个表情符号,那么,这个表情符号就会在后续的几张截图里出现,直到有足够多的消息将此表情符号顶出聊天记录的显示区域。由于以上的情况,本模块不能设置成将所有检测到的表情符号,全部存放为结果进行输出,为了解决重复定位这个问题,进行了这样的设计只对识别出的表情符号中坐标x、y、都是最大的表情符号的位置进行输出。 因此Hough检测模块的功能是,对高斯平滑处理后的图像进行Hough变换,检测出圆形的表情符号所在的位置;只输出识别出的表情符号中坐标x、y都是最大的表情符号的位置;其中X轴、y轴以对话栏的左上角为零点。为了减少计算量,优选地,Hough检测模块的Hough变换从对话栏的右下角开始,按照从右至左,从下至上的顺序计算,当检测到第一个圆时,输出圆心位置,并停止检测。在表情符号定位模块中可以获取表情符号的位置,从而可以将表情符号单独分离出来。但是到这一步系统仅仅只是知道聊天窗口出现了表情符号而已,它并不知道这个表情符号所代表的意义,所以还不能做出对应的一个响应,要实现对不同表情符号进行正确的响应,还需要识别出分离出的表情符号所代表的含义,这一过程就是表情符号识别模块所能够实现的功能。 表情符号识别模块表情符号识别模块主要的思路是将定位模块所获取的表情符号图像作为模板,将包含所有默认表情符号的图像作为全局图像,然后进行模板匹配,最后找出表情符号在全局图像中的位置,由于在全局图像中包含了所有表情符号并且每个表情符号都有自己固定的位置,所以根据位置就可以确定表情符号所代表的意义了,此模块的基本流程如图10所
/Jn o因此表情符号识别模块包括提取模块、匹配模块和识别模块;其中,提取模块,用于根据表情符号定位模块输出的位置,从切割模块获得的所述对话栏的图像中获得表情符号图像,发送给匹配模块;匹配模块,用于将所接收的表情符号图像作为模板,将预先存储的包含所有默认表情符号的图像作为全局图像,然后进行模板匹配,最后找出表情符号图像在全局图像中的位置;识别模块,用于根据已知的全局图像中每个默认表情符号的位置范围和表情含义,判断所述匹配模块找出的表情符号图像的位置对应哪个表情含义,将表情含义发送给响应模块。
仍以QQ为例,图11是QQ所有的默认表情符号截图。从图中可以看出一共有8行14列表情符号,共计105个,每个表情符号都占有一个固定的位置,并且都有一个固定的外接矩形,经过测量得到表情符号矩形所占的区域大小为33X33像素,这里就可以将图11划分成112个小矩形区域,每个区域代表一个表情符号,要想识别表情符号只需判断模板匹配中返回的表情符号的坐标落在哪个区域即可,例如微笑表情符号的区域为0<x<33,0<y<33。撇嘴表情符号的区域为33 < X < 66,0 < y < 33。惊讶表情符号的区域为0 < X < 33,33 < y < 66。难过表情符号的区域为33 < X < 66,33 < y < 66。匹配结果如图12所示,为了方便观察识别结果,这里将待识别表情符号的图像和所有默认表情符号的图像以及识别结果的输出一起显示了出来,并且用线条标识了模板匹·配的结果,可见利用该方法可以成功的进行模板匹配并且利用位置识别出表情符号的含义。 响应模块响应模块比较理想的响应方式是具有准确性和一定的趣味性,也就是说该模块应该能够准确的做出与表情符号所对应的响应,让用户很容易就能理解到响应的含义,并且要求一定的趣味性,这样可以提高用户体验。该响应模块在论文研究初期的计划是寻找一种特制的外设,该外设应该具有以下特性I)可以模仿人脸做出喜怒哀乐等各种表情。2)可以用某种方式连接到用户的主机上,与用户主机进行通信。3)能够通过编程来控制该外设做出不同的表情。传输方式可以根据实际需要来选择,传输的数据的内容应该做如下设计,在识别模块已经将105个表情符号进行了编号,识别的结果就是表情符号的编号,所以可以将表情机器人的状态也进行编号,这个编号应该和表情符号的编号一致。这样只需要将编号发送给响应模块,就可以做出对应的表情响应了,所以传送的数据内容可以设计成I到105之间的整数,当响应模块收到编号,就可以改变到对应的状态,那么该状态正好就是表情符号对应的状态。综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种基于即时通讯工具的表情机器人,其特征在于,包括聊天窗口监测模块、表情符号定位模块、表情符号识别模块和响应模块; 所述聊天窗口监测模块,用于在确定当前焦点窗口是即时通讯工具的聊天窗口后,对所述聊天窗口进行监测,定时或当用户有新的聊天消息显示出来时,将聊天窗口的图像截取下来,并保存为图片; 所述表情符号定位模块,用于分析聊天窗口监测模块所截取下来的图片,寻找其中的表情符号,找到表情符号之后,将表情符号的位置发送给所述表情符号识别模块; 所述表情符号识别模块,用于当接收到表情符号定位模块发过来的表情符号的位置后,将该位置的表情符号与已知表情符号库中的表情符号进行对比,从而确定该表情符号所代表的意义,然后将结果发送给响应模块; 所述响应模块,用于在接收到表情符号识别模块发送过来的结果后,通过设定的表现 方法进行响应。
2.如权利要求I所述的表情机器人,其特征在于,所述响应模块通过声音、图像和/或动作进行响应。
3.如权利要求I所述的表情机器人,其特征在于,所述表情符号定位模块包括切割模块、灰度化模块、平滑模块和哈夫Hough检测模块 切割模块,用于根据对话栏在聊天窗口中的位置,从聊天窗口的图像中将对话栏的图像切割出来,将切割出来的图像发送给灰度化模块; 灰度化模块,用于将所接收的图像进行灰度化出来,得到灰度图,发送给平滑模块; 平滑模块,用于对接收到的灰度图进行高斯平滑处理; Hough检测模块,用于对高斯平滑处理后的图像进行Hough变换,检测出圆形的表情符号所在的位置;只输出识别出的表情符号中坐标x、y都是最大的表情符号的位置;其中X轴、y轴以对话栏的左上角为零点。
4.如权利要求3所述的表情机器人,其特征在于,所述Hough检测模块的Hough变换从对话栏的右下角开始,按照从右至左,从下至上的顺序计算,当检测到第一个圆时,输出圆心位置,并停止检测。
5.如权利要求3或4所述的表情机器人,其特征在于,所述表情符号识别模块包括提取模块、匹配模块和识别模块; 所述提取模块,用于根据表情符号定位模块输出的位置,从切割模块获得的所述对话栏的图像中获得表情符号图像,发送给匹配模块; 所述匹配模块,用于将所接收的表情符号图像作为模板,将预先存储的包含所有默认表情符号的图像作为全局图像,然后进行模板匹配,最后找出表情符号图像在全局图像中的位置; 所述识别模块,用于根据已知的全局图像中每个默认表情符号的位置范围和表情含义,判断所述匹配模块找出的表情符号图像的位置对应哪个表情含义,将表情含义发送给响应模块。
全文摘要
本发明公开了一种应用于即时通讯工具的表情机器人,它可以实时地识别用户所使用的表情符号,并且做出与该表情符号所代表含义一样的响应。而且表情识别方法避免了复杂程度高、实时性不佳、即时通讯工具升级后需要重新破译密钥的缺陷。该系统中,聊天窗口监测模块在即时通讯工具有新的聊天消息显示出来时或定时将聊天窗口的图像截取为图片保存;表情符号定位模块在截取下来的图片中寻找表情符号,将表情符号的位置发送给表情符号识别模块;表情符号识别模块将表情符号的位置与已知表情符号库中的表情符号进行对比,确定表情符号的意义,并发送给响应模块;响应模块在接收到表情符号识别模块发送过来的结果后,通过设定的表现方法进行响应。
文档编号G06K9/64GK102750555SQ20121022449
公开日2012年10月24日 申请日期2012年6月28日 优先权日2012年6月28日
发明者张纯纯, 王崇文 申请人:北京理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1