第F章图像特征统计及检测
湖南科技大学课程教案
(章节、专题首页)
授课教师: 课程名称 章节、专题 教学目标及 基本要求 王志喜 职称: 副教授 单位: 计算机学院
计算机图形图像处理技术 图像解析 掌握最常用的图像特征统计工具和二值化、边缘检测、 轮廓检测等常用的图像分割方法。 1、图像的灰度直方图 教学重点 2、图像的二值化 1、图像的灰度直方图 教 学 难 点 2、图像的二值化 3、轮廓检测
6
2. 一些细节
dims:指定需要统计的特征数目。在上例中,因为只统计灰度值, 所以 dims = 1。 sizes:指定每个特征空间子区域的数目。在上例中,sizes = {8}, 即 sizes[0] = 8。 ranges (均匀直方图) : 指定每个特征空间的取值范围, 即 ranges[i] 表示第 i 维的下界和上界。此时,第 i 维的整个区域均匀分割成 sizes[i]个子区域。 例如, 若 sizes = {8, 4}, 且 ranges={{0, 256}, {10, 70}},则 ranges[0]表示范围[0, 256),且均匀分割成 8 个子区域, ranges[1]表示范围[10, 70),且均匀分割成 4 个子区域。 ranges(非均匀直方图) :各特征空间取值范围的分割。例如,若 sizes = {4, 3}, 且 ranges = {{0, 56, 129, 233, 256}, {10, 20, 50, 70}}, 则 ranges[0]表示子区域[0, 56)、[56, 129)、[129, 223)和[233, 256), ranges[1]表示子区域[10, 20)、[20, 50)和[50, 70)。 在 OpenCV 中,ranges 统称为直方块范围数组。
3
15.1.1
直方图的表示
通常,灰度直方图的横轴表示灰度值,纵轴用来表示频度。 频度是具有某一灰度值(或灰度值属于某一子区域)的像素在图 像中出现的次数。例如,有一幅 4 4 的 8 灰度级图像,图像数据 及其灰度直方图分别如图 15-1 和图 15-2 所示。
1 2 1 2 3 4 2 4 2 0 3 4 7 2 5 2
4
15.1.2
OpenCV 中的数据集合的统计,并将统计结果 分布于一系列预定义的子区域中。 这里的数据不仅仅是灰度值,也可以是其它能有效描述图像 的特征(如梯度,方向等) ,还可以是多个特征空间中的数据(例 如,多通道图像) 。
5
1. 统计方法 举例说明。 假设有一个矩阵包含一张图像的灰度值 (如图 15-3 左侧所示) 。
2. cvCreateHist 函数原型:
CvHistogram *cvCreateHist(int dims, int *sizes, int type, float **ranges, int uniform);
功能:创建一个指定尺寸的直方图,返回新直方图的地址。 参数: dims:直方图的维数,即待统计特征的数目。 sizes:直方图各维的大小。 type:直方图的表示格式,可选 CV_HIST_ARRAY (密集数组)或 CV_HIST_SPARSE(稀疏数组) 。 ranges:直方图中各维的取值范围(均匀直方图)或 各维取值范围的分割(非均匀直方图) 。 uniform:均匀标识。
说明:
type=CV_HIST_ARRAY 表示用密集数组存储直方图数据, type=CV_HIST_SPARSE 表示用稀疏数组存储直方图数据。 对于均匀直方图,使用 thresh 数组存储方块范围,否则,使 用 thresh2。 mat 是内部使用的直方图数组矩阵头,表示直方图数据是如 何组织的。 8
32 75 40 75 96 128 80 135 64 15 100 150 224 64 160 64
图 15-3 一个数字矩阵及其直方图
灰度值的范围包含 256 个值,可以将这个范围分割成若干子 区域, 如 8 个均匀子区域, 即 [0,256) [0, 32) [32, 64) ... [224, 256) 。 将灰度值范围分割成若干子区域以后,统计灰度值属于每一 个子区域的像素数目。 采用这一方法来统计上面的数字矩阵,可以得到如图 15-3 右 侧所示的直方图 ( x 轴表示子区域,y 轴表示属于各个子区域的像 素个数) 。
7
15.1.3
OpenCV 中的相关类型和函数
1. CvHistogram
typedef struct { int type; // 直方图的表示格式 CvArr *bins; // 实际存储直方图数据的数组 float thresh[CV_MAX_DIM][2]; // 均匀直方图的各维取值范围 float **thresh2; // 非均匀直方图的各维子区域(分割) CvMatND mat; // 内部使用的直方图数组矩阵头 } CvHistogram;
1
1、图像的灰度直方图(0.75 课时) 2、图像的二值化(0.75 课时) 教学内容与 3、边缘检测(0.75 课时) 时间分配 4、轮廓检测(0.75 课时) 共计 3 课时。 习 题
2
第 15 章 图像解析 15.1 图像的灰度直方图
所谓“图像处理” ,无非就是对各个像素的灰度值进行或增或 减的计算处理。因此,在对图像进行处理前,对图像整体(当然 也可以是局部)的灰度分布情况作一些分析了解,有时是很有好 处的。对图像的灰度分布进行分析的重要手段就是建立灰度直方 图。灰度直方图是对图像的所有像素的灰度分布按灰度值的大小 显示其出现频度的统计图。
6 4 2 0 0 2 4 6
图 15-1 图像数据
图 15-2 灰度直方图
因为根据图像数据,灰度值为 0, 1, 2, 3, 4, 5, 6, 7 的像素的频 度分别是 1, 2, 6, 2, 3, 1, 0, 1,因此在灰度刻度的 0~7 处分别作一 条以该灰度值对应的频度值为长度的直线即可完成该图像的灰度 直方图。