图像的分割与修复
图像分割的基本概念
- 什么是图像分割:将前景物体从背景中分离出来
-
图像分割的方法:腐蚀、膨胀
-
传统的图像分割方法
-
分水岭
- 分水岭法则的问题
- 图像存在过多极小区域时,会产生许多小的积水盆
- 分水岭法的处理步骤
- 标记背景
- 标记前景
- 标记未知域
- 进行分割
-
分水岭API:
watershed(img, masker)
img
: 图像源masker
: 包括前景标记、背景标记、未知标记,以不同的值区分他们- 获取背景
- 分水岭法则的问题
-
GrabCut:通过交互的方式获得前景物体
- 原理
- 用户指定前景的大体区域,剩下的为背景区域
- 用户还可以明确指定某些地方为前景或背景
- 采用分段迭代的方法分析前景物体形成像素模型树
- 最后根据权重决定某个像素是前景还是背景
- 效果
- 原理
-
MeanShift法与背景扣除
- 原理
- 严格来说该方法并不是用来对图像进行分割的,而是在色彩层面的平滑滤波
- 它会中和色彩分布相近的颜色,平滑色彩细节,腐蚀掉面积较小的颜色区域
- 它以图像上任意一点P为圆心,半径为sp,色彩幅值为sr进行不断的迭代
- 效果
- API:
pyrMeanShiftFiltering(img, double sp, double sr)
img
: 图像sp
: 半径,值越大越模糊sr
: 色彩变化幅值,过大会色彩连成一片区域
- 原理
-
-
基于深度学习的图像分割方法
-
视频前后景分离
- 原理
- 视频是一组连续的帧(一幅幅图组成)
- 帧与帧之间关系密切(GOP-GroupOfPicture)
- 在GOP中,背景几乎是不变的
- MOG去背景
其它对视频前后影分离的方法
- MOG2去背景
- 同MOG类似,不过对亮度产生的影音有更好的识别
- 会产生较多的噪点
createBackgroundSubtractorMOG2(...)
- GMG去背景
- 静态背景图像估计和每个像素的贝叶斯分割抗噪性更强
createBackgroundSubtractorGMG(...)
initializationFrames
: 初始帧数,120
图像修复
- API:
inpaint(img, mask, inpaintRadius, flags)
img
: 图像mask
:inpaintRadius
: 每个点的圆形邻域半径flags
: INPAINT_NS,INPAINT_TELEA