VR虚拟红包的技术实现
2017年1月20日,腾讯发布消息称将推出Q-Glass,除了一般VR眼镜的标配功能外,Q-Glass还能实现眨眼抢红包。听起来是不是很酷炫?上市时间可要在10年后。不过,2016年底支付宝首推AR实景红包,QQ也紧随其后,一场AR实景红包大战悄然打响。
作为最近两年比较热门的技术,VR技术悄然成为移动技术之后有一大竞相追逐的技术,目前市面上比较成熟和出名的VR开发商,诸如:Google VR,Oculus,HTC Vivi。而已Google VR最为成功并商业化。关于这个可以参考我之前的介绍Google VR实践
不过今天我要说的是VR在我们生活中的应用,并且是大家已经用过的,相信大家在2017年年底的时候,一定玩过支付宝/qq(AR虚拟现实)藏红包、找红包吧,想象一下,你可以把你的红包藏在世界各地的任意角落,让全世界的人通过扫描来找红包,是不是觉得很酷,那么要实现这种功能,怎么做呢?
相信大家都玩过AR红包,这里就不介绍如何玩了。
AR红包技术实现分析
其实AR红包综合了GIS(LBS)、图像识别与秒杀技术等技术:
藏红包
- 藏红包的地点,即地球坐标(经纬度),在藏红包时会记录下这个红包的经纬度。
- 藏红包的标识(图片),即藏红包现场拍的照片,在藏红包时,会存下这张图。
- 藏好红包后,将生成的红包数据打包到服务器
找红包
- 将你附近的红包展示出来,比如方圆2公里有哪些人藏了红包,并且把他们的坐标信息也在地图上展示出来,方便你前往找红包
- 当你抵达红包坐标附近(比如50米内)时,你就可以拿起手机,根据红包提供的模糊化图片线索,扫描物体(即藏红包的图片),当你扫描的图片和藏红包时拍的图片完全匹配时,找红包成功。
当就这两个功能来说,主要涉及到以下技术:
- 地理位置信息的处理:红包位置的展示(将你的位置以及附近藏的红包位置分别在地图上展示出来),近邻查询(根据你所在的经纬度,查找你附近的红包)
- 图片相似度识别:找红包的人拍的照片 与 藏红包时拍下的照片 进行比对,相似度达到一定程度时,表示红包被找到了。
- 秒杀特性:例如你在一处藏了一个红包,那么可能有很多人同时在抢(不过这个秒杀应该比不上双十一,因为是小范围秒杀)。
不过,这几个功能在PostgreSQL数据库中都可以高效的实现,是不是很棒?那么接下来我们来看看PostgreSQL如何处理这两项需求的吧,顺便看看性能如何?
PostGIS插件
在AR红包的业务中,地理位置信息的处理主要包括以下两个方面:
- 根据你的位置,搜索附近的红包。即KNN搜索(如 select * from table where loc <-> poc<1公里orderbyloc<−>poc<1公里orderbyloc<−>poc)
- 根据用户的位置,红包的位置,计算用户与红包的距离。而在这个模型中,有个最常见的外围插件–PostGIS
PostGIS在军工、科研、民用场景都非常的流行,包括我们常见的精细地表raster探测,天文研究、地图、路径规划等应用中都可以看到PostGIS的影子,本文只用到了PostGIS的一小部分功能:GIS数据类型、GIST索引、近邻查询。
来看一张PostGIS在实际应用的图解:
详细的用法和测试方法参考
更多文章和详细的PostGIS功能可以参考
《如何建立GIS测试环境 - 将openstreetmap的样本数据导入PostgreSQL PostGIS库》
图像近似度处理
在PostgreSQL的的生态圈中,有很多这样的插件来满足图片搜索的需求,同时也支持图像相似度值的计算
1,使用Haar wavelet算法的imgsmlr插件
https://github.com/postgrespro/imgsmlr
2,使用图片RGB点阵组成的数组来计算相似度的插件-smlar
《从相似度算法谈起 - Effective similarity search in PostgreSQL》
参考
《从相似度算法谈起 - Effective similarity search in PostgreSQL》
《PostgreSQL 在视频、图片去重,图像搜索业务中的应用》
https://github.com/postgrespro/imgsmlr
3,使用图片RGB点阵组成的数组转成tsvector来计算相似度的插件-RUM
RUM计算相似度时带上了位置信息,精确度更高。比如(0,1,2,3,4,5与0,0,2,3,4,5与5,1,4,2,3,0与2,3,4,5,0,1)。其中0,1,2,3,4,5是原始点阵的值,那么0,0,2,3,4,5可能是有一定误差的值(因为依旧是线性相关的),而2,3,4,5,0,1出现了角度偏差(可以通过技术手段比如rum,把数据拉成环状修正),可能是图片拍摄角度造成的。但是5,1,4,2,3,0可能就不是那个图像了。
参考:
《从难缠的模糊查询聊开 - PostgreSQL独门绝招之一 GIN , GiST , SP-GiST , RUM 索引原理与技术背景》
AR 藏红包如何计算图片匹配
我们在AR藏红包的业务中,只需要用到计算近似值的功能即可,以上两个插件都可以很好的满足。比如使用RGB点阵时,在应用程序端生成RGB点阵,发送给数据库,与存储在数据库中的点阵进行相似度计算即可。
藏红包时的图像数字化流程如下:
- 拍照,点阵RGB串成数组或转换为tsvector(带距离计算,相似度更加准确),将红包的位置信息、图片RGB点阵存储到数据库中
找红包,匹配图像时的流程如下:
- 拍照,生成点阵,提交给服务端,进行图像匹配,匹配方法参考前面的三种方法之一即可,当然也可以考虑更高效的方法,搞进PostgreSQL的插件里面来。
注意,如果从服务端提取点阵,在客户端比对,这种做法虽然节省了服务端开销,但是这种做法可能存在漏洞,客户端可以被HACK,直接匹配上。
秒杀
目前业务层面只支持近距离找红包,所以通常来说,抢一个红包的人群不会太多。并且我们肯定会对操作数量限制的做淘汰操作。那么如果有上亿人同时秒杀一个红包怎么做呢?PostgreSQL同样有独门秘技来支持秒杀。
参考:
《聊一聊双十一背后的技术 - 不一样的秒杀技术, 裸秒》
《PostgreSQL 使用advisory lock或skip locked消除行锁冲突, 提高几十倍并发更新效率》
总结
随着AR的技术越来越流行,地理位置、图像、视频、声音等特殊数据类型的处理会越来越常见,数据库应该与时俱进,不能再仅仅存储和处理文本、数字这么简单的功能,其综合技术的发展将日新月异。
而另一方面,PostgreSQL的高扩展能力,为AR提供了坚实的技术基础,不仅能存,更能高效处理。
转载自: http://blog.csdn.net/xiangzhihong8/article/details/61437562?ref=myrecommend
VR虚拟红包的技术实现的更多相关文章
- 轩辕展览-为什么要做VR虚拟展厅设计?
沉浸感,有趣和互动体验VR虚拟展厅设计给客户带来高度的沉浸感和互动体验,给客户一种真实的感觉,让客户更愿意参与,使商家的宣传更加客观. 展示方式多样化 ,增加宣传优势在展示产品或企业时,VR全景可达到 ...
- 轩辕展览-VR虚拟展厅设计的好处和优势是什么?
yu情仍在继续,实体展厅很糟糕,在过去两年之中,越来越多的实体展厅因闲置而关闭,线上VR虚拟展厅设计逐渐走出圈子,凭借云展示的优势和国家政策的支持,登上展示和销售的旗帜. 产品线上展厅的优势是什么1. ...
- MP4大文件虚拟HLS分片技术,避免服务器大量文件碎片
MP4大文件虚拟HLS分片技术,避免点播服务器的文件碎片 本文主要介绍了通过虚拟分片技术,把MP4文件,映射为HLS协议中的一个个小的TS分片文件,实现了在不实际切分MP4文件的情况下,通过HLS协议 ...
- 实现VR直播的关键技术
VR是多媒体技术发展的必然趋势,人们所使用的信息载体从最早的文字.图像,到音视频,再到用VR,将事物的描述表达推向了极致,充分满足了沉浸性.互动性和构想性三大要素的需求.随着5G的商业化运营,VR有望 ...
- 轩辕展览-VR虚拟展厅设计如何实现全景漫游功能
什么是在线3d漫游?如何在VR虚拟展厅设计之中实现3d漫游功能?让我们来分享3dVR虚拟展厅的在线漫游. 实际上,在线3d漫游就是通过3d仿真场景,使用鼠标和键盘在虚拟空间之中自由漫游,它可以从高空俯 ...
- VR全景加盟、720全景、VR全景技术平台-全国招商模式疯狂开始
VR全景:互联网与实体店的完美结合 VR元年已过,VR项目.VR创业潮转为理性,VR行业分为两个方向:硬件和内容.硬件又分为VR头显和辅助设备,内容又分为VR全景和VR虚拟内容,如游戏.娱乐.根据行 ...
- VR全景智慧城市,完美的将虚拟与现实结合
很多人都粗浅的认为,VR虚拟智慧城市只是简单的将智慧城市和虚拟现实相结合的产物,这样的VR虚拟智慧城市看起来更像是个VR内容产品,而非城市建设成果.但是我们换个角度来思考的话,现在很多VR虚拟智慧城市 ...
- VR虚拟现实技术在教育领域的前景展望
VR虚拟现实技术在教育领域的前景展望 VR虚拟现实技术能迅速火起来,是基于它突破了人们对三维空间在时间与地域上的感知限制,以及市场需求愿景的升级.此技术可广泛地应用到城市规划.室内设计.工业仿真.古迹 ...
- 全面解密QQ红包技术方案:架构、技术实现、移动端优化、创新玩法等
本文来自腾讯QQ技术团队工程师许灵锋.周海发的技术分享. 一.引言 自 2015 年春节以来,QQ 春节红包经历了企业红包(2015 年).刷一刷红包(2016 年)和 AR 红包(2017 年)几个 ...
随机推荐
- Windows网络编程:winsock文件传输范例
基于TCP流协议的winsock网络文件传输Demo: 实现:C语言 功能:文件传输(可以传任何格式的文件) /******************************************** ...
- .NET Core/.NET之Stream简介 Rx.NET 简介
.NET Core/.NET之Stream简介 之前写了一篇C#装饰模式的文章提到了.NET Core的Stream, 所以这里尽量把Stream介绍全点. (都是书上的内容) .NET Core ...
- “指定的SAS安装数据(sid)文件不能用于选定的SAS软件订单
Sas安装指南,若拿到可用的sid文件,需要做如下修改. 使用新sid的时候,“指定的SAS安装数据(sid)文件不能用于选定的SAS软件订单”问题解决: 1.进入sas安装包,install_doc ...
- VELT-0.1.6开发:载入根文件系统
快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 VELT的全称是Vi ...
- QQ空间说说 视频播放
http://182.254.8.83/vwecam.gtimg.com/1006_d81d60f3c83844a5ad6a184149d4ccbb.f0.mp4?sha=78A27CF4908AB5 ...
- 两道NOIP里的DP题目~
拦截导弹 来源:NOIP1999(提高组) 第一题 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都 ...
- 第十一周 Leetcode 576. Out of Boundary Paths (HARD) 计数dp
Leetcode 576 给定一个二维平面, 一个球在初始位置(i,j)每次可以转移到上下左右的一格. 问在N次转移内,有多少种路径可以转移出边境. dp[i][j][k]为 在点(i,j) 已经走了 ...
- ubuntu 16.04 Sqoop 安装
1.下载:https://mirrors.tuna.tsinghua.edu.cn/apache/sqoop/1.4.6/ sqoop-1.4.6.bin__hadoop-2.0.4-alpha.ta ...
- Vsftpd软件包的获取与安装
11.2 Vsftpd简介 Vsftpd是一种在GPL许可下开放源代码的FTP服务器,用于多种UNIX系统和Linux系统.Vsftpd也称为Very Secure FTP Daemon,它是一种安 ...
- 【培训】MySQL
yum安装mysql:yum -y install mysql*- 或者 yum -y install mysql* 启动数据库服务:/etc/init.d/mysqld start 或者 servi ...