图像分割
0. 前言
分割将图像细分为构成它的子区域或物体,当感兴趣的物体或区域被检测出来时,就停止其分割。
第三版教材中图片下载地址: DIP 3/e Book Images
vs2019配置opencv可以查看:Opencv的安装与配置(VS 2019 & opencv4.5.4)
代码中出现未知函数,其实现可以查看往期学习笔记
前情回顾:
《数字图像处理》第三章 灰度变换和空间滤波 学习笔记附部分例子代码
《数字图像处理》第四章 频率域滤波 学习笔记附部分例子代码
数字图像处理第五章 图像复原和重建(内容较简单,就没有详细记录笔记)
《数字图像处理》第六章 彩色图像处理 学习笔记附部分例子代码
《数字图像处理》第七章 小波域多分辨率处理 学习笔记附部分例子代码
数字图像处理第八章 图像压缩 非重点
《数字图像处理》第九章 形态学图像处理 学习笔记附部分例子代码
后续剧情:
《数字图像处理》第11章 表示和描述 学习笔记附部分例子代码
1. 基础知识
针对单色图像的分割算法处理灰度值的基于两类特性-不连续性和相似性
-
不连续性,基于边缘的分割是基于灰度的局部不连续性来进行边界检测的
-
相似性,根据事先定义的一组准则把一幅图像分割成相似的几个区域
2. 点、线和边缘检测
本节将集中以灰度局部剧烈变化检测为基础的分割方法上。感兴趣的三种图像特征是孤立点、线和边缘。
2.1 背景知识
局部变化可以通过微分来检测,数字函数的导数使用差分来定义,二维函数中,数字差分使用偏导,所以一阶导表达式:
∂ f ∂ x = f ′ ( x ) = f ( x + 1 ) − f ( x ) {\frac{\partial f}{\partial x}}=f^{\prime}(x)=f(x+1)-f(x) ∂x∂f=f′(x)=f(x+1)−f(x)
二阶导表达式:
∂ 2 f ∂ x 2 = f ′ ′ ( x ) = f ( x + 1 ) + f ( x − 1 ) − 2 f ( x ) \frac{\partial^{2}f}{\partial x^{2}}=f^{\prime\prime}(x)=f(x+1)+f(x-1)-2f(x) ∂x2∂2f=f′′(x)=f(x+1)+f(x−1)−2f(x)
两种类型的边缘:斜坡边缘(灰度变化较小较稳定)和台阶边缘(灰度值迅速变化,形成“台阶”)
已知的一些结论:
-
一阶导数通常在图像中产生较粗的边缘
-
二阶导数对精细细节,如细线和孤立点有较强的响应
-
二阶导数在灰度斜坡和灰度台阶过渡处会产生双边缘响应
-
二阶导数的符号可用于确定边缘的过渡是从亮到暗还是从暗到亮
2.1 孤立点的检测
点的检测以二阶导数为基础,故拉普拉斯:
∇ 2 f ( x , y ) = ∂ 2 f ∂ x 2 + ∂ 2 f ∂ y 2 = f ( x + 1 , y ) + f ( x − 1 , y ) + f ( x , y + 1 ) + f ( x , y − 1 ) − 4 f ( x , y ) \nabla^{2}f(x,\,y)={\frac{\partial^{2}f}{\partial x^{2}}}+{\frac{\partial^{2}f}{\partial y^{2}}} \\ =f(x+1,\,y)+f(x-1,\,y)+f(x,\,y+1)+f(x,\,y-1)-4f(x,\,y) ∇2f(x,y)=∂x2∂2