OpenCV 图像处理——旋转
实现效果
保持原图内容不发生缩放;
旋转后空缺的区域为透明色;
关键函数
/**
* Imgproc.java
* 计算旋转矩阵
*/
public static Mat getRotationMatrix2D(Point center, double angle, double scale)
/**
* Imgproc.java
* 应用仿射变换
*/
public static void warpAffine(Mat src, Mat dst, Mat M, Size dsize, int flags, int borderMode, Scalar borderValue)
实现思路
首先尝试一下最简单的实现
Mat src = ......
点我阅读更多...
用于高效相似搜索的局部敏感哈希算法
问题背景
最近的项目遇到一个问题,我们的程序要不停的处理第三方源源不断发送过来的图片,出于某种需要,如果收到的图片和前面的图片有重复或者相似,那么就不再处理了。由于数据量很大,不可能每收到一张图片就暴力的对比前面的所有图片,所以就需要一种能够快速进行相似搜索的算法。当然类似的问题已经有很多成熟的方案了,这里就记录一下我所理解的局部敏感哈希算法原理。
问题分解
相似搜索大致可以分为下面几个子问题:
对我们要搜索的对象做编码,将需要占据大量内存的图片、文本或者其他什么玩意儿映射成一个字符串或者整数,此编码在这里又被称为签名向量;
选择距离度量函数,确保相似的签名在度量空间中有较近的距离;
建立签名向量的数据结构,使得相似签名可以很高效的搜索出来。
第一个问题我们采用...
点我阅读更多...
XGBoost 算法原理详解(1)——目标函数、梯度提升、严格的贪心优化算法
参考论文:XGBoost: A Scalable Tree Boosting System
按照惯例,我们先约定一些符号性的内容
训练集
\[\mathcal{D} = \{(x_i, y_i)\},\quad x_i \in R^m, y_i \in R , i=1..n\]
每个样本的特征维度为 \(m\),样本总量为 \(n\)。
模型
\[\hat{y}_i = \phi(x_i) = \sum_{k=1}^K f_k(x_i), \quad f_k \in \mathcal{F}\]
模型用函数 \(\phi(x)\) 表示,\(\hat{y}i\) 是测试样本使用模型推理的结果。可以看到,模型是多个函数的叠加,这里的每个 \(f_k\) 都是决策树空间...
点我阅读更多...
面向组合子编程的应用实践—-影视节目名称匹配
最近有个项目,需要根据用户输入的影视节目名称来查询我们数据库里面对应的节目,数据表结构如下所示,用户事先是不知道我们这边数据库里的节目名称的,比如 “xxxx 第3季”,不同的用户可能会输入不同的名称,例如 “xxxx3”、“xxxx:3”、“xxxx 第三季” 等等,这是很正常的现象,但却为我们的查询工作带来了困难。
id
name
1
abdc
2
cbsd
..
..
在这里,我想记录一下我的解决方案。我们把问题简化一下,分几个层次来讨论。首先,假如用户的输入与数据表的记录名...
点我阅读更多...
朴素贝叶斯分类器
在分类问题中,需要根据给定的特征向量 \(X = (F_1, F_2,..,F_n)\) 来预测样本所属的类别 \(C\),也就是说 \(C\) 的取值依赖于 \(X\),从概率的角度来看,就是说
\[p(C\mid X)\]
如果我们知道 \(p(C\mid X)\) 的具体形式,那么能通过计算 \(p(C\mid X)\) 在 \(C\) 取各类别时的值来判断 \(C\) 最可能的类别,即
\[c = \arg \max_C p(C\mid X)\]
利用贝叶斯公式,可以将其变换为
\[p(C\mid X) = \frac {p(X \mid C) p(C)}{p(X)}\]
其中 \(p(C)\) 是类先验概率,它的值可以从样本的分布来估计,\(p(X)\) 与类变量...
点我阅读更多...