图像分割(二)

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超像素分割:

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

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

缺点:对参数选择敏感。

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

主动轮廓模型:

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

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

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

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

图割算法:

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

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

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

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

相关推荐
2501_948114243 分钟前
2026年大模型API聚合平台技术评测:企业级接入层的治理演进与星链4SAPI架构观察
大数据·人工智能·gpt·架构·claude
小小工匠5 分钟前
LLM - awesome-design-md 从 DESIGN.md 到“可对话的设计系统”:用纯文本驱动 AI 生成一致 UI 的新范式
人工智能·ui
迷藏4946 分钟前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源
黎阳之光21 分钟前
黎阳之光:视频孪生领跑者,铸就中国数字科技全球竞争力
大数据·人工智能·算法·安全·数字孪生
小超同学你好31 分钟前
面向 LLM 的程序设计 6:Tool Calling 的完整生命周期——从定义、决策、执行到观测回注
人工智能·语言模型
明日清晨37 分钟前
python扫码登录dy
开发语言·python
智星云算力1 小时前
本地GPU与租用GPU混合部署:混合算力架构搭建指南
人工智能·架构·gpu算力·智星云·gpu租用
bazhange1 小时前
python如何像matlab一样使用向量化替代for循环
开发语言·python·matlab
jinanwuhuaguo1 小时前
截止到4月8日,OpenClaw 2026年4月更新深度解读剖析:从“能力回归”到“信任内建”的范式跃迁
android·开发语言·人工智能·深度学习·kotlin
xiaozhazha_1 小时前
效率提升80%:2026年AI CRM与ERP深度集成的架构设计与实现
人工智能