图像理解与计算机视觉笔记
一、图像信号分析基础
灰度与灰度级
每个像素的取值为灰度,所有灰度的种类成为灰度级。通常有2、8、256、65536灰度级。
色彩包括亮度、色调、饱和度。
邻域与邻接
- 四邻域:上下左右,四个像素相邻。
- 八邻域:上下左右,斜边八像素相邻。
- D邻域:只有斜边的四个像素相邻。
- m-连接:两个像素的四邻域没有相交且是D邻域或八邻域连接则为m连接(就是只有斜着的两个像素)
边缘线
对于不同的联通方式会有不同的边缘线,比如四联通和八联通就不一样。求的都是最长的边缘线。
对于一个边缘线可以用链码来描述,按逆时针方向分别标注为0~7,七个方向。对链码进行差分则得到的是方向的相对位置,所以对平移、旋转变换很鲁棒。注意,差分是当前点减去前一个点。
卷积运算
这里都默认是Same,所以要在外面填充0,然后需要注意的是模板要旋转180度。
二、图像增强与恢复
直方图均衡化
通过修改像素种类的分布,使图片对比度增加,注意映射函数是向上取整。
图像平滑
空域平滑
- 平滑模板
- 多帧图片求平均
频域平滑
- 低通滤波
- 高通滤波
中值滤波
个人觉得这应该算是空域平滑的平滑模板类里面。
也就是分不同的平滑模板,但是只是求中值而不是平均值。
图像锐化
感觉和求边缘很相似,都是求梯度这种,也是拉普拉斯算子之类的。拉普拉斯模板就是拉普拉斯算子求出来后再加原图片,所以中间都会比拉普拉斯算子多1。
图像复原
类似图像超分,先对图像进行退化再学习一个函数对图像进行复原,如果无约束就是一个梯度下降,有约束加一个拉格朗日算子。
图像退化分为:
- 简单退化:直接图像加噪声
- 通用退化:退化函数+噪声
- 变形退化:也是退化函数+噪声
- 频域退化:频域退化函数+频域噪声
现在gan都是用类通用退化,用不同的退化函数多次退化但是不加噪声,因为退化函数本身就会携带噪声进去,比如jpeg压缩会带有伪影。使用多次退化函数也能让模型学习的函数不是简单的逆函数。
三、图像边缘检测
图像边缘是一个区域的终结到另一个区域的开始,是图像局部特征不连续的表现,由导数可以很明显的判断。
一阶导数
不同方法就是计算水平梯度和垂直梯度的区别。
正交梯度:
对图片分别求水平梯度和垂直梯度,然后按不同的梯度幅值规则,合称为梯度图像,然后设定阈值对图片进行分割。
robert算子:
对斜方向计算梯度,剩下步骤与正交梯度相同。但是对噪声更敏感
prewitt算子:使用了平均,能减少噪声的影响,但是会使边缘也更模糊
sobel算子:使用加权平均,比prewitt边缘更清晰
二阶导数
拉普拉斯算子:对独立点和线效果很好,但是对噪声不耐受,所以一般先平滑处理,有四近邻模板,八近邻模板等。
LoG算子(高斯拉普拉斯算子):实际上就是先高斯滤波平滑处理后再使用拉普拉斯算子。
canny算子:
先高斯模糊,再计算梯度,采用非极大值抑制删掉不需要的梯度(将当前像素点与其梯度方向的像素点梯度对比,最大才保留),然后用双阈值法连接边缘(阈值高部分轮廓丢失,阈值低有假边缘,消失轮廓就用低阈值的边缘填充更有效)
拉普拉斯算子增强了图像中的灰度不连续边缘,而减弱了对应图像中灰度值缓慢变化区域的对比度,将这样的结果叠加到原始图像上就能得到锐化后的图像。
霍夫变换
挺麻烦的,基本上就是将点通过映射到极坐标系确定线。广义霍夫变换还能检测物体位置(利用模板边缘和目标图片)。
四、图像分割
基于阈值分割
都是比较针对于单一目标,对于多目标难以奏效。
直方图均值法:
对于双峰直方图,选取峰值间的最低点作为分割阈值,对于多峰灰度直方图,分别选取峰值最低点作为分割阈值。
最佳阈值法:
类似最小错误率的贝叶斯决策,通过求两个分布的交点来求出阈值。
均值迭代法:
初始选取双峰的最低点作为分割阈值,然后每次选择两个区域的均值再求平均得到新的阈值,直至阈值不再改变。
类间方差法(OTSU)阈值分割:
和LDA类似,要求类间方差大,类内方差小,遍历一个阈值T,分别计算两个区域的均值,然后在计算类间加权方差,求出最大方差对应的T。
基于区域的分割
区域生长法:
遍历每一个像素与其邻域,如果规定的距离小于规定的阈值则合并,否则不合并。
对于不同规定的距离,分为不同的生长法:简单生长法(当前点与邻域像素值求abs),质心生长法(当前点与邻域区域平均值求abs),混合生长法(两个区域间的平均值求abs)
分裂合并法:
利用均方差MSE,可计算区域间和区域内的loss,当一个区域间的loss大于阈值,则说明该区域不是一类,分割为4个区域,当区域间的loss小于阈值,说明区域相似,合并为一个区域。
初始将图片分割为四个区域,然后遍历四个区域进行分裂合并(分裂和合并是互不影响的)。并且不同规定的最小分裂块对结果也不同。
分水岭分割
就是用洪水填充得到最后的边界,边界像素宽度必定是为1。计算简单但是容易过度分割,产生细小的区域。
五、形态学数字图像处理
腐蚀:
给定一个模板B,遍历原图A每一个像素,与模板B匹配,当B中的全部1都在A中也为1则新像素为1。与卷积相同,新图大小会改变,所以一般在外围填充0,二值图表现为图像变暗,小白点消失。
膨胀:
给定一个模板B,遍历原图A每一个像素,与模板B匹配,当B中存在1在A中也为1则新像素为1。与腐蚀相同,新图大小会改变,所以一般在外围填充0,二值图表现为图像变亮,小黑点消失。
开操作:
先对原图进行腐蚀,再膨胀的操作称为开操作,能够去掉噪声,二值图中表现为小白点消失,暗效果不变化。
$A\circ B=(A\ominus B)\oplus B$。
闭操作:
先对原图进行膨胀再腐蚀的操作称为闭操作,能够去掉细小空洞,填补断裂,二值图中表现为小黑点消失,亮效果不变化。
$A\bullet B=(A\oplus B)\ominus B$
击中击不中变换:寻找形状的位置,B为需要找的形状,则$A*B=(A\ominus B)\and(A^C\ominus B^C) $,注意这里$B^C$是对一个任意大于B的窗口求补集。
应用:
边界提取:A与AB腐蚀相减,$A-A\ominus B$。
区域填充:A的补中所有区域像素分别与B膨胀得到的结果。
细化:用于提取骨架特征,使用八个方向的模板B分别对A求击中击不中变换求补集再与A求交集。
$A\otimes B=A\and (A*B)^C \quad B={B0,B1…B7} $
本文链接:https://dummerfu.top/p/63048.html
版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0许可协议 转载请注明出处!