直方图和模板
直方图是揭示数据分布的统计特性的工具,直方图的维度通常比原始数据低
opencv提供一种数据类型来表达直方图
opencv中直方图的表示
opencv使用数组来表示直方图
cv::calcHist():从数据创建直方图
基本直方图操作
直方图归一化
每个区间恰好是该区间内信息占总体的百分比
cv::Mat normalized = my_hist / sum(my_hist)[0] 或 cv::normalized( my_hist,my_hist,1,0,NORM_L1)
直方图二值化
cv::threshold() 使直方图二值化并丢弃所有元素个数少于给定值的空间
找出最显著的空间
cv::minMaxLoc() 找到出现最大值和最小值的位置
找出n维非稀疏数组中的最大值,最小值,使用cv::minMaxIdx()
需要手动分配存放位置的变量
比较两个直方图
cv::compareHist() 通过某些特殊判据对两个直方图的相似性进行度量
相关性方法cv::COMP_CORRL
基于统计相关性,实现皮尔逊(Pearson)相关系数
卡方方法cv::COMP_CHISQR_ALT
基于卡方检验统计量
交集法cv::COMP_INTERSECT
简单基于两直方图的交集,对两直方图共同部分求和
巴氏距离cv::COMP_BHATTACHARYYA
交集法在快速而粗略的匹配中效果好,卡方法和BHA法效果更好但速度慢,EMD给出最符合直觉的匹配效果,但是速度更慢
一些复杂的直方图方法
EMD距离
光照的变化会使颜色值产生大量的偏移–对于两个形状相同,但只是相对平移的两个直方图,距离度量会给出很大的值,EMD对这种平移不敏感
EMD本身是一个线性规划问题
Earth Move翻译过来是搬土,指把P位置的m个坑的土,用最小的代价搬到Q位置的n个坑中,dij是pi到qj两个坑的距离,fij是从pi搬到qj的土量,则WORK工作量就是要最小化的目标。线性规划求解出fij后,再用fij对WORK作个归一化,就得到了EMD
PREVIOUSopencv图像分析
NEXTopencv直方图和模板