5.2 理解直方图分析

5.2 理解直方图分析

直方图是对图像中每种颜色出现的次数的计数。通常,我们不单独计算所有可能的颜色;相反,我们把类似的颜色归类到一个单元中。在单元数较少的情况下,直方图占用的内存更少,提供了更粗略的比较基础。通常,我们希望在很多的单元(整个图像像素变化很大)和很少的单元(整个图像像素区域平淡)之间选择中间地带。BeanCounter,我们设定为32单元/通道(或一共32 ^ 3 = 32678单元),但你可以在代码中改变这个值来测试效果。

比较直方图可以告诉我们两个图像是否含有相似的颜色。这种相似性本身并不一定意味着图像中包含匹配的对象。例如,银叉和银币可能有类似的直方图。OpenCV支持几种流行的比较算法。我们将使用Alternative Chi-Square算法,该算法进行距离(不相似度)的度量,它严重凸显了一种颜色在一幅图像中很少见,但在另一幅图像中很常见的情况。下面是用数学符号表示的算法:
在这里插入图片描述
下面是等效的伪代码,它在两个一维的直方图中遍历对应的单元:

function altChiSq(hist0, hist1):
	assert(hist0.length == hist1.length) 
	dist = 0 
	i = 0 
	while i < hist0.length:
		dist += (hist0[i]-hist1[i])^2 / (hist0[i]+hist1[i])
		i += 1 
	dist *= 2 
	return dist

多维情况是类似的,只是它们涉及多个索引和嵌套的循环。

[所有的OpenCV的直方图比较算法和公式都可以在官方文档"http://docs.opencv.org/3.1.0/d6/dc7/group__imgproc__hist.html#ga994f53817d621e2e4228fc646342d386"中查看]

OpenCV提供了函数cv::clacHistcv::compareHist来计算直方图,以及测量他们的相似度.OpenCV用一个一维矩阵来代表一个颜色通道的直方图.如果在BGR图片中,使用3个通道的话,直方图就有3个维度.

[记住在OpenCV中,多维矩阵与多通道矩阵不同,许多OpenCV函数不能处理二维以上的矩阵。]

###返回到第五章目录###
###返回到书籍目录###

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值