C++
文章平均质量分 95
leonardohaig
这个作者很懒,什么都没留下…
展开
-
P3P相机姿态估计数学推导,求解及自定义实现
P3P相机姿态估计数学推导,求解及自定义实现微信公众号:幼儿园的学霸目录文章目录P3P相机姿态估计数学推导,求解及自定义实现目录前言相机到空间点距离求解角度θ的计算相机坐标系下的坐标计算自定义实现总结参考资料附录前言PnP问题(Perspective N Points)是指已知3D点的空间坐标及其在相机上的投影,求相机姿态的问题.投影方程可以表示为:λ[uv1]=K[Rt][XYZ1]\lambda\left[\begin{array}{l}u \\v \\1\end{array原创 2021-11-30 22:00:00 · 6020 阅读 · 4 评论 -
otsu算法详细推导、实现及Multi Level OTSU算法实现
otsu算法详细推导、实现及Multi Level OTSU算法实现目录文章目录otsu算法详细推导、实现及Multi Level OTSU算法实现目录简介推导及实现常规推导算法步骤及实现步骤实现从概率的角度解释推导实现扩展-MultiLevel OTSU延伸思考算法评价参考资料简介OTSU算法也称最大类间差法,有时也称之为大津算法,由大津于1979年提出,被认为是图像分割中阈值选取的最佳算法,计算简单,不受图像亮度和对比度的影响,因此在数字图像处理上得到了广泛的应用。它是按图像的灰度分布特性,将图原创 2021-10-14 09:00:40 · 8658 阅读 · 5 评论 -
C++设计模式——观察者模式(Observer Pattern)
C++设计模式——观察者模式(Observer Pattern)微信公众号:幼儿园的学霸目录文章目录C++设计模式——观察者模式(Observer Pattern)目录前言定义代码示例总结观察者模式和中介模式优缺点适用场景及应用示例参考资料前言观察者模式面向的需求是:A对象(观察者)对B对象(被观察者)的某种变化高度敏感,需要在B变化的一瞬间做出反应。举个例子,新闻里喜闻乐见的警察抓小偷,警察需要在小偷伸手作案的时候实施抓捕。在这个例子里,警察是观察者、小偷是被观察者,警察需要时刻盯着小偷的一原创 2021-09-15 22:27:59 · 7089 阅读 · 2 评论 -
自适应阈值化
自适应阈值化微信公众号:幼儿园的学霸目录文章目录自适应阈值化目录背景介绍及原理原理权重选择说明自定义实现结果对比参考资料背景介绍及原理原理图像阈值化的一般目的是从灰度图像中分离出目标区域和背景区域,然而仅仅通过设定全局固定阈值(对图像中的每个点其二值化的阈值都是相同的)的方法很难达到理想的分割效果。那么就需要一种方法来应对这样的情况。这种办法就是自适应阈值法(adaptiveThreshold),它的思想不是计算图像的全局阈值,而是根据图像不同区域亮度分布,计算其局部阈值,对于图像不同区域原创 2021-09-08 20:16:41 · 8311 阅读 · 1 评论 -
双边滤波算法原理及代码介绍
双边滤波算法原理及代码介绍微信公众号:幼儿园的学霸目录文章目录双边滤波算法原理及代码介绍目录介绍原理算法过程过程描述σ的意义及选取OpenCV 代码分析参考资料A bilateral filter is a non-linear, edge-preserving, and noise-reducing smoothing filter for images. It replaces the intensity of each pixel with a weighted average of i原创 2021-07-12 15:14:22 · 5848 阅读 · 9 评论 -
引导滤波推导及实现
引导滤波推导及实现微信公众号:幼儿园的学霸目录文章目录引导滤波推导及实现目录前言推导介绍推导引导滤波的算法流程及实现计算流程快速引导滤波流程自定义实现及效果引导滤波的应用应用优点其他参考资料前言引导滤波顾名思义,就是有选择(引导)性的滤波,其与我们经常提及的高斯滤波、双边滤波相比,它具有引导性,说具体点就是,它通过输入一副图像(矩阵)作为引导图,这样滤波器就知道什么地方是边缘,以此更好的保护边缘,最终达到在滤波的同时,保持边缘细节。各向同性滤波对待噪声和边缘信息采取一致的态度,从而导致噪声原创 2021-08-09 22:25:57 · 2512 阅读 · 0 评论 -
主成分分析(PCA)原理总结与实例
微信公众号:幼儿园的学霸最近在点云处理中,需要获取目标点云的最小包围盒(OBB),在网上看到很多利用PCA求解包围盒的代码,但是代码大多都比较简洁,属于PCA的一个应用,而没有原理的具体描述.因此,抽时间对PCA进行了一些梳理,以方便自己理解.特此记录.目录文章目录目录介绍向量的表示与基变换内积与投影基/基向量基变换的矩阵表示协方差矩阵及优化目标方差协方差协方差矩阵协方差矩阵对角化PCA算法步骤算法步骤数学实例数学过程python实现应用实例PCA算法总结参考资料介绍主成分分析(Princip.原创 2021-06-19 21:06:23 · 2168 阅读 · 2 评论 -
求解直线与平面的交点
求解直线与平面的交点微信公众号:幼儿园的学霸目录文章目录求解直线与平面的交点目录前言数学模型推导编程实现参考资料前言直线与平面的交点求解相关的内容在网上已经有很多资料进行介绍,目前所看到的博文在数学模型建立上都是正确的,但是其编程实现却存在问题,导致只有部分情况下能够正确求出直线与平面的交点,另外一些情况下求出的交点却是错误的.本文对原理进行推导并实现正确的编码.数学模型推导已知经过两点P1(x1,y1,z1),P2(x2,y2,z2)P_1(x_1,y_1,z_1),P_2(x_2,y_原创 2021-04-08 22:18:43 · 4315 阅读 · 5 评论 -
点绕坐标系旋转旋转矩阵推导、理解
点绕坐标系旋转旋转矩阵推导、理解开会过程中,翻笔记本时突然发现了之前推导的点绕坐标系旋转的旋转矩阵求解过程。在直觉上,一个点绕3个坐标轴旋转的旋转矩阵在形式上看起来是一致的,观感上比较优雅、整齐,但是一直没有仔细观察背后的原理。因此又对这个过程进行了一次推导,对这种整齐有了更深的理解,同时对记忆也有所帮助。特此记录。由于我们提到三维坐标系时,常用XYZ三个字母代替3个轴,为了不失一般性,避免字母先入为主产生的印象,在这里用UVW来指代右手三维坐标系。大拇指指向轴线方向,四指方向为旋转的正方向如下原创 2021-01-10 16:41:51 · 5880 阅读 · 1 评论 -
一种Tone Mapping 算法---Adaptive Logarithmic Mapping自适应对数映射
一种Tone Mapping 算法—Adaptive Logarithmic Mapping自适应对数映射微信公众号:幼儿园的学霸在查找图像增强方面的相关算法时,看到一篇博客,而博文中的核心是实现2003年的一篇论文,论文的原意是用在高对比场景下的自适应对数映射算法,但是查看博文中展示的图片效果,发现该算法在低光照下对色彩恢复效果也是很好,论文的名字是《Adaptive Logarithmic Mapping For Displaying High Contrast Scenes》。但是那篇博客中原创 2020-12-30 22:34:37 · 2406 阅读 · 2 评论 -
C++设计模式——职责链模式( Chain of Responsibility Pattern)
C++设计模式——职责链模式( Chain of Responsibility Pattern)目录文章目录C++设计模式——职责链模式( Chain of Responsibility Pattern)目录定义代码示例总结参考资料定义Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request. Chain the recei原创 2020-12-13 18:41:54 · 1091 阅读 · 0 评论 -
判断线段是否相交并求交点
判断线段是否相交并求交点公式推导设两条线段AB和CD,其端点分别为(xa,ya),(xb,yb)(xc,yc),(xd,yd)(x_a,y_a),(x_b,y_b) (x_c,y_c),(x_d,y_d)(xa,ya),(xb,yb)(xc,yc),(xd,yd).需要判断2条线段是否相交,若相交求交点。两条直线所在的参数方程为:{x=xa+α(xb−xa)y=ya+α(yb−ya){x=xc+β(xd−xc)y=yc+β(yd−yc)(1)\left\{\begin{align原创 2020-12-29 21:12:32 · 1557 阅读 · 0 评论 -
自动伽马校正(Auto Gamma Correction)算法
自动伽马校正(Auto Gamma Correction)算法目录文章目录自动伽马校正(Auto Gamma Correction)算法目录理论代码实现参考资料理论在对图像进行处理过程中,查找到一篇对图像进行自动gamma校正的论文,论文名称及链接见参考文献1.文章的核心描述如下:Average of brightness is simple element that can be computed in the least amount of time. Basic approach in原创 2020-12-09 20:52:30 · 12126 阅读 · 6 评论 -
自动白平衡--完美反射算法(Perfect Reflector Assumption)
输入图片灰度世界算法完美反射算法原创 2020-12-08 20:22:06 · 6373 阅读 · 7 评论 -
C++设计模式——中介者模式(Mediator Pattern)
C++设计模式——中介者模式(Mediator Pattern)微信公众号:幼儿园的学霸目录文章目录C++设计模式——中介者模式(Mediator Pattern)目录引言定义代码示例总结参考资料引言假设现在科技发达之后,家里所有设备都是智能化的,而小明在家洗澡的时候有个习惯就是喜欢听歌,而且洗澡时候还要把窗帘拉上。因此就有这种情形,小明要拉窗帘可能就是要洗澡,当然也要听歌,因此我们希望小明家的洗浴设备,音响设备和窗帘设备都能协同合作,不管操作哪种设备,其他两种设备都有一定响应,以此写出程序。原创 2020-11-23 20:13:56 · 1082 阅读 · 0 评论 -
自动白平衡--灰度世界算法(Gray World Algorithm)
自动白平衡–灰度世界算法(Gray World Algorithm)微信公众号:幼儿园的学霸目录文章目录自动白平衡--灰度世界算法(Gray World Algorithm)目录引言灰度世界算法原理opencv实现参考资料引言人的视觉系统具有颜色恒常性(Color Constancy),能从变化的光照环境和成像条件下获取物体表面颜色的不变特性,但成像设备不具有这样的调节功能,如彩色相机内部有三个CCD电子耦合元件,分别用来感受红绿蓝三种颜色的光线,默认情况下,三个颜色的感光电路信号的放大比例是原创 2020-11-22 20:41:24 · 14436 阅读 · 9 评论 -
RGB归一化及高效实现
RGB归一化及高效实现微信公众号:幼儿园的学霸介绍在图像处理中,RGB颜色模型是比较常用的格式,但是其存在一个明显的缺点:容易受到光照变化或阴影的影响,也就是说,同一位置,不同光照强度会导致图像的RGB值发生很大变化.而通过对图像的RGB色彩空间进行归一化处理,在某些情况下是去除光照和阴影影响的一种简单和有效的方法.假设图像上某点的的像素值为RGB,rgb表示归一化之后的值,那么RGB归一化的公式表示如下:r=RR+G+Bg=GR+G+Bb=BR+G+B(or b=1−r−g)r原创 2020-11-18 22:39:01 · 8616 阅读 · 1 评论 -
C++设计模式——备忘录模式(Memento Pattern)
C++设计模式——备忘录模式(Memento Pattern)微信公众号:幼儿园的学霸目录文章目录C++设计模式——备忘录模式(Memento Pattern)目录定义代码示例总结参考资料定义Without violating encapsulation, capture and externalize an object’s internal state so that the object can be restored to this state later在不破坏封装性的前提下,捕原创 2020-11-14 23:07:26 · 764 阅读 · 0 评论 -
PCL 绘制自定义大平面
PCL 绘制自定义大平面微信公众号:幼儿园的学霸目录文章目录PCL 绘制自定义大平面目录缘起介绍实现实现原理简介代码实现及效果展示缘起最近在项目中用到了点云平面拟合,采用RANSAC拟合平面后得到了平面参数A,B,C,D不能直观观察拟合的平面与输入点云的关系,需要将拟合的平面绘制出来。在pcl中,存在2个函数能够添加平面,但是添加的平面其size为1,不能完全覆盖点云区域,仍不能满足需求,搜索资料也未发现能够添加大平面的方法,经过查看pcl添加平面的源码,实现了一种添加大平面的方法。介绍在原创 2020-10-27 20:11:35 · 4677 阅读 · 13 评论 -
C++设计模式——装饰模式(Decorator Pattern)
C++设计模式——装饰模式(Decorator Pattern)微信公众号:幼儿园的学霸目录文章目录C++设计模式——装饰模式(Decorator Pattern)目录定义代码示例总结装饰模式和代理模式适用场景优缺点装饰模式的简化参考资料定义Attach additional responsibilities to an object dynamically keeping the same interface. Decorators provide a flexible alternati原创 2020-11-09 20:24:34 · 782 阅读 · 0 评论 -
C++设计模式——桥接模式(Bridge Pattern)
C++设计模式——桥接模式(Bridge Pattern)微信公众号:幼儿园的学霸目录文章目录C++设计模式——桥接模式(Bridge Pattern)目录引言定义定义结构代码示例总结桥接模式和策略模式桥接模式和适配器模式适用场景优缺点参考资料引言假如有三个品牌的手机vivo,oppo和小米,如果手机手机壳一体生产,会是这样的:对应到相应的类中,将是1+3+6=10个有继承关系的类,如果这时再加一个华为手机,无疑是要多增加3个类,会带来类的急剧增长。如果手机手机壳分开生产,然后按需搭配,原创 2020-08-16 13:22:35 · 945 阅读 · 0 评论 -
C++设计模式——享元模式(Flyweight Pattern)
C++设计模式——享元模式(Flyweight Pattern)微信公众号:幼儿园的学霸目录文章目录C++设计模式——享元模式(Flyweight Pattern)目录定义定义结构代码示例总结对比优缺点适用场景参考资料定义定义Flyweight Pattern: Use sharing to support large numbers of fine-grained objects efficiently.使用共享对象可有效地支持大量的细粒度的对象享元(Flyweight)模式的定义原创 2020-08-01 16:34:08 · 876 阅读 · 0 评论 -
C++设计模式——代理模式(Proxy Pattern)
C++设计模式——代理模式(Proxy Pattern)微信公众号:幼儿园的学霸目录文章目录C++设计模式——代理模式(Proxy Pattern)目录定义代码示例总结优缺点对比参考资料定义The proxy design pattern allows you to provide an interface to other objects by creating a wrapper class as the proxy. The wrapper class, which is the pr原创 2020-09-20 14:14:57 · 1541 阅读 · 0 评论 -
C++设计模式——组合模式(Composite Pattern)
C++设计模式——组合模式微信公众号:幼儿园的学霸目录文章目录C++设计模式——组合模式目录定义定义结构代码示例总结使用场景及注意事项优缺点参考资料定义定义Compose objects into tree structures to represent part-whole hierarchies.Composite lets clients treat individual objects and compositions of objects uniformly.将对象组合成树形结原创 2020-06-07 21:39:23 · 1221 阅读 · 0 评论 -
C++设计模式——外观模式(Facade Pattern)
C++设计模式——外观模式(Facade Pattern)微信公众号:幼儿园的学霸目录文章目录C++设计模式——外观模式(Facade Pattern)目录前言定义定义与特点结构代码示例总结相关设计模式优缺点使用场景参考资料前言不得不说,外观模式在开发过程中运用频率非常高,尤其现在各种第三方SDK“充斥”在我们的开发中,这些SDK大多会使用外观模式。通过一个外观类使的整个系统的接口只有一个统一的高层接口,这样能够降低用户的使用成本,也能够对用户屏蔽很多实现细节。外观模式也是我们封装API的常用原创 2020-06-06 22:36:06 · 1369 阅读 · 0 评论 -
C++设计模式——建造者模式(Builder Pattern)
C++设计模式——建造者模式(Builder Pattern)微信公众号:幼儿园的学霸目录文章目录C++设计模式——建造者模式(Builder Pattern)目录定义代码示例总结建造者模式与抽象工厂模式的比较优缺点适用场景参考资料定义The intent of the Builder design pattern is to separate the construction of a complex object from its representation. By doing so原创 2020-06-05 21:19:34 · 896 阅读 · 0 评论 -
C++设计模式——模板模式(Template Pattern)
C++设计模式——模板模式(Template Pattern)微信公众号:幼儿园的学霸目录文章目录C++设计模式——模板模式(Template Pattern)目录定义代码示例总结优缺点模板模式和策略模式的区别参考资料定义Define the skeleton of an algorithm in an operation,deferring somesteps to subclass.Template Method lets subclasses redefine certain step原创 2020-06-04 20:24:38 · 1042 阅读 · 1 评论 -
C++设计模式——原型模式(Prototype Pattern)
C++设计模式——原型模式(Prototype Pattern)微信公众号:幼儿园的学霸目录文章目录C++设计模式——原型模式(Prototype Pattern)目录定义代码示例普通指针方式实现智能指针方式实现总结为什么需要原型模式优缺点定义Specify the kinds of Objects to create using a prototypical instance, and create new objects by copying this prototype.用原型实例指原创 2020-06-02 20:22:17 · 1254 阅读 · 0 评论 -
C++设计模式——单例模式(Singleton Pattern)
C++设计模式——单例模式(Singleton Pattern)微信公众号:幼儿园的学霸目录文章目录C++设计模式——单例模式(Singleton Pattern)目录定义代码示例懒汉模式线程/内存不安全方式智能指针+双检锁模式和智能指针+call_once模式局部静态变量模式饿汉模式总结参考资料定义单例模式顾名思义,保证一个类仅可以有一个实例化对象,并且提供一个可以访问它的全局接口。实现单例模式必须注意一下几点:单例类只能由一个实例化对象。单例类必须自己提供一个实例化对象。单例类必须原创 2020-06-01 16:02:34 · 1071 阅读 · 0 评论 -
C++设计模式——适配器模式(Adapter Pattern)
C++设计模式——适配器模式(Adapter Pattern)微信公众号:幼儿园的学霸目录文章目录C++设计模式——适配器模式(Adapter Pattern)目录定义定义作用/解决的问题适配器模式中的角色代码示例总结优缺点适用场景参考资料定义定义Convert the interface of a class into another interface clients expect. Adapter lets classes work together that couldn’t ot原创 2020-05-31 12:20:17 · 1155 阅读 · 0 评论 -
C++设计模式——策略模式(Strategy Pattern)
C++设计模式——策略模式(Strategy Pattern)微信公众号:幼儿园的学霸目录文章目录C++设计模式——策略模式(Strategy Pattern)目录定义实现示例传统的策略模式实现使用函数指针实现策略模式工厂模式和策略模式对比总结参考资料定义Define a family of algorithms,encapsulate each one,and make them interchangeable.定义一组算法,将每个算法都封装起来,并且使它们之间可以互换策略模式是指定原创 2020-05-30 19:28:03 · 2504 阅读 · 0 评论 -
C++设计模式——工厂模式(Factory Pattern)
C++设计模式——工厂模式(Factory Pattern)微信公众号:幼儿园的学霸目录文章目录C++设计模式——工厂模式(Factory Pattern)目录简单工厂模式工厂方法模式抽象工厂模式总结参考资料工厂模式包括三种:简单工厂模式、工厂方法模式、抽象工厂模式。工厂模式的主要作用是封装对象的创建,分离对象的创建和操作过程,用于批量管理对象的创建过程,便于程序的维护和扩展。务必记住这个词:封装. 在工厂模式中,有什么想不通都可以思考一下这个词简单工厂模式简单工厂是工厂模式最简单的原创 2020-05-29 00:26:13 · 1226 阅读 · 2 评论 -
内存只增不减(非内存泄露)解决
在ADAS项目中,代码中加入了跟踪模块,使得程序的内存占用不断上升,但是却不是内存泄漏,断断续续经过近2周的排查,终于将问题解决,特此记录,希望对你有所帮助!原创 2020-04-08 20:00:32 · 5190 阅读 · 0 评论 -
c++ static与const关键字
c++ static与const关键字目录文章目录c++ static与const关键字目录static关键字对普通变量和函数对变量对函数对类中的变量和函数对成员变量对成员函数const 关键字const修饰变量与函数const与#define的区别其他static关键字对普通变量和函数对变量1.对局部变量在局部变量前加上关键字,局部变量被定义为一个局部静态变量。1)在内存中的位置...原创 2020-03-24 11:51:49 · 715 阅读 · 2 评论 -
RANSAC算法(附RANSAC直线拟合C++与Python版本)
RANSAC算法(附RANSAC直线拟合C++与Python版本)微信公众号:幼儿园的学霸个人的学习笔记,关于OpenCV,关于机器学习, …。问题或建议,请公众号留言;之前在利用双目摄像头进行车道线检测时,利用RANSAC算法在三维空间中进行路面估计,随后在估计的路面上进行车道线检测。当时由于时间紧急,未对该算法进行总结,目前,在利用神经网络检测车道线时,发现分割完毕后的车道线为一系列...原创 2020-02-29 11:56:35 · 15090 阅读 · 10 评论 -
x264及H264实现对OpenCV Mat的编解码
x264及H264实现对OpenCV Mat的编解码微信公众号:幼儿园的学霸个人的学习笔记,关于OpenCV,关于机器学习, …。问题或建议,请公众号留言;之前写的ADAS客户端软件和ADAS程序之间的视频传输采用了cv::imencode和cv::imdecode函数实现编解码,最近偶然间发现可以利用H.264对视频进行编解码,并且效果还不错,特此记录。目录文章目录x264及H26...原创 2019-12-19 22:24:47 · 6740 阅读 · 21 评论 -
OpenCV-透视变换及对二维点求透视变换之后的坐标
OpenCV-透视变换及对二维点求透视变换之后的坐标微信公众号:幼儿园的学霸个人的学习笔记,关于OpenCV,关于机器学习, …。问题或建议,请公众号留言;目录前言基本原理OpenCV透视变换函数代码前言 在做车道线检测中用到了透视变换的一点内容,用于将相机拍摄的图像转换到道路平行的视角下,即鸟瞰图,然后在鸟瞰图中进行车道线检测。 如图1、图2所示分别为相机...原创 2019-02-17 21:00:02 · 13995 阅读 · 7 评论 -
霍夫变换直线检测(Line Detection)原理及示例
霍夫变换直线检测(Line Detection)原理及示例微信公众号:幼儿园的学霸个人的学习笔记,关于OpenCV,关于机器学习, … 问题或建议,请公众号留言;给定一幅图像(一般为二值图像)中的点集合,如何检测直线?一种解决方法:任选一对点,决定一条线,然后测试所有其他点是否接近这条线,从而得出接近这条特殊线的所有点的子集。该方法比较复杂。另外一种方法便是采用霍夫变换。霍夫变换是图...原创 2019-02-24 20:47:24 · 106021 阅读 · 39 评论 -
图像形态学操作
图像形态学操作微信公众号:幼儿园的学霸个人的学习笔记,关于OpenCV,关于机器学习, … 问题或建议,请公众号留言;看到一段话,深有感触作为软件开发者,我们曾经写过的或者正在写的每一行代码都对我们的渐进式互联世界负有重要的责任。它在很大程度上改变了人类的命运。我们应该为自己所做的事情感到自豪,并且必须将责任进行到底,因为整个世界都在期待我们创造更多的魔力,实现更多的创新。...原创 2019-02-23 09:47:42 · 4810 阅读 · 0 评论 -
卡尔曼滤波(Kalman Filter)
卡尔曼滤波(Kalman Filter)微信公众号:幼儿园的学霸个人的学习笔记,关于OpenCV,关于机器学习, …。问题或建议,请公众号留言;目录[TOC]what is Kalman Filter举个例子,对于雷达来说,我们感兴趣的是其能够跟踪目标,但对目标的位置、速度、加速度的测量值往往存在噪声。卡尔曼滤波利用目标的动态信息,设法去掉噪声的影像,得到一个关于目标位置的好的估计...原创 2019-03-08 08:19:26 · 4165 阅读 · 1 评论