十二.图像的分割与修复

图像的分割与修复

1. 图像分割的基本概念

图像分割: 将前景物体从背景中分离出来.

图像分割分为传统图像分割和基于深度学习的图像分割方法.

传统图像分割就是使用OpenCV进行的图像分割.

传统图像分割方法有:

  • 分水岭法
  • GrabCut法
  • MeanShift法
  • 背景扣除

2. 分水岭法

分水岭分割方法是基于图像形态学和图像结构来实现的一种图像分割方法.

现实中我们可以或者说可以想象有山有湖的景象,那么那一定是水绕山,山围水的情形。当然在需要的时候,要人工构筑分水岭,以防集水盆之间的互相穿透。而区分高山(plateaus)与水的界线,以及湖与湖之间的间隔或 都是连通的关系,就是分水岭(watershed)。

我们绘制灰度图像的梯度图, 可以得到近似下图的梯度走势.梯度低的地方我们可以认为是低洼区或者山谷, 梯度高的地方可以认为是山峰. 我们往山谷中注水, 为了防止山谷中的水溢出汇合我们可以在汇合的地方筑起堤坝, 可将堤坝看做是对图像分割后形成的边界. 这就是分水岭算法的基本原理.

分水岭法的问题

OpenCV中的分水岭法已经解决此问题.

分水岭法涉及的API

  • distanceTransform(img, distanceType, maskSize)计算img中非零值到距离它最近的0值之间的距离
    • img 要处理的图像
    • distanceType 计算距离的方式: DIST_L1, DIST_L2
    • maskSize:进行扫描时的kernel的大小, L1用3, L2用5
  • connectedComponents(image[, labels[, connectivity[, ltype]]]) 求连通域, 用0标记图像的背景,用大于0的整数标记其他对象
    • connectivity: 4, 8(默认)
  • watershed(image, markers) 执行分水岭法
    • markers: 它是一个与原始图像大小相同的矩阵,int32数据类型,表示哪些是背景哪些是前景。分水岭算法将标记的0的区域视为不确定区域,将标记为1的区域视为背景区域,将标记大于1的正整数表示我们想得到的前景。
import cv2 
import numpy as np
import matplotlib.pyplot as plt

img = cv2.imread('water_coins.jpeg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

ret, thresh =cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)

# 有一些细小的噪点和毛边
cv2.imshow('thresh', thresh)
# 通过开运算去掉噪点
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))
opening = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=2)
cv2.imshow('opening', opening)

bg = cv2.dilate(opening, kernel, iterations=2)  # sure background area
fg = cv2.erode(opening, kernel, iterations=2)  # sure foreground area
# 剩下的区域(硬币的边界附近)还不能确定是前景还是背景。可通过膨胀图减去腐蚀图得到,下图中的白色部分为不确定区域
unknown = cv2.subtract(bg, fg) # 未知区域
cv2.imshow('gg', np.hstack((bg
医学图像三维重建是通过计算机图形学、数字图像处理技术、计算机可视化以及人机交互等技术,把二维的医学图像序列转换为三维图像在屏幕上显示出来,并根据需要为用户提供交互处理手段的理论、方法和技术。图像分割是进行图像三维重建的必要准备,图像分割效果的优劣直接影响三维重建在医学领域的应用。医学图像分割和三维重建将数字图像处理技术和计算机图形学应用在了在生物医学工程中,该应用涉及到计算机图形学、图像处理技术、生物医学工程等多种技术,该领域的研究多学科交叉的,在医学诊断、手术规划及医学教学等方面有很高的应用价值,是近年来的计算机应用技术的一个研究热点。医学图像分割与三维重建是两个不可分割的相关领域。本文研究了基于区域的图像分割和基于边缘的两种图像分割方法在医学图像处理中的应用,并在实验中利用ITK提供的区域生长法成功分割出肝脏、脊柱和肺脏等人体组织器官;三维重建算法分为两类:面绘制和直接体绘制。面绘制从三维体数据中抽取目标对象等值面,通过传统的图形学方法进行渲染;体绘制技术则将整个体数据进行可视化显示,使医生可以通过设置适当的参数调节后观察医学数据的三维内部结构信息。本文研究了光线投射体绘制算法、错切变形法和基于纹理映射的体绘制算法,以及Marching Cubes面绘制算法的实现机制和适用范围,并利用VTK提供的三维重建算法对不同人体部位的组织和器官实现了重建实验。本文主要研究了医学图像分割与三维重建技术的应用。在对医学图像分割和三维重建基础理论以及三维重建相关的三维切割技术进行研究和实验的基础上,结合医学图像分割开发工具包ITK(Insight ToolKit)和可视化开发包VTK(Vislual ToolKit),以及ActiveX开发技术,设计了一个医学图像三维重建VolumeRenderX控件并通过MFC编程实现。这是一个面向对象、可扩展的跨IDE(Intergreted Development Enviroment)开发平台的开发控件,并针对实际应用需求整合了重建参数调节和重建体剖切等多种实用功能,相对于传统的医学图像处理与三维重建系统具有更大的应用价值。本文还提出了一个基于WEB模式的医学图像三维重建的解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值