基于ORB算法的坐姿识别综述

来源 :无线互联科技 | 被引量 : 0次 | 上传用户:burningDNA
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:为满足现代社会对于减少坐姿引发的健康问题的需求,文章基于ORB算法,应用图像直方图,使用Python编程语言和OpenCV库提出了一种可实现的坐姿识别方法,并对其进行实验验证。
  关键词:图像识别;ORB算法;Python OpenCV;直方图;坐姿识别
  现代社会存在一个巨大的群体,出于工作学习的原因,他们需要维持数个小时的静坐状态,在这样的情况下正确坐姿的重要性就凸显出来。长期不正确的坐姿对人体的健康将产生巨大的影响。计算机的飞速普及,让人们将越来越多的工作放在计算机上去完成,各行各业,尤其是程序开发人员、文字工作者,在计算机上的工作时间越来越长,这种情况下不良的坐姿对颈肩腰椎都会产生很大影响,容易导致多种疾病的发生。调查显示肩部腰部疾病的发病率越来越高,发病年龄越来越小,跟长期坐着工作有关。这些问题都说明,坐姿正确与否对健康有很大影响。在这样的情况下,有效预防不正确坐姿具有重大实际意义。
  1 坐姿识别应用前景
  要识别坐姿,首先要区分正确坐姿与不正确坐姿。正确的坐姿要求坐下时人身体端正,不左右斜靠,不前后仰躺,头部略微前倾,颈椎略微弯曲但是弯曲程度不宜过大,腰部保持挺直,身体自然放松,肩部自然下垂。胸部距离书桌边沿约一拳位置,保持头、颈、胸的正常生理曲线。如果是使用电脑的情况下,电脑屏幕中间应刚好与下巴呈水平,两者距离保持约35 cm。如果是阅读书籍或写作的情况下正确的坐姿要求书本与眼睛距离在30~35 cm最佳。
  不正确的坐姿大致分为6类:头部倾斜、身体左倾、身体右倾、身体前倾、脊椎前曲、身体后仰[1],这些不正确的坐姿都将对身体健康造成损害,头部倾斜、脊椎前曲是造成颈椎病,颈椎弯曲的重大原因之一;身体左倾、身体右倾、身体前倾增大腰部负担,造成腰椎弯曲、腰椎间盘突出、腰部疼痛等多种疾病。在这种情况之下,坐姿识别技术拥有广泛的应用前景,并有望在预防坐姿不正确引发的各类疾病方面起到重大作用。
  坐姿识别技术主要是指通过现代科技力量判断人们现阶段的坐姿情况,从而对不正确的坐姿起到警醒的作用。坐姿识别技术的分类大体与人体动作姿势的识别方法分类相同。
  2 坐姿识别技术概述
  人体动作姿态的识别方法可分为3类:基于统计的方法、基于模板的方法和基于语法的方法[2]。其中,基于统计的方法主要是隐马尔可夫模型(Hidden Markov Model,HMM)和动态贝叶斯网络(Dynamic Bayesian Network,DBN)两种方法,基于语法的方法最主要基于图像序列的相关应用。这两种方法这里我们不予讨论。本文研究的基于快速特征点提取和描述(Oriented FAST and Rotated BRIEF,ORB)算法图像识别技术属于基于模板的方法。基于模板的姿态识别方法核心思想就是比较实际检测对象与标准模板对象的相似程度,以此对人体的姿态情况进行判断。这种方法应用广泛且可靠性高,在实际应用中有较高价值。
  3 基于ORB算法的坐姿识别过程
  3.1 ORB算法介绍
  ORB算法是一种快速特征点提取和描述算法,这个算法分为两部分,分别是特征点提取和特征点描述。特征提取是由FAST算法发展来的,特征点描述是根据BRIEF特征描述算法改进的。ORB特征是将FAST特征点的检测方法与BRIEF特征描述子结合起来,并在它们原来的基础上做了改进与优化。ORB算法最大的特点就是计算速度快。这首先得益于使用FAST检测特征点,FAST的检测速度非常快。再次是使用BRIEF算法計算描述子,该描述子特有的2进制串的表现形式不仅节约了存储空间,而且大大缩短了匹配的时间[3]。
  3.2 图像直方图介绍
  直方图统计是图像处理中的一个非常重要的操作。图像直方图是反映一个图像像素分布的统计表,其实横坐标代表了图像像素的种类,可以是灰度的,也可以是彩色的。纵坐标代表了每一种颜色值在图像中的像素总数或者占所有像素个数的百分比。图像是由像素构成,因为反映像素分布的直方图往往可以作为图像一个很重要的特征。在实际工程中,图像直方图在特征提取、图像匹配等方面都有很好的应用[4]。
  3.3 姿态检测原理
  将摄像头拍摄到的一张图片与标准坐姿图片进行对比,通过ORB算法对两张图片进行特征点匹配,然后根据匹配的特征点坐标确定特征点匹配的对数,再通过设置阈值的方式来判断两张图片姿态的相似度。同时计算两张图片的直方图,通过绘制灰度值曲线来比较两张图的相似度,并且输出两张图的相似度,再通过对两种方法相似度的综合判断,来判断这两张图片中人体姿态。即若是两张方法判断出来两张图片的相似度都很高,那么可以判定两张图片中的人体姿态是一致的,也就是说摄像头拍到的图片中的人坐姿是标准的,若是两种方法判断的图片相似度都不高或者其中之一不高,则可以判断图片中人的坐姿是不标准的[5]。
  3.4 方法实现
  在实现方法前首先要安装好Python运行环境并安装好OpenCV库,将摄像头拍摄的人体姿态图片与标准姿态图片进行对比,利用ORB算法匹配两张图片的特征点,在运用图像直方图来比较两张图片相似度,若匹配到的特征点对数超过阈值且图片相似度也很高,则输出“坐姿标准”[6]。以下为该方法实现用到的主要函数:
  (1)实现ORB特征匹配的函数。
  def drawMatches(img1, kp1, img2, kp2, matches):
  rows1 = img1.shape[0]
  cols1 = img1.shape[1]
  rows2 = img2.shape[0]
  cols2 = img2.shape[1]
  out = np.zeros((max([rows1,rows2]),cols1 + cols2, 3),dtype = ‘uint8’)   #拼接图像
  out[:rows1, :cols1] = np.dstack([img1, img1,img1])
  out[:rows2, cols1:] = np.dstack([img2, img2,img2])
  for mat in matches:
  img1_idx = mat.queryIdx
  img2_idx = mat.trainIdx
  (x1,y1) = kp1[img1_idx].pt
  (x2,y2) = kp2[img2_idx].pt
  #绘制匹配点
  cv2.circle(out, (int(x1),int(y1)),4,(255,255,0),1)
  cv2.circle(out,(int(x2)+cols1,int(y2)),4,(0,255,255),1)
  cv2.line(out,(int(x1),int(y1)),(int(x2)+cols1,int(y2)),(255,0,0),1)
  return out
  (2)实现图像直方图相似度统计的函数。
  def classify_gray_hist(image1,image2,size = (256,256)):
  #先计算直方图
  image1 = cv2.resize(image1,size)
  image2 = cv2.resize(image2,size)
  hist1 = cv2.calcHist([image1],[0],None,[256],[0.0,255.0])
  hist2 = cv2.calcHist([image2],[0],None,[256],[0.0,255.0])
  #比较以下直方图
  plt.plot(range(256),hist1,’r’)
  plt.plot(range(256),hist2,’b’)
  plt.show()
  #计算直方图重合度
  degree = 0
  for i in range(len(hist1)):
  if hist1[i] != hist2[i]:
  degree = degree + (1 - abs(hist1[i]-hist2[i])/max(hist1[i],hist2[i]))
  else:
  degree = degree + 1
  degree = degree/len(hist1)
  return degree
  #计算单通道的直方图
  def calculate(image1,image2):
  hist1 = cv2.calcHist(image1,[0],None,[256],range(0.0,255.0))
  hist2 = cv2.calcHist(image2,[0],None,[256],range(0.0,255.0))
  #计算直方图的重合度
  degree = 0
  for i in range(len(hist1)):
  if hist1[i] != hist2[i]:
  degree = degree + (1 - abs(hist1[i]-hist2[i])/max(hist1[i],hist2[i]))
  else:
  degree = degree + 1
  degree = degree / len(hist1)
  return degree
  #通过得到每个通道的直方图来计算相似度
  def classify_hist_with_split(image1,image2,size = (256,256)):
  #將图像resize后,分离为三个通道,再计算每个通道的相似值
  image1 = cv2.resize(image1,size)
  image2 = cv2.resize(image2,size)
  sub_image1 = cv2.split(image1)
  sub_image2 = cv2.split(image2)
  sub_data = 0
  for im1,im2 in zip(sub_image1,sub_image2):
  sub_data += calculate(im1,im2)
  sub_data = sub_data/3
  return sub_data
  3.5 方法论证
  以某个被测人的100张不同姿态照片与该被测人的标准姿态照片进行测试,随机选取10组识别结果。经过测试可看到10组中识别准确的组别有8组,识别准确率达到80%,因此该方法可正确的识别姿态标准程度[7]。
  4 结语
  本文提出了基于ORB算法进行人体坐姿识别的一种方法,ORB图像识别算法在人脸识别、坐姿识别领域的应用较少,拓宽了ORB图像识别算法的应用领域,同时将ORB图像识别和直方图统计相结合解决人体坐姿识别相关问题,提高了图像识别的准确性。同时,对于上班族久坐且坐姿不正确导致的各种健康问题,本文提出了一种有效的预防方法,通过ORB算法对不正确的坐姿进行识别并且发出提醒,从而起到不断提醒人们关注自己的坐姿,及时改正错误坐姿的作用。
  [参考文献]
  [1]谢红莉,谢作揩,叶景,等.我国青少年近视现患率及相关因素分析[J].中华医学杂志,2010(7):15.
  [2]王春阳.基于图像技术的人体坐姿监测研究[D].西安:西安电子科技大学,2013.
  [3]黄国范,李亚.人体动作姿态识别综述[J].电脑知识与技术,2013(1):133-135.
  [4]张宇.基于人脸检测与肤色统计的坐姿行为监测[J].计算机与网络,2017(7):73-76.
  [5]高强,潘俊.基于ORB的图像特征提取与匹配研究[J].福建电脑,2019(1):21-22.
  [6]范新南,顾亚飞,倪建军.改进ORB算法在图像匹配中的应用[J].计算机与现代化,2019(2):1-6,14.
  [7]李乐鹏,孙水发,夏冲,等.直方图均衡技术综述[J].计算机系统应用,2014(3):1-8.
其他文献
我国是乙肝高发区,约有40%~60%的人感染过乙肝病毒。因为乙肝发病率高、传染面广、易慢性化,而对慢性肝炎目前尚无特效治疗方法,所以人们对乙肝普遍存在恐惧心理。乙肝患者也因种种
翻开2017年9套高考语文试卷中的13道作文题(北京卷的写作部分今年继续分为“大作文”和“微写作”两个板块,“大作文”设置了两道作文题,考生“二选一”作答;“微写作”共设三道题,考生“三选一”作答。所以今年高考作文题与去年一样,仍为13道),第一感觉就是:命题者的视野愈加开阔,作文涉及的题材、主题也更加开放。题材之“大”,触及国家形象;题材之“小”,关注衣、食、住、行;而社会发展、人文情怀等更是命
我院烧伤科三病区在2007年收治10例重度、特重度烧伤患者,均治疗成功,现将成功经验报告如下。1资料与方法1.1一般资料 10例重度、特重度烧伤患者,其中天然气火焰烧伤3例、瓦斯烧
目的:探索肿瘤标记物CEA和CA242在肺癌诊断、预后及手术效果判断中的应用价值.方法:用ELISA(酶联免疫吸附测定)法分别检测肺癌患者、肺良性疾病患者手术前后及健康人血清中CE
目的探讨钛合金枕颈CD内固定物对术后的颈脊髓MRI成像的影响。方法对8例在我院行枕颈CD内固定的患者术后进行颈椎MRI检查,所用MRI为1.0及1.5T的超导MRI系统,患者均进行矢状位
探讨氯丙烯对神经细胞NO生成系统和抗氧化系统的影响。方法:用NO、MDA、NOS、SOD、GSH-PH检测试剂盒研究了氯丙烯对鸡胚脑神经细胞NO、MDA含量和NOS、SOD、GSH-PX活性的影响。
额颞顶的急性颅内血肿与脑挫裂伤,极易致恶性高颅压,常发生于对冲伤和对冲冲击伤,颅内伤情复杂且严重,伤残率和伤死率高,预后较差。为提高治愈率,降低伤残率和伤死率,改善生存质量,我
本文介绍了红外测温技术在钢、铁水中测温的应用,解决了原测试方法存在的问题。实验结果表明,在钢铁水中测温采用红外测温的方法是一种简单可靠的方法。
在白口铸铁的基础上,加入微量的合金并进行适当的热处理,使碳化物断网并弥散。其性能为:HRC40~50。a_λ≥10J/cm~2,此材料可取代高锰钢用做水泥等行业的球磨机衬板,使用寿命为
检测脱氧核糖核酸(DNA)含量不但可作为恶性肿瘤的标志之一,且可反映肿瘤的恶性程度及生物学行为。流式细胞术(FCM)是一种快速定量分析细胞DNA含量的新技术,目前已广泛应用于肿瘤研