哈哈, 刚刚在知乎看到类似的问题, 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)
图片来源: http://www.cse.psu.edu/~rtc12/CSE586/
对于这两条线, 我们要找到一个使下面式子取最小值的变换(平移+旋转+尺度, x1, x2代表两条直线, T(x2)表示变换x2)
图片来源: 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 的, 对于机器学习来说, 输入的特征向量的维数需要一致. 对于深度学习, 可能就没有这样的要求, 我看到的都是用滑窗