数字图像处理
图像处理基础
概述
什么是图像
通过成像系统拍摄,数字化之后二维数组就是一个图像
如何访问图像
图像有单通道和多通道(比如rgb)之分,访问时只需要以多维数组的形式访问即可
图像仿射变换
灰度处理
图像反转
灰度级数-当前灰度-1 s=L-1-r
对数变换
Gamma变换(可改变对比度)
直方图均衡化
由于图像的对比度不强,所以图像整体上较暗或者较亮没了增加对比度,让图像看起来更清楚,所以有了直方图均衡化
空间域图像处理
空间域滤波原理
什么是空间域
"空间域”指图像平面本身,即:图像中的每个像素单元
为什么要用“空间域”这种难解的名字
空间域”主要是为了区别于“变换域”,"变换域”是将图像转换到其他的域(如频率域),在变换域做完处理之后再通过反变换的方式转换回来。
“ 空间域”图像处理包含哪些方面
"空间域” 图像处理主要包括[ 灰度变换]和[空间域滤波]“空间域”滤波怎么理解:滤波名词出自于信号系统,从图像来说,图像是二维数据,二维数据传输的时候是逐行传输的,对应于信号理,就是一个连续的波形,对波形做一些处理,按预期过滤掉波形中的某些成分,所以形象地表示为”滤波。
空间域平滑滤波
平滑滤波器包括什么
-
平滑线性滤波器
-
中值滤波器
-
高斯滤波器
平滑空间滤波器的作用
模糊处理:大目标提取之前先去掉图像中的琐碎细节
降低噪声:典型的噪声是由于灰度级的急剧变化引起的
平滑线性滤波器
又称盒装滤波器,所有系数都相等的滤波器
可以对感兴趣的物体得到一个粗略的描述而模糊一幅画像,模糊之后,小目标拉得和背景接近或溶于背景,因而再根据大目标的灰度值选一个与之,能够很好的提取目标
中值滤波器
-
又称统计排序(非线性)滤波器,利用像素领域内灰度的中值来替换目标的像素
-
用于去除椒盐噪声,由于椒盐噪声是由黑点或白点叠加到图像上的,且黑白点相当于极大值和极小值,而中值滤波是用中值替代这些极大值或极小值,因此效果比较明显。
高斯滤波器
-
高斯滤波器是一种线性滤波器,能够有效的抑制噪声,平滑图像。其作用原理和均值滤波器类似。都是取滤波器窗口内的像素平均值作为输出。
-
将各个位置带入高斯函数,得到的值就是模板的系数,对于窗口模板的大小为(2k+1)x(2k+1),模板中各个元素值计算公式如下
锐化滤波器
概述
Prewitt算子
是一阶微分算子,一阶微分算子都可以检测边缘和线
prewitt算子可以用不同方向的算子检测不同来类型的边缘和线
Sobel算子
是一阶微分算子
sobel算子可以用不同方向的算子检测不同来类型的边缘和线
sobel算子比prewitt算子多了平滑功能,模板的中间值是2,通过突出中心点达到平滑目的
LapLas算子
概述
是二阶微分算子,二阶微分算子可以准确定位到灰度突变的点
LapLas算子可以检测突变的点
得到锐化结果后,如何增强图像
以LapLas算子为例,得到锐化图像之后,将原图加上或者减去锐化结果,得到增强后的图像
为什么用前两个模板时c=-1
为了避免叠加之后突变部分为负值,卷积赋值没有意义
傅里叶变换
概述
推荐阅读:傅里叶分析之掐死教程(完整版)傅里叶分析之掐死教程(完整版)更新于2014.06.06 - 知乎
傅里叶变换的核心
任何周期函数都可以表示为不同频率的正弦和/余弦和的形式
(欧拉公式)
什么是欧拉公式
欧拉公式是复分析领域的公式,他将三角函数和负指数函数联系起来,因此负指数函数是周期,因为它可以描述成正弦函数与余弦函数的叠加。
傅里叶变换的公式
为什么傅里叶变换可以用于图像滤波
在时域很难将某些频率成分去掉,但是转换到频率域之后,不同的评率对应的致死频率轴上一个固定的值,将该值设置为0应该是一家很简单的事情,这就是为什么要用傅里叶变化的根本原因。
二维傅里叶变换
概述
公式
说明:功率谱、频率谱、相位谱的尺寸与图形尺寸一致,都是M*N
频谱图的处理
如何理解 图像傅里叶变换的频谱图:如何理解 图像傅里叶变换的频谱图_R-G-B的博客-CSDN博客_傅里叶变换频谱图
原图做傅里叶变化得到右上角的图,四周为低频,中心为高频,中心化后中间为低频四周为高频
频谱取决于正弦波的幅度,在给定的频率处幅度较大意味着该频率的正弦波比较突出
旋转平移对频谱图的影响
-
平移对频谱图没有任何影响
-
频谱图像跟着原始图像的选择一致
旋转平移对相位谱的影响
-
相位图与图像变换的关系不是很强,但是它绝对了各个正弦分量关于原点位移的度量
-
相位图关于原点对称
-
变换后中心是频率域原点,强度最大,为直流分流
-
相位图中越亮的位置标示该点对应的正弦波的振幅较大
频率域滤波基础
空间域频率与频率域滤波的对应关系
结合两者优点
-
首先我们在频率域选择一个比较好的滤波器,然后我们将该滤波器求傅里叶反变换得到空间域滤波器,再取样生成空间域的滤波模板
-
频率于滤波器越窄,其衰减的高频越多,引起的模糊越大,对应到空间域则需要用加大的模板来增大模糊
频率域滤波原理
频率域滤波的步骤
频率域平滑滤波器
理想低通滤波器
概述
-
在半径为D0的圆内,所有频率无衰减的通过,在圆外完全被衰减,关于原点径向对称,也就是说定义一个径向截面,然后旋转360°可以得到一个理想低通滤波器。
-
D0越小,模糊效果越好
振铃效应
-
低通滤波器后边缘处有波纹的效果,过滤掉额频率越多,振铃效应越明显
-
由于理想低通滤波器的频率域剖面图类似于盒装滤波器,因此其空间域滤波器有sin函数形状,空间域的滤波可以用卷积表示
结论
sinc函数的展开度与H(u, v)滤波函数的半径成反比,D0越大,sinc函数就会道近于个和图像卷积是根本不会发生模糊的冲击,低通滤波的目
标是找到没有振铃或振铃效应很小的滤波器。
三种常见低通滤波器的联系与区别
频率域高通滤波器
形态学处理
概述
-
形态学是生物学的分支,主要研究动植物的形态和结构,图像处理领域用形态学数学处理工具来提取表达和描绘区域形状的有用图像分量,如边界,骨架等。
-
包括腐蚀、膨胀、开运算、闭运算、击中击不中、梯度运算、顶帽、底帽等操作
-
结构元是图像中感兴趣特征所用的小集合或者子集合,不一定在中心
-
结构元的值存在不同灰度级的为不平坦的结构元,反之为平坦的结构元
腐蚀
二值图像
结构元为:
1 1
1 0
灰度图像平坦结构元
结构元为:
1 1
1 0
灰度图像非平坦结构元
注意:正式计算中若为负数则看作是0
膨胀
二值图像
结构元为:
1 1
1 0
灰度图像平坦结构元
把结构元原点放在图像每个像素的位置,在任何位置的腐蚀为包含与结构元翻转(中心对称)重合区域的图像的所有值的最大值
作用:填补目标区域中某些空洞以及消除包含在目标区域中的小颗粒噪声
灰度图像非平坦结构元
把结构元原点放在图像每个像素的位置,在任何位置的腐蚀为包含与结构元翻转(中心对称)重合区域的图像加上结构元翻转的值的最大值
开运算
先腐蚀后膨胀,腐蚀可以断开其中的微弱连接,然后再膨胀平滑边缘
闭运算
先膨胀,后腐蚀,膨胀可以让距离相近的区域合并起来,再腐蚀掉比较小的区域
形态学平滑
先执行开运算再执行闭运算
顶帽运算
图像去掉开操作的结果,就是开操作干掉的部分
黑帽运算
闭操作减去原图像,就是闭操作增加的部分
击中击不中
用一个小的结构(击中结构)去射击原始图像,击中的元素保留,再用一个很大的结构去射击图像,击不中的保留,满足击中结构能击中且击不中结构不能击中的位置就是最终形态
形态学梯度
膨胀结果减去腐蚀结果,得到强调了区域间的边界,同质的区域不受影响
检测
边缘检测原理
概述
-
以灰度局部剧烈变化为基础,检测图像中的点、线边缘。
-
用一阶微分和二阶微分为工具来达到检测目的
原理
-
一阶导数产生较粗的边缘
-
二阶导数对精细细节如细线、孤立点和噪声有较强响应
-
二阶导数在灰度斜坡和灰度台阶处会产生双边缘效应
-
二阶导数的符号可以确定是从亮到暗还是从暗到亮
检测孤立点
原理
用二阶导数检测孤立点,用拉普拉斯算子
过程
-
对输入图像用拉普拉斯核进行卷积
-
对卷积结果按如下公式操作,得到阈值处理结果
检测线
-
由于二阶导数的响应更加强烈,因此拉普拉斯算子可以用于检测线
-
检测线时,要根据待检测的线宽设计拉普拉斯核的尺
-
拉普拉斯核是各向同性的,没办法检测特定方向的线
-
优先
-
各向同性,线性和位移不变的
-
对细线和孤立点的检测效果较好
-
-
缺点
-
对噪声的敏感,对噪声有双倍加强作用
-
不能检测出边的方向
-
常产生双像素的边缘
-
-
用如下的二阶偏导来计算不同方向的线
边缘检测
边缘模型
基于灰度突变来定位边缘位置
找边缘时降噪很重要
边缘检测步骤
-
降噪,通过高斯滤波器、均值滤波器、中值滤波器等算子对图像进行平滑处理
-
边缘点的检测
-
边缘定位
边缘检测的方法
-
基于梯度算子,如prewitter,sobel
-
loG算子检测(高斯拉普拉斯)又称为Marr-Hildreth检测器
-
Canny算子检测
基于梯度算子检测
不足:未对图像噪声和边缘本身特性采取预防措施
loG算子检测
-
灰度变化与图像尺寸无关,因此可以使用不同尺寸的算子(而不仅仅是小算子如3, 5,7),而取决于数值范围
-
灰度的突然变化会在一阶导数中引起波峰或波谷,在二阶导数中等效地引起零交叉
-
因此,算子应具备以下特征
-
能计算图像中任一个位置的一阶和二阶微分的算子
-
它的尺寸可以被调整,以便在任何期望的尺寸上起作用,大的算子可以检测模糊边缘,小的算子可以检测精细细节。
-
因此LoG算子应运而生
-
Canny算子检测
特点
-
低错误率,所有的边缘点都被找到
-
边缘点被很好的定位
-
单一的边缘响应(正式边缘周围只返回一个点)
过程
-
用高斯滤波器平滑输入图像
-
计算梯度复读图像和角度图像
-
对复读图像应用非最大抑制
-
用双阈值处理和连接分析来检测并连接边缘
边缘连接
概述
由于前述方法检测完得到的可能是不连续的边界,这里的目的是将不连续的边界连接为闭合的边界,因此边缘检测之后紧跟连接算法
边缘连接的方法有哪些:
-
局部处理
-
区域处理
-
全局处理
局部处理
举个例子,假设k=2
全局处理
-
因为有时候需要处理的图像没有任何区域边界信息,原理是基于像素集是否位于指定形状的曲线上的方法,一旦检测到,这些曲线就会变成感兴趣的点
-
全局处理常用Hough变换
-
Hough变换可以用于将边缘像素连接起来得到边界曲线,优点在于收噪声和曲线尖端的影响较小
-
在已知曲线形状的条件下,Hough变换实际上是利用分散的边缘点进行曲线逼近,它也可看成是一种聚类分析技术
-
图像分割
概述
分割的依据
-
基于灰度的不连续性,以灰度的突变为基础分割一幅图像,比如图像的边缘
-
基于灰度的相似性,将图像分割为相似的区域,如区域生长,区域聚合等
概念
-
全局阈值处理:当T(阈值)是一个适用于整图的常数时
-
可变阈值处理:当T在一幅图像上可以政变时
-
局部阈值处理:任何点处的阈值取决于其邻域的特性(如邻域的平均灰度)
-
动态阈值处理:如果T取决于空间坐标(x,y)本身。 也称为自适应阈值处理
影响阈值分割的因素
-
波峰间的间隔(波峰离得越远,分割这些模式越好)
-
图像中的噪声内容(有噪声的话,可能形不成明显的波峰,难以确定T)
-
物体和背景的相对尺寸
-
光源的均匀性
-
图像反射特性的均匀性
单阈值分割
选定一个阈值,如果图像某个点的灰度值高于阈值,则置1,否则置0,可以将图像分割成前景和背景
双阈值分割
选定两个阈值,根据图像某个点的灰度值与两个阈值的对比关系,确定输出值
全局阈值分割
概述
当背景和物体像素灰度分布十分明显的时候,同城情况下图像的背景和物体的差别较大,可以适用全阈值处理
基本全阈值分割
Otsu最佳全阈值分割
技巧
-
在用阈值分割之前首先平滑输入图像
-
利用边缘改进阈值处理
-
因为如果直方图的波峰是高、窄、对称的,且被较深的波谷分开,则选取一个阈值的机会是相当大的
-
仅选取边缘较明显的像素统计直方图,这样可以有效的将波峰拉开
-
区域阈值分割
区域生长
原理
-
根据事先定义的准则将像素或者子区域聚合层更大区域的过程
-
从一组生长点开始(可以是单个像素也可以是某个小区域),将与该生长点性质相似的相邻像素或者区域与生长点合并,形成新的生长点,重复此步骤知道不能生长为止
步骤
-
选择合适的种子点
-
确定相似性准则
-
确定生长停止条件
区域分裂与聚合
区域分裂原理
-
选择一个分裂条件Q,如果区域不满足Q,则将区域分裂层四个象限区域
-
从整图开始持续分裂,直到所有区域都满足Q为止
-
通常需要先定一个不能再进一步分裂的最小四象限区域的尺寸
聚合原理
-
对于2个相邻的区域,仅当两个区域的并集满足条件Q时才合并
-
(小区域满足Q,不见得2个满足Q的小区域合并之后同样满足Q)
-
当无法进一步聚合时,停止操作
分水岭分割算法
原理
先选择好“种子点”,也就是注水点,然后往里面注水,等水涨起来了,自然形成一个个将水坑分开的领,这就是分水岭算法
步骤
-
构建图像梯度算法(用Canny或拉普拉斯均可)
-
通过一定规则生成n个最初的注水区域(局部梯度最小值或自己确定的先验知识)
-
往注水区域内加水,当两注水区域即将合并时,记录下此时的边界。
-
当图像边缘彻底被分割成n个独立区域,算法结束
如何构建水坝
-
通过形态学膨胀构造水坝
-
如果膨胀了某个点会将两个区域联通,则这两个点不能膨胀(水坝点)
分水岭算法的应用范围
-
从背景中提取近乎一致的物体效果最好
-
由变化较小的灰度表征的区域有较小的灰度值,因此我们用原始图像的梯度图像来作为分水岭算法的输入
参考资料
数字图像处理通俗教程_哔哩哔哩_bilibili(本系列文章就是根据链接里的教程进行整理)