条码和二维码搞了许久,之前在做二维码识别的优化,想能搞出多少花来呢?最近需要在极小的内存下完成二维码的识别和解码。顿时头大了,不过锅刚刚解了,就来说一说。

条码和二维码的特点就是我们前处理之后,都是处理的二值图像。那么在二值图像上操作有什么好方法呢?不卖关子,说出答案了:游程编码。…

最近英语课上聊到了互联网兴起以来,交流方式的变化,博客是互联网最早的形式之一,已经相当老了,现在的交流变得更加简短,与微博和朋友圈不到一百字的简短相比,博客是相当长的了。可能是现代人太吝啬自己时间了,写博客的人越来越少,并且博客质量下降,得益于信息的快速传播,也出现了天下文章一大抄的现象。不过我想,还是有些东西需要实实在在的篇幅来沉淀的,于是想起有还有坑没有填,就快点过来把坑填完了。

通常我们使用游程编码的原因是因为游程编码更快,并且更加节省内存,游程编码可以做很多事情,其中就包括形态学操作,这篇博客将详细介绍在游程编码上实现形态学操作。…

上一篇博客是《基于最小二乘法的椭圆拟合》,这篇博客介绍另外一种方法。由于现在正处在人生的特(工)殊(作)时(太)刻(忙),所以没怎么写,主要还是贴论文。

不同于最小二乘法直接拟合椭圆方程,论文中通过惯量矩,来预测角度、长轴、短轴,结合中心,来计算得到椭圆参数。实际工程实践中采用游程编码表示区域,该方法亦是Halcon中计算区域等效椭圆的方法,详看论文,谢谢。…

这篇文章是 least-squares fitting of circles and ellipses 这篇paper的导读。我们如何使用最小二乘法去拟合圆和椭圆呢,当我们用“代数方程”来表示圆时,我们最小化这个目标函数的实际意义是什么呢?我们按照这个方程得到的结果却不一定是合适的。我们实际上想要的是实际中每个点,到该曲线上的距离最小。

于是,我们按照一个“几何方程”来进行构造。这个几何方程描述的优化方向是,每个点到曲线的距离最小。我们使用雅可比矩阵QR分解来解算圆的参数,对于椭圆参数,存在更多情况,看Paper吧:…

工作之后时间越来越少,也在思考繁忙之下自己是否仍对技术拥有热情。答案是肯定的,并且,身处这个行业,也是需要不断学习的,积少成多,滴水穿石。之前写博客,或多或少想分享些有用的东西,现在环境的改变已经使得这些越发困难了,但是仍可以通过博客记录自己学习和成长的脚步。以下是来自繁忙生活中一份简简单单的笔记:

Jacobian矩阵包含了我们需要计算输出和输入的所有偏导数,这样的矩阵被称为Jacobian矩阵。

或许我们只对其中的二阶导数感兴趣,或许因为高阶导数计算量过大,所以我们使用Hessian矩阵,该矩阵包含了一个函数的所有二阶导数。…

图像配准的方法大致分为三类,一类是基于灰度和模板的,这类方法直接采用相关运算等方式计算相关值来寻求最佳匹配位置,方法简单较为死板,一般效果不会太好。第二类是基于特征的匹配方法,如sift、surf点特征,或者向量特征等等,适应性较强。第三类是基于域变换的方法,采用相位相关(傅里叶-梅林变换)或者沃尔什变换、小波等方法,在新的域下进行配准。

我之前的博客介绍过傅里叶-梅林变换进行图像配准,其实也就是基于相位相关的原理,结合对数-极坐标变换进行图像配准,并给出了源码。这篇博客是对以上三类方法的小总结,无源码,都是废话,见谅。…

除了我们熟知的SIFT、SURF、ORB等特征点提取算法,OpenCV中还提供了十余种特征点提取算法。最近在整理以往的ppt和报告,看到其中一页ppt,发现已经忘得差不多了,就再写篇博客复习下好了,这篇博客注重对比,技术方面的内容不会太过细致,希望能有帮助。当然,文章末尾会提供这些算法OpenCV调用的实例代码。
首先,引发内容的就是下面这张ppt:(不要注意Why Surf了,当时根据具体应用场景所做的选择)左边一栏是特征点的数目,右边一栏是检测的速度,数据是在博主自己的测试集(大概四五百张图片)上测试的。…