图像分割(二)

python 复制代码
# 在绘图中显示中文字体,而非乱码
from pylab import mpl
mpl.rcParams["font.sans-serif"] = ["SimHei"]
import cv2
import matplotlib.pyplot as plt
import numpy as np

使用图割算法对3到5张图像进行分割(要求图像背景包含简单背景和复杂背景),并简要叙述本章中所有图像分割算法的特点、优缺点和适用场景。

python 复制代码
# 图割算法代码,选择三张图片分别处理复制粘贴即可
img1 = cv2.imread(你的图片)
cv2.namedWindow("select", cv2.WINDOW_NORMAL)
cv2.imshow("select", img1)
roi_mask = cv2.selectROI('select', img1, True, False)
roi = img1[int(roi_mask[1]):int(roi_mask[1]+roi_mask[3]), int(roi_mask[0]):int(roi_mask[0]+roi_mask[2])]
mask = np.zeros(img1.shape[:2], dtype=np.uint8)
rect_roi = (int(roi_mask[0]), int(roi_mask[1]), int(roi_mask[2]), int(roi_mask[3]))
bgdmodel = np.zeros((1, 65), np.float64)   
fgdmodel = np.zeros((1, 65), np.float64)  
cv2.grabCut(img1, mask, rect_roi, bgdmodel, fgdmodel, 11, mode=cv2.GC_INIT_WITH_RECT)
mask_foreground = np.where((mask == 1) + (mask == 3), 255, 0).astype('uint8')
result = cv2.bitwise_and(img1, img1, mask=mask_foreground)
title_list = ["原图", "图割"]
img_list = [img1, result]
for i in range(len(img_list)):
    plt.subplot(2, 1, i+1)
    plt.imshow(cv2.cvtColor(img_list[i], cv2.COLOR_BGR2RGB))
    plt.title(title_list[i])
    plt.xticks([])
    plt.yticks([])
plt.show()

边缘检测:

特点:基于像素梯度的边缘检测。

优点:简单,计算量小。

缺点:对噪声敏感,边缘定位不精确。

适用场景:简单场景的边缘提取。

阈值分割:

特点:根据像素值的阈值进行分割。

优点:简单,快速。

缺点:对光照变化敏感,难以处理复杂背景。

适用场景:背景与前景对比明显的场景。

区域分割:

特点:基于像素区域特性的分割。

优点:能够处理同质区域。

缺点:对边界不精确,容易漏分割。

适用场景:同质区域明显的图像。

分水岭分割:

特点:基于拓扑学原理的分割。

优点:能够处理复杂形状。

缺点:计算量大,对噪声敏感。

适用场景:需要精确分割的复杂图像。

Mean Shift分割:

特点:基于密度的聚类分割。

优点:能够处理任意形状。

缺点:计算量大,对参数敏感。

适用场景:聚类分析,目标跟踪。

SLIC超像素分割:

特点:基于空间邻近性和颜色相似性的分割。

优点:简单,能够生成均匀的超像素。

缺点:对参数选择敏感。

适用场景:需要超像素表示的图像。

主动轮廓模型:

特点:基于能量最小化的轮廓演化。

优点:能够处理复杂形状。

缺点:计算量大,需要初始化。

适用场景:医学图像分割,目标检测。

图割算法:

特点:基于图论的全局优化分割。

优点:能够处理复杂场景。

缺点:计算量大,需要训练数据。

适用场景:场景理解,图像分割。

相关推荐
封步宇AIGC3 分钟前
量化交易系统开发-实时行情自动化交易-3.4.1.2.A股交易数据
人工智能·python·机器学习·数据挖掘
何曾参静谧4 分钟前
「Py」Python基础篇 之 Python都可以做哪些自动化?
开发语言·python·自动化
m0_523674215 分钟前
技术前沿:从强化学习到Prompt Engineering,业务流程管理的创新之路
人工智能·深度学习·目标检测·机器学习·语言模型·自然语言处理·数据挖掘
Prejudices8 分钟前
C++如何调用Python脚本
开发语言·c++·python
HappyAcmen15 分钟前
IDEA部署AI代写插件
java·人工智能·intellij-idea
我狠狠地刷刷刷刷刷21 分钟前
中文分词模拟器
开发语言·python·算法
Jam-Young34 分钟前
Python的装饰器
开发语言·python
噜噜噜噜鲁先森36 分钟前
看懂本文,入门神经网络Neural Network
人工智能
Mr.咕咕1 小时前
Django 搭建数据管理web——商品管理
前端·python·django
InheritGuo1 小时前
It’s All About Your Sketch: Democratising Sketch Control in Diffusion Models
人工智能·计算机视觉·sketch