直方图的基本操作与高级应用
一、直方图的基本操作
直方图的数据结构与矩阵和图像数组的数据结构相同,但对这种数据结构的特定解释引出了一些专门针对直方图的新操作。下面介绍一些常见的基本操作。
1. 直方图归一化
在处理直方图时,首先需要将信息累积到各个区间(bin)中。之后,通常希望以归一化的形式处理直方图,使每个区间代表分配给整个直方图的总事件数的一部分。在 C++ API 中,可以通过以下两种方式实现:
cv::Mat normalized = my_hist / sum(my_hist)[0];
或者使用 cv::normalize 函数:
cv::normalize( my_hist, my_hist, 1, 0, NORM_L1 );
2. 直方图阈值处理
有时候,需要对直方图进行阈值处理,例如丢弃所有计数小于某个最小值的区间。与归一化类似,此操作可以使用标准的数组阈值函数来完成:
cv::threshold(
my_hist, // 输入直方图
my_thresholded_hist, // 结果,所有小于阈值的值设为零
threshold, // 阈值
0,
超级会员免费看
订阅专栏 解锁全文
17万+

被折叠的 条评论
为什么被折叠?



