接着OpenCV的resize函数优化写,对于输入输出图像大小已知,且通道数相同的resize操作,可以使用查表的方法来进行优化,先生成输出图像中每个点对应原图的位置,然后拷贝原图像素点到目标图像。

这里的拷贝操作,也可以换成最邻近、插值等。

创建表

int createTable(int *table, int width_in, int height_in, int channels, int width_out, int height_out){float step_x = float(width_in)/float(width_out);float step_y = float(height_in)/float(height_out);int length = width_out * height_out;int loc_y = 0;int loc_x = 0;int bytes_per_line = width_in * channels;for (int i = 0; i < length; i++) {loc_y = i/width_out;loc_x = i%width_out;table[i] = int(step_y*loc_y) * bytes_per_line + int(loc_x*step_x)*channels;}return 0;
}

resize

void resizeByTable(uchar *input, int channels, int length, int *table, uchar *output){int mass = 4*(length/4);for (int i = 0; i < mass; i+=4) {memcpy(output+(i+0)*3, input+table[i+0], channels);memcpy(output+(i+1)*3, input+table[i+1], channels);memcpy(output+(i+2)*3, input+table[i+2], channels);memcpy(output+(i+3)*3, input+table[i+3], channels);}for (int j = mass; j < length; j++) {memcpy(output+j*3, input+table[j], channels);}return;
}

当然resize函数很多可以优化的方法,查表方法是比较暴力的一种方法,对于纹理细节丰富的图像进行resize,在我的mac(2.6 GHz Intel Core i5)上操作1080的图像相比OpenCV有接近4-5倍的速度提升,希望有更好的方法来完善resize操作。

resize函数查表优化相关推荐

  1. matlab怎么在表里查表,优化-如何在MATLAB中使用查找表

    我需要对一组2D数组(如果需要,可以使用3D矩阵)执行两个参数(一组:t,另一组来自数组)的指数运算. ????f(t,x)= exp(t-x) 然后,我需要在第三维中添加每个值的结果.因为使用bsx ...

  2. 代码优化-之-Base64编码函数的极限优化挑战

    代码优化-之-Base64编码函数的极限优化挑战                   HouSisong@GMail.com   2007.07.27 tag:速度优化,Base64,CPU缓存优化, ...

  3. pandas常用函数说明及速查表

    pandas常用函数说明及速查表 如果你用python做开发,那么几乎肯定会使用pandas库. Pandas 是 Python 语言的一个扩展程序库,用于数据分析. Pandas 是一个开放源码.B ...

  4. tp5循环查询语句_tp5 foreach 套循环的优化(就是foreach 里边再查表)

    优化建议: 1.不要foreach里边再查询表,因为循环多次查表会很占资源的 2.没有办法就关联表查询join 例子: 原写法: $rsdo=Db::name('order')->field(' ...

  5. C语言正余弦函数定点查表算法原理及实现

    如果用数学库中的sin和cos函数计算,可能涉及浮点.乘法.除法运算,运行速率较低.这里介绍一种正余弦查表算法. 参考代码:SMT32 FOC电机库的mc_math.c. 首先我们知道正弦和余弦的函数 ...

  6. 正切函数的查表法实现

    在嵌入式领域,三角函数运算比较影响效率,可以使用查表法提高效率 //1, 正切函数值表,90度时取值1000,这个还是浮点运算的,还是不够 const double TAN[91] = { 0,0.0 ...

  7. 编程示例:以人名为输入判断性别的函数 以查表的方式实现

    编程示例:以人名为输入判断性别的函数 以查表的方式实现 需求分析:功能是根据输入的人名,来判断人名的男女的可能性.限定条件是中国的汉族的人名. 格式如下: 输入是"孙 机    苏东海   ...

  8. python反三角函数arctan_arctan()函数的查表算法

    目标:实现反正切函数的查表算法,精度0.5°. 分析: f(x) = arctan(x)函数单调但非线性,越接近原点处,斜率越大. 90°比较特殊,其值为正无穷大,只要得到的正切值tana大于114. ...

  9. Matlab/Simulink中查表函数的应用

    1.1-D Lookup Table 模块 1-D Lookup Table 模块是最简单的查表模块 所谓查表,就是说目标为一个填满数据的表格或向量(1维)或矩阵(多维),根据对应维数的输人能够在表中 ...

最新文章

  1. javaweb学习总结(二十三)——jsp自定义标签开发入门
  2. 近期要推出的ISA2006系列文章
  3. linux文件夹前的描述,Linux对内存结构的描述
  4. 2017.9.2 校内模拟赛
  5. c语言中time相关函数
  6. android 绑定类名,Android Studio为Class跟Activity等添加注解
  7. 微型计算机系统的主存储器,微型计算机系统中 ,操作系统保存在硬盘上,其主存储器应该采用 ( )...
  8. 电大c 语言程序设计程序,中央电大 C语言程序设计A
  9. Python与Go插入排序
  10. 几种常见的 Kafka 集群监控工具
  11. 配置文件或模板中的占位符替换工具类.
  12. vue项目加载OCX控件以及控件的主动事件和回调事件的处理
  13. 他们说我根本不了解企业运作
  14. u-boot2020.04移植(1、u-boot的编译)
  15. meta标签中的http-equiv属性
  16. 翟佳:高可用、强一致、低延迟——BookKeeper的存储实现
  17. H3C交换机如何进行批量端口配置
  18. 112-RTKLIB中关于dcb文件读取的问题
  19. CNN 入门讲解:什么是全连接层
  20. 前端体系必备的软技能和知识点

热门文章

  1. USB WIFI 腾达811M无线网卡 -RT5370移植
  2. java画八卦_canvas画布——画八卦图
  3. 主板上集成显卡的计算机在进行显示,怎么查看自己电脑主板是否集成显卡
  4. 史上最大!亚马逊中国“真黑五”全球狂欢劲爆来袭
  5. 古筝d调变降e调怎么办_古筝转调方法_古筝怎么转调(2)
  6. #金专奖获奖方案展播# | 移动端云机魔测平台
  7. 1.魔金商城-会员登录注册相关
  8. R9 6980HX参数 r96980hx怎么样
  9. MySQL命令行下载安装配置——详细教程
  10. 软件测试-白盒测试:域测试