一种基于安卓系统的智能手表实体指针的确位方法
技术领域
本发明涉及确定表面指针位置的方法,具体涉及一种基于安卓系统的只能手表实体指针的确位方法。
背景技术
目前智能实体指针手表校准较为麻烦,需要肉眼识别,手动调整。我司曾开发出利用拍照图片进行对时的方法,此方法给予手机拍照对画面的识别非常准的前提,而且,拍照的图像属于瞬时动作,画面是固定的,在拍完照到对照片处理完成期间,时间是走动的,因此,此过程可能存在一定的误差,需要大量的纠正算法去纠时。
发明内容
基于上述技术问题,本发明提供一种基于安卓系统的只能手表实体指针的确位方法,对于配置不高的手机,该方法借助手机视频拍摄,从数据图像中识别定位指针当前位置,并将当前位置及需要调整的角度通过蓝牙发送到手表上面,手表根据指令调整到正确的位置。目前根据测试准确率极高。大大方便的用户的使用,提高了用户体验。
本发明的具体技术方案如下:
一种基于安卓系统的智能手表实体指针的确位方法,所述方法包括如下步骤:
步骤一,对具有安装系统的包括处理器的手机的摄像头进行设置,使得所述摄像头每时间阈值内至少对焦一次。这样,即使摄像头差、配置低的安卓手机每几帧图像里至少有一帧是清晰的图像。
步骤二,所述摄像头对所述手表的表面进行实时拍摄得到视频,所述手机对所述摄像头拍摄的视频进行识别,所述识别为提取所述视频的图像进行图像处理。
步骤三,所述图像处理包括定位预处理,所述定位预处理包括将图像进行灰度化,使其由4通道图像生成1通道的灰度图像,对所述灰度图像进行高斯滤波处理,得到平滑灰度图像。在多次的评估对处理器的要求的计算的速度时,发现光线、颜色等因素对后续的指针的提取存在较大的障碍,因此,大胆地创造性的将惯用的4通道图像直接降低到1通道的灰度图像进行处理,这样不仅处理速度快,更是对手机性能的要求降低了。
步骤四,所述智能手表的表盘为圆表盘,所述处理器对所述平滑灰度图像进行霍夫变换图像处理,找出所述平滑灰度图像中的圆形。
步骤五,所述处理器预设第一直径阈值和第二直径阈值,当所述步骤四中的圆形的直径处于所述第一直径阈值和第二直径阈值之间时,取位于所述第一直径阈值和第二直径阈值之间的最小直径的圆形作为所述圆表盘的外廓圆。
步骤六,所述处理器根据所述外廓圆生成该外廓圆的定位矩阵,利用该定位矩阵裁剪所述步骤二中提取的所述视频的图像,保留所述视频的图像位于所述外廓圆的定位矩阵内的图像,所述保留的图像称为定位图像,所述定位图像的圆心即为所述外廓圆的圆心,所述定位图像的半径为r。
步骤七,所述处理器预设红点阈值X;在所述手表的表盘12点位置预设红色圆点,所述处理器扫描所述定位图像,获取到所述定位图像每个点的RGB值,若(R-B) > X 并且(R-G) > X,则所述处理器判断为该点为预设的红色圆点,将所述红色圆点与所述圆心的连线记作L。
步骤八,对所述定位图像进行图像边缘化处理,使得所述定位图像仅剩下线条。由于所有的表针都是直线的,因此,为了针对性地只保留线条即可。
步骤九,对所述步骤七中的线条进行去干扰处理,具体为:
计算每条线条的起点所述定位图像的圆心的距离d1和终点到所述定位图像的圆心的距离d2,其中,d1<d2,若线条的d1<r/5,且d2<0.9r,则所述处理器判断该线条为有效线条,否则为干扰线条;所有有效线条生成有效线条的集合。
步骤十,计算所述集合中每条线条与所述L之间的夹角,然后对夹角进行分类,所述分类为:
第一线条与所述L之间的夹角为A1,第二线条与所述L之间的夹角为A2,第三线条与所述L之间的夹角为A3,……第N线条与所述L之间的夹角为AN;
若其中有a条线段落入在(Ap,Ap+3)的角度范围内,b条线段落入在(Aq,Aq+3)的角度范围内,c条线段落入在(As,As+3)的角度范围内,……h条线段落入在(At,At+3)的角度范围内,其中,a+b+c+……+h=N,Ap、Aq、As、……、At均为A1、A2、A3、……、AN中的数值;
当有时针、分针和秒针三跟指针时,取a、b、c、……、h中数值最大的三个数值,并且定位到该三个数值的对应角度范围的所有线条作为指针线条。
步骤十一,对所述指针线条进行计算:若某条所述指针线条中存在一个点与圆心的距离大于0.7r且小于0.75r,则判断该条线为分针线条;若某条所述指针线条中存在一个点与圆心的距离大于0.3r且小于0.35r,则判断该条线为时针线条;若某条所述指针线条中存在一个点与圆心的距离大于0.8r且小于0.9r,则判断该条线为秒针线条。
步骤十二,在所述步骤二中,提取下一帧图像,重复次数阈值的所述步骤三到所述步骤十一。
步骤十三,形成秒针的线条集合、分针的线条集合、时针的线条集合,再过滤掉误差较大的角度,在任一指针的线条集合中,过滤的方法如下:
第1线条与所述L之间的夹角为B1,第2线条与所述L之间的夹角为B2,第3线条与所述L之间的夹角为B3,……第n线条与所述L之间的夹角为Bn;
若其中有A条线段落入在(Bp,Bp+3)的角度范围内,B条线段落入在(Bq,Bq+3)的角度范围内,C条线段落入在(Bs,Bs+3)的角度范围内,……H条线段落入在(Bt,Bt+3)的角度范围内,其中,A+B+C+……+H=n,Bp、Bq、Bs、……、Bt均为B1、B2、B3、……、Bn中的数值;取A、B、C、……、H中数值最大的一个数值,并且定位到该一个数值的对应角度范围的所有线条作为该指针的有效线条,计算该线条集合中所有有效线条的角度平均值作为该指针到所述L的角度。
进一步地,在所述步骤一种,所述时间阈值为1秒。
进一步地,在所述步骤二中,所述处理器按规律提取所述视频的图像,具体为:将当前正在处理的图像编号为0,提取所述视频的每帧图像,或者提取编号为奇数或偶数的图像,或者提取编号为3的倍数的图像,或者提取编号为4的倍数的图像。
进一步地,在所述步骤二中,所述提取根据所述处理器的处理速度进行,若当前图像未处理完毕,则发送过来的图像略过不提取进行识别,直至当前图像处理完毕再提取处理完毕之后发送到处理器的第一帧图像。
进一步地,在所述步骤七中,所述X值为50或80或90。X表示红点阈值,范围是50~90,50包括的红色范围比较广,90是比较严格的红色,由于某些手机摄像头的原因,可能该红色点会变成暗红色或其他接近红色的颜色,故这里的X可取50或者其他较为严格的值。
在所述步骤十二中,所述次数阈值大于等于7。
进一步地,所述处理器根据所述步骤十三得出的三个指针到所述L的角度,计算出所述智能手表的表面时间,并将所述表面时间与所述实际时间进行对比,得出时间差。
进一步地,所述处理器将所述时间差发送至所述智能手表,所述智能手表根据所述时间差控制三个指针进行时间调整。
通过上述的技术方案,一是可以精确地、实时地计算出手表的指针在表面所处的位置,二是对手机的安卓手机处理器要求不高,让手机APP不会变卡,并且采用选择性忽略图像帧方式,让低端手机,就算不能快速地处理图像,也可以表现地非常流畅。
具体实施方式
以下对本发明的技术方案进行详尽地阐述。
本发明拟要解决图像识别、噪声过来及时间校准三方面的算法问题,以及实际对于手机处理器的要求不同的优化问题。
表面指针的提取已经有了图像的提取,但是,图像的提取由于存在光线、颜色的问题,单张图片比较难以比较准确地确定指针的位置,而拍摄多张图片则由于拍摄的时间间隔问题,导致指针存在非常大的几率走动。
本发明采用视频提取图片的方式,视频具有连续性,且视频中1秒钟可以提取很多帧的图片,对其中的若干帧进行处理时,指针的位置基本不变。
具体的实现方式如下:
一种基于安卓系统的智能手表实体指针的确位方法,所述方法包括如下步骤:
步骤一,对具有安装系统的包括处理器的手机的摄像头进行设置,使得所述摄像头每时间阈值内至少对焦一次。这样,即使摄像头差、配置低的安卓手机每几帧图像里至少有一帧是清晰的图像。
进一步地,在所述步骤一中,所述时间阈值为1秒。
步骤二,所述摄像头对所述手表的表面进行实时拍摄得到视频,所述手机对所述摄像头拍摄的视频进行识别,所述识别为提取所述视频的图像进行识别。
进一步地,在所述步骤二中,所述处理器按规律提取所述视频的图像,具体为:将当前正在处理的图像编号为0,提取所述视频的每帧图像,或者提取编号为奇数或偶数的图像,或者提取编号为3的倍数的图像,或者提取编号为4的倍数的图像。
进一步地,在所述步骤二中,所述提取根据所述处理器的处理速度进行,若当前图像未处理完毕,则发送过来的图像略过不提取进行识别,直至当前图像处理完毕再提取处理完毕之后发送到处理器的第一帧图像。
步骤三,对提取的所述视频的图像进行定位预处理,所述定位预处理包括将图像进行灰度化,使其由4通道图像生成1通道的灰度图像,对所述灰度图像进行高斯滤波处理,得到平滑灰度图像。在多次的评估对处理器的要求的计算的速度时,发现光线、颜色等因素对后续的指针的提取存在较大的障碍,因此,大胆地创造性的将惯用的4通道图像直接降低到1通道的灰度图像进行处理,这样不仅处理速度快,更是对手机性能的要求降低了。
步骤四,所述智能手表的表盘为圆表盘,所述处理器对所述平滑灰度图像进行霍夫变换图像处理,找出所述平滑灰度图像中的圆形。
步骤五,所述处理器预设第一直径阈值和第二直径阈值,当所述步骤四中的圆形的直径处于所述第一直径阈值和第二直径阈值之间时,取位于所述第一直径阈值和第二直径阈值之间的最小直径的圆形作为所述圆表盘的外廓圆。
步骤六,所述处理器根据所述外廓圆生成该外廓圆的定位矩阵,利用该定位矩阵裁剪所述步骤二中提取的所述视频的图像,保留所述视频的图像位于所述外廓圆的定位矩阵内的图像,所述保留的图像称为定位图像,所述定位图像的圆心即为所述外廓圆的圆心,所述定位图像的半径为r。
步骤七,所述处理器预设红点阈值X;在所述手表的表盘12点位置预设红色圆点,所述处理器扫描所述定位图像,获取到所述定位图像每个点的RGB值,若(R-B) > X 并且(R-G) > X,则所述处理器判断为该点为预设的红色圆点,将所述红色圆点与所述圆心的连线记作L。
进一步地,在所述步骤七中,所述X值为50或80或90。X表示红点阈值,范围是50~90,50包括的红色范围比较广,90是比较严格的红色,由于某些手机摄像头的原因,可能该红色点会变成暗红色或其他接近红色的颜色,故这里的X可取50或者其他较为严格的值。
步骤八,对所述定位图像进行图像边缘化处理,使得所述定位图像仅剩下线条。由于所有的表针都是直线的,因此,为了针对性地只保留线条即可。
步骤九,对所述步骤七中的线条进行去干扰处理,具体为:
计算每条线条的起点所述定位图像的圆心的距离d1和终点到所述定位图像的圆心的距离d2,其中,d1<d2,若线条的d1<r/5,且d2<0.9r,则所述处理器判断该线条为有效线条,否则为干扰线条;生成有效线条的集合。
步骤十,计算所述集合中每条线条与所述L之间的夹角,然后对夹角进行分类,所述分类为:
第一线条与所述L之间的夹角为A1,第二线条与所述L之间的夹角为A2,第三线条与所述L之间的夹角为A3,……第N线条与所述L之间的夹角为AN;
若其中有a条线段落入在(Ap,Ap+3)的角度范围内,b条线段落入在(Aq,Aq+3)的角度范围内,c条线段落入在(As,As+3)的角度范围内,……h条线段落入在(At,At+3)的角度范围内,其中,a+b+c+……+h=N,Ap、Aq、As、……、At均为A1、A2、A3、……、AN中的数值;
当有时针、分针和秒针三跟指针时,取a、b、c、……、h中数值最大的三个数值,并且定位到该三个数值的对应角度范围的所有线条作为指针线条。
步骤十一,对所述指针线条进行计算:若某条所述指针线条中存在一个点与圆心的距离大于0.7r且小于0.75r,则判断该条线为分针线条;若某条所述指针线条中存在一个点与圆心的距离大于0.3r且小于0.35r,则判断该条线为时针线条;若某条所述指针线条中存在一个点与圆心的距离大于0.8r且小于0.9r,则判断该条线为秒针线条。
步骤十二,在所述步骤二中,提取下一帧图像,重复次数阈值的所述步骤三到所述步骤十一。次数阈值大于等于7。
步骤十三,形成秒针的线条集合、分针的线条集合、时针的线条集合,在过滤掉误差较大的角度,在任一指针的线条集合中,过滤的方法如下:
第1线条与所述L之间的夹角为B1,第2线条与所述L之间的夹角为B2,第3线条与所述L之间的夹角为B3,……第n线条与所述L之间的夹角为Bn;
若其中有A条线段落入在(Bp,Bp+3)的角度范围内,B条线段落入在(Bq,Bq+3)的角度范围内,C条线段落入在(Bs,Bs+3)的角度范围内,……H条线段落入在(Bt,Bt+3)的角度范围内,其中,A+B+C+……+H=n,Bp、Bq、Bs、……、Bt均为B1、B2、B3、……、Bn中的数值;取A、B、C、……、H中数值最大的一个数值,并且定位到该一个数值的对应角度范围的所有线条作为该指针的有效线条,计算该线条集合中所有有效线条的角度平均值作为该指针到所述L的角度。
所述处理器根据所述步骤十三得出的三个指针到所述L的角度,计算出所述智能手表的表面时间,并将所述表面时间与所述实际时间进行对比,得出时间差。所述处理器将所述时间差发送至所述智能手表,所述智能手表根据所述时间差控制三个指针进行时间调整。
通过上述的技术方案,一是可以精确地、实时地计算出手表的指针在表面所处的位置,二是对手机的安卓手机处理器要求不高,让手机APP不会变卡,并且采用选择性忽略图像帧方式,让低端手机,就算不能快速地处理图像,也可以表现地非常流畅。