文章目录
——零基础学习openCv或者其他计算机视觉、图像处理等之前必备的一些概念整理。没有实际操作和编程内容,只有先导概念。
图像保存格式
1 黑白图像
每个像素点只有0/1两种值,整个图像就是一个0/1矩阵。图片只有两种颜色,要么黑要么白,没有中间地带。
2 8位索引图像
又分为黑白图像和伪彩色两种。图像矩阵中的数值代表的是索引号。索引号导向一张调色表。每个索引号对应调色表中的一种颜色。也就是说8位索引图像最多有256种颜色组成。其中:
2.1 8位黑白图像
调色表中RGB分量值相等,也就是说图像只有灰度的区别。每个像素点有0~255这 2 8 2^8 28种值,数字越大亮度越高(越白)
2.2 8位伪彩色图像
调色表中RGB分量值不全的相等。因此表现出彩色。但颜色再多也只有256种。
3 真彩色图像
每个像素点直接就是 3 × 8 = 24 3\times8=24 3×8=24位,数据区可以拆分成三个矩阵,分别代表RGB三个分量。三张图片叠加就是真彩色。
图像几何变换
- 对图片进行大小形状位置变换。
- 二维和三维有所区别。
变换类型
- 图像平移
- 图像镜像
- 图像位置
- 图像缩放(放缩后数据量会增减)
- 图像旋转
图像预处理
-
图像增强:不考虑图片质量降低原因,关心突出图片中有用信息,不一定逼近原图
-
图像复原技术:针对降质原因,设法补偿,恢复原图
图像增强可在空间域和频域实现。空间域的处理办法有:
- 灰度变换
- 空间域滤波(平滑、锐化)
频域的处理办法有:
- 高通、低通滤波
- 带通、带阻滤波
灰度变换
按照一定的算法,逐个点改变其灰度,使图片更清晰
- 二值化处理:最基本最重要的处理方法,基本表达式
f ( x ) = { 0 ( x < T ) 255 ( x > T ) f(x)=\left\{ \begin{array}{c} 0&(x<T)\\ 255&(x>T) \end{array} \right. f(x)={0255(x<T)(x>T)阈值也不见得只能有一个,我可以取几个阈值,来进行带通/带阻滤波,提取出想要的灰度。这种方法也可推广到彩色图像,保留想要的颜色。
f ( x ) = { 0 ( x < T 1 ) 255 ( T 1 < x < T 2 ) 0 ( x > T 2 ) f(x)=\left\{ \begin{array}{c} 0&(x<T_1)\\ 255&(T_1<x<T_2)\\ 0&(x>T_2) \end{array} \right. f(x)=⎩⎨⎧02550(x<T1)(T1<x<T2)(x>T2) - 灰度直方图:统计一张图片里面每一个灰度值的像素点个数(出现次数)。横轴是灰度值,纵轴是像素点个数。但不统计每个灰度点的位置。因此灰度直方图无法转化为原图片。
直方图
直方图属性:
- 维度——灰度图的话一般只有一个维度
- bins——横轴级别划分
- range——定义域。灰度的话就0-255
其实不只灰度,还有图像的很多属性比如梯度、像素的角度等所有的属性都可以用直方图来表示。
图像平滑
图像平滑就是要去除图像上随机产生的一些噪声,保留有用信号,改善图像质量。这些噪声一般大小分布都是随机的,和周围像素显著不同。
一般有两种方法:
- 基于像素的点处理
- 基于模板的空域滤波
模板操作是非常常用的办法。模板也叫滤波器、掩膜、核或者窗。基于模板的方法(邻域处理方法):用某一个模板对每个像元及其周围邻域的所有像元进行某种数学运算(一般是灰度值和模板中的系数相乘然后平均),得到该像元的新灰度值。新的灰度值不仅与的该像元的原灰度值有关,而且还和邻域有关。
模板可以取成
N
×
N
N\times N
N×N方阵(N为奇数),如果方阵中的系数值全都一样那就叫线性平滑(邻域平均值法),不一样那就是非线性平滑(邻域加权平均法):当该像素值和周围相差大,那就多平均掉一点,否则就少平均掉一点或者直接用它本身。还有自适应平滑。
(感觉就是数字信号里面的平均值滤波)
模板加权求和的过程叫卷积。
图像边缘的像素,无法进行卷积运算,一般忽略处理,或者通过复制、人工赋值的办法给他周围加一圈
邻域平均滤波可能会造成细节的丢失,因此常用中值滤波来去除脉冲噪声。对于高斯噪声效果不如平滑处理。跟数字信号处理里面不同的是,窗口取成二维的。窗口常用线状、方形、圆形(适用于缓变或者长轮廓线物体)、十字(适用于含有尖顶的物体)、环形等。
图像锐化
用于突出细节,增强边界,便于提取、目标识别等。常用方法有:
- 微分运算
- 梯度锐化
- 边缘检测
微分运算
实际应用中一般用差分,有一阶差分和二阶。因为图像是二维的,因此需要一次双向差分,相当于水平差分和垂直差分然后做或运算。
梯度锐化
和二次函数求梯度很像。通常用模板实现。梯度锐化模板可以和前面的平滑模板结合起来,起到平滑噪声+锐化边缘的效果。
边缘检测
以下是常用的一些提取边缘的算子:
- 拉普拉斯算子:二阶微分,梯度的散度(想起了被万恶的电磁场支配的恐惧),模板矩阵中间的值为正,周围的是负数。可以强化突变,弱化缓变。
- Roberts算子
- Sobel算子
- Prewitt算子
- Krisch算子
- 将原始图像和拉普拉斯图像/经过微分运算的图像线性叠加,可以保持锐化的效果,又能复原背景信息。这就是高频提升滤波器。
图像分割
将图像分为一些有意义的区域,提取出某些目标区域图像的特征,判断图像中是否有感兴趣的目标。图像分割的基础是像素间的相似性和跳变性。
被分割出来的小区域之间互不相交,内部连通,没有过多小孔。区域内部有某种性质的相似性,比如灰度,纹理等。区域边界是明确的。
图像分割有以下几种方法:
- 边缘检测
- 阈值分割:最常用,有直方图门限选择,半阈值选择,迭代阈值
- 边界方法:直接确定边界,有边界跟踪法,轮廓提取法
- 区域法: 像素聚类方法
图像阈值分割
基本原理:先转灰度图,然后二值化。二值化的阈值有很多选择方法。可以根据灰度直方图来选择阈值,也可以用迭代的方法。
图像边界方法
从边界内部出发,不断掏空边界内部的像素点;或者从边界上出发,不断检测下一个边沿。
区域法
判断每一个点和指定点相差值,小的话认为是同一区域。也可以先分割,判断是否一致,在合并。
图像测量
二值化图像,检测目标物体个数(标号),目标物体面积和周长(像素点个数)
图像投影
二值图像,所有黑色像素点全部往一个方向平易然后堆积起来。用于目标定位。
纹理的概念好tm复杂,以后再整吧,烦死了
图像频域变换
图像频域变换主要是二维的傅立叶变换和离散傅里叶,