我正在使用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 – 如何优化多个图像拼接?相关推荐

  1. 【Android 安装包优化】Android 中使用 SVG 图片 ( Android 5.0 以下的矢量图方案 | 矢量图生成为 PNG 图片 )

    文章目录 一.Android 5.0 以下的矢量图方案 二.矢量图生成为 PNG 图片 三.完整的 build.gradle 构建脚本 四.编译效果 五.参考资料 一.Android 5.0 以下的矢 ...

  2. android 查看多个图片,android提取视频多张图片和视频信息

    android提取视频多张图片和视频信息 话说2016年的直播比较火,2017年短视频又火了.但对于开发者来说隐藏在这背后的技术才是我们所关心的,毕竟我们是靠技术吃饭的. 现在在安卓中多媒体服务比较强 ...

  3. android画圆形背景图片,android圆形图片,圆形背景文字的CircleTextImageView开源组件...

    转[http://blog.csdn.net/ys408973279/article/details/50350313] 在项目中我们经常遇到需要显示圆形头像的需求,一般我们都使用hdodenhof/ ...

  4. android工程换背景图片,Android初学者:用知乎Matisse开源项目制作更换应用背景图片功能...

    前言 我搜索了下关于知乎Matisse的使用教程甚少,于是我就想着来做一个教程,这个教程是针对初学者的,因为我自己也是一个初学者,希望对各位刚刚接触Android开发的小伙伴有帮助! 关于Matiss ...

  5. android glide 4旋转图片,Android 效率开发之图片---Glide 旋转图片处理

    事实上Glide会对旋转的图片正确处理,比如你在三星手机上拍照旋转了90度,用Glide 加载的话,会正确显示. 通过Glide 强大的图片变换功能,我们也可以旋转图片,关于Glide 的图片变换请参 ...

  6. android编程 自动裁剪图片,Android编程实现调用相册、相机及拍照后直接裁剪的方法...

    本文实例讲述了Android编程实现调用相册.相机及拍照后直接裁剪的方法.分享给大家供大家参考,具体如下: package com.cvte.health.phone; import java.io. ...

  7. android表情加文字图片,Android开发技巧之像QQ一样输入文字和表情图像

    EditText和TextView一样,也可以进行图文混排.所不同的是,TextView只用于显示图文混排效果,而EditText不仅可显示,也可混合输入文字和图像,让我们先回顾一下图5.2所示的QQ ...

  8. android gridview横向显示图片,Android使用Gridview单行横向滚动显示

    本文实例为大家分享了Android使用Gridview单行横向滚动显示的具体代码,供大家参考,具体内容如下 要想实现滚动显示,layout布局里必须要使用HorizontalScrollView,才能 ...

  9. android密码是小黑点,Android自定义密码样式 黑点转换成特殊字符

    本文为大家分享了Android自定义密码样式的制作代码,黑点换成¥.%等特殊字符,供大家参考,具体内容如下 复制下面代码即可: 布局: xmlns:android="http://schem ...

最新文章

  1. python 爬取手机app的信息
  2. 《Flex 3权威指南》——Adobe官方培训教材
  3. 刷题笔记-2019年6月26日
  4. Python数据类型中的字典-创建和基本操作
  5. java继承总结_java继承总结(二)
  6. NumPy基础入门学习
  7. Machine Learning On Spark——基础数据结构(一)
  8. tensorflow基本教程
  9. python解析二维码_Python二维码生成识别实例详解
  10. dubbo实现原理之SPI简介
  11. [JavaScript]使用document.createDocumentFragment优化性能
  12. SpringBoot - 多Profile使用与切换
  13. 所有赚不到钱的人都是干了自己不愿意或者自己很讨厌的事
  14. linux日志打印规则,Linux 打印简单日志(一)
  15. Android SDK下载网址
  16. redhat7 linux修改语言,RedHatLinux7.1中语言化完全攻略(二)
  17. 联想计算机如何设置bios密码,联想bios网络管理员密码的设置方法
  18. 全概率公式和贝叶斯公式的应用 (概统1)
  19. 如何在中国大陆三大运营商申请公网IPV4地址
  20. 软件测试找游戏bug,豪之诺游戏测试常见Bug整理

热门文章

  1. VSCode PlatformIO开发STC单片机注意事项
  2. 【canvas教程】实现画布拖动、定点缩放,支持手势与鼠标滚轮操作
  3. 为什么4G速度比3G快?
  4. 织梦手机端静态页生成插件带自动更新
  5. 苏宁“1小时场景生活圈”会是零售业的新赛道吗?
  6. 部署kubernetes集群
  7. java使用poi-tl导出word及转换PDF后的合并导出pdf
  8. ctf.show 通关秘籍
  9. 如何将一行数据分列显示
  10. 基于RTMP的智慧数字人|AI数字人传输技术方案探讨