摘要:
1.原理 RGB无法直接转换成LAB,需要先转换成XYZ再转换成LAB,即:RGB——XYZ——LAB 因此转换公式分两部分: (1)RGB转XYZ 假设r,g,b为像素三个通道,取值范围均为[0,255],转换公式如下: (1) (2) (3) M= 0.4124,0.3576,0.1805 0. 阅读全文
摘要:
相信有些Android&图像算法开发者和我一样,遇到过这样的状况:要对Bitmap对象做一些密集计算(例如逐像素的滤波),但是在java层写循环代码来逐像素操作明显是不现实的,因为Java代码的运行速度太慢,而一副很小的240*320图像就有76800个像素,如果考虑到RGB三通道(或者ARGB四通... 阅读全文
摘要:
1.随机森林原理介绍 随机森林,指的是利用多棵树对样本进行训练并预测的一种分类器。该分类器最早由Leo Breiman和Adele Cutler提出,并被注册成了商标。简单来说,随机森林就是由多棵CART(Classification And Regression Tree)构成的。对于每棵树,它们 阅读全文
摘要:
Real Adaboost分类器是对经典Adaboost分类器的扩展和提升,经典Adaboost分类器的每个弱分类器仅输出{1,0}或{+1,-1},分类能力较弱,Real Adaboost的每个弱分类器输出的是一个实数值(这也是为什么叫“Real”),可以认为是一个置信度。和LUT(look-up... 阅读全文
摘要:
上次介绍的是顺时针旋转90度,最近用到了180度和270度,在这里记录一下。1.利用neon技术将矩阵顺时针旋转180度:顺时针旋转180度比顺时针旋转90度容易很多,如下图A1 A2 A3 A4 D4 D3 D2 D1B1 B2 B3 B4 顺时针旋转180度 ... 阅读全文
摘要:
一般的矩阵旋转操作都是对矩阵中的元素逐个操作,假设矩阵大小为m*n,那么时间复杂度就是o(mn)。如果使用了arm公司提供的neon加速技术,则可以并行的读取多个元素,对多个元素进行操作,虽然时间复杂度还是o(mn),但是常数因子会变小,并且在寄存器里的操作比在普通内存中还要快一些,所以会带来一定的... 阅读全文
摘要:
在对基于ARM-v7处理器及以上的程序进行优化时,可以使用neon优化技术来加速程序。不过搞这个的人比较少,所以网上有用的资料很稀少。我翻了半天国内国外的博客,发现还是ARM公司的帮助网站最有用:http://infocenter.arm.com/help/index.jsp如下面截图所示,在左面的... 阅读全文
摘要:
自己随便写着玩的,时间复杂度O(n^3),小矩阵使用没什么问题,大矩阵……还是用openCV或者其他的一些线性代数库吧高斯消元法具体内容自己google吧头文件#ifndef inverse_matrix_h_#define inverse_matrix_h_#includevoid inverseMatrix(double** input,double**output,int dimension);void swap(double** input,double**output,int dimension,int first_row,int second_row);void reorderOu 阅读全文
摘要:
做了不少NDK相关的工作,不知道别人有没有同样的困惑,经常在编译C/C++代码的时候会出一些error或者warning,然后在网上搜,发现在Android.mk或者Application.mk文件中加一些配置选项就能解决,但是加完之后却不知道这些都是干什么用的,或者找不到系统学习的地方。我猜可能是开发NDK的程序员对于利用NDK写代码的程序员的能力太过自信,所以没有给出什么参考资料,顶多就是NDK目录下的Doc。这就导致在优化动态链接库的时候,除了提升算法、代码级优化,往往不知从何下手。对于这个问题我也一直很头疼,不过最近算是有了点起色,下面是我个人的理解。所谓的Android.mk和App 阅读全文
摘要:
1.保存对象到文件中Java语言只能将实现了Serializable接口的类的对象保存到文件中,利用如下方法即可: public static void writeObjectToFile(Object obj) { File file =new File("test.dat"); FileOutputStream out; try { out = new FileOutputStream(file); ObjectOutputStream objOut=new ObjectOutputStrea... 阅读全文