精华内容
下载资源
问答
  • Java问题定位技术.pdf

    2011-01-08 13:05:42
    – unix/linux下使用top观察到内存上升,可以断定程序存在内存泄漏. – 线程不安全的HashMap并发读是不会出现问题的. – 字符集和字符编码的关系。 – "系统挂死"、"宕机"感觉比较抽象。 • 负责对系统进行优化维护...
  • 室内定位技术及机场方案建议

    千次阅读 2020-08-07 11:57:55
    室内定位技术发展现状 在1996年左右,美国联邦通信委员会(FCC)要求移动运营商为移动电话用户提供E-911(紧急救援)服务。1999年,FCC又对定位精度做出新的要求。加之此后全球移动用户的迅猛发展,很多国家开始致力...
    1. 室内定位技术发展现状

        在1996年左右,美国联邦通信委员会(FCC)要求移动运营商为移动电话用户提供E-911(紧急救援)服务。1999年,FCC又对定位精度做出新的要求。加之此后全球移动用户的迅猛发展,很多国家开始致力于研究商用定位技术并推出各具特色的商用定位服务,相关位置服务业务可包括:紧急救援电话服务、物流管理、个人问询、车辆导航、特定场景下的跟踪服务等等。因而室内外移动定位蓬勃发展。目前,室外定位技术相对室内定位技术来说比较成熟,比如有GPS、北斗为代表的卫星导航定位,A-GPS为代表的基站定位,在此不再详述。

        本文主要讨论室内定位技术。和室外定位相比,室内定位面临很多独特的挑战, 比如说室内的环境动态性很强,可以说是多种多样,不同的大厦会有不同的室内布局;室内的环境更加精细,由此也需要更高的精度来分辨不同的特征。室内定位要考虑的因素主要包括以下几个方面:精度、覆盖范围、可靠性、成本、功耗、可扩展性和响应时间。

     

        目前室内定位常用的定位方法,从原理上主要分为七种:邻近探测法、质心定位法、多边定位法、三角定位法、极点法、指纹定位法和航位推算法。

    定位原理

    描述

    特点

    临近探测法

    通过一些有范围限制的物理信号的接收,从而判断移动设备是否出现在某一个发射点附近。

    该方法虽然只能提供大概的定位信息,但其布设成本低、易于搭建,适合于一些对定位精度要求不高的应用,例如自动识别系统用于公司的员工签到。

    质心定位法

    根据移动设备可接收信号范围内所有已知的信标(beacon)位置,计算其质心坐标作为移动设备的坐标。

    该方法易于理解,计算量小,定位精度取决于信标的布设密度。

    多边定位法

    通过测量待测目标到已知参考点之间的距离,从而确定待测目标的位置。

    精度高、应用广。

    三角定位法

    该方法是在获取待测目标相对2个已知参考点的角度后结合两参考点间的距离信息可以确定唯一的三角形,即可确定待测目标的位置。

    精度高、应用广。

    极点法

    通过测量相对某一已知参考点的距离和角度从而确定待测点的位置。

    该方法仅需已知一个参考点的位置坐标,因此使用非常方便,已经在大地测量中得到广泛应用。

    指纹定位法

    在定位空间中建立指纹数据库,通过将实际信息与数据库中的参数进行对比来实现定位。

    指纹定位的优势是几乎不需要参考测量点,定位精度相对较高;但缺点是前期离线建立指纹库的工作量巨大,同时很难自适应于环境变化较大的场景。

    航位推算法

    是在已知上一位置的基础上,通过计算或已知的运动速度和时间计算得到当前的位置。

    数据稳定,无依赖,但该方法存在累积误差,定位精度随着时间增加而恶化。

      不同的室内定位方法选择不同的观测量,通过不同的观测量提取算法所需要的信息。下面对主要的观测量进行简要的介绍。

    观测量

    简介

    RSSI测量

    它是通过计算信号的传播损耗,可以使用理论或者经验模型来将传播损耗转化为距离,也可以用于指纹定位建立指纹库。

    TOA测量

    该方法主要测量信号在基站和移动台之间的单程传播时间或来回传播时间。前者要求基站与移动台间的时钟同步。

    TDOA测量

    该方法同样是测量信号到达时间,但使用到达时间差进行定位计算,可利用双曲线交点确定移动台位置,故可以避免对基站和移动台的精确同步。

    AOA测量

    该方法是指接收机通过天线阵列测出电磁波的入射角度,包括测量基站信号到移动台的角度或者移动台信号到达基站的角度。每种方式均会产生从基站到移动台的方向线。2个基站可以得到2条方向线,其交点即为移动台位置。因此,AOA方法只需要2个基站即可确定移动台位置。

    方向和距离

    获取方向和距离多用于航位推算定位,采用自包含传感器记录载体的物理信息,计算得到方向和距离,从而在已知上一位置的基础上计算得到当前的位置。

        就目前应用较多的几种定位技术,本文主要探讨WIFI定位、UWB定位、蓝牙AOA定位。

      1. WiFi定位

    目前WiFi是相对成熟且应用较多的技术,近几年有不少公司投入到了这个领域进行研究和布局。WiFi室内定位技术主要有两种。

        1. 技术背景

    无线WiFi网络已经成为贴们生活中必不可以的一部分,当前无论先企业还是运营商都在加大对无线WiFi网络进行部署,同时物联网的高速发展,越来越多的WiFi智能设备面向市场出来,在普及度加速的背号下,无线WiFi设备的市场空间也在不断增大,一方面先进的WiFi智能硬件层出不穷,另一方面很多企业对新型WiFi的服务和应用的不断探索。

    仅通过部署WiFi热点以及一序列软件和算法,就可以开启对WiFi标签进行定位,这就是悄然兴起的WiFi定位技术。由于室内环境下有较好的表现,而且越来越多的运营商和商家部署WiFi网络,加上LBS服务的商业模式慢慢成熟。无线WiFi精准定位正在成为一种潮流日渐兴起。

    WiFi定位一般采用“近邻法”判断,即最靠近哪个热点或基站,即认为处在什么位置,如附近有多个信源,则可以通过交叉定位(三角定位),提高定位精度。

     

     

      1. 2.主要特点

    (1)由于WiFi已普及,因此不需要再铺设专门的设备用于定位。用户在使用智能手机时开启过Wi-Fi、移动蜂窝网络,就可能成为数据源。该技术具有便于扩展、可自动更新数据、成本低的优势,因此最先实现了规模化。

    (2)不过,WiFi热点受到周围环境的影响会比较大,精度比较低,理论上是能达到5米左右。为了做得准一点有公司就做了WiFi指纹采集,事先记录巨量的确定位置点的信号强度,通过用新加入的设备的信号强度对比拥有巨量数据的数据库,来确定位置。由于采集工作需要大量的人员来进行,并且要定期进行维护,技术难以扩展,在大范围内难以成规模,而在航站楼等小范围内倒是可以进行尝试应用。

      1. 3.应用范围及成熟应用场景

    WiFi精准定位应用场景较为广泛,可服务于包括零售业、酒店、交通、医疗、工业以及教育在内的多个行业。在大型公共场所,WiFi定位可以实现人流控制并且提供基于位置的服务,或为赶时间的旅客提供及时的位置信息。在医疗环境下,WiFi定位可以为就诊病人实现室内导航,或是方便医院对病人实现实时定位,如养老院就借助这一技术监控老人的日常生活,一旦遇到特殊情况将及时报警。

      1. 4.工程落地路线及投入

    (1)基站:

    一般一个拥有定位功能的基站大概成本2000-4000左右。T2航站楼旅客无线网ap现有1400个,覆盖航站楼99%的区域,为旅客提供免费的上网服务。AP也可以充当定位基站,可充分利用现有资源。

    (2)终端设备:

    支持WIFI的终端设备。目前几乎所有移动手机都拥有WIFI连接功能,若用于定位,则可以省去终端成本,条件是要求终端主动打开WIFI并保持连接功能、打开移动蜂窝网络连接。

    (3)组网:

    AP通过POE交换机进行供电,资源现有,无需重新搭建网络。

    (4)平台及相关软件:

    由相关WIFI管理平台厂家提供接口,并制作高精度地图,可与现有相关定位应用系统进行对接,获取位置信息。

    就目前应用而言,前期主要投入为WIFI基站设备的指纹采集,以及WIFI设备的基本信息维护工作,基本上可以达到航站楼内巡检、导航应用。

      1. 5.国内领先企业

      (1)中科劲点(北京)科技有限公司

    中科劲点是2015年注册于中关村海淀园的高科技企业。公司以室内定位技术为核心,以营销推广类移动网络平台的开发和服务为基础,以智能数据中心为有机支撑,为客户提供室内精准定位、智能管理的室内定位和移动互联营销服务。公司核心成员均来自中国科学院计算技术研究所,拥有国内最早从事WiFi定位研究的资深技术团队,拥有WiFi定位的上百篇论文,十余项发明专利。 "子午快线"定位引擎,已经为上百个商场、超市、园区、工厂、博物馆等场所提供位置服务。  公司之前的技术成果和应用项目得到了中央电视台等多家媒体的传播报道,是国内专注算法、技术领先、重视产品商用的LBS位置服务商。

    奕通信息科技(上海)股份有限公司

    奕通信息一直凭借自有知识产权的国际领先技术服务于市场,融合优势抢占市场机会,融合无线嗅探、无线定位和人脸识别的网安合规的商业大数据分析,提供WiFi相关服务和技术,打造中国最具创新力、有极高美誉度的LBS解决方案供应商。奕通信息是中国电信合作伙伴,通过公安部新版非经营性无线上网场所产品测试的公司,全国多地公安系统网络安全平台系统服务提供商,某大型无线产品跨国公司定位软件产品OEM厂商。奕通信息是第八届上海市至正杯创新奖得主,具备行业技术优势,创新能力突出。产品广泛商用于智慧餐饮零售、智慧商圈、智慧旅游、智慧医疗看护等各类行业,拥有众多与知名企业合作的实际部署使用案例,深受用户信赖。

    其他厂家如锐捷...。

    1. 2.UWB技术

        UWB(超宽带技术)是近年来新兴一项全新的、与传统通信技术有极大差异的通信无线新技术。它不需要使用传统通信体制中的载波,而是通过发送和接收具有纳秒或微秒级以下的极窄脉冲来传输数据

    1. 2.1.技术背景

    UWB技术是一种使用1GHz以上频率带宽的无线载波通信技术。它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很大,尽管使用无线通信,但其数据传输速率可以达到几百兆比特每秒以上。使用UWB技术可在非常宽的带宽上传输信号,美国联邦通信委员会(FCC)对UWB技术的规定为:在3.1~10.6GHz频段中占用500MHz以上的带宽。

    UWB技术始于20世纪60年代兴起的脉冲通信技术。UWB技术利用频谱极宽的超宽基带脉冲进行通信,故又称为基带通信技术、无线载波通信技术,主要用于军用雷达、定位和低截获率/低侦测率的通信系统中。2002年2月,美国联邦通信委员会发布了民用UWB设备使用频谱和功率的初步规定。该规定中,将相对带宽大于0.2或在传输的任何时刻带宽大于500MHz的通信系统称为UWB系统,同时批准了UWB技术可用于民用商品。随后,日本于2006年8月开放了超宽带频段。

    目前,国内是否正式开放UWB频段,还有待政策进一步落地。

    去年苹果对外发布的新手机中植入了UWB芯片,NXP公司推出的用于汽车应用领域的UWB芯片等市场举动,标志着UWB技术正在向着更好的方向发展。

    1. 2.2.主要特点

    UWB技术具有高精度,高密度,高频率,数据传输速率高(达1Gbit/s)、抗多径干扰能力强、功耗低、穿透能力强、截获率低、与现有其他无线通信系统共享频谱等特点。

    1. 2.3.应用范围及成熟应用场景

    应用范围包括以下几种类型:

    1)实时高精度定位管理

    该功能可实现对于人员、设备、车辆的实时定位管理,查看被定位目标的实时位置、分布区域等信息。例如电厂作业人员定位管理,保障危化区域安全,车辆及设备定位管理等。

    2)电子围栏

    通过在管理后台设置电子围栏,可实现“越界预警、滞留预警、长时间静止预警”等功能。在电厂,工人误入危险区域,系统会自动发出警报。

    3)历史轨迹查询

    基于UWB超宽带定位技术,可随时查看被定位目标在某一时段的历史轨迹,在后台实现直观的回放,比如查看不同工种人员的上岗/离岗时间、在某区域的停留时间等数据,一旦发生突发情况,可通过历史轨迹查询来实现事件追溯。

    4)一键紧急求助

    以电厂人员定位项目中实际应用来说,当厂区某处发生危险时,人员第一时间撤离至关重要。通过在人员随身佩戴的定位卡片上集成“一键求助”功能,当遇到灾情或危险可及时预警;相关人员可依据预警信息获知其位置,便于及时施救。

    同时,当人员遇到紧急情况时,通过智能终端上的“一键求助”按钮可以进行及时求助,此时系统软件进行声光报警并第一时间通过短信或微信通知相关人员,可快速锁定报警人员位置,实现快速救援。

    5)视频联动

    通过将UWB超宽带定位系统与视频监控系统相结合,一旦某区域发生预警,例如出入口出现陌生人、人员进入无权限区域、人员接近危险源、人员求救、物资被非法搬离等,系统会立即弹出现场监控画面并进行拍照记录现场情况,为高效决策提供依据。

    6)数据统计分析

    可实现数据高效统计,便于查看人员分布数据、热力图数据、实时电子围栏、预警数据等信息,提升场所数字化、信息化管理水平。

    成熟应用场景的应用场景包括司法监狱的人员管控,管径隧道的人员安全,仓储物流的货物定位跟踪,车辆无人驾驶的应用,电力应用,寻物功能,车辆钥匙等。

    (1)司法监狱管理主要用于

    实时定位跟踪,捕获人员精准位置和运动轨迹;

    分类监控和管理在押人员、狱警、物质和车辆;

    电子围栏报警;

    狱警报警功能,通过聚集过密的方式通知提醒;

    动态点名,实时统计;

    目标位置视频联动。

    (2)管径隧道及综合管廊主要用于

    实时定位跟踪确保工作人员安全;

    实时动态人员考勤,支持后期查询和统计记录;

    回放、查询历史时刻目标的位置、轨迹、停留时间等。

    (3)仓储物流主要用于

    实时监控人员、物资及叉车的位置、运动及状态;

    重要物资监管,实现对重要货物位置确认并可追溯;

    叉车自动检测碰撞;

    采用仿真仓库实时信息,优化库存调配;

    历史位置数据可回放,查询历史时间人/车/物的动态情况。

    (4)车辆无人驾驶主要用于

    室内外定位一体化无缝切换,掌握车辆位置信息;

    特定位置快速标定,有效及时获取地下停车库空车位信息;

    室内导航,路径规划,自动导航到特定空车位;

    行驶轨迹数据分析,评价无人车在无GNSS信号下的部分性能。

    (5)电力应用主要用于

    实时掌握人员、车辆位置信息,实施监管;

    人员到岗到位、高危运行点设置电子围栏等行为分析管理;

    基于位置信息确保两票相关人员按照流程在现场进行各种程序工作;

        危险情况发生时,有效得知现场人员的位置情况,及时安排应到现场人员撤离,并在事后可对现场人员轨迹信息进行分析;

    根据工作人员作业顺序、工位停留时间等信息作出客观数字化作为效率评定;

        同时对个人、班组、车间不安全行为事件进行分类记录、统计、分析、形成可量化分析报表。

    1. 2.4.工程落地路线及投入

    (1)基站:

    市场上UWB基站部署有两种方案,一种为4基站定位,有效覆盖范围35-150米,另一种是单基站覆盖,覆盖范围600平方(约25米*25米)。

    目前,市场上,每个厂家的基站通讯交互具体协议均不一样,基站设备不能混用,一个UWB基站大概在3500-5000元之间。

    (2)终端设备:

    由于UWB每个厂家均有私有协议,终端无法通用,根据每个厂家的产品终端电池使用时长,以每10秒上传一次位置信息可使用时长为3-6个月不等。终端设备价格大概在100-300元之间,使用寿命比较长,大概在3-5年不等时间。

    (3)组网:

    基站有两种方式接入现有网络,第一种为POE供电,最少需要增加对应的接入交换以及对应的综合布线工作。第二种为无线桥接,通过特殊的接入网关,无线连接到每个基站,基站通过电源线供电。

    (4)平台及相关软件:

    由UWB厂家自带UWB设备管理平台,厂家提供接口,可与现有定位应用系统进行对接,获取位置信息。

    1. 地图

    室内高精度地图。

    1. 2.5.国内领先企业

    (1)郑州联睿电子科技有限公司

    联睿电子,创立于2010年3月,为国内首家自主研发UWB(超宽带)高精度定位技术的国家高新技术企业。公司专业从事无线高精度定位、室内外一体化定位等相关技术的研究和开发,85%以上为本科学历,硕士、博士占比40%以上。10年技术沉淀,9年实战经验,申请国内外专利数十项,在通信和室内定位相关领域内发表SCI/EI等论文多篇。

    2)杭州中芯微电子有限公司

    中芯微成立于2008年,人员定位产品及解决方案供应商,十几年来始终专注于智慧监管行业,在公安、司法、监所等领域构筑了人员定位及智慧管理的解决方案优势,为客户提供有竞争力的产品和服务,并提出4W理念,采用唯一身份识别、精准跨界、高精度室内定位、室外追踪定位、主动预警、智能联动、实时监管、大数据决策等科技实战手段,有效实现人防、物防、技防、联防“四位一体”的智能化、一站式监管。中芯微在行业内有非常高的品牌影响力,在细分行业具备竞争力TOP3实力。

    我们也开始整合产业相关技术,致力于向更多的领域输出中芯微的企业价值与精神。 目前企业员工近100人,拥有3个联合研发中心,5家产学研高校,8项政府资质,10项行业资质,16项政府及行业荣誉,5项发明专利,5项外观专利,13项实用新型,29项软件著作权。

    其他厂家有...。

    1. 3.蓝牙

        作为高精度定位领域另一倍受关注的蓝牙定位技术,也在去年迎来了重要的突破--蓝牙联盟将蓝牙AOA/AOD技术写入了最新的蓝牙5.1标准,使得蓝牙的定位精度也将达到亚米级,由此业界对蓝牙AOA/AOD技术充满了期待。

    1. 3.1.技术背景

    随着蓝牙5.1协议的出现,蓝牙室内定位技术迎来新的一波爆发,目前成熟的蓝牙室内定位技术有两种,具体情况如下:

    (1)IBeacon蓝牙信标

    IBeacon技术已经比较成熟,也在机场有过大规模的应用,技术原理为通过蓝牙信标发送信号至移动终端或蓝牙标签处,根据接受接收到信号,通过算法估算所在的大概位置。但由于蓝牙技术本身的限制,导致信标基站安装密度大,同时维护不易容易脱落,并且带来的定位精度也比较有限。

    (2)基于蓝牙5.1协议的 AOA技术

    于2019年年底,随着BLE 5.1协议的推出,蓝牙技术可用性大大增强,同时也使得通过AOA(Angle of Arriva)算法得到室内定位精度提升。蓝牙AOA的技术原理与IBeacon原理刚好相反,是由标签端发送信号,蓝牙基站通过收到的信号的角度来判断位置。该技术的单基站覆盖半径约20-40米左右,并且可实现单基站定位,且精度比IBeacon技术高,可实现米级以内的定位精度。

    同时,蓝牙技术的定位算法主要有如下4种,分别为:

    1. TOA:Time of Arrival,根据信号到达时间来估算距离;
    2. TDOA:Time Difference of Arrival,根据信号达到时间差来估算距离
    3. AOA: Angle of Arrival,根据信号接收的角度来估算位置;
    4. RSSI: Received Signal Strength Indication:根据信号接收的强度来估算位置。
      1. 3.2.主要特点

    无论哪种蓝牙定位技术,最大的特点为建设成本较低以及标签功耗低,IBeacon技术相对建设成本低且简单,在需要定位区域按精度需求进行一定密度的摆放信标,即可实现定位功能,但相对容易容易受干扰且精度较低;对于蓝牙AOA技术来说,投入成本比Ibeacon高,比UWB技术相对低,获得的定位精度也是出于两者之间。因此,对于室内定位精度较低的场景,有比较良好的使用效果。

    1. 3.3.应用范围及成熟应用场景

    蓝牙定位技术应用范围为室内定位,主要可用于室内人员定位、室内设备/资产定位盘点、室内外融合定位,具体描述如下:

    1. 室内人员定位:可用于对室内的人员定位,成熟应用场景有重点人员监控,如司法机构对重点监控人员、人犯、嫌疑人进行楼内的定位、访客的定位及轨迹回查、巡更或值班人员的楼内打卡操作及室内导航等场景。
    2. 室内设备/资产定位及盘点:可对可移动设备的运动轨迹进行各种,回查历史,亦可设置电子围栏,对设备误入或误出特定区域进行监控,保证设备的合规使用;也可对资产进行盘点,对规定资产进行定时盘点,以确认范围内的资产不变,或在库房场景下,对资产/货物进出情况进行跟踪,也可在保障性设备摆放区域,进行设备计数,如数量不足以保障服务,则进行警报。

        室内外融合定位:蓝牙定位可在融合定位技术中,为室内定位指纹数据中,补充蓝牙指纹信息,以提升融合定位的精度,业务场景和室内人员或设备定位基本一致。

    1. 3.4.工程落地路线及投入

    蓝牙定位建设主要需要的设备类型有:蓝牙基站(或信标)、标签(根据定位数量定)、交换机(或网关)、后台(含软件平台、服务器等)。以T2航站楼600,000平方米的一个空间作为单位,投入规模大概如下:

    (1)蓝牙基站

    蓝牙基站覆盖范围。

    (2)蓝牙标签

    标签价格在50-200左右。

    (3)网络设备

    用于连接蓝牙基站通讯。

    (4)管理平台及服务

    用于蓝牙设备管理、定位服务应用。

    (5)地图

    室内高精度地图。

    1. 3.5.国内领先企业

    (1)杭州中芯微电子有限公司,杭州

    中芯微成立于2008年,人员定位产品及解决方案供应商,十几年来始终专注于智慧监管行业,在公安、司法、监所等领域构筑了人员定位及智慧管理的解决方案优势,为客户提供有竞争力的产品和服务,并提出4W理念,采用唯一身份识别、精准跨界、高精度室内定位、室外追踪定位、主动预警、智能联动、实时监管、大数据决策等科技实战手段,有效实现人防、物防、技防、联防“四位一体”的智能化、一站式监管。

    主要行业:司法公安、医疗、园区(温州龙湾机场有案例)

     (2)Quuppa,芬兰(国内有代理)

      Quuppa成立于2012年,是诺基亚研究中心(Nokia Research Center)的一个分支,它将蓝牙测向技术与跟踪人员和资产的最佳位置标签相结合。Quuppa系统还可以追踪任何蓝牙移动设备,如平板电脑和手机,支持从体育到零售、医疗和工业服务等全方位的应用。

    行业:安防

    (3)上海磐启微电子有限公司,上海/苏州/深圳

    上海磐启微电子有限公司是中国领先的无线通讯及物联网芯片设计企业。公司成立于2010年,由资深留美归国博士创立,总部设立于中国上海,并在苏州和深圳分别设立了研发中心及分公司。公司拥有基于物联网的无线扩频通信平台Chirp-IOT,并且创新地采用多维度传输调制技术,在此基础上研发的兼容主流LPWAN协议的低功耗广域网物理层芯片是唯一的可与国外垄断厂商相抗衡且完全自主知识产权的国产化芯片,具有业界领先的性能、成本及可靠性。公司推出的基于超低功耗2.4GHz技术的新零售货架标签系统与阿里IOT事业部合作,在阿里飞燕平台上第一家打通从标签、通信卡、网关到云端的所有业务流程,所推出货架标签产品已开始规模出货。在室内定位领域,公司在国内率先开启蓝牙AOA技术的研究,即将推出国内第一款基于蓝牙AOA技术的室内定位系统 xLOCATE 1.0, 其定位精度可达0.5~1.0米,具有较高的定位精度及极低定位成本,开创高精度定位技术在工业环境使用的先河。

    2.室内定位技术优劣势对比

    2.1.对比

     

    精度

    覆盖范围

    保密性

    穿透性

    抗干扰

    维护成本

    建设成本

    功耗

    RFID

    红外线

    蓝牙IBeacon

    一般

    较小

    一般

    Zigbee

    一般

    WiFi

    UWB

    较好

    蓝牙AOA

    较好

    较大

    ~

    较高

    说明:

    (1)对于以上对比,各厂家有各厂家的说法和对比标准,因此,该对比主要体现程度,同一等级不具备可比性;

        (2)蓝牙AOA厂家宣称维护成本低,由于建设方式与UWB类似,估计成本类似,因此估计维护成本为中~高。

    2.2.结论

    作为单一技术使用,IBeacon、RFID、红外线、Zigbee、超声波室内定位都有明显的弱点,在机场场景下,不太具备单一使用的技术可行性。因此,具备可用性的有以下三种技术,分别为:UWB(含改造式UWB)、蓝牙AOA、WIFI定位(含基于现有WIFI网络改造),融合定位,具体分析如下:

    1. UWB最大的特点在于定位精度为所有室内定位技术里精度最高的,理想情况可实现厘米级定位,基本能实现误差在半米内,最大的缺点在于初期投入大,需要大量地部署基站,同时还有明显的风险:不同UWB品牌间存在协议不兼容的风险,组网频段可能存在与现有频段冲突导致无法部署,比如与5G频谱冲突;蓝牙AOA可以看作UWB的弱化版,价格略低,精度也略低,能实现0.5m-1m左右误差的定位,不过也需要大量部署基站;WIFI定位,有较大偏差(几十米级别),但可以结合现有WIFI网络,在大量采集WIFI指纹信息的基础上设计方案,因而造价成本会较低。综上,UWB具有明显的优点和缺点,因此风险较大;而蓝牙AOA作为弱化版,相对精度较差,但能满足现有需求,同时造价也稍微低,更具有可行性。
    2. 此外,融合定位方案可结合WiFi、蓝牙及GPS技术,实现室内外融合定位,优点在于不需要过度投入基础设施的部署,只需进行全场信号指纹的扫描,即可实现定位;缺点是标签功耗较高,仅能人员使用,而且定位较低;最大风险点在于定位精度完全依托于现有的WiFi和蓝牙环境,如果现有设施产生任何改动,都需要重新扫描,不然定位会产生较大误差。

    综上,以上三种技术方式都具有一定可行性,而且优缺点分明,在不同场景下都具备使用场景。

    展开全文
  • 地图定位技术揭秘(三)

    千次阅读 2018-11-16 13:12:07
    室内定位技术原理揭秘 地图软件已经成为我们日常出行必不可少的工具之一,在导航和搜索上带来了很多便捷的帮助。而定位技术在地图软件里的应用可谓无法替代,尤其是在小范围的室内定位环境下,如何帮助用户高精度...

    个人博客:xiuxiuing.gitee.io/blog

    室内定位技术原理揭秘

    地图软件已经成为我们日常出行必不可少的工具之一,在导航和搜索上带来了很多便捷的帮助。而定位技术在地图软件里的应用可谓无法替代,尤其是在小范围的室内定位环境下,如何帮助用户高精度搜索导航,是百度地图定位技术的研究重点。
    我们一提到定位,大家印象中最熟悉的技术可能就是GPS定位。其实更为准确的说法是GNSS(Global Navigation Satellite System)定位,中文含义就是全球卫星定位系统,而 GPS只是GNSS中的一种实现方法,该系统是由美国部署的。另外,还有其他类型的定位系统,例如,俄罗斯的格洛纳斯(GLONASS),欧洲的伽利略和中国的北斗。大家可能会有疑问,既然这么多国家投入巨资建设全球定位系统,是不是就可以直接覆盖到室内定位呢?
    答案是否定的。简单介绍一下原因:卫星定位使用的电磁波,属于L波段,这种信号穿透建筑物或其他阻挡物时,信号强度会被削弱,尤其是在室内环境中,信号在通过屋顶、墙壁、窗户等障碍物时,会由于折射和能量吸收而损耗掉部分能量。最坏的情况下,信号直接被完全阻塞,也就是GPS检测不到任何卫星。在一些半开放区域,有一些能够勉强透射过来的信号,但由于其损耗过大,信号所携带的伪距和载波精度没有参考意义,它们被GPS接收机接收,精度就会极差。因此,GPS很难覆盖到室内区域,要做到室内高精度定位,就必须借助其他”高科技”手段,例如:基于LED定位、基于红外线定位、基于超宽带定位、基于蓝牙/Wi-Fi定位、基于超声波定位等。

    几何定位算法

    在介绍那些“高科技”的定位设备和手段之前,为了便于大家理解,首先给大家介绍一下相对来说比较“简单”易懂的定位方法-几何求解定位法,目前这种方法已经被广泛用于那些“高科技”定位设备中,所不同的只是他们所依赖的设备和“信号波”不同而已。
    几何求解定位法,就是通过空间中各个线段测量,利用空间几何关系及公理,求解定位点在空间中的位置。在具体的定位系统中,我们通过测量设备得到准确的观察量:例如,信号到达时间(TOA)、信号到达时间差(TDOA)、信号到达角度(AOA)、接收信号强度(RSSI)等,然后通过演算得到线段长度或者角度测量,进而利用空间几何知识求解定位。
    下面,我们展开介绍这几种定位求解方法。

    基于TOA定位方法

    TOA也被称为圆周定位技术,实际定位过程中通过设备发射电磁波测量得到当前定位点到三个标定点的时间:t1、t2、t3。根据电磁波的传播速度是光速的知识,很容易得到三边距离r1,r2,r3。利用平面几何的两点距离公式,我们构建方程组,求解出定位位置。

    仔细看一下上图,大家都会发现,定位过程中需要对两个时间点进行测量,就是开始时间t0和到达时间t1,t2,t3,这四个时间变量直接影响测量距离。由此可见,TOA算法对系统的时间同步要求很高,因为即使有很小的时间误差,但是乘以光速,误差就会被放大很多倍。因此,如何保持各设备间的时钟高精度同步问题,是很多专业定位设备包括GPS系统中需要解决的重要问题。

    基于TDOA定位方法

    TDOA也被称为双曲线定位技术,其所依赖的几何知识是,如果测定待定位点到周围两个标定点的传播距离差,则待定位点肯定在以这两个标定点为焦点,点到两个焦点的距离差值为传播距离差的双曲线上。

    如上图,ri1为距离差值,通过对其计算公式化简,很容易将公式中t0消除,避免了对t0的测量误差引入,这样定位系统只要保证同时发送测量信号,然后精确测量到达时间差即可,减少了时间测量误差影响。TDOA技术常用的算法有Fang算法、Chan算法、Taylor级数展开算法。若大家对这些算法感兴趣,可以通过维基百科进一步了解。

    基于AOA定位方法

    TOA也被称为方位角定位技术。根据平面几何知识,两条射线平行或相交于一点,通过设备测量待定位点到两个标定点间的入射角,很容易确定待定位点的位置。

    如上图,通过变化公式,很容易消除变量r,直接求解二元一次方程,很容易得到待定位点位置。
    相比TOA、TDOA等,AOA机制不需要时间同步,实现同维度的定位任务所需要的参考节点数量最少,例如二维平面定位只需要两个基站。但该方法必须有方向性较强的天线阵列支持。

    基于RSSI定位方法

    RSSI为信号强度,基于信号强度进行定位。根据物理知识,我们能够知道一些信号在自由空间传播遵循固定的衰减模型,通过该模型我们能够给出信号强度与距离远近的准确关系。如下图。

    其中,pd为待定位点接收到的信号强度。p0为距离辐射源d0处的信号强度。n 为信号衰减系数。

    如上图,是按照信号衰减模型绘制出来的曲线,我们可以看出随着距离的增加,信号强度逐渐变弱,且这种变化程度逐渐变缓。
    定位过程中,通过设备测量三个不同参考点的信号强度,依据模型计算出三个距离值,那么采用和TOA类似的几何求解方法,即可以得到定位点。一般的射频芯片都具有RSSI测量功能,故RSSI机制实施简便,但易受信道和噪声影响,在远距离定位时测量误差较大,多用于小范围定位。

    基于专业设备的定位系统

    通过上节给大家介绍一些简单易懂的几何定位算法,大家可以隐约体会到,通过那些几何知识,我们可以利用很多物理信号来实现高精度定位。事实上,无论是研究机构,还是工业界,都已经对很多信号、设备做过研究实验。接下来,我给大家做一个汇总,按照信号的物理属性,可以大致分为两类:电磁波、超声波。
    电磁波,概念非常宽泛,包含很多种类,按照频率从低到高的顺序排列为:无线电波->红外线(不可见)->可见光(赤橙黄绿青蓝紫)->紫外线(不可见),其频率范围大致在3Hz到3000GHz之间。常见的定位方法有:超宽带定位、Wi-Fi定位、蓝牙定位、ZigBee定位,红外线定位,LED定位等。
    超声波是一种机械波,区别与电磁波,它依赖于物体机械振动进行能量传输的,其振动频率大于20000Hz,超出了人耳听觉的上限故被称为超声波,遵循反射、折射、衍射、散射等传播规律,与可见声波的规律没有本质上的区别。常见定位方法有:超声波定位。
    下面从精确度、成本、是否需要专业设备、技术优势和技术缺陷等,穿透性,抗干扰性,布局复杂程度,成本5个方面全方位来比较一下这几种室内定位手段。

    方法精度成本设备依赖技术优势技术缺陷
    超宽带6~10CMUWB接收器+标签穿透力强、功耗低、抗多径效果好,安全操作性高造价高
    蓝牙10CM蓝牙设备+手机体积小传输收视距影响、稳定性稍差、受噪声信号干扰大
    Wi-Fi5~20M无线路由器+手机普及度高,精度较低易受干扰
    Zigbee2MZigbee各类节点低功耗、低成本受多径效应、移动等影响显著
    红外线5~30M红外接+发设备精度一般易受墙体等阻隔,传输距离短
    LED1M内LED灯具等+手机抗干扰性强、成本一般新技术、国外推广阶段
    超声波10CM测距器+标签功耗小、精度一般、抗干扰性强多径效应、非视距传播影响大

    下面我们简单对上述表中各种方法进行补充说明和介绍

    超宽带定位,是一种基于极窄脉冲无载波的无线技术,传输速率高,发射功率较低,穿透能力较强,用来做室内定位能够获取极为准确的结果。利用超宽带定位需要事先布置好的已知位置的锚节点和桥节点。定位过程中,已有节点与新加入的盲节点进行通讯,利用TDOA技术来测距定位。该方案总体上看,功耗较高,部署成本比较高,精度较高。
    蓝牙定位,无线电波的一种,定位系统需要在室内安装的若干个蓝牙设备。定位时,通过手机等设备测量当前位置点扫描到各个蓝牙的信号强度,由信号衰减模型换算成距离,然后利用三边测量等方法推算定位坐标。总体来看,该方案实施成本中等偏高,低功耗,对复杂空间环境,稳定性稍差,受噪声信号干扰大。
    Wi-Fi定位,无线电波的一种,此类定位系统也需要在室内安装的若干个wifi设备。定位时,利用手机等设备对至少3个以上的无线网络接入点的信号强度测量,通过三角定位、指纹等方法进行位置定位。Wi-Fi定位可以在广泛的应用领域内实现复杂的大范围定位、检测和追踪任务,总精度比较高,但用于室内定位的精度只能达到2~6米。
    Zigbee,无线电波的一种,是一种新兴的高可靠、短距离、低速率无线网络技术,类似于CDMA和GSM网络,数据以接力的方式通过一个节点传到另一个节点。此类定位系统主要包括两类节点,一类是锚节点,一般通过GPS定位或者人工部署的方式知道自身的精确位置。另一类是跟踪节点,跟踪节点通过准确测量其到数个锚节点的距离或方位,然后使用三边测量等方法来计算节点位置。该类信号传输受多径效应和移动的影响很大,定位精度取决于信道物理品质、信号源密度、环境和算法的准确性,因此造成定位软件的成本较高,提高空间还很大。
    红外线,一种不可见光。利用其进行室内定位有两种,第一种是被定位目标使用红外线IR标识作为移动点,发射调制的红外射线,通过安装在室内的光学传感器接收进行定位;第二种是通过多对发射器和接收器交织的红外线网来覆盖待测空间,直接对运动目标进行定位。红外线的技术已经非常成熟,用于室内定位精度相对较高,但是红外线只能视距传播,穿透性极差,当标识被遮挡时就无法正常工作,也极易受灯光、烟雾等环境因素影响。另该类系统部署比较复杂,成本较高。
    Li-Fi属于可见光通讯,将需要传输的信息编译成一段调制信号,用脉宽调制的方法附加到LED灯具的驱动电流上,利用室内无处不在的光源作为发射再提,当用户进入灯具照明区域,利用智能手机的前置摄像头接收并识别光信号,解析出灯具发送的唯一身份识别信息。利用所获取的身份识别信息在地图数据库中确定对应的位置信息,完成定位。
    超声波定位,一种基于机械波的定位方法,定位系统中包含主测距器、若干个电子标签等。各个电子标签需要固定设置在室内空间,定位时,上位机发送相同频率的信号给各个电子标签,待电子标签接收到后将信号反射传输给主测距器,主测距器根据几何关系计算得到定位坐标。该方法可以实现厘米级别定位,结构相对简单。另外,超声波会收到传播损耗衰减影响、加上反射测距时受多经效应和非视距传播影响很大,造成需要精确分析计算的底层硬件设施投资,成本非常高。

    Wi-Fi的另一用途——室内定位

    ok,终于讲到本片文章的核心部分。虽说可以通过那些”高科技”设备做到高精度的定位,要给全国所有商场部署特殊硬件,其成本之大是难以接受的。从定位使用者角度来看,大家不可能随时随地携带那些各种标签、发射器、设备,那么百度是如何切入做室内定位呢?
    答案就是Wi-Fi。近年来,中国公众对WiFi网络建设与发展的关注和热情可以用如火如荼来形容,全国大部分商场、公共交通枢纽等场所都已经密集部署了Wi-Fi设备,有了这些Wi-Fi设备,我们就可以构建室内高精度定位。
    那么基于商场中已经部署好的Wi-Fi设备,到底如何构建呢?接下来,我们来看看Wi-Fi定位的技术原理。我们将定位过程进行抽象,变成一个数学问题,即位置函数求解: (x,y) = F(ap1,ap2,ap3….apN)。函数F的输入数据是一系列的扫描到的Wi-Fi的信号强度,输出是定位坐标。我们知道如果存在函数F能够满足以上关系,也就是说输入和输出之间就满足一定函数关系,也可以视之为相关性。虽然我们不能够马上得到函数F,但可以通过感性分析和理解,信号与位置之间有没有相关性?我们看以下分析:

    • 离无线设备越远,信号越弱。
    • 不同位置扫描到不同的Wi-Fi、蓝牙等信号。
    • 设备固定、各处信号强度相对稳定。

    通过以上三个因素,可以看出信号与位置之间确实存在较强相关性,利用这种相关性,可以构建出一套由无线电信号到XY映射的技术。
    结合前半部分讲的几何求解法,我们很容易能够想到,当空间有三个真实的位置AP([x1,y1],[x2,y2],[x3,y3]),通过手机测量Wi-Fi的信号强度,按照信号衰减模型,将信号强度换算成测量距离,利用几何求解法得到定位点。

    总体上来看,这种方法的优点是模型简单,容易实现。如果实际系统使用这个简单的定位模型来做定位,会存在很多问题。首先我们需要一一标注所有AP的准确位置,其会带来不小的工作量。其次,该模型对AP信号辐射分布刻画不足,精度不高。
    真实的Wi-Fi信号是怎样的呢?Wi-Fi信号作为一种电磁波,在空间中传播也会有散射、衰减、损耗、折射等现象。下图来自于某篇论文仿真图片。左图是完全按照信号衰减模型绘制的信号在空间中分布情况。右图是通过对现场进行多点多次采样而绘制出来的信号强度真实分布情况。显而易见,此种分布肯定不符合衰减模型。

    另外,通过实验,我们也发现:因为手机不同的制造工艺,不同的芯片,不同的机壳材质,会导致无线电信号RSSI感知的差异,呈现出非线性的规律。(如下图)

    上图不同颜色代表不同的手机模型,可以看出这些手机在相同时间地点所测量出来的rssi差异还是挺大的。对于手机感知差异问题,一般业界比较推崇的做法是要对rssi进行校正。通过一些参考场景逐步迭代式优化校正参数,直至收敛稳定。

    基于Wi-Fi的室内定位算法系列介绍

    下来我们着重介绍一些Wi-Fi相对复杂和靠谱的定位方法。之后也会顺便介绍百度目前在用的一种低成本长期有效的定位方法-地磁定位。

    真实模型的逼近 - 指纹法

    既然我们很难得到每个Wi-Fi在空间中的信号真实分布模型,那么我们可以直接对空间中各个点的进行各种信号的数据采集。用采样数据代表AP复杂模型。

    定位过程中,手机发送当前扫描到的Wi-Fi Query指纹,服务器端直接计算库中与之相似的指纹,按照权重进行加权中心点计算,从机器学习角度来看,该方法实质是KNN。

    如上图是KNN计算示意图,一般来讲,KNN适用于分类问题,在定位问题上,我们将Top K个指纹直接进行加权计算而不是统计分类。整体上看,该方法实现简单,精度尚可,但是要将所有数据和样本进行比对计算,消耗存储空间,计算量非常大。

    局部模型 + 指纹法

    在实际采集作业过程中,我们很难将商场所有空间区域都进行密集采集,总会有一些采集不充分,指纹比较稀疏,那么怎么办呢?在此,我们可以借助局部模型来生成虚拟指纹。

    指纹生成阶段:针对比较稀疏区域,选择周围范围内一定数量的采集指纹,尽量让指纹覆盖到四周分布。训练该区域中每个AP的辐射模型和被扫描到概率等特征,针对稀疏区域反向推算出每个AP对该空间点的辐射信号强度,最终合并成为虚拟指纹。定位时可以使用采集指纹和虚拟指纹混合的方式提供定位。
    该方法主要用来弥补或者增强采集不充分区域的定位效果,训练过程相对复杂,定位精度逼近于指纹法,具备一定的鲁棒性。

    位置回归分析法

    通过之前分析,某点扫描到AP集合与当前点位置(x,y)形成了一个映射关系,我们求解定位位置,其实就是在做位置的回归分析问题。回归的目标就是得到x和y。相信了解机器学习的同学对接下来做的事情就很熟悉了。首先我们将扫描到AP集合作为特征向量,训练对x,y的回归模型。该模型相当于得到那个非常复杂的信号在实际空间辐射分布模型,所以很难用单一公式表达,但是通过回归分析模型的训练,我们得到其复杂模型。如下示意图,整个模型是由很多复杂树构成。

    定位过程中,我们同样将Wi-Fi Query上传到服务器上,服务器将其转化为特征向量,然后由回归模型来进行定位位置预测。整体上来讲,该方法实现比较简单,但模型训练复杂,需要调参,有一定难度,精度可以逼近指纹法。

    地磁定位法

    地磁信号来源于地球本身,因为地心引力,地磁场本身存在。钢筋结构和地板等物体都会对地磁产生影响。地磁强度由于建筑结构不发生变化,基本上还是比较稳定的。如下图是某个商场内部地磁场强分布示意图。

    一般情况下,在一段时间内磁场强度变化本身就是一种指纹。例如我们从走廊东头走到走廊西头的整个过程中,地磁场强变化就很明显,如下图,曲线上下变化本身就是一种指纹。

    定位过程中,通过计算定位地磁序列指纹与指纹库中的子序列相似度来得到最佳匹配位置。这是一个模糊子序列查找问题,一般来说,商场地磁指纹数量比较多,导致实时搜索空间巨大,因此会利用空间索引技术+粒子滤波提高匹配性能。总的来说,地磁定位法的特点是实现相对复杂,需要做地磁校正,但是精度效果优秀。

    总结

    通过上述各章节介绍,相信大家对室内定位已经有了大体了解。室内定位是垂直专业方向,除了需要信号处理相关专业知识,还需要对机器学习有一个很深入的了解。因此,真正要做好,需要很长时间的技术积累和经验总结。

    扫码关注微信公众号,更好的交流
    扫码关注微信公众号,更好的交流

    展开全文
  • 由于工作紧张,不能一一回复大家的问题,正好借助“百度地图技术团队”微信公众号宣传普及的机会,给大家做一个系统性介绍,希望对大家了解和应用室内定位技术有所帮助。(文中如有不当词语或者观点言论,敬请谅解并...


    > > > >引言

    地图软件已经成为我们日常出行必不可少的工具之一,在导航和搜索上带来了很多便捷的帮助。而定位技术在地图软件里的应用可谓无法替代,尤其是在小范围的室内定位环境下,如何帮助用户高精度搜索导航,是百度地图定位技术的研究重点。


    我们一提到定位,大家印象中最熟悉的技术可能就是GPS定位。其实更为准确的说法是GNSS(Global Navigation Satellite System)定位,中文含义就是全球卫星定位系统,而 GPS只是GNSS中的一种实现方法,该系统是由美国部署的。另外,还有其他类型的定位系统,例如,俄罗斯的格洛纳斯(GLONASS),欧洲的伽利略和中国的北斗。大家可能会有疑问,既然这么多国家投入巨资建设全球定位系统,是不是就可以直接覆盖到室内定位呢?


    答案是否定的。简单介绍一下原因:卫星定位使用的电磁波,属于L波段,这种信号穿透建筑物或其他阻挡物时,信号强度会被削弱,尤其是在室内环境中,信号在通过屋顶、墙壁、窗户等障碍物时,会由于折射和能量吸收而损耗掉部分能量。最坏的情况下,信号直接被完全阻塞,也就是GPS检测不到任何卫星。在一些半开放区域,有一些能够勉强透射过来的信号,但由于其损耗过大,信号所携带的伪距和载波精度没有参考意义,它们被GPS接收机接收,精度就会极差。因此,GPS很难覆盖到室内区域,要做到室内高精度定位,就必须借助其他高科技手段,例如:基于LED定位、基于红外线定位、基于超宽带定位、基于蓝牙/Wi-Fi定位、基于超声波定位等。

    > > > > 几何定位算法

    在介绍那些“高科技”的定位设备和手段之前,为了便于大家理解,首先给大家介绍一下相对来说比较“简单”易懂的定位方法-几何求解定位法,目前这种方法已经被广泛用于那些“高科技”定位设备中,所不同的只是他们所依赖的设备和“信号波”不同而已。


    几何求解定位法,就是通过空间中各个线段测量,利用空间几何关系及公理,求解定位点在空间中的位置。在具体的定位系统中,我们通过测量设备得到准确的观察量:例如,信号到达时间(TOA)、信号到达时间差(TDOA)、信号到达角度(AOA)、接收信号强度(RSSI)等,然后通过演算得到线段长度或者角度测量,进而利用空间几何知识求解定位。


    下面,我们展开介绍这几种定位求解方法。


    基于TOA定位方法


    TOA也被称为圆周定位技术,实际定位过程中通过设备发射电磁波测量得到当前定位点到三个标定点的时间:t1、t2、t3。根据电磁波的传播速度是光速的知识,很容易得到三边距离r1,r2,r3。利用平面几何的两点距离公式,我们构建方程组,求解出定位位置。


    仔细看一下上图,大家都会发现,定位过程中需要对两个时间点进行测量,就是开始时间t0和到达时间t1,t2,t3,这四个时间变量直接影响测量距离。由此可见,TOA算法对系统的时间同步要求很高,因为即使有很小的时间误差,但是乘以光速,误差就会被放大很多倍。因此,如何保持各设备间的时钟高精度同步问题,是很多专业定位设备包括GPS系统中需要解决的重要问题。


    基于TDOA定位方法


    TDOA也被称为双曲线定位技术,其所依赖的几何知识是,如果测定待定位点到周围两个标定点的传播距离差,则待定位点肯定在以这两个标定点为焦点,点到两个焦点的距离差值为传播距离差的双曲线上。


    TDOA算法示意图


    如上图,ri1为距离差值,通过对其计算公式化简,很容易将公式中t0消除,避免了对t0的测量误差引入,这样定位系统只要保证同时发送测量信号,然后精确测量到达时间差即可,减少了时间测量误差影响。TDOA技术常用的算法有Fang算法、Chan算法、Taylor级数展开算法。若大家对这些算法感兴趣,可以通过维基百科进一步了解。


    基于AOA定位方法


    TOA也被称为方位角定位技术。根据平面几何知识,两条射线平行或相交于一点,通过设备测量待定位点到两个标定点间的入射角,很容易确定待定位点的位置。


    AOA算法示意图


    如上图,通过变化公式,很容易消除变量r,直接求解二元一次方程,很容易得到待定位点位置。


    相比TOA、TDOA等,AOA机制不需要时间同步,实现同维度的定位任务所需要的参考节点数量最少,例如二维平面定位只需要两个基站。但该方法必须有方向性较强的天线阵列支持。


    基于RSSI定位方法


    RSSI为信号强度,基于信号强度进行定位。根据物理知识,我们能够知道一些信号在自由空间传播遵循固定的衰减模型,通过该模型我们能够给出信号强度与距离远近的准确关系。如下图。


    其中,pd为待定位点接收到的信号强度。p0为距离辐射源d0处的信号强度。n 为信号衰减系数。


    如上图,是按照信号衰减模型绘制出来的曲线,我们可以看出随着距离的增加,信号强度逐渐变弱,且这种变化程度逐渐变缓。


    定位过程中,通过设备测量三个不同参考点的信号强度,依据模型计算出三个距离值,那么采用和TOA类似的几何求解方法,即可以得到定位点。一般的射频芯片都具有RSSI测量功能,故RSSI机制实施简便,但易受信道和噪声影响,在远距离定位时测量误差较大,多用于小范围定位。

    > > > >

    基于专业设备的定位系统

    通过上节给大家介绍一些简单易懂的几何定位算法,大家可以隐约体会到,通过那些几何知识,我们可以利用很多物理信号来实现高精度定位。事实上,无论是研究机构,还是工业界,都已经对很多信号、设备做过研究实验。接下来,我给大家做一个汇总,按照信号的物理属性,可以大致分为两类:电磁波、超声波。


    • 电磁波,概念非常宽泛,包含很多种类,按照频率从低到高的顺序排列为:无线电波->红外线(不可见)->可见光(赤橙黄绿青蓝紫)->紫外线(不可见),其频率范围大致在3Hz到3000GHz之间。常见的定位方法有:超宽带定位、Wi-Fi定位、蓝牙定位、ZigBee定位,红外线定位,LED定位等。

    • 超声波是一种机械波,区别与电磁波,它依赖于物体机械振动进行能量传输的,其振动频率大于20000Hz,超出了人耳听觉的上限故被称为超声波,遵循反射、折射、衍射、散射等传播规律,与可见声波的规律没有本质上的区别。常见定位方法有:超声波定位。


    下面从精确度、成本、是否需要专业设备、技术优势和技术缺陷等,穿透性,抗干扰性,布局复杂程度,成本5个方面全方位来比较一下这几种室内定位手段。


    方法

    精度

    成本

    设备依赖

    技术优势

    技术缺陷

    超宽带

    6~10CM

    UWB接收器+标签

    穿透力强、功耗低、抗多径效果好,安全操作性高

    造价高

    蓝牙

    10CM

    蓝牙设备+手机

    体积小

    传输收视距影响、稳定性稍差、受噪声信号干扰大

    Wi-Fi

    5~20M

    无线路由器+手机

    普及度高,精度较低

    易受干扰

    Zigbee

    2M

    Zigbee各类节点

    低功耗、低成本

    受多径效应、移动等影响显著

    红外线

    5~30M

    红外接+发设备

    精度一般

    易受墙体等阻隔,传输距离短

    LED

    1M内

    LED灯具等+手机

    抗干扰性强、成本一般

    新技术、国外推广阶段

    超声波

    10CM

    测距器+标签

    功耗小、精度一般、抗干扰性强

    多径效应、非视距传播影响大


    下面我们简单对上述表中各种方法进行补充说明和介绍。


    超宽带定位,是一种基于极窄脉冲无载波的无线技术,传输速率高,发射功率较低,穿透能力较强,用来做室内定位能够获取极为准确的结果。利用超宽带定位需要事先布置好的已知位置的锚节点和桥节点。定位过程中,已有节点与新加入的盲节点进行通讯,利用TDOA技术来测距定位。该方案总体上看,功耗较高,部署成本比较高,精度较高。


    蓝牙定位,无线电波的一种,定位系统需要在室内安装的若干个蓝牙设备。定位时,通过手机等设备测量当前位置点扫描到各个蓝牙的信号强度,由信号衰减模型换算成距离,然后利用三边测量等方法推算定位坐标。总体来看,该方案实施成本中等偏高,低功耗,对复杂空间环境,稳定性稍差,受噪声信号干扰大。


    Wi-Fi定位,无线电波的一种,此类定位系统也需要在室内安装的若干个wifi设备。定位时,利用手机等设备对至少3个以上的无线网络接入点的信号强度测量,通过三角定位、指纹等方法进行位置定位。Wi-Fi定位可以在广泛的应用领域内实现复杂的大范围定位、检测和追踪任务,总精度比较高,但用于室内定位的精度只能达到2~6米。


    Zigbee,无线电波的一种,是一种新兴的高可靠、短距离、低速率无线网络技术,类似于CDMA和GSM网络,数据以接力的方式通过一个节点传到另一个节点。此类定位系统主要包括两类节点,一类是锚节点,一般通过GPS定位或者人工部署的方式知道自身的精确位置。另一类是跟踪节点,跟踪节点通过准确测量其到数个锚节点的距离或方位,然后使用三边测量等方法来计算节点位置。该类信号传输受多径效应和移动的影响很大,定位精度取决于信道物理品质、信号源密度、环境和算法的准确性,因此造成定位软件的成本较高,提高空间还很大。


    红外线,一种不可见光。利用其进行室内定位有两种,第一种是被定位目标使用红外线IR标识作为移动点,发射调制的红外射线,通过安装在室内的光学传感器接收进行定位;第二种是通过多对发射器和接收器交织的红外线网来覆盖待测空间,直接对运动目标进行定位。红外线的技术已经非常成熟,用于室内定位精度相对较高,但是红外线只能视距传播,穿透性极差,当标识被遮挡时就无法正常工作,也极易受灯光、烟雾等环境因素影响。另该类系统部署比较复杂,成本较高。


    Li-Fi属于可见光通讯,将需要传输的信息编译成一段调制信号,用脉宽调制的方法附加到LED灯具的驱动电流上,利用室内无处不在的光源作为发射再提,当用户进入灯具照明区域,利用智能手机的前置摄像头接收并识别光信号,解析出灯具发送的唯一身份识别信息。利用所获取的身份识别信息在地图数据库中确定对应的位置信息,完成定位。


    超声波定位,一种基于机械波的定位方法,定位系统中包含主测距器、若干个电子标签等。各个电子标签需要固定设置在室内空间,定位时,上位机发送相同频率的信号给各个电子标签,待电子标签接收到后将信号反射传输给主测距器,主测距器根据几何关系计算得到定位坐标。该方法可以实现厘米级别定位,结构相对简单。另外,超声波会收到传播损耗衰减影响、加上反射测距时受多经效应和非视距传播影响很大,造成需要精确分析计算的底层硬件设施投资,成本非常高。

    > > > >

    Wi-Fi的另一用途——室内定位

    ok,终于讲到本片文章的核心部分。虽说可以通过那些”高科技”设备做到高精度的定位,要给全国所有商场部署特殊硬件,其成本之大是难以接受的。从定位使用者角度来看,大家不可能随时随地携带那些各种标签、发射器、设备,那么百度是如何切入做室内定位呢?


    答案就是Wi-Fi。近年来,中国公众对WiFi网络建设与发展的关注和热情可以用如火如荼来形容,全国大部分商场、公共交通枢纽等场所都已经密集部署了Wi-Fi设备,有了这些Wi-Fi设备,我们就可以构建室内高精度定位。


    那么基于商场中已经部署好的Wi-Fi设备,到底如何构建呢?接下来,我们来看看Wi-Fi定位的技术原理。我们将定位过程进行抽象,变成一个数学问题,即位置函数求解: (x,y) = F(ap1,ap2,ap3….apN)。函数F的输入数据是一系列的扫描到的Wi-Fi的信号强度,输出是定位坐标。我们知道如果存在函数F能够满足以上关系,也就是说输入和输出之间就满足一定函数关系,也可以视之为相关性。虽然我们不能够马上得到函数F,但可以通过感性分析和理解,信号与位置之间有没有相关性?我们看以下分析:


    • 离无线设备越远,信号越弱。

    • 不同位置扫描到不同的Wi-Fi、蓝牙等信号。

    • 设备固定、各处信号强度相对稳定。


    通过以上三个因素,可以看出信号与位置之间确实存在较强相关性,利用这种相关性,可以构建出一套由无线电信号到XY映射的技术。


    结合前半部分讲的几何求解法,我们很容易能够想到,当空间有三个真实的位置AP([x1,y1],[x2,y2],[x3,y3]),通过手机测量Wi-Fi的信号强度,按照信号衰减模型,将信号强度换算成测量距离,利用几何求解法得到定位点。



    三角定位示意图


    总体上来看,这种方法的优点是模型简单,容易实现。如果实际系统使用这个简单的定位模型来做定位,会存在很多问题。首先我们需要一一标注所有AP的准确位置,其会带来不小的工作量。其次,该模型对AP信号辐射分布刻画不足,精度不高。


    真实的Wi-Fi信号是怎样的呢?Wi-Fi信号作为一种电磁波,在空间中传播也会有散射、衰减、损耗、折射等现象。下图来自于某篇论文仿真图片。左图是完全按照信号衰减模型绘制的信号在空间中分布情况。右图是通过对现场进行多点多次采样而绘制出来的信号强度真实分布情况。显而易见,此种分布肯定不符合衰减模型。


    另外,通过实验,我们也发现:因为手机不同的制造工艺,不同的芯片,不同的机壳材质,会导致无线电信号RSSI感知的差异,呈现出非线性的规律。(如下图)



    不同手机RSSI测量差异示意图(本图来自于互联网)

           

    上图不同颜色代表不同的手机模型,可以看出这些手机在相同时间地点所测量出来的rssi差异还是挺大的。对于手机感知差异问题,一般业界比较推崇的做法是要对rssi进行校正。通过一些参考场景逐步迭代式优化校正参数,直至收敛稳定。

    > > > >

    基于Wi-Fi的室内定位算法系列介绍

    下来我们着重介绍一些Wi-Fi相对复杂和靠谱的定位方法。之后也会顺便介绍百度目前在用的一种低成本长期有效的定位方法-地磁定位。


    真实模型的逼近-指纹法


    既然我们很难得到每个Wi-Fi在空间中的信号真实分布模型,那么我们可以直接对空间中各个点的进行各种信号的数据采集。用采样数据代表AP复杂模型。



    某商场指纹采集识别图


    定位过程中,手机发送当前扫描到的Wi-Fi Query指纹,服务器端直接计算库中与之相似的指纹,按照权重进行加权中心点计算,从机器学习角度来看,该方法实质是KNN。


    KNN计算示意图


    如上图是KNN计算示意图,一般来讲,KNN适用于分类问题,在定位问题上,我们将Top K个指纹直接进行加权计算而不是统计分类。整体上看,该方法实现简单,精度尚可,但是要将所有数据和样本进行比对计算,消耗存储空间,计算量非常大。


    局部模型+指纹法


    在实际采集作业过程中,我们很难将商场所有空间区域都进行密集采集,总会有一些采集不充分,指纹比较稀疏,那么怎么办呢?在此,我们可以借助局部模型来生成虚拟指纹。



    指纹采集稀疏区域示意图


    指纹生成阶段:针对比较稀疏区域,选择周围范围内一定数量的采集指纹,尽量让指纹覆盖到四周分布。训练该区域中每个AP的辐射模型和被扫描到概率等特征,针对稀疏区域反向推算出每个AP对该空间点的辐射信号强度,最终合并成为虚拟指纹。定位时可以使用采集指纹和虚拟指纹混合的方式提供定位。

    该方法主要用来弥补或者增强采集不充分区域的定位效果,训练过程相对复杂,定位精度逼近于指纹法,具备一定的鲁棒性。


    位置回归分析法


    通过之前分析,某点扫描到AP集合与当前点位置(x,y)形成了一个映射关系,我们求解定位位置,其实就是在做位置的回归分析问题。回归的目标就是得到x和y。相信了解机器学习的同学对接下来做的事情就很熟悉了。首先我们将扫描到AP集合作为特征向量,训练对x,y的回归模型。该模型相当于得到那个非常复杂的信号在实际空间辐射分布模型,所以很难用单一公式表达,但是通过回归分析模型的训练,我们得到其复杂模型。如下示意图,整个模型是由很多复杂树构成。



    位置回归分析模型示意图


    定位过程中,我们同样将Wi-Fi Query上传到服务器上,服务器将其转化为特征向量,然后由回归模型来进行定位位置预测。整体上来讲,该方法实现比较简单,但模型训练复杂,需要调参,有一定难度,精度可以逼近指纹法。


    地磁定位法


    地磁信号来源于地球本身,因为地心引力,地磁场本身存在。钢筋结构和地板等物体都会对地磁产生影响。地磁强度由于建筑结构不发生变化,基本上还是比较稳定的。如下图是某个商场内部地磁场强分布示意图。



    某商场地磁场强分布示意图


    一般情况下,在一段时间内磁场强度变化本身就是一种指纹。例如我们从走廊东头走到走廊西头的整个过程中,地磁场强变化就很明显,如下图,曲线上下变化本身就是一种指纹。


    某段地磁场强变化示意图(本图来自于互联网)


    定位过程中,通过计算定位地磁序列指纹与指纹库中的子序列相似度来得到最佳匹配位置。这是一个模糊子序列查找问题,一般来说,商场地磁指纹数量比较多,导致实时搜索空间巨大,因此会利用空间索引技术+粒子滤波提高匹配性能。总的来说,地磁定位法的特点是实现相对复杂,需要做地磁校正,但是精度效果优秀。

    > > > >

    写在最后

    通过上述各章节介绍,相信大家对室内定位已经有了大体了解。室内定位是垂直专业方向,除了需要信号处理相关专业知识,还需要对机器学习有一个很深入的了解。因此,真正要做好,需要很长时间的技术积累和经验总结。百度一直秉持让大家平等获取信息的理念,持续投入资源,支持该方向的技术研发。我们的目标是做中国一流的室内定位服务,让大家随时可以获取到高精度定位体验。


    本文版权归“百度地图技术团队”所有,转载请注明出处



    展开全文
  • 车牌识别关键技术-车牌定位

    万次阅读 多人点赞 2017-06-15 11:25:17
    博主渣渣本科一枚,毕业设计选了一个基于OpenCV的车牌识别的题目,在此记下其中用到的一些关键技术备忘,也希望可以给后来人些许启发。  车牌识别的第一步自然是想办法把车牌从一张图片中提取出来,也就是所谓的...

      博主渣渣本科一枚,毕业设计选了一个基于OpenCV的车牌识别的题目,在此记下其中用到的一些关键技术备忘,也希望可以给后来人些许启发。
      车牌识别的第一步自然是想办法把车牌从一张图片中提取出来,也就是所谓的车牌定位。目前方法有很多,我采用的是基于边缘检测的车牌定位方案。
      一般来说由于车牌区域有车牌字符的存在,所以会有相当丰富的边缘信息,所以可以求取车牌的边缘图像,然后把所有分布密集的边缘聚合在一起就可以得到一些候选区域,而这些候选区域中就应当包含有我们要找的车牌区域,这时候只要再通过候选区域的长宽比,颜色等信息就可以找到车牌了。
    思路讲完了,现在开始正题:

    原始图像
    源图像

      这是我在网上随意找的一张图片,为了便于展示处理流程,接下来我讲的所有操作都将以这幅图为例。

    1.彩色图转灰度图

      首先要把RGB彩色图像转为灰度图像,这一步无需多讲,OpenCV自带库函数void cvCvtColor( const CvArr* src, CvArr* dst, int code );一行直接搞定,其中src表示输入的源彩色图像,dst存放输出的灰度图像,code选CV_RGB2GRAY得到灰度图像

    灰度图
    灰度图

    2.对比度增强

      对比度增强这一步是为了让图像中的边缘更加明显。这里采用基于顶帽变换和底帽变换的方法来增强对比度。即:

    enhanced(g)=g+Tophat(g)Bothat(g)

      其中, g 表示源图像,Tophat(g)表示对 g 的顶帽变换,Bothat(g)表示对 g 的底帽变换,enhanced(g)表示对比度增强后的图像。
      无论顶帽变换还是底帽变换都可以用OpenCV中的morphologyEx函数实现。主要代码和结果如下。

    Mat tophat,blackhat;  //分别用于保存顶帽变换和底帽变换后的图像
    Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
    morphologyEx(temp, tophat, MORPH_TOPHAT, element, Point(-1, -1)); //这里的temp是源图像
    morphologyEx(temp, blackhat, MORPH_BLACKHAT, element, Point(-1, -1));
    add(temp, tophat, temp);
    subtract(temp, blackhat,temp);
    

    enhanced
    对比度增强后的灰度图

    3.边缘检测

      边缘检测有很多办法,比如Sobel,Canny,Laplace等等,我采用的是Sobel算子对图像作水平差分,以求取垂直边缘。因为由于车牌区域的边缘是以垂直边缘为主,一般的背景区域不会有密集的垂直边缘,如果求取全方向上的边缘的话,在背景比较复杂的时候,背景区域也会存在更多边缘,带来干扰。以Canny算子为例,虽然检测效果看起来更好,但是非车牌的背景区域同样检测出了太多无用的边缘,不利于后续处理。

    这里写图片描述 这里写图片描述
      分别用Canny算子(左图)和Sobel算子(右图)的检测结果

    Sobel检测在OpenCV中也很简单,一个函数搞定。在这里我加上了高斯平滑和二值化操作,希望提取出效果更好的边缘。

        GaussianBlur(temp, temp, Size(9, 3), 0, 0); //高斯平滑,这里temp代表待处理图像
        Sobel(temp, temp, CV_8U, 2, 0, 3); //利用Sobel算子进行二阶水平差分,求取垂直边缘
        //Scharr(temp, temp, CV_8U, 1, 0, 1, 0, BORDER_DEFAULT);
        threshold(temp, temp, 0, 255, CV_THRESH_BINARY + CV_THRESH_OTSU);//二值化

      在得到边缘图像之后只要再经过一些形态学操作就可以得到候选区域。这里我们可以先进行开运算,开运算是对图像先腐蚀后膨胀,在腐蚀过程中,可以去除背景中一些细小的杂点,以及比较细的边缘,而车牌区域由于边缘密集所以不容易被完全腐蚀掉,再经过膨胀操作就可以恢复出车牌区域。开运算也可以通过OpenCV库函数morphologyEx实现,这里不再赘述。
      

    这里写图片描述
    开运算后的图像

      接着可以再对这些区域完成矩形化处理,(这一步是某篇论文上看来的,记不得出处了( ̄ェ ̄;))
      对于二值图像中的一点P(i,j) :

    • P(i,j)若 为黑点,当他的4邻域中存在至少2个白点,则将其置为白点
    • P(i,j)若 为白点,当他的4邻域全为黑点时,将其置为黑点

    反复执行以上操作至图像不再变化。不过这不操作略微费时,实际操作时可以先对图像求取水平和垂直投影,然后只对投影值大于一定阈值的区域进行矩形化,这样可以省下部分时间开销。附上结果和部分代码:


    这里写图片描述
    候选区域矩形化

    //参数src为待处理源图像
    //参数dst用于存储处理后的图像
    //x,y两个数组存放水平和垂直投影值
    void rectanglize(IplImage *src, IplImage * dst,int * x,int * y)    //矩形化
    {
        double temp = 0;
        CvScalar white, black;
        white.val[0] = 255;
        black.val[0] = 0;
        for (int i = 1; i < src->height - 1; i++)
        {
            for (int j = 1; j < src->width - 1; j++)
            {
                if (y[i]>15 && x[j]>5)
                {
                    temp = cvGet2D(src, i, j - 1).val[0] + cvGet2D
                        (src, i, j + 1).val[0] + cvGet2D(src, i - 1, j).val[0] + cvGet2D(src, i + 1, j).val[0];
                    if (255 == cvGet2D(src, i, j).val[0])
                    {
                        if (0 == temp)
                            cvSet2D(dst, i, j, black);         //如果该白点周围都是黑点,则设置改点为黑点
                        else
                            cvSet2D(dst, i, j, white);   //反之则为白点
                    }
                    else
                    {
                        if (temp >= 255 * 2)
                            cvSet2D(dst, i, j, white);         //如果该黑点周围存在两个及以上的白点,则设置改点为白点
                        else
                            cvSet2D(dst, i, j, black);   //反之则为黑点
                    }
                }
            }
        }
    
        //将图像边缘设置为黑色
        for (int i = 0; i < src->height; i++)
        {
            cvSet2D(dst, i, 0, black);
            cvSet2D(dst, i, src->width - 1, black);
        }
        for (int j = 0; j < src->width; j++)
        {
            cvSet2D(dst, 0, j, black);
            cvSet2D(dst, src->height-1, j, black);
        }
    }

    4.区域筛选

      最后一步,区域筛选,从所有候选区域选出车牌区域,这一步就比较简单啦,比较明显的判据就是车牌的长宽比,过长或者过宽的区域都不会车牌。直接上代码,这一步需要说明下,src是要判断的图像,用cvFindContours函数可以找出图像中所有连通域,用CvSeq类型的双向链表表示,接着只要遍历链表节点,移除不合适的节点就可以完成筛选了。但是不知道怎么回事,用OpenCV自带的cvSeqRemove函数貌似无法删除节点,自己写了一个删除节点的函数还是不行,移植别人删除节点的代码还是不行,当时快把我搞疯了(╯°Д°)╯︵┻━┻,所以我自己建了一个结构体plateinfo构成链表来存放车牌在图像中的位置。

    //plateinfo定义
    typedef struct plateinfo    //车牌信息
    {
        CvRect rect;      //车牌位置
        IplImage * plateregion; //车牌区域
        //IplImage * plateregion = cvCreateImage(cvSize(132, 42), IPL_DEPTH_8U, 1); //车牌区域
        PlateChar * plate_num = NULL; //车牌号
        struct plateinfo * next = NULL;
    }Plate;
    void screen(IplImage * src)
    {
        //IplImage* dst = cvCreateImage(cvGetSize(src), 8, 3);
        CvMemStorage * storage = cvCreateMemStorage(0);
        CvSeq * temp = 0;
        int totals = cvFindContours(src, storage, &temp, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0, 0));
        cout << "find " << totals << " contours" << endl;
        int total = totals;
    
        //plate = contours;
    
        double minarea = 100;
        double templarea;
        int flag = 1;
    
        /*int * flag=new int [totals];
        memset(flag, 0,totals * 4);*/
        //temp = plate;
        for (int i = 0; temp != NULL; temp = temp->h_next,i++)
        {
            templarea = fabs(cvContourArea(temp));
            //cout << templarea << endl;
            if (templarea < minarea) //除去面积过小的区域
            {
                cvSeqRemove(temp, 0);
                //mySeqRemove(&temp);
                totals--;
                continue;
            }
            CvRect aRect = cvBoundingRect(temp, 0);
            if (float(aRect.width / aRect.height)<2 || float(aRect.width / aRect.height)>4) //除去高比例过大和过小的区域
            {
                cvSeqRemove(temp, 0);
                //mySeqRemove(&temp);
                totals--;
                continue;
            }
            if (0 == colorScreen(temp))  //除去颜色不符合的区域
            {
                cvSeqRemove(temp, 0);
                totals--;
                continue;
            }
    
            //flag[i] = 1;
            if (1 == flag)
            {
                aRect.x -= int(aRect.width*0.1);
                //aRect.y -= int(aRect.height*0.1);
                aRect.width = int(aRect.width*1.2);
                aRect.height = int(aRect.height*1.2);
    
                firstplate->rect = aRect;
                flag = 0;
            }   
            else
            {
                aRect.x -= int(aRect.width*0.1);
                //aRect.y -= int(aRect.height*0.1);
                aRect.width = int(aRect.width*1.2);
                aRect.height = int(aRect.height*1.2);
    
                Plate * newplate = new Plate;
                newplate->rect = aRect;
                constructPlateList(firstplate, newplate);
            }
            /*CvScalar red = CV_RGB(255, 0, 0);
            cvDrawContours(source, contours, red, red, 0, 1, 8);*/
        }
        cout << "find " << totals << " plates" << endl;
    
        if (0 == totals)
        {
            delete(firstplate);
            firstplate = NULL;
            cout << "find no plate" << endl;
            exit(0);
        }
    
        //int count = 0;
        //for (int i = 0; i < total; i++)
        //{
        //  cout << flag[i]<<endl;
        //  if (0 == flag[i])
        //  {
        //      
        //  }
        //      //mySeqRemove(&plate, count);
        //  else
        //  {
        //      CvScalar red = CV_RGB(255, 0, 0);
        //      cvDrawContours(source, plate, red, red, 0, 1, 8);
        //      count++;
        //  }
        //}
    
    }

      另外我在筛选过程中加上了颜色判断步骤colorScreen,一般来说长宽比已经足够判断出车牌了,而且后期字符分割时可以再做一次判断:如果分不出7个字符,那么同样不是车牌。所以这一步本身不是特别重要,而且由于不同图像光照明暗的变化有所不同,难以选取出统一的阈值。所以我把判断条件放的特别宽,这一步只是单纯为了保险,不能作为唯一判据。送上代码:
      

    bool colorScreen(CvSeq * contour)   //根据颜色判断待选区域是否为车牌
    {
        CvRect rect = cvBoundingRect(contour, 0);
        double area = fabs(cvContourArea(contour));
        CvMat * temp = cvCreateMatHeader(rect.height, rect.width,CV_8UC3);
        cvGetSubRect(source, temp, rect);
    
        IplImage * _tempimg = cvGetImage(temp, cvCreateImageHeader(cvSize(rect.width, rect.height), IPL_DEPTH_8U,3));
        IplImage * tempimg = cvCreateImage(cvSize(rect.width, rect.height), IPL_DEPTH_8U, 3);
        cvCopy(_tempimg, tempimg);  //需将_tempimg复制到tempimg中,对_tempimg操作会改变原图
        //cvCvtColor(tempimg, tempimg, CV_BGR2HSV); //颜色空间由RGB转到HSV
        rgb2hsi(tempimg, tempimg); //颜色空间由RGB转到HSI
        CvScalar color;
        CvScalar black = CV_RGB(0, 0, 0);
        CvScalar red = CV_RGB(255, 0, 0);
        double blue = 0;
        double white = 0;
        for (int i = 0; i < tempimg->height; i++)
        {
            for (int j = 0; j < tempimg->width; j++)
            {
                color = cvGet2D(tempimg, i, j);//color.val[0]为H,val.[1]为S,val.[2]为V
                //if (color.val[0]>90 && color.val[0]<120 && color.val[1]>130)//HSV方案
                if (color.val[0]>255 * 190 / 360 && color.val[0]<255 * 260 / 360 && color.val[1]>255 * 30 / 100)//HSI方案
                {
                    blue++;
                    //cvSet2D(source, i, j, black);
                }
                //if (color.val[1] < 100 && color.val[2]>180)//HSV方案
                if (color.val[1] < 255 * 30 / 100 && color.val[2]>255 * 60 / 100)//HSI方案
                {
                    white++;
                    //cvSet2D(source, i, j, red);
                }
            }
        }
        //cout << "area= " << area << " blue: "<<blue<<" white:"<<white<<" height and width : "<<tempimg->height<<","<<tempimg->width<<endl;
        /*cvReleaseImage(&tempimg);
        cvReleaseMat(&temp);*/
        /*showpic("source", source);
        cvWaitKey(0);*/
        if ((blue + white) > (tempimg->width*temp->height*0.2) && blue / (white + 1) > 1 && blue / (white + 1) < 12)
            return 1;   
        else 
            return 0;
    }
    展开全文
  • 中科视拓崭露头角,与海康威视、阿里、百度、腾讯等公司共同上榜,位列TOP 10。 《互联网周刊》由中国科学院主管、中国科技出版传媒股份有限公司主办,面向全国发行,单期发行量十五万份左右。《互联网周...
  • 2021年前端面试题及答案

    万次阅读 多人点赞 2020-02-11 19:29:34
    前端面试汇总(2020年) 一 大纲 1、前言 2、前端工程化 3、前端设计模式 ...9、前端技术栈问题 前言 由于新冠肺炎疫情,现在成天呆在家里,加上也要准备面试,就在家里看面试题...
  • 前端面试锦集

    千次阅读 多人点赞 2019-07-20 13:41:45
    3.优化CSS(压缩合并css,如margin-top,margin-left…) 4.网址后加斜杠(如www.campr.com/目录,会判断这个“目录是什么文件类型,或者是目录。) 5.标明高度和宽度(如果浏览器没有找到这两个参数,它需要一边...
  • 特别高的薪资都是直接技术面试或者是 现场编程 总结很多人的面试题,后期会对于单个知识点再说笔记详细讲解。 部分都是百度的答案,不是特全面的,可以自己找下 同时分享一个自己录制的CSS3动画特效经典案例...
  • 前端面试题(持续更新中)

    万次阅读 多人点赞 2019-11-06 17:16:33
    dom.getBoundingClientRect().width/height:getBoundingClientRect()方法得到8个值,除了 width 和 height 外的属性x、y、left、top、right和bottom都是相对于视口(viewport)的左上角位置而言的。 4、什么是BFC?...
  • MySQL 面试题

    万次阅读 多人点赞 2019-09-02 16:03:33
    索引,类似于书籍的目录,想找到一本书的某个特定的主题,需要先找到书的目录,定位对应的页码。 MySQL 中存储引擎使用类似的方式进行查询,先去索引中查找对应的值,然后根据匹配的索引找到对应的数据行。 ? ...
  • 前端面试题

    万次阅读 多人点赞 2019-08-08 11:49:01
    我想让行内元素跟上面的元素距离10px,加margin-top和padding-top可以吗? 45 CSS的盒模型由什么组成? 45 说说display属性有哪些?可以做什么? 46 哪些css属性可以继承? 46 css优先级算法如何计算? 46 ...
  • 测试开发笔记

    万次阅读 多人点赞 2019-11-14 17:11:58
    子模块 接口 灰盒测试 验证模块、子模块、接口是否符合 概要设计说明书 能够帮助更准确的 定位缺陷的所在,从而降低了定位缺陷的成本 定位准确快速 1接口测试有技术要求,技术实现难度大 2接口太多,数量庞大,做...
  • WPF学习

    万次阅读 多人点赞 2019-03-05 22:00:17
    WPF:编写CS端的UI技术。 怎么去掉WPF窗体靠上多出黑色的长条?在vs界面的菜单栏点击调试-选项,把启用XAML的UI调试工具勾选去掉即可。(我自己觉得偶尔会用用这个) 1 认识WPF 1.1 新建WPF项目 生成 ...
  • C#基础教程-c#实例教程,适合初学者

    万次阅读 多人点赞 2016-08-22 11:13:24
    C#基础教程-c#实例教程,适合初学者。 第一章 C#语言基础 本章介绍C#语言的基础知识,希望具有C语言的读者能够基本掌握C#语言,并以此为基础,能够进一步学习用C#语言编写window应用程序和Web应用程序。...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java非对称加密源程序代码实例,本例中使用RSA加密技术,定义加密算法可用 DES,DESede,Blowfish等。  设定字符串为“张三,你好,我是李四”  产生张三的密钥对(keyPairZhang)  张三生成公钥(publicKeyZhang...
  • 玩转CSS中浮动与定位的原理与使用

    千次阅读 2019-07-22 15:18:01
    absolute 生成绝对定位元素,元素脱离文档流,不占据文档流的位置,可以理解为漂浮在文档流的上方,相对于上一个设置了相对或者绝对或者固定定位的父级元素来进行定位,如果找不到,则相对于body元素进行定位。...
  • 定位技术在地图软件里的应用可谓无法替代,尤其是在小范围的室内定位环境下,如何帮助用户高精度搜索导航,是百度定位技术的研究重点。 在3月26号由百度开发者中心、百度地图开放平台和百度车联网联合举办的第...
  • 前一篇文章讲述了...这篇文章将详细讲解 BeautifulSoup 爬取豆瓣TOP250电影,通过案例的方式让大家熟悉Python网络爬虫,同时豆瓣TOP250也是非常适合入门的案例,也能普及简单的预处理知识。 希望对您有所帮助
  • Tomcat面试题+http面试题+Nginx面试题+常见面试题

    千次阅读 多人点赞 2019-12-12 15:04:43
    1)运维是指大型组织已经建立好的网络软硬件的维护,就是要保证业务的上线与运作的正常, 在他运转的过程中,对他进行维护,他集合了网络、系统、数据库、开发、安全、监控于一身的技术 运维又包括很多种,有DBA...
  • EAST算法详解

    万次阅读 多人点赞 2018-06-18 14:54:54
    定位大文本将需要更深层的特征(大感受野),而定位小文本则需要浅层特征(小感受野) 。 因此,网络必须使用不同级别的特征来满足这些要求,但是在大型特征图上合并大量通道会显着增加后期计算开销。为了弥补这一点...
  • 软件测试入门知识了解

    万次阅读 多人点赞 2018-09-05 14:59:58
    自顶向下法(Top-down Integration) 自底向上法(Bottom-up Integration) 微软VSTS的单元测试 Visual Studio Team System(VSTS)是一套工具集,全面整合了软件设计、开发、测试、部署和人员协作工具,其开发版...
  • BeautifulSoup爬取豆瓣电影top250信息

    千次阅读 2019-07-13 12:08:29
    豆瓣是一个社区网站,创立于2005年3月6日。该网站以书影音起家,提供关于书籍,电影,音乐等作品信息,其描述...我将基于豆瓣电影top250讲解BeautifulSoup技术的爬虫,获取排名前250名的影片信息,包括(网站名称、...
  • 细解CSS中的定位技术

    千次阅读 2012-04-21 13:00:41
    CSS中的元素定位问题长久以来一直是困扰网页设计者的一大难题,而且有关CSS讲解的书中关于这方面的讲解也确实很不给力,带有一种朦胧感,其中有些作者甚至在讲解中漏洞百出,浏览器根本不按照作者的讲解方式进行定位...
  • BeautifulSoup爬取豆瓣电影Top250

    千次阅读 2020-12-22 11:31:19
    爬取豆瓣电影Top250的电影名、评分、短评、评分人数等信息 通过博客对beautifulSoup4的简单介绍,现在开始实战啦,没有看过的,可以先看看 Python网络爬虫基础–BeautifulSoup 使用selenium定位获取标签对象并...
  • 常见JVM面试题及答案整理

    万次阅读 多人点赞 2019-08-26 11:35:04
    通过乱序执行的技术,处理器可以大大提高执行效率。而这就是指令重排。 3)内存屏障 内存屏障,也叫内存栅栏,是一种CPU指令,用于控制特定条件下的重排序和内存可见性问题。 LoadLoad屏障:对于这样的语句Load1; ...
  • verilog 综合注意事项

    万次阅读 多人点赞 2016-07-29 15:46:40
    verilog
  • 随着数据规模的日益庞大,在大规模数据集中帮助用户定位出数据量可控的代表性信息显得越发重要。虽然Top-k Skyline查询能够找到数据集中前k个最具代表性的信息,在获取代表性信息的同时又控制了结果规模,满足了上述...
  • 制件中存在缺陷会带来很大的危害,通过对制件缺陷图像信号进行分析处理可以实现制件质量的自动监控。提出Top-Hat变换序列分析...然后用该最佳尺寸的结构元素对原信号进行Top-Hat变换,并以最佳阈值进行分割,准确地定位
  • 默认使用普通流技术再页面中布局元素,希望表现与普通流不同,另外两个特性position和float 具体实例 复制代码代码如下: <html> <head> <title> css定位功能探索 </title> <style type...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 62,131
精华内容 24,852
关键字:

top定位技术