STL/算法
wishchin
CV算法工程师:从事室内场景感知方面工作,完成算法实验和软件开发。
展开
-
OS-鸿蒙系统-以及编译器
OS:操作系统,定义为系统性的操作集合。有更准确的数学形式化的定义。既然定义为OS,便引入了类似于环境科学或者生物学中"生命周期"思想。编译器: 把高级语言转化为计算机可执行机器语言(冯诺依曼-图灵机 二进制语言 或丹佛数据-指令语言)的系统软件。在计算机诸多课程里,离散数学可以称为是计算机理论的基础。私以为,偏工程学而非形式化系统数学的科目,编译原理貌似是最难的一个课程。像华为这样的企业,或许应该有更大的理想,不必放下身段和诸多小公司抢饭吃。对于编译器以及系统的开发,需要长久的支持更新,35岁优化掉原创 2020-11-25 00:22:23 · 1558 阅读 · 1 评论 -
GPC:使用GPC计算intersection容易出现的问题
在使用GPC计算多边形的交的时候,出现问题 //1.2. 另一种方法,判断新的多边形是否和老多边形相交 Poly cross = (PolyDefault) Clip.intersection( filed, polyNig ); 若filed 为两个分离的多边形,则出现计算问题: catch (Exception exception) { ...原创 2018-05-22 15:22:24 · 1278 阅读 · 0 评论 -
最优化方法系列:SGD、Adam
文章链接:Deep Learning 最优化方法之SGD 72615436本文是Deep Learning 之 最优化方法系列文章 整个优化系列文章列表: Deep Learning 之 最优化方法 Deep Learning 最优化方法之SGD Deep Learning 最优化方法之Momentum(动量) Deep Learning 最优化方法之Nest...转载 2018-03-15 17:58:08 · 3782 阅读 · 0 评论 -
CNN结构基元:纹理结构和纹理基元方程化GLOH、Gabor...(Code)
模式识别专注于寻找相同模式的共性和不同模式的分离。CNN把特征提取全局化,其中重要的一个是纹理特征,利用卷积核来表示纹理基元,用以重现模式,应如何显示表示。 第一次使用纹理特征,2012年,使用了灰度共生矩阵:灰度共生矩阵-/Laws特征。此后LBP特征也是一种常用的特征:局部二元模式LBP特征。 此外Gabor变换用以提取纹理,可以使用变换后的能量和方差进行计算特...原创 2017-12-26 11:02:28 · 5637 阅读 · 0 评论 -
无向图:计算亏格(环的孔洞)
过程出现了问题。主要是平面图中若严格按照直线边进行拓扑,出现了复杂图,即立体图。改进方法: 使用多边形并差计算,以此寻找孔洞,以此来应对复杂图的特殊情况。原创 2018-01-29 11:47:09 · 716 阅读 · 0 评论 -
CV:深入浅出的讲解傅里叶变换(真正的通俗易懂)
这是一篇很NB的文章,图文并茂............... 另外这个回答比较好:能不能通俗地讲解傅里叶和小波分析的关系? 第二个妹子头像的回答 原文出处: 韩昊 12345678910作者:韩昊知 乎:Heinrich微博:@花生油工人知乎专栏:与时间无转载 2018-02-04 15:02:36 · 4168 阅读 · 0 评论 -
无向图:查找最小环集合(最短路径回溯算法)
在无向图中查找最小环,就像需要查找一个蜂窝中所有孔洞,如果只查找数目,可以利用欧拉公式,若查找到所有环,需要更进一步的搜索。 方法:寻找到所有顶点的最短路径,对每一个顶点,取出环,循环删除顶点,输出所有最小环。 注意:拓扑图具有位置可变性,不影响图结构的拓扑变化。所以此方法,只能找到拓扑最小环,若想找到距离最小环,需要对边进行加权。转载 2018-01-17 09:52:41 · 5723 阅读 · 1 评论 -
环的寻找:寻找无向图中所有存在的环-删除点法
此文讨论一个无向图中存在环的问题,在不管多复杂的连通图中寻找出所有的环,使用删除点的方法。此外,这个版本的查找方法可以用于其他场景:找出无向图中所有的环的算法原创 2017-11-09 10:12:13 · 15644 阅读 · 5 评论 -
无向图:计算亏格(环的孔洞)
在不需要遍历出环的算法里面,可以通过欧拉公式直接计算亏格。孔洞的个数。 公式: nGenus = l-p+1; l为边的个数,p为点的个数。原创 2018-01-03 15:02:08 · 2335 阅读 · 0 评论 -
图论 Make Unique:有向图和无向图的一些算法
图论〔Graph Theory〕是数学的一个分支。它以图为研究对象。图论中的图是由若干给定的点及连接两点的线所构成的图形,这种图形通常用来描述某些事物之间的某种特定关系 ,用点代表事物,用连接两点的线表示相应两个事物间具有这种关系。原创 2018-01-03 09:48:58 · 3384 阅读 · 0 评论 -
最优化方法:梯度下降法、SGD
一、算法过程最速下降法(又称梯度法,或Steepest Descent),是无约束最优化领域中最简单的算法,单独就这种算法来看,属于早就“过时”了的一种算法。但是,它的理念是其他某些算法的组成部分,或者说是在其他某些算法中,也有最速下降法的“影子”。因此,我们还是有必要学习一下的。我很久以前已经写过一篇关于最速下降法的文章了,但是这里我还打算再写一篇,提供更多一些信息,让大家可以从更简转载 2016-04-01 16:04:54 · 5994 阅读 · 0 评论 -
图方法:寻找无向图联通子集的JAVA版本
图像处理中一般使用稠密方法,即对图像进行像素集合进行处理。在图像拓扑方面,更多地应用图计算方法。寻找无向图联通子集的JAVA版本,代码原创 2017-10-24 10:23:56 · 3813 阅读 · 0 评论 -
c++中的类型转换--reinterpret_cast
原文链接: 浅析c++中的类型转换--reinterpret_cast 转换reinterpret_cast作用为: 允许将任何指针转换为任何其他指针类型。 也允许将任何整数类型转换为任何指针类型以及反向转换。看着上面的描述就有种放浪形骸的赶脚。更会让人不寒而栗,太随意!语法还是老样子: reinterpret_cast < type-id > ( expression )滥用 re...转载 2018-03-22 15:06:24 · 1726 阅读 · 0 评论 -
点云插值:三维平面参数确定-不共线三点的平面方程
参考链接:三维空间中的平面方程 这个链接是错误的: http://blog.csdn.net/PengPengBlog/article/details/52774421 //获取平面方程//Ax + By + Cz + D std::vector<float> getPlaneParam(const std::vector<pcl:...原创 2018-03-22 11:10:55 · 4745 阅读 · 3 评论 -
乘法运算-快速傅里叶变换
貌似一种新的乘法快速计算方法已经提交论文,理论上可以达到大数乘法的效率极限。文章链接:多项式乘法到快速傅里叶变换;此文介绍的非常详细,极力推荐。文章链接:使用快速傅里叶变换计算大整数乘法;快速傅里叶变换,使用算法设计思想中的分治法,降低傅里叶变换的时间复杂度到 O(N logN)。傅里叶变换,算法的时间复杂度还是 O(N2)。关键在于:直接进行离散傅里叶变换的计算复杂度是 O(N2)。...转载 2019-04-15 20:57:18 · 1943 阅读 · 0 评论 -
OpenCV:判定曲线为弧线的简单方法
借鉴了一个前同事的一个代码段(良心代码),功能为判定曲线为弧线,并且给出拟合度;代码段: //寻找所有canny 弧 int findArcsOfAllCanny( cv::Mat &inMatCanny, std::vector<std::vector<std::pair< cv::Point, float> > > &ci...原创 2018-10-27 17:14:39 · 15602 阅读 · 12 评论 -
OpenCV:简单计算曲线弧度-弓形弧度
在判断曲线拟合度时候,需要进行曲线曲率计算。本文中使用根据弦的方法计算曲线弧度半径,得到曲率。首先判定是否为弧:简单判定:不要选取较多的点,若线段不是偏向一个方向,则不为弧 bool isArcCurve( std::vector<cv::Point> &curve ) { bool isArc = false; cv::Point ps, ...原创 2018-10-27 17:00:22 · 14038 阅读 · 4 评论 -
Lucas定理:线性求所有逆元的方法
Miskcoo's Space,版权所有丨如未注明,均为原创转载请注明转自:http://blog.miskcoo.com/2014/09/linear-find-all-invert主要绕过费马小定理来证明lucas定理,挺有意思..此外设置多进制计算机可以通过移位运算直接加快多进制运算的速度。1.Lucas定理Lucas定理详解Lucas定理解决的问题是组合数取模。数学上来说,就是求 (nm)...转载 2018-07-05 14:25:24 · 1584 阅读 · 0 评论 -
最优化方法系列:Adam+SGD-AMSGrad
自动调参的Adam方法已经非常给力了,不过这主要流行于工程界,在大多数科学实验室中,模型调参依然使用了传统的SGD方法,在SGD基础上增加各类学习率的主动控制,以达到对复杂模型的精细调参,以达到刷出最高的分数。 ICLR会议的 On the convergence of Adam and Beyond 论文,对Adam算法进行了 猛烈的抨击,并提出了新的Adam...翻译 2018-06-05 10:42:21 · 15732 阅读 · 1 评论 -
**ML : ML中的最优化方法
线性规划、整数规划、目标规划等方法其目标函数与约束条件都是决策变量的一次函数,全部为线性规划,具有统一的数学模型及如单纯形法这样的通用解法。1947年丹齐格(G.B.Dantzig)提出了线性规划的一般方法——单纯形法。随后专业丰富了线性规划的数学模型和求解方法,并深入分析细节,如对偶理论、线性目标规划等。关于一般非线性规划优化算法的求解,最优化方法一书已经介绍了很多的方法,比如有梯度下降法,坐标下降法,牛顿法和拟牛顿法,共轭梯度法。而机器学习中主要面对非线性问题,所使用的优化方法为非线性优化方法。原创 2015-12-24 12:28:44 · 3532 阅读 · 0 评论 -
最优化:**回归/拟合方法总结
回归分析是建模和分析数据的重要工具。本文解释了回归分析的内涵及其优势,重点总结了应该掌握的线性回归、逻辑回归、多项式回归、逐步回归、岭回归、套索回归Lasso Regression、ElasticNet回归、SoftMax回归等八种最常用的回归技术及其关键要素,最后介绍了选择正确的回归模型的关键因素。 当然数据并非我想面对的,所谓处理数据的根本目的是为了重建模型的结构...转载 2015-08-24 11:40:02 · 43083 阅读 · 0 评论 -
初中生问题:求任意凸多边形的交叉面积
多边形相交的面积,即是 所有交点和内点组成的多边形连成的面积。再把多边形拆分成三角形,根据s2 = p * (p - a) * (p - b) * (p - c);计算出累加面积。原创 2017-10-18 10:00:12 · 3365 阅读 · 0 评论 -
设计包含min()函数的栈
题目:定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。要求函数min、push以及pop的时间复杂度都是O(1)。 分析:这是去年google的一道面试题。我看到这道题目时,第一反应就是每次push一个新元素时,将栈里所有逆序元素排序。这样栈顶元素将是最小元素。但由于不能保证最后push进栈的元素最先出栈,这种思路设计的数据结构已经不是一个栈了。在栈里添加一个成员变转载 2016-05-18 19:21:27 · 377 阅读 · 0 评论 -
OpenCV直方图均衡化
对于排除一个点的直方图均衡化,可以用以下代码实现代码:namespace cvWish{ int stretch2(const cv::Mat& image,cv::Mat &result,int v) { cv::Mat hist(1, 256, CV_32SC1); int histSize = 256; float range[] = {0, 255}原创 2016-04-20 17:16:07 · 1022 阅读 · 0 评论 -
图像连通域检测的2路算法Code
本文算法描述参考链接:http://blog.csdn.net/icvpr/article/details/10259577两遍扫描法:(1)第一次扫描:访问当前像素B(x,y),如果B(x,y) == 1:a、如果B(x,y)的领域中像素值都为0,则赋予B(x,y)一个新的label:label += 1, B(x,y) = label;原创 2016-04-11 16:47:31 · 3192 阅读 · 0 评论 -
图像的连通域检测的堆栈算法
图像的连通域寻找在直觉上可使用递归的方法,进而可以使用堆栈数据结构进行改进。本文描述了一个图像寻找连通域的堆栈方法,四连通域和八联通域的选择可以使用一个参数来确定。原创 2016-03-20 10:28:27 · 2102 阅读 · 0 评论 -
OpenCV中的模板匹配/Filter2d
前言 模板匹配是在图像中寻找目标的方法之一。Come On, Boy.我们一起来看看模板匹配到底是怎么回事。参考链接:http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/histograms/template_matching/template_matching.html转载 2016-04-06 14:42:17 · 3309 阅读 · 0 评论 -
Matlab矩阵填充--Matlab interp2
Matlab interp2 为Matlab的矩阵填充函数,原创 2015-12-14 12:02:51 · 12026 阅读 · 0 评论 -
算法设计之—直接 遍历/穷举法、贪心算法、动态规划、回溯法、EM方法
算法是对完成特定问题的程序执行序列描述,表象为从问题初始状态到问题结束状态的所有路径之中寻找可行路径,若无先验经验,根据执行方式不同可以划分为无规则和有规则(启发式)方法。 无规则方法为穷举,改进方法为递推和迭代;有规则方法有分治、贪心、动态规划、分支定界法等。 穷举法:适用于解决极小规模或者复杂度线性增长,而线性规模不会很大的状态。 ...原创 2014-12-01 13:59:48 · 15543 阅读 · 2 评论 -
算法设计之—常用算法之-分支界定法
在进行机器学习特诊选择的时候,一种不需要进行遍历仍能取得最优解的方法为分支定界(branch and bound)法。这是一种自顶向下的方法,即从包含所有候选特征开始,逐步去掉不被选择的特征。此种方法具有回溯的过程,能够考虑所有可能的特征组合。分支定界法: 原理:分支界定法就是带剪枝技巧的搜索策略,通过预判和估算,一旦发现某个子解空间已经不可能存在可行解时,...原创 2014-12-01 13:59:35 · 2137 阅读 · 0 评论 -
OpenCv: 二维坐标的旋转方程
可以写成一个矩阵的形式,也可以写成向量的形式: b 为选转角度加pi/2 x1 = x cos(b) - ysin(b) ; y1 = x sin(b) + y cos(b).转载 2016-06-20 19:18:57 · 2612 阅读 · 0 评论 -
Sobel算子取代:基于特定点方向的canny边缘检测
前言: Canny边缘检测使用了Sobel算子,计算dx和dy两个方向,对于特定方向的边缘检测,可以作少量修改。代码:计算特定方向上的边缘 void CannyOrient( cv::Mat &_src, cv::Mat &_dst, cv::Point2f &seed, double low_thresh, double high_原创 2016-06-22 19:22:05 · 1590 阅读 · 0 评论 -
OpenCV: 图像连通域检测的递归算法
序言:清除链接边缘,可以使用数组进行递归运算;连通域检测的递归算法是定义级别的检测算法,且是无优化和无语义失误的。原创 2013-07-17 11:27:02 · 1594 阅读 · 0 评论 -
图像局部显著性—点特征(SiftGPU)
SIFT的计算复杂度较高。SiftGpu的主页:SiftGPU: A GPU Implementation of ScaleInvariant Feature Transform (SIFT)原创 2017-03-27 17:04:48 · 2069 阅读 · 2 评论 -
C++:C++在图片特定区域之外产生随机数
第一种:在某个数之前生成随机数;第二种,生成随机数,加上某个数,然后截断;第三种,指定范围内生成随机数;转载 2017-03-27 10:54:43 · 580 阅读 · 0 评论 -
OpenCV:OpenCV中的 parallel_for 和opencv parallel_for_
OpenCV使用OMP完成并行运算,在使用AdaBoost检测的时候,在cascadedetect.cpp 里面,大量使用parallel_for_(Range(0, stripCount), CascadeClassifierInvoker( *this, processingRectSize, stripSize, yStep, factor,candidatesVector,原创 2017-03-21 10:20:03 · 3708 阅读 · 0 评论 -
OpenCV边缘检测的详细参数调节
void findContours( InputOutputArray image, OutputArrayOfArrayscontours, OutputArray hierarchy, int mode, int method, Point offset=Point());原创 2016-03-24 13:46:22 · 8615 阅读 · 0 评论 -
Java:Java 队列的遍历
Java队列到底有没有可以遍历的功能呢?暂且试一下吧 参考链接:stl容器遍历测试原创 2016-05-18 19:26:08 · 4561 阅读 · 0 评论 -
图方法:二分无向图的联通子图查找
二分图又称作二部图,是图论中的一种特殊模型。 设G=(V,E)是一个无向图,如果顶点V可分割为两个互不相交的子集(A,B),并且图中的每条边(i,j)所关联的两个顶点i和j分别属于这两个不同的顶点集(i in A,j in B),则称图G为一个二分图。原创 2016-11-29 16:49:00 · 1602 阅读 · 2 评论 -
OpenCv:椭圆上点的计算方程
椭圆(Ellipse)是平面内到定点F1、F2的距离之和等于常数(大于|F1F2|)的动点P的轨迹,F1、F2称为椭圆的两个焦点。原创 2016-06-22 19:36:09 · 5073 阅读 · 5 评论