what you see is what you can get more

背景介绍

随着数字化与博物馆的碰撞,越来越多数字博物馆交互式鉴赏平台得以呈现,我们所做的这个小项目,是想让观光博物馆的人通过手机摄像头观看文物时,可以得到更多相关动态有趣的内容以及相应的语音讲解。


研究方案

此项目采用CSClient-Server)架构实现,客户端通过摄像头获取实时帧将图片传送给服务器,服务器获取图片后对其进行图像匹配处理,返回给客户端相对应的视频地址,客户端获取视频地址后进行全屏播放。 服务器端,需要事先存储好视频,以及每个视频对应的关键帧。

  • ClientiOS版和android版本
  • Server:采用java-struts框架

开发难点

图像匹配算法的选择

第一、二周,寻找各种图像匹配算法,其中被我们实验过的有 - SIFTSacle-invariant Feature Transform)算法 - 感知哈希算法 - 均值哈希算法 - surf算法

其中我个人认为比较好用的是SIFT 算法和 感知哈希算法,尤其是感知哈希算法,它的实时性占很大优势,但在匹配的准确度上不够精确。接下来分别简要阐述一下SIFT、感知哈希和均值哈希的算法步骤。

Lowe(作者)将SIFT算法分解为如下四步:

  1. 尺度空间极值检测:搜索所有尺度上的图像位置。通过高斯微分函数来识别潜在的对于尺度和旋转不变的兴趣点。
  2. 关键点定位:在每个候选的位置上,通过一个拟合精细的模型来确定位置和尺度。关键点的选择依据于它们的稳定程度。
  3. 方向确定:基于图像局部的梯度方向,分配给每个关键点位置一个或多个方向。所有后面的对图像数据的操作都相对于关键点的方向、尺度和位置进行变换,从而提供对于这些变换的不变性。
  4. 关键点描述:在每个关键点周围的邻域内,在选定的尺度上测量图像局部的梯度。这些梯度被变换成一种表示,这种表示允许比较大的局部形状的变形和光照变化。

感知哈希phash比均值哈希要稳健,phash使用了DCT来降低频率。感知哈希算法可分为以下几个步骤:

  1. 将图片缩小32*32最好,这样可以简化DCT计算。
  2. 将图片色彩简化为灰度图像。
  3. 计算DCT,使用32*32的DCT变换。
  4. DCT的结果是3232的矩阵,只要保留左上角的88矩阵就可以了,因为这部分呈现了图片中的最低频率。
  5. 计算DCT的平均值。
  6. 根据8*8的DCT矩阵来与平均值进行比较,大于平均值的为1,小于的为0。
  7. 构造图片矩阵。

均值哈希的步骤:

  1. 先将图片缩小尺寸为8*8的正方形,64个像素。
  2. 将图片的色彩简化为灰度图像。
  3. 计算64个像素的灰度平均值。
  4. 将每个像素的灰度值与平均值进行对比,若大于平均值,即为1,小于平均值即为0。
  5. 将上一步得到的64个值组成的称为这个图片的指纹。
  6. 若要比较两个图片,就将第五步得到的进行比较,计算不同位的个数。

研究成果

概述

  • 实现androidiOS客户端获取、上传图片到服务器
  • 实现服务器对客户端上传的图片进行图像匹配并返回视频地址
  • 实现客户端通过返回的视频地址自动全屏播放视频
  • 分别采用不同的图像匹配算法进行验证

待优化的问题

  • android端目前采用的是拍照上传的模式而并非获取实时帧,可以对其获取图片的方式进行改进真正达到what you see is what you can get more的实时获取。
  • 图像匹配算法的优化,目前实现的算法并没有具备实时性与准确性。SIFT算法由于要提取特征点、进行特征点匹配等复杂的动作,使得其实时性达不到要求。感知哈希对于图片匹配的准确性有待提高。我个人觉得后期可采取利用大量图片进行试验,从而根据实际需求选择最为适合的算法
  • 对于每一个视频提取关键帧的方法以及关键帧的存贮方式。

本项目应用价值

  • 摆脱盲目逛景点困扰,通过摄像头可以看到、听到生动形象的视频与讲解。
  • 数字化与博物馆的碰撞,不仅改变了以往人们逛博物馆的方式,也丰富了人们可以获得信息量。