复习的时候跟着笔记本上的知识点打算做一个整体的重点思路上的归纳(PS:就是想在优快云上发表人生第一篇笔记哈哈哈哈)后期可能有空会继续补充一些基础的算法哈哈哈,一些细节的算法可能会单独出文来进行介绍。
基本概念及算法
图像处理中的图像其实和其他信号相同,都是通过采样量化编码得到的。
灰度直方图
0-255(0是黑,255是白)
灰度直方图其实就是以灰度统计的像素分布的图,所以它的积分面积也就是图像的面积。
因此可以根据阈值设置,进行积分从而获取某一部分(前景或背景)物体的面积大小。
卷积
一、卷积的性质
卷积,考量中心像素的像素值与周围像素的像素值之间的关系
二、卷积的基本操作
- 边缘求取—梯度
梯度公式:
roberts:
prewitt:
− 1 − 1 − 1 0 0 0 1 1 1 \begin{matrix} -1 & -1 & -1 \\ 0 & 0& 0 \\ 1 & 1 & 1 \\ \end{matrix} −101−101−101
sobel
这种卷积核可以求取边缘的原因是,比如prewitt算子的Gx方向的算子,可以通过计算发现y上方向阶跃跨度大的点,这样的点的集合就是边缘,就是横向的边缘。 - 去噪处理—平滑
噪声导致图像某些部位的像素值突变,除噪的过程就是对图像灰度值变化做均一化
高斯平滑,中值滤波,均值滤波
其中高斯滤波的平滑程度与参数 σ \sigma σ相关, σ \sigma σ越大平滑强度越大。
图像间的基本操作
图像内部是点操作,图像之间是代数操作,几何操作
一、点操作
二、图像间加减乘除:
- 加法:多张图像取平均可以去噪
- 减法:去除背景可以做motion detection检测运动
- 乘法:二值图与原图相乘获得目标区域
- 除法:貌似没啥笔记,分母图片要加一个小小的数字吧
三、几何变换
改变空间坐标关系,平移,旋转,放大,缩小
放大需要插值,但是可能会引起梯田效应
四、图像的邻域操作
- connected component labeling
根据条件对图像进行分区,两个条件:连通性和灰度条件
连通性:四邻域或者八邻域
灰度条件(intensity criterion)(IC),灰度阶梯为5,可以作为条件则小于5即可被分为一个区 - labeling algorithm
根据连通性和IC进行分组,但是会有一些点同时满足两个IC,则分为是难以进行区分的点。(其实就是分界点吧,边界)
五、图像的特征(region property)
- 周长、面积、中心、半径、中心距、极值点、曲率
VTK&ITK
形态学及其二值化(二值)
一、性质:
应用:图像增强、分割、恢复、边缘、纹理
SE(structure element)结构化要素,SE需要定义中心点,空格子不算
- 膨胀(binary dilation)
本质上是图像平移,但是实际计算时类似卷积操作。 - 腐蚀(erosion)
- 开运算(opening)
变小
先腐蚀再膨胀
去除图像中孤立狭小的区域,是平滑操作 - 闭运算(closing)
变大
先膨胀再腐蚀
对图像进行填充工作,比SE小的部分都被填充,平滑作用
开闭运算的SE相同
SE的大小不同,仅仅是运算速度不同,SE过大不会导致信息丢失。
四种操作都是不可逆的
二、二值形态学的组合
dilation 和closing一致,图像扩增
erosion和opening一致,图像缩小
- hit and miss
前景hit背景miss
在前景上把特征求出来,背景上抑制特征。(前景和背景是根据图像与SE的关系确定的)
可以用来求取边缘点、孤立点、顶点 - pattern spectrum
筛选检测图像中不同尺寸的物体有多少
可以用来筛选器官(医学图像处理) - 连续膨胀(recursive dilation)
可以获得一系列相同形状,不同大小的图形 - 连续腐蚀(recursive erosion)
有助于求取边缘膨胀 - 距离变换&骨架提取及重建
距离变换(distance transform)
当不断地erosion的时候,根据新的图像与边缘的距离可以标出不同的数字。
根据SE的不同有三种距离变换:欧氏距离,棋盘距离,城市距离(city block distance可能翻译的不好)
5.1骨架提取(skeleton)
可以获取出图像的结构。
5.2 重建
灰度的形态学
灰度形态学中也包括膨胀腐蚀开闭操作,但是最终的效果与二值有些不同,因为灰度形态学不仅仅是图形形状的变化,还有灰度值的变化。
之外的二值形态学的原理是图像平移,而灰度形态学则不仅是位置的平移,还有灰度大小的变化。
所以可以看出膨胀后的结果就是灰度值增加了。
- 膨胀
变亮(灰度值都有所增加) - 腐蚀
变暗(灰度值有所降低) - 开(先腐蚀后膨胀)
变暗 - 暗(先膨胀后腐蚀)
变亮
这张图很形象的表明了灰度的变化。
灰度形态学的应用
- 边缘求取(edge detection)(同样可以用在二值上)
标准:膨胀-腐蚀
外边:膨胀-原图
内边:原图-腐蚀 - Top-hat transform高帽算法
留住尖端
WTT:原图-开操作
BTT:闭操作-原图
缺点:杂质过多时不易操作。SE难以确定。 - 分水岭算法
3.1 conditional dilation(受限制的膨胀)
存在mask,仅能在图片的mask内部进行膨胀。
算法过程:1.标记种子点 2. 标记mask 3.做不断地膨胀 直到两次结果不再发生变化。
3.2 灰度上的膨胀
OBR
CBR
3.3分水岭算法
3.3.1测地膨胀
最终分水岭算法的效果就是可以得出边界。
表格总结各算法功能
算法 | 边缘求取 | 去噪 |
---|---|---|
卷积梯度:roberts,prewitt,sobel | √ | × |
卷积平滑:高斯,中值,均值 | × | √ |
开,闭操作 | × | √ |
膨胀-腐蚀,原图-腐蚀,膨胀-原图 | √ | × |
分水岭 | √ | × |
此处应该是最关键的吧!!!(代码部位!!!)
本人实现了灰度直方图,OTSU,entropy算法。卷积包括roberts,prewitt,sobel,高斯平滑,中值滤波,均值滤波,形态学操作包括二值形态学腐蚀膨胀开闭操作,距离变换、骨架提取及重建。灰度形态学操作等多种算法。大部分算法是自己实现的没有使用opencv的库哦。喜欢的话记得打星星哦。GUI界面的图像处理,python程序