关于寻找shape特征(feature)的方法总结

哈哈, 刚刚在知乎看到类似的问题, https://www.zhihu.com/question/39513724 , 某位答主和我一样废话比较多, 我要是也能有人家一样的技术就好了. 这个链接涉及到模板匹配的实际问题, 高票答主提到的ESM, 结构特征ASM的, 我都是第一次看到. 即便是我之前在下面提到的ICP算法也没有实际去应用过, 计算机视觉的道路任重而道远啊.

                                                                                                                ----------------2016. 9.11   15:46


---------------------------------------------------------------------------------------------------------------------------------------------------


这两天等待投递简历回应的期间又从头看起了算法书,  

主要复习的是computer and machine vision 和 computer vision algorithms and applications, 

加上对应opencv2 cookbook 涉及到的大部分算法


关于特征的部分我这里做个总结,  尽量做全,  总结的可能会有不准确还希望读者有自己的判断, 欢迎留言探讨


HOG那篇论文中提到了Matching Shape

以及google到的 Matching Shape with a Reference Point 

和                     Hierarchical Matching of Deformable Shapes


我前面的博客内容大部分都是围绕着直线、圆、椭圆、多边形这类的shape特征写的,  像sift,surf,daisy之类的只写了一篇,  因为一开始只是想翻译, 措辞比较花时间, 没能写完.  还有一个重要的原因,  我认为像sift这样的东西,  本身就是实验得来的,  用的时候可能只管效果,  可能不怎么关心你这个是 harris-based  还是 hessian-based,  可能不会关心你这个是不是binary descriptor. 也许我需要精度高的用了sift,  也许我要实时强的orb,  甚至用freak.  也许什么时候计算机能力提高sift也能实时,  总之还是要看描述子本身的特性.  觉得这方面先读懂sift就够了, 大家又不去设计descriptor,  用到哪再看哪好了.

----------------------------------------------------------------

注:   实际上上面这段话还是有些偏颇的,  最近看的论文,  有人会修改descriptor.  另外二值描述子相对来说更快

                                                                                                        ------------2016.6.27

---------------------------------------------------------------


对于有噪点存在的shape特征,  一般都是用hough变换或者是ransac,  

其他方法我反正在computer and machine vision这本书里没有见过,  在algorithms and applications里也只多提了个vanishing point,  实际上也不是找shape特征, 找的是透视投影的视点,  可以用霍夫变换去找这样的视点.


对于能给出一般方程表示出的曲线,  ransac和hough变换都能找到,  可能要注意的是如果参数维度过高,  可能需要降维简化计算

对于不能给出一般方程的,  如果像简单的线、圆特征组合,  ransac和hough可能还能使用,  如果是复杂曲线, 用这两个找参数的思路可能就不行了.

下面我来说一个这两天在CSE586课件里面看到的检测方法(shape alignment)


关于寻找shape特征(feature)的方法总结_第1张图片

图片来源:  http://www.cse.psu.edu/~rtc12/CSE586/

对于这两条线,  我们要找到一个使下面式子取最小值的变换(平移+旋转+尺度,  x1, x2代表两条直线, T(x2)表示变换x2)

关于寻找shape特征(feature)的方法总结_第2张图片

图片来源: http://www.cse.psu.edu/~rtc12/CSE586/

有时候我们可能会不知道T,  这时就需要ICP算法(Iterative Closest Point)

算法介绍: 张正友 Iterative Point Matching for Registration of Free-Form Curves and Surfaces  

                 wiki      https://en.wikipedia.org/wiki/Iterative_closest_point



最后一种方法,  correlation(这个词我不知道该怎么翻译)

correlation我之前在特征匹配SSD提到过,  一开始求最小 sum square difference经过推导 到求 最大的correlation

也就是用Correlation-based Algorithms,  有求差的,  有求差的平方的,  具体不细讲了用到的话找这方面看看就好

correlation可能计算量要比前面大一些,  而且对于旋转之类的变换基本没有办法(遇到无法估计的R,T), 遇到缩放也比较麻烦, 要将待检测的图像进行一系列的缩小或放大,  多尺度的寻找要多很多计算量


ps :  关于特征检测,  一般就是用sliding window(滑窗), bounding box(外接矩形),  对于多尺度,  有改变滑窗大小的,  有改变待检测图像大小的,  bounding box一般直接resize就行,我不知道有没有bounding box+ sliding window 的,  对于机器学习来说,  输入的特征向量的维数需要一致. 对于深度学习,  可能就没有这样的要求, 我看到的都是用滑窗

你可能感兴趣的:(opencv与图像处理)