图像处理总结

图像预处理

图像灰度化

为什么:
一般我们得到的图片是真彩色图片,每个像素有B,G,R三种色彩信息,一共占3个字节,当B=G=R时,图像只显示灰度颜色,仅包含亮度信息,不包含色彩信息,由原来的24位位图变成256级的灰度图像,便于存储,也提高处理效率。
方法:
-cv.cvtColor(img,cv.COLOR_BGR2GRAY)->gray

图像二值化

为什么:
灰度图像的像素级为256级,而二值图像的像素级为2级(只有0/255),后者能明显提高处理效率,其次,在一些场合中,为了得到感兴趣的区域,将图像的前景和背景分离,可以二值化将其看成是聚类或者是分类
方法:

  • OSTU(最大类间分类法)当阈值t为全局最佳阈值的时候,前景与背景之间的对比度最强
  • 自适应阈值化:考虑局部的阈值化,取领域的平均(_MEAN_C)或者高斯加权和(_GAUSSIAN_Ccv.adaptiveThreshold(),大图片若需要二值化一般剪切成小图片,然后进行自适应阈值化,达到最好的二值化效果图像变换

图像变换

平移翻转(不插值)缩放旋转剪切(插值)傅里叶变换(变换到频域—>有利于后续的滤波操作)

图像复原

图像的平滑(突出图像的宽大区域、低频成分、主干部分或抑制图像噪声和干扰高频成分,使图像亮度平缓渐变 ,减小突变梯度)
方法:

  • 归一化块(均值)滤波器 (Normalized Box Filter)(最简单的滤波器)

  • 高斯滤波器 (Gaussian Filter)(最有用的滤波器)输入数组的每一个像素点与 高斯内核卷积将卷积和当作输出像素值。GaussianBlur(src, dst, ksize, sigmaX, sigmaY=0, borderType=BORDER_DEFAULT )输入,输出,高斯内核大小,x偏差,y。偏差高斯平滑滤波器对去除服从正态分布的噪声是很有效的

  • 中值滤波:像素点领域的中值代替该像素值,它可以去除脉冲噪声、椒盐噪声同时保留图像边缘细节。
    均值滤波和高斯滤波运算主要问题是有可能模糊图像中尖锐不连续的部分。而中值滤波主要是用来解决这些问题的cv.medianBlur(image, 5)5代表卷积核的大小为5x5

  • 边缘保留滤波:边缘保持滤波器是在综合考虑了均值滤波器(平滑图像外还可能导致图像边缘模糊)和中值滤波器(去除脉冲噪声的同时可能将图像中的线条细节滤除。)的优缺点后发展起来的,它的特点是:滤波器在除噪声脉冲的同时,又不至于使图像边缘十分模糊

  • 双边滤波器:双边滤波的核函数是空间域核与像素范围域核的综合结果**bilateralFilter(src, d, sigmaColor, sigmaSpace, dst=None, borderType=None)**同时考虑空间与信息和灰度相似性,达到保边去噪的目的

图像增强

空间域法

  • 直方图均衡化(对于背景和前景都太亮或者太暗的图像非常有用),对图像中每个像素值的概率进行统计,按照概率分布函数对图像的像素进行重新分配来达到图像拉伸的作用,将图像像素值均匀分布在最小和最大像素级之间。使得图像对比度增强,图像更加清晰
    hist = cv2.calcHist([gray], [0], None, [256], [0.0, 255.0])
    images:图像\channels:通道\mask:图像掩码,可以填写None\hisSize:灰度数目
    ranges:分布区间
  • 滤波:均值滤波、中值滤波、高斯滤波(图像平滑和去噪)

频域法

  • 傅里叶变换只有频域信息,傅里叶变换值,当对应的复平面的旋转频率和原图像的正弦波/余弦波频率相同时(所有的曲线都是由不同的频率和周期的正弦波叠加而成的),质心会达到一个极大值,这样就可以分离(通过加低通频率或者高通频率,来消去某一个频率对曲线的影响)出曲线所包含的频率了
  • 小波变换小波变换通过选取合适的滤波器,可以极大的减小或去除所提取得不同特征之间的相关性.(小波变换同时具有时域和频域的信息.有两个重要的参数信息,scaling,当尺度变大时,对应的频率变小,可以捕捉低频的信息,即平滑的信息,反之,尺度变小,频率变大,捕捉高频信息,即边缘突变的信息,shifting,位移可以控制小波信号出现的位置,可以用来对其我们要在信号中捕捉的特征的位置),相当于滤波器(高通->增强边缘,使得图像清晰;低通->消除噪声)

图像分割

语义分割和非语义分割的共同之处都是要分割出图像中物体的边缘,但是二者也有本质的区别,用通俗的话介绍就是非语义分割只想提取物体的边缘,但是不关注目标的类别。而语义分割不仅要提取到边缘像素级别,还要知道这个目标是什么.同时,语义分割中又包含像素级的语义分割****(确定每个像素所属类别,仅仅区分类间区别FCN)实例分割(可以对类内元素进行区分,神经网络中的MAK-RCNN)
非语义分割:

  • 阈值分割:OSTU和自适应阈值化

  • 区域分割 :区域生长;区域分裂合并;分水岭算法(基于掩模的分水岭算法不会产生过分分割的效果(由噪声或其他不规律因素导致)分割流程:灰度化->二值化->距离变换(计算非零像素到零像素的最短距离,根据距离设置不同的灰度值)->寻找种子,根据距离变换的结果确定确切的前景和不确切的区域->-生成掩模图像>dst= cv.watershed(image,markers=markers)

    binary表示二值化后的图片;opening表示进行开运算消除噪声后的结果;第三个表示进行dilated运算后的膨胀图像,生成扩大的前景对象;第四个是进行距离变换后的图像(由opening对象的结果作为输入得到的);第五个显示确切的前景对象;第六个显示扩大的前景对象与确切的前景对象的差值对象;最后一张图是进行形态学操作后的图像

  • 聚类:K-means算法是将样本聚类成k个簇(cluster),具体算法描述如下图:
    图像处理总结_第1张图片

  • 边缘分割:常用差分求图像梯度,而在物体边缘处,可以利用梯度阈值进行分割。对于阶跃状边缘,其位置对应一阶导数的极值点,对应二阶导数的过零点(零交叉点)。因此常用微分算子进行边缘检测
    一阶微分算子有Roberts算子(它的定位精度高,对于水平和垂直方向的边缘,检测效果较好,而对于有一定倾角的斜边缘,检测效果则不理想,存在着许多的漏检。另外,在含噪声的情况下,Roberts 算子不能有效的抑制噪声,容易产生一些伪边缘。因此,该算子适合于对低噪声且具有陡峭边缘的图像提取边缘。)、Prewitt算子和Sobel算子(grad_x = cv.Sobel(image, cv.CV_32F, 1, 0) 1.0代表x方向的微分,0,1代表y方向 gradx = cv.convertScaleAbs(grad_x) gradxy = cv.addWeighted(gradx, 0.5, grady, 0.5, 0))二阶微分算子有Laplace(边缘更细腻(dst = cv.Laplacian(image,cv.CV_32F)
    lpls = cv.convertScaleAbs(dst)))算子和****Kirsh算子等。由于边缘和噪声都是灰度不连续点,在频域均为高频分量,直接采用微分运算难以克服噪声的影响。因此用微分算子检测边缘前要对图像进行平滑滤波。LoG算子和Canny算子是具有平滑功能的二阶和一阶微分算子,边缘检测效果较好,因此Canny算子也是应用较多的一种边缘分割算法(1.高斯模糊 - GaussianBlu 2.灰度转换 - cvtColor 3.计算梯度 - Sobel/Scharr 4.非极大值抑制 5.高低阈值输出二值图像 edge_output = cv.Canny(grad_x, grad_y, 30, 150,apertureSize=3) 30 为低阈值,150为高阈值,3 为sobel算子的卷积核大小。

  • 直方图:直方图图像分割算法利用统计信息对图像进行分割。通过统计图像中的像素,得到图像的灰度直方图,然后在直方图的波峰和波谷是用于定位图像中的簇

  • 水平集 :图像分割的实质就是曲线的演变,随意选取一条初始曲线,自适应的控制曲线中的点的运动的速度和方向,根据梯度值变化的大小来确定点运动的速度和方向的大小,对于分割曲线来说,它是一系列的某个level下的随着时间变化的点的结合

图像形态学操作

  • 开运算: 先腐蚀,后膨胀
    它具有消除细小物体,在纤细处分离物体和平滑较大物体边界的作用
    方法:灰度化->二值化->构建核(cv.getStructuringElement)->cv.morphologyEx

  • 闭运算: 先膨胀,后腐蚀
    它具有填充物体内细小空洞,连接邻近物体和平滑边界的作用。
    方法:灰度化->二值化->构建核(cv.getStructuringElement)->cv.morphologyEx

图像的特征提取

纹理特征

纹理特征的提取方法比较简单,它是用一个活动的窗口在图像上连续滑动,分别计算出窗口中的方差、均值、最大值、最小值及二者之差和信息熵等,形成相应的纹理图像。纹理特征不是基于像素点的特征,它需要在包含多个像素点的区域中进行统计计算。这种区域性的特征具有较大的优越性,不会由于局部的偏差而无法匹配成功。作为一种统计特征,纹理特征常具有旋转不变性,并且对于噪声有较强的抵抗能力。纹理特征也有其缺点,一个很明显的缺点是当图像的分辨率变化时,所计算出来的纹理可能会有较大偏差。另外,由于有可能受到光照、反射情况的影响从2-D图像中反映出来的纹理不一定是3-D物体表面真实的纹理。
方法:
灰度共生矩阵(计算相邻像素级的在整幅图像的统计值),对于纹理变化快的图像,矩阵对角线两侧的值较大,对角线上的值较小,变化缓慢,则矩阵对角线上的值小 。通过矩阵可以计算相应的对比度(值越大,图像越清晰),能量(矩阵中的值越小,表示图像越细致)当共生矩阵中所有值均相等或者像素值表现出最大的随机性时,熵最大;因此熵值表明了图像灰度分布的复杂程度,熵值越大,图像越复杂。

形状特征

Hough变换(直线检测和圆检测)
利用图像全局特性而将边缘像素连接起来组成区域封闭边界lines = cv.HoughLines(edges, 1, np.pi/180, 200)返回值就是(ρ,θ)。ρ 的单位是像素,θ 的单位是弧度。对图像中直线的殘缺部分、噪声以及其它共存的非直线结构不敏感。第二和第三个值分别代表 ρ 和 θ 的精确度。第四个参数是阈值,只有累加其中的值高于阈值时才被认为是一条直线

边界方向直方图HOG:
先利用微分算子,得到图像的边缘信息,然后做出关于边缘大小和方向的矩阵->构造图像灰度梯度方向矩阵(HOG)(归一化->l计算梯度-》基于梯度幅值的方向权重投影(将梯度方向划分为N等分,将图像分成多个小的cell,计算每个cell中的梯度方向的幅值,每m个cell合并为一个block,block的维数为(n*m维),将多个block进行归一化处理,将多个block串联起来就得到了该图像的特征描述子)

HOG的优点:
HOG表示的是边缘(梯度)的结构特征,因此可以描述局部的形状信息;
位置和方向空间的量化一定程度上可以抑制平移和旋转带来的影响;
采取在局部区域归一化直方图,可以部分抵消光照变化带来的影响。
由于一定程度忽略了光照颜色对图像造成的影响,使得图像所需要的表征数据的维度降低了。而且由于它这种分块分单元的处理方法,也使得图像局部像素点之间的关系可以很好得到的表征。

HOG的缺点:
描述子生成过程冗长,导致速度慢,实时性差;
很难处理遮挡问题。
由于梯度的性质,该描述子对噪点相当敏感
比较sift描述子:
sift描述子特征提取是将一组图像的sift关键点存储在数据库中,通过比对新的图像的sift描述子与数据库总的描述子之间的欧几里得距离找到候选的匹配特征,基于阈值判断是否匹配成功
区别
SIFT是基于关键点特征向量的描述,而HOG是将图像均匀的分成相邻的小块,然后在所有的小块内统计梯度直方图。
SIFT需要对图像尺度空间下对像素求极值点,而HOG中不需要。

你可能感兴趣的:(图像特征提取)