【OpenCV】图像特征的提取以及相似性比较方法

来源:互联网 发布:独立域名和二级域名 编辑:程序博客网 时间:2024/05/22 05:14

一、直方图特征

1. 数据结构
CvHistogram

2. 操作函数
cvCreateHist
cvQueryHistValue_1D
cvGetHistValue_1D
cvNormalizeHist
cvThreshHist
cvCopyHist
cvGetMinMaxHistValue
cvCalcHist
cvCompareHist 


3.比较方法

五种比较方法:

 CV_COMP_CORREL 

 CV_COMP_CHISQR

 CV_COMP_INTERSECT 

 CV_COMP_BHATTACHARYYA 

 EMD


4. 应用
HSV: H(色调) S(饱和度) V(亮度值)
a. EMD 方法 利用直方图的距离测量来代替直方图的匹配策略
光线的变化引起图像颜色值的变化
cvCalcEMD2
b. 反向投影(back projection)
寻找目标
cvCalcBackProject()计算一个像素是否是一个已知目标的一部分
cvCalcBackProjectPatch()计算一块区域是否包含已知的目标 (区域检测器 目标检测器)
得到目标图像的概率值, 用cvMinMaxLoc()确定目标在图像的位置
c. 模板匹配 cvMatchTemplate
不是基于直方图。通过在输入图像上滑动图像快对实际的图像快和输入图像进行匹配。

二、轮廓 特征

 cvFindContours()
根据边缘像素(canny)组装成轮廓。
用序列的数据结构表示轮廓信息。
处理的图像: cvCanny()输出图像或者 cvThreshold() cvAdaptiveThreshold()的输出图像
重要概念:轮廓树
外轮廓(c) 内轮廓(h hole)
1. cvFindContours()
输入图像 8通道 二值化的图像
2. 方法

 cvSubstituteContour

 cvEndFindContour
 cvApproxChains
cvFindContours
cvStartFindContours
cvFindNextContour

3. 绘制轮廓

cvDrawContours

4. 轮廓的识别和处理

简化或拟合轮廓,匹配轮廓到模板

a. 多边形逼近

cvApproxPoly
cvFindDominantPoints 寻找关键点

b. 特性概括
长度 其他度量 轮廓矩
长度 cvContourPerimeter() cvArcLength
面积 cvContourArea
边界框 cvBoundingRect cvMinAreaRect2
cvMinEnclosingCircle 最小包围圆
cvFitEllipse2 最佳拟合圆
c. 几何 几个实用函数
cvMaxRect
cvBoxPoints
cvPointSeqFromMat
cvPointPolygonTest

5. 轮廓匹配
a. 矩
轮廓矩:比较2个轮廓最简单的方式
struct CvMoments
cvContoursMoments 输入的是轮廓(CvSeq表示)
cvMoments 输入的是图像
cvGetCentralMoment
cvGetNormalizedCentralMoment
cvGetHuMoments Hu矩是中心矩和归一化矩的线性组合
b. cvMatchShapes 用Hu矩匹配

c. 等级匹配
轮廓树:此处的概念和之前的不同。
轮廓树的创建过程。
比较2个树的相似度。
cvCreateContourTree 创建轮廓树
cvContourFromContourTree
cvMatchContourTrees 比较

0 0
原创粉丝点击