图像内容分析

 

Python包:scikit-image / skimage

一、简介

大数据中90%是图像和视频

图像内容分析流程:图像获取->图像增强(如对比度等)->图像复原(包括模糊等)->形态学处理->图像分割->特征提取->图像分类(还有物体检测等)->图像检索

 

图像史:1826年第一张照片,1861年第一张彩色照片,1878第一个视频(组图)

 

图像基本概念

像素pixel        分辨率:①设备无关(如百万像素) ②DPI

位图bitmap(以像素阵列表示图像)

色彩深度:位图中存储一个像素所需的位数,1位为二值图,8位为灰度图(0为黑),24位为RGB彩图

 

点运算:输出图像各像素点灰度值仅由输入图像对应位置决定(与周围无关)

邻域运算:输出图像中每个像素由对应的像素及邻域内像素共同决定

 

图像特征:颜色(色彩直方图),纹理(样本点计算相关性和差异性),形状(边缘检测)

图像相似性度量:由图像在特征空间内举例的远近反映

语义鸿沟:人与计算机对同一事物的不同理解

 

二、底层图像处理-点运算

1.图像增强

增强图像中的有用信息,以改善视觉效果(允许一定程度失真)

图像的对比度:图像从黑到白的渐变层次(层次越多越清晰)

图像直方图:坐标为灰度值(或RGB值),纵坐标为图中出现概率

线性点运算:f(s)=m·s+b

对比度拉伸:通过拉伸一个给定图像的灰度值范围改进图像对比度,新图像中像素标准化:

反图像:将图像中每个像素灰度值取反加255所得

非线性点运算:①对数变换(用于增强图像的低灰度值部分)

  ②伽马变换(让图像变得更接近人眼感受的响应) c通常为1,γ可变

 

直方图均衡化:通过灰度变换将图像转化为具有均衡直方图的图像的点运算

直方图规格化:有选择地增强某灰度范围内对比度使具有特定直方图形式

 

三、邻域运算

1.邻域运算

邻域运算:输出图像中每个像素由对应输入图像及邻域内像素共同决定

滤波:保留或者过滤特定频段信号(低通、高通、带通、带阻(阻止中间某一段))

空间滤波器:邻域(形状&尺度),滤波模板(邻域各点权重矩阵),基于模板的邻域运算(相关、卷积)

 

相关运算:邻域按滤波模板加权平均算输出点

卷积运算: ,相当于滤波模板中心变换后加权平均

 

2.空间滤波

图像平滑:减少噪声和不需要细节(噪声往往有高空间频率,即有重复几何结构)

图像平滑的滤波模板:

①均值滤波(线性):选定邻域加权平均

②高斯滤波(线性):信号某个点在尺度空间的表达可以看成是原始信号在空间上一系列加权平滑(即高斯模糊)

③中值滤波(非线性):取邻域中灰度中值为输出像素值

④保守平滑(非线性):如果该点值高于周围最高值/最低值则取周围最高值/最低值,否则不变

 

图像锐化:增强细节

高通锐化(highpass):滤波模板有负数(邻域部分),计算结果可能为负,需要重新映射。能将图像边缘和其他亮度变化急速区增强,但图像失去原背景色调

图像内容分析_第1张图片

图像内容分析_第2张图片

高频强调锐化:在高通锐化基础上增加系数,相当于原图加边缘检测

图像内容分析_第3张图片

USM锐化(unsharp masking):将原图模糊处理,原图与模糊图相减提取出mask(类似于素描),加在原图上

 

四、图像梯度和边缘检测

1.图像梯度

梯度是向量,描述灰度变化激烈程度

图像数据离散非连续:

①一阶差分 △f(x)=f(x+1)-f(x) 

②二阶差分 △2f(x)=△f(x+1)-△f(x)=f(x+2)+f(x)-f(x+1)

 

常用一阶梯度算子(作为滤波器使用):常用方向包括x, y, 45度, 135度

图像内容分析_第4张图片

 

二阶梯度算子(对边缘定位精度高于一阶):

①拉普拉斯算子(1D只是x方向,2D是x加y方向):对噪声非常敏感

图像内容分析_第5张图片

②LoG算子(Laplacian of Gaussian):二维高斯的拉普拉斯算子(墨西哥草帽)

图像内容分析_第6张图片

 

 

2.边缘检测

边缘:图像中灰度值急剧变化的区域

边缘检测:求梯度局部最大值和方向

边缘类型:

图像内容分析_第7张图片

边缘检测标准:①尽可能多标识实际边缘 ②标出的边缘与实际边缘尽可能接近 ③噪声不应被标为边缘

 

边缘检测步骤:①图像平滑(有效减少噪声影响) ②边缘增强 ③边缘定位

 

Canny边缘检测步骤:①降噪(如高斯滤波)

②计算图像梯度(Prewitt或Sobel算子) 并去掉|G|小于某个阈值的点,对每个点计算梯度方向

③非极大值抑制:将梯度方向量化成4个基本方向(0,90,45,135),检测当前点是否为局部极大值(当前梯度值是否比梯度方向上两个近邻梯度值都大),不是则去掉

④双阈值+边缘跟踪:设置两个阈值,高于上界的为强边界,低于下界的不是边界,两者之间的为弱边界。与强边界相连的可作边界,其他边界被抑制

 

五、几何运算

1.尺度缩放

尺度缩放:将图片延展或压缩来放大缩小,对输出图像每个点分配数值,即输入图像对应位置的值,没有对应位置时需要插值

 

插值:①最近邻插值 ②双线性插值

双线性插值:周围四点按距离的倒数加权平均

图像内容分析_第8张图片

 

2.旋转

将(x1,y2)绕(x0,y0)旋转θ

图像内容分析_第9张图片

 

3.反射

图像以x0为中心反射

图像内容分析_第10张图片

 

4.平移

图像内容分析_第11张图片

 

5.仿射变换

仿射变换指一个空间向量进行一次线性变换并接一个平移成为另一个空间向量,本质上是旋转、反射、平移的结合(旋转并非上面的标准情况旋转,相当于换坐标系)

图像内容分析_第12张图片

图像内容分析_第13张图片

 

6.透视变换

形状位置任意改

图像内容分析_第14张图片

 

六、色彩

1.色彩基础知识

可见光波长400nm~700nm

 

色彩三要素:

①色相:由主波长决定

②饱和度:主波长的比例决定

③明度:色彩的明亮程度,由光亮多少决定(RGB中按305911公式计算明度)

CIE xyY色彩模型:xy描述色相、饱和度,Y描述强度

 

2.色彩空间

对颜色定量描述的数值空间

常用色彩空间:RGB(显示),HSV(直观),Lab(均匀感知),CMY(印刷),YCbCr(数字电视)

HSV色彩空间:Hue色相,Saturation饱和度,Value明度,与RGB可用公式换算

CIE Lab色彩空间:L亮度,ab为颜色对立维度(两个颜色)

 

颜色直方图:描述不同色彩在整幅图像占比,RGB三个图分别为对应颜色不同明度像素数(左边明度高)

 

3.色彩图像处理

一个像素点变为有三个数值的向量

伽马校正:曲线图横纵坐标为输入和输出的幂指数,用于补偿人眼对自然亮度的非线性感知(实质上是一个非线性映射)

色彩增强:通过分通道的直方图平均

彩色图像平滑:对色彩向量各个值领域分别平均

 

4.伪色彩

伪色彩处理:通过对不同灰度级赋予不同的色彩,给灰度图分配色彩以增加辨识度

 

七、色彩特征

1.色彩直方图

描述特定颜色在图像中出现的概率

色彩量化:将RGB值按区间归总到几个值(可将图像改为绘画风)

灰度量化:将RGB数值按公式计算变为灰度值

 

2.色彩一致区域

一致区域:区域内相连(斜着也算),像素同属一种颜色且个数≥τ

(可以先色彩量化再算区域)

 

3.色彩矩

描述色彩分布的统计特征,用RGB值计算

 

八、纹理特征

纹理是图像颜色与密度的空间分布的描述

1.基于空间域的纹理特征

①灰度共生矩阵GLCM:定义方向θ、步距d、阶数N(下例中θ=0,d=1,N=8)

灰度值域常为256,但N=256时矩阵稀疏,可先做灰度量化降维

图像内容分析_第15张图片

基于GLCM的纹理特征:

图像内容分析_第16张图片

 

②边缘直方图描述子EHD:x, y, 45度, 135度一阶梯度算子

③局部二值模式LBP:中心点灰度值与临近灰度值比大小,定义中心点到近邻距离R,近邻个数P(下例中R=1,P=8)

图像内容分析_第17张图片

 

2.基于频率域的纹理特征

①颜色纹理矩CTM

求像素近邻离散傅里叶变换DFT系数(基于相似纹理有相似DFT系数的假设)

图像内容分析_第18张图片

F(k)各个fn对应的系数填入滤波器对应位置,取k∈[0,4],其中k=1,2,3时有虚部,获得共8个滤波器,各滤波器计算相应均值及方差,得16维特征,RGB或HSV时48维

 

九、图像分割

将图像细分为多个图像子区域

1.二值化

给定一个阈值,大于阈值的设为灰度极大值,小于阈值的设为灰度极小值(实质是二分类问题)

大津二值化:找一个阈值使类内灰度值加权方差最小化(像素数作为权),等价于最大化类间方差

图像内容分析_第19张图片

 

2.K-means聚类

k个类中数据点到类中心mi 距离的平方误差最小

自适应聚类:①选距离最远两个像素点作初始中心 ②将各像素点分配到最近的类 ③计算类中心间平均距离q ④对每个类Ci找距离类中心mi 最远的像素点p,若p到m距离d>q/2则令p为新中心,返回步骤2

图像内容分析_第20张图片

3.区域生长

选取一个种子像素作为起点,设置生长规则(满足规则的纳入区域),按4领域或8邻域生长至没有符合规则的像素为止,从而生成有相似性质的区域

图像内容分析_第21张图片

 

4.基于图像分割的Felzenszwalb算法

将图片看作以像素为顶点的8邻域连通图,相邻像素点之间不相似度(如RGB欧式距离)为边权重,属于同一个区域的像素被一个最小生成树覆盖

 

操作实例:①对图像RGB三个通道分别高斯平滑 ②对每个像素点计算8邻域权重(RGB欧式距离) ③将所有边按权重大小排序 ④对任一顶点分别属于两个区域Ci Cj 的边ek ,若ek同时小于两个区域内的最大边则合并两个区域 ⑤合并面积过小的区域

 

5.Hough直线检测

数据空间与参数空间:对y=ax+b,前者xy为轴,后者ab为轴,数据空间的直线对应参数空间中一点(参数空间可转为极坐标)

 

给定形状的类型(直线、圆等)后,算法决定物体形状

霍夫变换(直线):①边缘检测得出一些边缘点 ②过每个边缘点,有无数个ab组合的直线经过,在参数空间可画一个曲线 ③对所有边缘点的参数空间曲线,取有最多曲线经过的点为最终参数结果

图像内容分析_第22张图片

 

十、形态学运算

1.结构元素

结构元素:用于检测图像形状的特殊邻域运算模板

对原图像的像素点集中每个点代入结构元素的中心点,若结构元素完全包含在原集中则保留

图像内容分析_第23张图片

集合间空间关系:包含(fit),击中(hit,即相交不包含),未击中(miss,即不相交)                 

 

2.形态学运算基本操作

①腐蚀运算:保留结构元素包含于原图像的所有部分(消除边界点,向内部收缩,可消除小而无意义的物体)

②膨胀运算:保留结构元素包含于或击中原图像的所有部分(将物体接触的背景合并,向外扩张,可填补物体内空洞)

※两个运算间存在对偶关系:(AC表示A的补集,B为结构元素)

③开运算:先腐蚀后膨胀(可消除小物体,平滑大物体边界且不明显改变面积)

④闭运算:先膨胀后腐蚀(用于填充物体内细小空洞,连接邻近物体,平滑边界并不明显改变面积)

※做过开运算后再做开运算对结果没有影响,闭运算同

  两运算间有对偶关系:

 

⑤击中-未击中变换HMT:使用两个结构元素分别对物体、物体的补集进行腐蚀运算,取两个结果并集的补集,得到物体边缘(两个结构元素分别为物体和物体的补集时可用于物体检测)

 

※形态学运算可用于降噪,空洞填补和边界提取

 

十一、局部特征

1.Harris角点检测器

小滑窗进行检测,滑窗在各点向周围各方向移动,一般移动无变化,遇边时沿边方向移动时无变化,遇角时各方向均有变化。

图像内容分析_第24张图片

图像内容分析_第25张图片

图像内容分析_第26张图片

图像内容分析_第27张图片

图像内容分析_第28张图片

※R对旋转不敏感(滑窗在角上时R不随滑窗旋转改变),对图像大小不敏感,对图像密度部分敏感

2.SIFT算法(尺度不变特征变换)

https://www.cnblogs.com/sonicmlj/p/7648068.html

用于提取部分特征描述子

步骤:①提取图像对尺度缩放和旋转不敏感的兴趣点(对每个点按不同σ作高斯模糊得多层,,相邻两层相减得高斯差分金字塔DOG,中间的检测点和它同尺度的8个相邻点和上下相邻尺度对应的9×2个点共26个点比较确保找出极值点)

②根据稳定程度对兴趣点筛选得关键点(去除低对比度点和边缘相应点)

③根据梯度方向给关键点分配方向(梯度计算)

④关键点特征描述,通过局部梯度计算得128维特征向量

 

词袋模型(BoW)

https://www.cnblogs.com/jermmyhsu/p/8195727.html

对所有图片的所有SIFT关键点进行k-means聚类,再统计每个图片各类关键点个数,以k维向量(直方图)标识每张图片

 

十二、图像检索

1.基于文本图像检索

输入文本,输出图像,对高视觉度图片效果好(名词性的“马”“车”等)

2.基于内容图像检索

输入图像,输出图像

查询图像特征提取→特征空间相似性度量→搜索结果 (结构存在语义鸿沟,即人通过事物对象判断相似,而非低层视觉特征)

3.基于概念图像检索

使用机器学习的方法,将查询图片标识语义类别并输出同类结果

跨媒体搜索:对文本、图像分别配映射矩阵映射到同一隐空间

 

你可能感兴趣的:(人工智能&数据挖掘)