✨ 长期致力于羊体尺参数、双目立体视觉、三维重构、图像分割、测点识别研究工作擅长数据搜集与处理、建模仿真、程序编写、仿真设计。✅ 专业定制毕设、代码✅如需沟通交流点击《获取方式》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, keycv2.contourArea) # 计算凸包和曲率 hull cv2.convexHull(cnt) return hull.reshape(-1,2) def measure_body_length(self, points): # 最远点对 tree cKDTree(points) dist, idx tree.query(points, k2) far_pair np.argmax(dist[:,1]) return np.linalg.norm(points[far_pair] - points[idx[far_pair,1]])