android 多个小图片,android – 如何优化多个图像拼接?
我正在使用Visual Studio 2012,C中的多图像拼接.我根据我的要求修改了
stitching_detailed.cpp,它给出了高质量的结果.这里的问题是,执行需要太多时间.对于10张图像,大约需要110秒.
这是大部分时间所需的地方:
1)成对匹配 – 10张图像需要55秒!我正在使用ORB来查找特征点.这是代码:
vector pairwise_matches;
BestOf2NearestMatcher matcher(false,0.35);
matcher(features,pairwise_matches);
matcher.collectGarbage();
我尝试使用此代码,因为我已经知道图像序列:
vector pairwise_matches;
BestOf2NearestMatcher matcher(false,0.35);
Mat matchMask(features.size(),features.size(),CV_8U,Scalar(0));
for (int i = 0; i < num_images -1; ++i)
matchMask.at(i,i+1) =1;
matcher(features,pairwise_matches,matchMask);
matcher.collectGarbage();
它肯定会减少时间(18秒),但不会产生所需的结果.只有6个图像被拼接(最后4个被遗漏,因为图像6和图像7的特征点在某种程度上不匹配.所以循环中断了.)
2)合成 – 10张图片需要38秒!这是代码:
for (int img_idx = 0; img_idx < num_images; ++img_idx)
{
printf("Compositing image #%d\n",indices[img_idx]+1);
// Read image and resize it if necessary
full_img = imread(img_names[img_idx]);
Mat K;
cameras[img_idx].K().convertTo(K,CV_32F);
// Warp the current image
warper->warp(full_img,K,cameras[img_idx].R,INTER_LINEAR,BORDER_REFLECT,img_warped);
// Warp the current image mask
mask.create(full_img.size(),CV_8U);
mask.setTo(Scalar::all(255));
warper->warp(mask,INTER_NEAREST,BORDER_CONSTANT,mask_warped);
// Compensate exposure
compensator->apply(img_idx,corners[img_idx],img_warped,mask_warped);
img_warped.convertTo(img_warped_s,CV_16S);
img_warped.release();
full_img.release();
mask.release();
dilate(masks_warped[img_idx],dilated_mask,Mat());
resize(dilated_mask,seam_mask,mask_warped.size());
mask_warped = seam_mask & mask_warped;
// Blend the current image
blender->feed(img_warped_s,mask_warped,corners[img_idx]);
}
Mat result,result_mask;
blender->blend(result,result_mask);
原始图像分辨率为4160 * 3120.我没有在合成中使用压缩,因为它降低了质量.我在其余的代码中使用了压缩图像.
正如您所看到的,我修改了代码并减少了时间.但我仍然希望尽可能减少时间.
3)查找特征点 – 使用ORB. 10张图片需要10秒钟.为图像找到1530个最大特征点.
55 38 10 = 103 7其余代码= 110.
当我在android中使用这个代码时,它需要几乎整个智能手机的内存(RAM)才能执行.如何减少Android设备的时间和内存消耗? (我使用的Android设备有2 GB RAM)
我已经优化了其余的代码.任何帮助深表感谢!
编辑1:我在合成步骤中使用了图像压缩,时间从38秒减少到16秒.我还设法减少了其余代码的时间.
所以现在,从110 – > 85秒帮助我减少成对匹配的时间;我不知道减少它!
编辑2:我在matchers.cpp中找到了成对匹配的代码.我在主代码中创建了自己的函数来优化时间.对于合成步骤,我使用压缩直到最终图像不会失去清晰度.对于特征查找,我使用图像缩放以缩小的图像比例查找图像特征.现在我可以轻松缝合多达50张图像.
android 多个小图片,android – 如何优化多个图像拼接?相关推荐
- 【Android 安装包优化】Android 中使用 SVG 图片 ( Android 5.0 以下的矢量图方案 | 矢量图生成为 PNG 图片 )
文章目录 一.Android 5.0 以下的矢量图方案 二.矢量图生成为 PNG 图片 三.完整的 build.gradle 构建脚本 四.编译效果 五.参考资料 一.Android 5.0 以下的矢 ...
- android 查看多个图片,android提取视频多张图片和视频信息
android提取视频多张图片和视频信息 话说2016年的直播比较火,2017年短视频又火了.但对于开发者来说隐藏在这背后的技术才是我们所关心的,毕竟我们是靠技术吃饭的. 现在在安卓中多媒体服务比较强 ...
- android画圆形背景图片,android圆形图片,圆形背景文字的CircleTextImageView开源组件...
转[http://blog.csdn.net/ys408973279/article/details/50350313] 在项目中我们经常遇到需要显示圆形头像的需求,一般我们都使用hdodenhof/ ...
- android工程换背景图片,Android初学者:用知乎Matisse开源项目制作更换应用背景图片功能...
前言 我搜索了下关于知乎Matisse的使用教程甚少,于是我就想着来做一个教程,这个教程是针对初学者的,因为我自己也是一个初学者,希望对各位刚刚接触Android开发的小伙伴有帮助! 关于Matiss ...
- android glide 4旋转图片,Android 效率开发之图片---Glide 旋转图片处理
事实上Glide会对旋转的图片正确处理,比如你在三星手机上拍照旋转了90度,用Glide 加载的话,会正确显示. 通过Glide 强大的图片变换功能,我们也可以旋转图片,关于Glide 的图片变换请参 ...
- android编程 自动裁剪图片,Android编程实现调用相册、相机及拍照后直接裁剪的方法...
本文实例讲述了Android编程实现调用相册.相机及拍照后直接裁剪的方法.分享给大家供大家参考,具体如下: package com.cvte.health.phone; import java.io. ...
- android表情加文字图片,Android开发技巧之像QQ一样输入文字和表情图像
EditText和TextView一样,也可以进行图文混排.所不同的是,TextView只用于显示图文混排效果,而EditText不仅可显示,也可混合输入文字和图像,让我们先回顾一下图5.2所示的QQ ...
- android gridview横向显示图片,Android使用Gridview单行横向滚动显示
本文实例为大家分享了Android使用Gridview单行横向滚动显示的具体代码,供大家参考,具体内容如下 要想实现滚动显示,layout布局里必须要使用HorizontalScrollView,才能 ...
- android密码是小黑点,Android自定义密码样式 黑点转换成特殊字符
本文为大家分享了Android自定义密码样式的制作代码,黑点换成¥.%等特殊字符,供大家参考,具体内容如下 复制下面代码即可: 布局: xmlns:android="http://schem ...
最新文章
- python 爬取手机app的信息
- 《Flex 3权威指南》——Adobe官方培训教材
- 刷题笔记-2019年6月26日
- Python数据类型中的字典-创建和基本操作
- java继承总结_java继承总结(二)
- NumPy基础入门学习
- Machine Learning On Spark——基础数据结构(一)
- tensorflow基本教程
- python解析二维码_Python二维码生成识别实例详解
- dubbo实现原理之SPI简介
- [JavaScript]使用document.createDocumentFragment优化性能
- SpringBoot - 多Profile使用与切换
- 所有赚不到钱的人都是干了自己不愿意或者自己很讨厌的事
- linux日志打印规则,Linux 打印简单日志(一)
- Android SDK下载网址
- redhat7 linux修改语言,RedHatLinux7.1中语言化完全攻略(二)
- 联想计算机如何设置bios密码,联想bios网络管理员密码的设置方法
- 全概率公式和贝叶斯公式的应用 (概统1)
- 如何在中国大陆三大运营商申请公网IPV4地址
- 软件测试找游戏bug,豪之诺游戏测试常见Bug整理