图像分割(二)

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

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

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

缺点:对参数选择敏感。

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

主动轮廓模型:

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

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

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

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

图割算法:

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

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

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

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

相关推荐
lx7416026982 分钟前
cd-agent更换cd模型(自用)
计算机视觉
我是小哪吒2.09 分钟前
书籍推荐-《对抗机器学习:攻击面、防御机制与人工智能中的学习理论》
人工智能·深度学习·学习·机器学习·ai·语言模型·大模型
慕婉030713 分钟前
深度学习前置知识全面解析:从机器学习到深度学习的进阶之路
人工智能·深度学习·机器学习
阿蒙Amon18 分钟前
【Python小工具】使用 OpenCV 获取视频时长的详细指南
python·opencv·音视频
荔枝吻1 小时前
【AI总结】Git vs GitHub vs GitLab:深度解析三者联系与核心区别
人工智能·git·github
橘子编程1 小时前
Python-Word文档、PPT、PDF以及Pillow处理图像详解
开发语言·python
Jamie201901061 小时前
高档宠物食品对宠物的健康益处有哪些?
大数据·人工智能
蓝婷儿1 小时前
Python 机器学习核心入门与实战进阶 Day 2 - KNN(K-近邻算法)分类实战与调参
python·机器学习·近邻算法
云卓SKYDROID2 小时前
无人机载重模块技术要点分析
人工智能·无人机·科普·高科技·云卓科技
云卓SKYDROID2 小时前
无人机RTK技术要点与难点分析
人工智能·无人机·科普·高科技·云卓科技