利用ORB/SIFT + k-means + BOF + GPS 的Building location and recgonition项目阶段总结

利用ORB/SIFT + k-means + BOF + GPS 的Building location and recognition项目阶段总结

Tags: ORB SIFT GPS 图像处理 区域划分 k-means opencv


本项目实现的目标功能描述:
       用户对建筑物拍摄一张图片,系统可正确识别并实时为用户返回关于该图片中建筑物的相关信息。

下面分两部分对该项目进行介绍:

训练部分

先用一幅流程图粗略展示一下训练过程:

流程图

数据采集

       为了后续的实验,我们首先需要进行图片数据集的构建,所以需要一个专门用来采集数据的app,利用这个app,我们对校园的各标志性建筑物进行了360度的拍摄。

app界面如图所示:

app界面

采集到的数据如下图所示:

图片集样例

       可以看到我们采集到的每个数据元素由两部分组成:一个是照片,一个是关于该照片的相关信息。(两个文件的文件名相同)

数据内容的说明:
* 第一行是该建筑物的名称
* 第二行tilt是手机的倾斜角
* 第三行distance是拍摄者与建筑物的距离
* 第四行height是预设置的,用户拍摄时候,手机离地的高度
* 第五行heading angle是,拍摄时候手机摄像头朝向与正北方的夹角
* 第六七行分别是拍摄者和建筑物的GPS坐标
* 第八行epe是GPS的误差值,单位是m
* 第九行光传感器是拍照瞬间,从光传感器取得值
* 第十,十一行是分别在拍照前后取的加速度传感器的三个轴的数值


       1.其中第三行的distance是利用手机的倾角tilt,手机的离地高度height,采用勾股定理公式计算出来的
       所以拍摄之前,我们有个步骤是将手机屏幕中间的加号标记对准目标的底部,以获得tilt

       2.第七行中的建筑物的GPS是利用采集到的手机的GPS,加上计算出来的distance计算得到的,计算函数如下:

private static String ConvertDistanceToLogLat(float distance, double lat1,double lng1, double angle){
    String logLat = null;       
    double lon = lng1 + (distance * Math.sin(angle * Math.PI / 180)/1000) / (111 * Math.cos(lat1 * Math.PI / 180));//将距离转换成经度的计算公式
    double lat = lat1 + (distance * Math.cos(angle * Math.PI / 180)/1000) / 111;//将距离转换成纬度的计算公式
logLat =   + lat + "," + lon   ;
return logLat;
}

        3. 并不用专门新建一个.txt文件来记录这个数据,可以将数据附加在图片的最后几个字节中,只是写入txt文件处理起来相对方便,待后期完善

数据筛选过滤

        在拍摄过程中,因为手机的不同,或是其它的特殊原因,总会出现一些数据不合格,所以需要对得到的图片和对应的.txt文件进行过滤

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值