一个简单的概述,首先我们需要了解一些图像的描述,这里的描述指的是能够描述图像亮度的变化。然后我们要了解一些图像处理的方法,值得注意的是——我们所说的图像运算其实都是一些关于矩阵的数学运算。简单的图像处理分为两类:点运算和群运算。
点运算就是计算一个新的图像点作为原图像上同一位置的点函数,是针对原图像上一个点的变换,该函数属于数学函数。还有一种常用的方法也归结到此类,根据图像计算并改变图像直方图,比如脂肪图均衡化。
群运算就是对于一个点的领域范围来做处理,该函数属于统计函数。
直方图即亮度直方图表示每个亮度级在图像中的占有率。在OpenCV的文档中,直方图的定义是对数据的集合,并将统计结果分布于一系列预定义的bins中。如果我们统计的是,灰度的直方图,则bins指将0~255分割成子区域。
按照灰度值去统计这些数字,可能会得到这样的图:
当然直方图可以统计的不仅仅是颜色灰度,也可以统计任何图像特征(如梯度,方向等等)。
OpenCV关于直方图的例程:直方图计算
OpenCV提供了一个简单的计算数组集(通常是图像或分割后的通道)的直方图函数 calcHist 。 支持高达 32 维的直方图。链接如下:
主要是理解使用split函数将图像分割成单通道数组
使用calcHist函数计算图像阵列的直方图
使用normalize归一化数组
获取到这些直方图后,有些时候我们会发现图像可能没有用到所有灰度级的,如果我们将图像拉伸来利用,这样我们的图像将变得更清晰。
图像均衡化就是通过拉伸像素强度分布范围来增强图像对比度的一种做法。均衡化指的是把一个分布(给定的直方图)映射到另一个分布(一个更宽更统一的强度值分布),所以强度值分布在整个范围内。
一些简单的流程可以看下这位的博客:
http://bbs.ednchina.com/BLOG_ARTICLE_219471.HTM