一种基于计算机视觉技术的辅助钢琴练习者指法检测方法与流程

文档序号:17151750发布日期:2019-03-19 23:30阅读:204来源:国知局
一种基于计算机视觉技术的辅助钢琴练习者指法检测方法与流程

本发明涉及计算机视觉领域,具体涉及一种基于计算机视觉技术的辅助钢琴练习者指法检测方法。



背景技术:

传统的钢琴学习方法,大多数由于师资力量有限,无法一对一对学生进行精细的指导,故会导致学生在练习的过程中存在一些缺陷,并且,在学生的自我练习过程中,因为缺乏老师的监督,也不利于提高学习速度。



技术实现要素:

本发明的目的在于针对现有技术的缺陷和不足,提供一种基于计算机视觉技术的辅助钢琴练习者指法检测方法,通过深度传感器和可见光传感器来对钢琴练习者进行操作的检测,从而可以发现钢琴练习者在练习时候,指法存在的一些问题,从而减轻指导老师的负担。

为实现上述目的,本发明采用的技术方案是:它包含如下步骤:

一、利用传感器采集深度信息:在钢琴琴键正上方0.5m处设置深度传感器,通过深度传感器采集深度图像数据,用于检测练习者是否按下琴键;钢琴琴键正上方0.7m处设置可见光传感器,通过可见光传感器采集可见光信息,为后续的钢琴的琴键、手指定位以及指法分析提供数据支持;

二、钢琴键盘定位:利用可见光传感器和直线检测技术,来获取琴键的每一个位置,从而完成定位操作,具体包含如下步骤:

1、图像的灰度化:对原始图像pi进行灰度化后,图像标记为gi;

2、霍夫直线检测:由于每一个键盘上琴键的边界是直线,通过检测出直线,便可以获取到每一个钢琴上琴键的边缘部分;采用基于霍夫直线检测的方法来获取到图像的每一条直线;霍夫直线检测的原理如下:

在笛卡尔空间中,一条直线的表现形式是y=kx+b;其中,k和b分别表示斜率和截距;位于同一条直线上点都具有同样的斜率和截距,但是由于直线可能与x正轴垂直,斜率无法表示;故将直线换成极坐标系空间,则其表现形式是r=xcosθ+ysinθ,其中,(x,y)表示某一点的坐标位置,(r,θ)表示经过该点直线到原点的距离,θ表示r与x正轴的夹角;则在极坐标系下,位于同一条直线上的点,都有一样的r和θ;

对于图像gi来说,逐像素点进行遍历,将每一个像素点映射到极坐标系下,则其都会得到一组(r,θ));当所有坐标点都映射完毕后,会获得许多(r,θ)组,其中会有重复的,则重复频率最高的那两组(r,θ),就可以两个基于笛卡尔坐标系下的直线方程;从而通过该方程,便可以在图像中获取到多组组线段,组线段既有横向线段也有纵向线段;横向线段用于表示钢琴键盘中黑色键的底部边缘以及白色键的底部边缘;纵向的线段用于表示所有琴键的竖直方向边缘;

3、获取每一个琴键的定位:由于可见光传感器是安装在钢琴的正上方,因此对于其采集到的图像信息来说,练习者右手的区域,则对应着采集到图像的左边区域,从右往左开始分析图像gi上的线段和键盘定位,具体步骤如下:

a、检测黑色琴键:在钢琴的键盘中,由于存在两种颜色的琴键,黑色和白色,而黑色的琴键往往位于两个白色琴键之间,故其相对容易检测与定位;从图像gi的最右侧开始逐线段开始分析:

(1)如果存在一条横向线段恰好位于两条竖直方向线段之间;

(2)该横向线段的两个端点与这两条竖直方向线段的顶部相交;

(3)该横向线段大概位于图像gi竖直方向的处;

如果满足以上三个条件,则该横向线段与这两条纵向线段构成的区域,为黑色琴键的所在区域,记为h;

通过上述方法按顺序记录下每一个黑色琴键,分别标记为hj,1≤j≤m,m为总的黑色琴键个数;

b、检测白色琴键:

(1)同样从图像gi的最右侧区域开始分析,如果相邻的两条纵向线段长度不一,则较长的线段记为l1,较短的线段记为l2,且在l2中,其顶部有一条很短横向线段,即黑色琴键的横向边缘与之相交,交点记为o1,同样还有另一条纵向线段l3与该横向线段相交,交点记为o2,o1与o2连线记为l4,则l2、l4、l3与l1依次连线构成的区域为白色琴键区域,记为b,

(2)如果相邻两条纵向线段长度基本一致,且长度小于图像gi宽度的一半,分别记为l1和l2,且这两条纵向线段的顶部,均有一条横向线段与之相交,交点分别记为o1,o2,对于每一条横向线段,都分别另有一条纵向线段与该横向线段的某一部分相交,交点分别记为o3,o4,这两条纵向线段分别记为l3,l4,o1与o3连线记为l5,o2与o4连线记为l6,则线段l3、l5、l1相互连接与l4、l6、l1相互连接构成的区域,同样为白色琴键的区域,标记为b;

(3)如果相邻两条纵向线段长度基本一致,且长度大于图像gi宽度的一半,且在图像gi竖直方向的处无横向线段,则该两条线段所包裹的区域同样属于白色琴键对应的区域,记为b;

(4)通过上述方法按顺序记录下每一个白色琴键,分别标记为bk,1≤k≤n,k为总的黑色琴键个数;

(5)当完成所有黑色和白色琴键的检测后,按照标准的钢琴琴键分布和获取的琴键顺序,可将每一个琴键和其标准分布对应上,从而完成最终的钢琴的琴键定位操作;

三、手指定位,步骤如下:

1、绘制双手轮廓:在图像中gi绘制双手的轮廓,获取到两个手部区域的大致轮廓曲线;

2、椭圆拟合,确定手掌背面中心:对上一步骤中获取到的轮廓曲线,进行一个椭圆的拟合;拟合后的椭圆中心即近似为手掌背面的中心,记为zi,zi中的i与gi的中i对应;左手掌的背面中心记为右手掌的背面中心记为

3、检测手指:获取椭圆的短轴半径,记为ri,左、右手掌分别记为ril、rir;以左手掌为例,则以为圆心,半径为r=1.5*ril的长度绘制一个圆;则该圆会与获取的手部轮廓曲线相交,分割出许多小的半椭圆轮廓;则每个小半椭圆轮廓,则对应着一个手指的轮廓;

4、记录手指区域信息:分别记录下每一个小半椭圆的中心和其短轴半径;以左手为例,左手分割出的每一个手指中心记为短轴半径记为wid,其中1≤d≤5;

四、指法分析,步骤如下:

1、获取每个手指的深度图像区域信息:对于深度传感器来说,若位于时刻i,则其采集到的图像标记为di。由于深度传感器和可见光传感器采集到的图像尺寸大小都是一致的,故在图像di和图像gi中,手指和钢琴键盘的区域位置都是一样的;根据步骤三中获取的每一个手指的中心和其短轴半径,在对应采集到的深度图像中,裁剪出一个圆形区域,一共可以获取到10个圆形区域,分别代表10个手指,分别记为其中表示左手5个手指,且按照从小拇指到大拇指的顺序,依次排列;表示右手5个手指,且按照从大拇指到小拇指的顺序,依次排列;i表示时刻;

2、计算每个圆形区域的像素值距离总和,记为tis,1≤s≤10;

3、判断是否按键:如果手指按下钢琴的琴键的话,手指离深度传感器的距离也会发生微妙的变化,故按下琴键时刻,会获取到的圆形区域的像素值和之前比会发生一定的变化;由于深度传感器和可见光传感器是实时采集图像信息;对于每一个时刻,都获取对应时候的圆形区域;若当前时刻为j,将采集到的10个圆形区域的像素值记为满足公式则说明位于时刻j的时候,第s个手指按下琴键;

4、判断是否按错键:根据步骤二中的钢琴琴键的定位,以及步骤三中的手指的定位,判断出当前手指放在了琴键的哪一个位置上,以及这个位置代表的是钢琴的实际哪一个键;并将乐谱已经提前录入计算机中,每当检测到练习者按下琴键,便会和已经录入计算机中的乐谱进行逐乐谱匹配判断,从而发现是否按错键,如果按错键,将这个错误相关信息记录下来,等乐曲弹湊完毕后,便可以获取到这份记录,然后,针对错误记录,进行详细指导与分析。

采用上述方案后,本发明所述的一种基于计算机视觉技术的辅助钢琴练习者指法检测方法,具有以下优点:

1、将可见光监控技术用于钢琴练习监督的过程中;

2、将深度摄像机应用于钢琴学习中,判断练习者是否按下钢琴的键;

3、实时检测练习者的琴键按下的准确度,分析指法水准。

附图说明

图1为本发明的整体流程图;

图2为钢琴键盘定位流程图;

图3为手指定位流程图;

图4为指法分析流程图。

具体实施方式

下面结合附图,对本发明作进一步的说明。

本具体实施方式采用的技术方案是:参看图1所示,它包含如下步骤:

一、利用传感器采集深度信息:在钢琴琴键正上方0.5m处设置深度传感器,通过深度传感器采集深度图像数据,用于检测练习者是否按下琴键;钢琴琴键正上方0.7m处设置可见光传感器,通过可见光传感器采集可见光信息,为后续的钢琴的琴键、手指定位以及指法分析提供数据支持;

二、钢琴键盘定位:利用可见光传感器和直线检测技术,来获取琴键的每一个位置,从而完成定位操作,参看图2所示,具体包含如下步骤:

1、图像的灰度化:对原始图像pi进行灰度化后,图像标记为gi;由于可见光传感器采集的图像是具有三通道的彩色图像,且有可能包含光照以及其他不定因素,会导致在检测直线的时候,出现干扰问题,而灰度图像则保留了原始图像的绝大部分信息,因此,可以很好地用来检测直线;

2、霍夫直线检测:由于每一个键盘上琴键的边界是直线,通过检测出直线,便可以获取到每一个钢琴上琴键的边缘部分;可采用基于霍夫直线检测的方法来获取到图像的每一条直线;霍夫直线检测的原理如下:

在笛卡尔空间中,一条直线的表现形式是y=kx+b;其中,k和b分别表示斜率和截距;位于同一条直线上点都具有同样的斜率和截距,但是由于直线可能与x正轴垂直,斜率无法表示;故将直线换成极坐标系空间,则其表现形式是r=xcosθ+ysinθ,其中,(x,y)表示某一点的坐标位置,(r,θ)表示经过该点直线到原点的距离,θ表示r与x正轴的夹角;则在极坐标系下,位于同一条直线上的点,都有一样的r和θ;

对于图像gi来说,逐像素点进行遍历,将每一个像素点映射到极坐标系下,则其都会得到一组(r,θ));当所有坐标点都映射完毕后,会获得许多(r,θ)组,其中会有重复的,则重复频率最高的那两组(r,θ),就可以两个基于笛卡尔坐标系下的直线方程;从而通过该方程,便可以在图像中获取到多组组线段,组线段既有横向线段也有纵向线段;横向线段用于表示钢琴键盘中黑色键的底部边缘以及白色键的底部边缘;纵向的线段用于表示所有琴键的竖直方向边缘;

3、获取每一个琴键的定位:虽然在弹奏钢琴的时候,手会放在钢琴的键盘的上方,很容易遮挡部分区域,但是由于钢琴的每一个琴键很长,手不会把某一个琴键的所有边缘遮挡,故不会影响利用琴键边缘的直线来定位琴键;由于可见光传感器是安装在钢琴的正上方,因此对于其采集到的图像信息来说,练习者右手的区域,则对应着采集到图像的左边区域,从右往左开始分析图像gi上的线段和键盘定位,具体步骤如下:

a、检测黑色琴键:在钢琴的键盘中,由于存在两种颜色的琴键,黑色和白色,而黑色的琴键往往位于两个白色琴键之间,故其相对容易检测与定位;从图像gi的最右侧开始逐线段开始分析:

(1)如果存在一条横向线段恰好位于两条竖直方向线段之间;

(2)该横向线段的两个端点与这两条竖直方向线段的顶部相交;

(3)该横向线段大概位于图像gi竖直方向的处;

如果满足以上三个条件,则该横向线段与这两条纵向线段构成的区域,为黑色琴键的所在区域,记为h;

通过上述方法按顺序记录下每一个黑色琴键,分别标记为hj,1≤j≤m,m为总的黑色琴键个数;

b、检测白色琴键:

对于白色琴键来说,会存在一种现象,有些黑色琴键被相邻的两个白色琴键包裹着,因此,这两个琴键的形状,不是完全的矩形,因此,相对难以定位,而有的白色琴键,则没有包裹着黑色琴键,故形状很规则,因此,其具体检测步骤如下:

(1)同样从图像gi的最右侧区域开始分析,如果相邻的两条纵向线段长度不一,则较长的线段记为l1,较短的线段记为l2,且在l2中,其顶部有一条很短横向线段,即黑色琴键的横向边缘与之相交,交点记为o1,同样还有另一条纵向线段l3与该横向线段相交,交点记为o2,o1与o2连线记为l4,则l2、l4、l3与l1依次连线构成的区域为白色琴键区域,记为b,

(2)如果相邻两条纵向线段长度基本一致,且长度小于图像gi宽度的一半,分别记为l1和l2,且这两条纵向线段的顶部,均有一条横向线段与之相交,交点分别记为o1,o2,对于每一条横向线段,都分别另有一条纵向线段与该横向线段的某一部分相交,交点分别记为o3,o4,这两条纵向线段分别记为l3,l4,o1与o3连线记为l5,o2与o4连线记为l6,则线段l3、l5、l1相互连接与l4、l6、l1相互连接构成的区域,同样为白色琴键的区域,标记为b;

(3)如果相邻两条纵向线段长度基本一致,且长度大于图像gi宽度的一半,且在图像gi竖直方向的处无横向线段,则该两条线段所包裹的区域同样属于白色琴键对应的区域,记为b;

(4)通过上述方法按顺序记录下每一个白色琴键,分别标记为bk,1≤k≤n,k为总的黑色琴键个数;

(5)当完成所有黑色和白色琴键的检测后,按照标准的钢琴琴键分布和获取的琴键顺序,可将每一个琴键和其标准分布对应上,从而完成最终的钢琴的琴键定位操作;

三、手指定位,参看图3所示,步骤如下:

1、绘制双手轮廓:在图像中gi绘制双手的轮廓,获取到两个手部区域的大致轮廓曲线;

2、椭圆拟合,确定手掌背面中心:对上一步骤中获取到的轮廓曲线,进行一个椭圆的拟合;拟合后的椭圆中心即近似为手掌背面的中心,记为zi,zi中的i与gi的中i对应;左手掌的背面中心记为右手掌的背面中心记为

3、检测手指:获取椭圆的短轴半径,记为ri,左、右手掌分别记为ril、rir;以左手掌为例,则以为圆心,半径为r=1.5*ril的长度绘制一个圆;则该圆会与获取的手部轮廓曲线相交,分割出许多小的半椭圆轮廓;则每个小半椭圆轮廓,则对应着一个手指的轮廓;

4、记录手指区域信息:分别记录下每一个小半椭圆的中心和其短轴半径;以左手为例,左手分割出的每一个手指中心记为短轴半径记为wid,其中1≤d≤5;

四、指法分析,参看图4所示,步骤如下:

1、获取每个手指的深度图像区域信息:对于深度传感器来说,若位于时刻i,则其采集到的图像标记为di。由于深度传感器和可见光传感器采集到的图像尺寸大小都是一致的,故在图像di和图像gi中,手指和钢琴键盘的区域位置都是一样的;根据步骤三中获取的每一个手指的中心和其短轴半径,在对应采集到的深度图像中,裁剪出一个圆形区域,一共可以获取到10个圆形区域,分别代表10个手指,分别记为其中表示左手5个手指,且按照从小拇指到大拇指的顺序,依次排列;表示右手5个手指,且按照从大拇指到小拇指的顺序,依次排列;i表示时刻;

2、计算每个圆形区域的像素值距离总和:在上述步骤中,已经获取到了10个圆形区域,代表双手的十个手指区域;对于深度传感器来说,在其采集到的图像中,每一个像素值与当前位置离深度传感器的距离有关,如果某一个像素点离深度传感器越远,则该像素点对应的像素值越小,继续统计每一个圆形区域内像素值总和记为tis,1≤s≤10;

3、判断是否按键:如果手指按下钢琴的琴键的话,手指离深度传感器的距离也会发生微妙的变化,故按下琴键时刻,会获取到的圆形区域的像素值和之前比会发生一定的变化;由于深度传感器和可见光传感器是实时采集图像信息;对于每一个时刻,都获取对应时候的圆形区域;若当前时刻为j,将采集到的10个圆形区域的像素值记为满足公式则说明位于时刻j的时候,第s个手指按下琴键;

4、判断是否按错键:根据步骤二中的钢琴琴键的定位,以及步骤三中的手指的定位,判断出当前手指放在了琴键的哪一个位置上,以及这个位置代表的是钢琴的实际哪一个键;并将乐谱已经提前录入计算机中,每当检测到练习者按下琴键,便会和已经录入计算机中的乐谱进行逐乐谱匹配判断,从而发现是否按错键,如果按错键,将这个错误相关信息记录下来,等乐曲弹湊完毕后,便可以获取到这份记录,然后,针对错误记录,进行详细指导与分析。

以上所述,仅用以说明本发明的技术方案,而非限制本领域普通技术人员对本发明的技术方案所做的其它修改或者等同替换,只要不脱离本发明技术方案的精神和范围,均应涵盖在本发明的权利要求范围当中。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1