轮廓平滑方法

目录

[1. 形态学操作](#1. 形态学操作)

[2. 边缘平滑化](#2. 边缘平滑化)

[3. 轮廓近似](#3. 轮廓近似)

[python 有回归线平滑 2D 轮廓](#python 有回归线平滑 2D 轮廓)


1. 形态学操作

利用形态学操作(例如腐蚀、膨胀、开运算、闭运算等)可以使分割边界更加平滑和连续。腐蚀可以消除小的不连续区域,膨胀可以填充空洞,而开运算可以平滑边界并保留边缘信息,闭运算则可以填充小的孔洞。

python 复制代码
import cv2
import numpy as np

# 读取语义分割结果
segmentation_result = cv2.imread('segmentation_result.png', 0)  # 读取单通道图像

# 形态学操作
kernel = np.ones((5,5), np.uint8)
smoothed_result = cv2.morphologyEx(segmentation_result, cv2.MORPH_CLOSE, kernel)

2. 边缘平滑化

在分割边界上应用边缘平滑化算法(如高斯滤波、均值滤波、中值滤波等)可以减少噪声并使得边界更加平滑。

复制代码

python code

python 复制代码
smoothed_result = cv2.GaussianBlur(segmentation_result, (5, 5), 0)

3. 轮廓近似

利用轮廓近似算法(如Douglas-Peucker算法)可以对边界轮廓进行抽稀,从而使得轮廓更加平滑。

python 复制代码
contours, _ = cv2.findContours(segmentation_result, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

epsilon = 0.02 * cv2.arcLength(contours[0], True)
approx = cv2.approxPolyDP(contours[0], epsilon, True)
smoothed_result = np.zeros_like(segmentation_result)
cv2.drawContours(smoothed_result, [approx], -1, 255, thickness=cv2.FILLED)

python 有回归线平滑 2D 轮廓

python 复制代码
import cv2
import numpy as np
from scipy.interpolate import splprep, splev
import matplotlib.pyplot as plt

# 假设有一组轮廓点坐标
x = np.array([10, 20, 30, 40, 50])
y = np.array([5, 15, 10, 25, 20])

# 多项式拟合
tck, _ = splprep([x, y], s=0)  # s 参数控制拟合平滑度

# 生成新的平滑轮廓点
new_points = splev(np.linspace(0, 1, 100), tck)

# 创建一张空白图像
image = np.zeros((100, 100), dtype=np.uint8)

# 将平滑后的轮廓点转换为整数坐标,并绘制在图像上
smoothed_contour = np.array(new_points, dtype=np.int32).T.reshape((-1, 1, 2))
cv2.polylines(image, [smoothed_contour], isClosed=False, color=255, thickness=1)

# 将图像转换为RGB格式以供Matplotlib显示
image_rgb = cv2.cvtColor(image, cv2.COLOR_GRAY2RGB)
相关推荐
YOLO数据集集合4 分钟前
渔船船只检测数据集 | 船只检测 渔船识别 拖船检测 海事监管 目标检测 YOLO格式 深度学习数据集 计算机视觉9076期
人工智能·深度学习·yolo·目标检测·计算机视觉
stereohomology5 分钟前
一个可能有用的经验:api key在Workbuddy或Trae IDE上使用
人工智能·llm·薅羊毛
AI人工智能+9 分钟前
了一种融合OCR与大模型的文档抽取系统,解决传统OCR“识字不识意”的痛点
深度学习·计算机视觉·语言模型·自然语言处理·ocr·文档抽取
小刘快学习9 分钟前
企业提示词资产如何集中治理:AI网关的提示词管理能力
人工智能
刘天远11 分钟前
Agent最小权限实现:策略表、临时令牌与撤权回归
java·jvm·人工智能·sqlite
液态不合群21 分钟前
信通院认证实锤:信创低代码,撕开企业数字化转型的虚假繁荣
人工智能·低代码·数字化
71777726 分钟前
能源行业 DevOps 平台选型与 Gitee 企业版适配性梳理
人工智能·gitee
宁渡AI大模型2 小时前
河南宁渡科技有限公司|宁渡课堂 AI 全栈面试分享,RAG 项目面试深挖问题解析
人工智能·机器学习·rag
锋行天下9 小时前
LangGraph 1.2+ 新特性:set_node_defaults,批量统一节点策略
人工智能
找方案9 小时前
AI+人力资源:AI招聘面试的兴起与争议
人工智能·面试·职场和发展