一、Texture descriptors(纹理特征算子)

(1)Examples: HOG,LBP,Haar

(2)原理:

    给定一个纹理区域,统一处理并提取可描述该区域的大量参数。对于输入区域的每一个patch而言,这些参数即使不同,往往也是非常相似的。参数通常是低质量的,只是因为数量巨大,所以才能用于分类任务。没有人能从这些数据中提取出有用的东西,或构建一个distance函数,又或给出一个threshold来判断“相似”或者“不相似”。只能手动选择成千上万的threshold。

    这就是为什么texture description通常由数据挖掘算法进行处理(SVD、ADA Boost等)。这些算法被用于,给定一些正样本和负样本,去找到一个能用于划分类别的threshold。甚至一些算法(boosting)尝试选择哪些更有用的特征,剔除那些不是很有用的信息。

(3)应用:

    Texture descriptors可以很好的工作于预定义object,并能很容易的被图片中fixed area描述,如(a car, a face, a letter, a sign)


二、Keypoint descriptors(关键点特征算子)

(1)Example: SIFT,SURF,FREAK,ORB,ASIFT,AGAST,...

(2)原理:

    给定一张随机图片,算法为每一个像素计算出一个interestingness”的函数,这是一种度量用于描述在另一张图片中有多大可能唯一确定这个点。因此这类算法分析像素周边的区域,并且进行各种类型疯狂的统计。

    当这些完成时,算法选出最感兴趣的那些点,并为它们计算相同的参数集合,被用于描述说明(类似name、或描述每一个点的hash函数)

    算法的最后一步,是匹配两个或多个图片,看他们是否含有相同信息(相同的keypoints)。与纹理类算法不同,keypoints算法并不对object的区域做假设,不需要也不输出关于object的轮廓信息(contour information),或位置信息,而是自动选择的点。

(3)应用:

    这就使得对于随机图片处理、测量随机图片的相似度而言更加有用。如果你想识别出猫,则没有多少用处,但是你想抓取那些把你室内照贴到网上的情况,则很有用。

    不像纹理算法,这里你能够设置并理解输出参数,你可以接受两张图片因为一些关键点匹配而得到图片匹配的结论,而且

homography可以被确定。这样仅有两个threshold被确定,而不是HOG那种几千个。



附录:

HOG:Histograms of Oriented Gradients 方向梯度直方图(通常配合SVM使用)

http://blog.csdn.net/liulina603/article/details/8291093

LBP:Local Binary Pattern,局部二值模式


http://answers.opencv.org/question/877/how-to-match-2-hog-for-object-detection/#882