news 2026/6/1 23:30:29

基于双目立体视觉的羊体尺参数提取及三维重构的解析方案【附代码】

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于双目立体视觉的羊体尺参数提取及三维重构的解析方案【附代码】

✨ 长期致力于羊体尺参数、双目立体视觉、三维重构、图像分割、测点识别研究工作,擅长数据搜集与处理、建模仿真、程序编写、仿真设计。
✅ 专业定制毕设、代码
如需沟通交流,点击《获取方式》


(1)改进Graph Cut与多尺度分水岭融合的羊体图像分割:

在真实养殖场复杂背景下,先采用多尺度分水岭算法预分割,再用模糊C均值初始化Graph Cut的种子点。交互次数从15次降到6次,平均分割时间6.47秒,分割准确率97%。针对曝光过度图像,采用带色彩恢复的多尺度Retinex增强,提高暗部细节。对200张羊图像测试,分割度量值F达到0.97。

(2)基于包络线分析的体尺测点自动识别:

从分割轮廓中提取羊体包络线,通过曲率极值定位关键点。体长测点为鼻尖到尾根的最远点对,体高为肩胛最高点,胸深为肩胛后缘垂直距离。对50头羊的二维图像测量,体长平均误差1.6cm,相对误差1.92%。采用偏最小二乘回归建立体重预估模型,包含体长、体高、臀高三个变量,预测体重平均相对误差3.17%。

(3)双目立体视觉稠密点云与NURBS曲面重构:

利用SIFT特征匹配和RANSAC极线约束获得稀疏匹配点,再通过区域生长插值生成稠密点云。点云去噪采用统计滤波,保留距离均值1.5倍标准差内的点。采用NURBS曲面拟合重构羊体三维模型,从模型中提取胸围和管围。30只羊的实测对比显示,体尺综合检测相对误差3.47%,胸围误差4.2%。虽然略高于主动式激光扫描,但无需接触且成本低。

import numpy as np import cv2 from scipy.spatial import cKDTree class SheepSegmentation: def __init__(self): self.msr_scale = [15,80,200] def msr_enhance(self, img): img_float = img.astype(np.float32)/255.0 log_img = np.log(img_float + 1e-5) for sigma in self.msr_scale: blur = cv2.GaussianBlur(img_float, (0,0), sigma) log_blur = np.log(blur + 1e-5) log_img -= log_blur return np.exp(log_img) def graph_cut_seg(self, img, seeds): # 使用opencv的grabcut简化 mask = np.zeros(img.shape[:2], np.uint8) rect = (10,10, img.shape[1]-20, img.shape[0]-20) bgdModel = np.zeros((1,65), np.float64) fgdModel = np.zeros((1,65), np.float64) cv2.grabCut(img, mask, rect, bgdModel, fgdModel, 5, cv2.GC_INIT_WITH_RECT) return mask class BodyMeasure: def extract_contour_points(self, mask): contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) cnt = max(contours, key=cv2.contourArea) # 计算凸包和曲率 hull = cv2.convexHull(cnt) return hull.reshape(-1,2) def measure_body_length(self, points): # 最远点对 tree = cKDTree(points) dist, idx = tree.query(points, k=2) far_pair = np.argmax(dist[:,1]) return np.linalg.norm(points[far_pair] - points[idx[far_pair,1]])

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/1 23:23:03

Spark‘二次排序’从入门到精通:自定义Key类解决复杂排序问题

Spark二次排序实战指南:自定义Key类解决多维数据排序难题在处理海量数据时,我们经常遇到需要按照多个字段进行复杂排序的场景。比如电商平台需要先按商品销量降序排列,再按用户评分升序排列;或者日志分析时需要先按时间戳降序&…

作者头像 李华
网站建设 2026/6/1 23:20:51

碧蓝航线自动化终极指南:3步实现游戏智能托管

碧蓝航线自动化终极指南:3步实现游戏智能托管 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 还在为每天重复刷图…

作者头像 李华