XINDU · PAN LILIN · CATHEALTH

🐱 猫咪粪便智能健康检测系统

技术原理与算法设计。系统将照片上传、OpenCV 图像分割、五维视觉检测、Purina 1–7 级评分和 DeepSeek 辅助解读串联为一条可复现的健康评估流程。

← 返回检测页面返回成果展

一、技术原理与算法设计

系统不直接把图片交给大模型判断,而是先用确定性的视觉算法提取可解释指标,再将指标组合成 0–100 综合分。DeepSeek 只负责把结构化结果转换为面向宠物主人的文字解读,不能替代视觉检测和兽医诊断。

GrabCut分离粪便主体,减少背景、猫砂和地面颜色对结果的影响。
HSV + GLCM分别分析颜色异常和灰度纹理,输出阈值可追踪的检测指标。
加权健康分五个维度按 35%/25%/15%/10%/15% 合成总分。

二、流程图

浏览器选择 JPG / PNG / BMP(≤ 16MB)
          ↓
Flask POST /api/detect
          ↓
高斯模糊 → HSV 粗分割 → 形态学开闭运算
          ↓
最大轮廓 + 20px 边界 → GrabCut 5 次迭代
          ↓
┌─────────┬─────────┬─────────┬─────────┬─────────┐
│形态纹理 │颜色 HSV │血丝像素 │黏液高光 │杂质轮廓 │
│GLCM     │平均 H/S/V│红色比例 │亮度比例 │面积阈值 │
└─────────┴─────────┴─────────┴─────────┴─────────┘
          ↓
健康评分 calculate_health_score()
          ↓
标注图 + JSON 结果 → 前端报告 → 可选 DeepSeek 解读

三、软件基础设置信息

项目当前设置
后端框架Flask + Gunicorn,systemd 服务 cat-poop.service
部署目录/data/cat-poop/
本地监听127.0.0.1:5080
公网入口https://cdqtech.online/cat-poop/
上传限制16 MB;支持 JPG、JPEG、PNG、BMP
APIGET /api/healthPOST /api/detectPOST /api/ai-report
反向代理nginx 将 /cat-poop/ 转发到 127.0.0.1:5080

四、软件系统设计

模块文件职责
Web 接入app.py接收图片、生成 UUID 文件名、调用处理流水线、返回 JSON 和标注图。
预处理src/preprocessing.py中文路径读取、HSV 初筛、形态学处理、最大轮廓定位和 GrabCut。
五维检测src/detector.py颜色、血丝、黏液、GLCM 纹理、杂质检测。
评分引擎src/health.py把五个子分数按配置权重合成总分和健康等级。
配置中心config.pyPurina 1–7 级、HSV/面积阈值、健康评分权重和上传目录。
AI 解读call_deepseek()将结构化检测结果组织成提示词,调用 DeepSeek 返回自然语言报告。

服务状态与容错

systemd 设置为自动启动和异常重启;图片未检测到主体时返回 detected=false,单条坏 JSON/外部 AI 请求失败不会改变检测主流程的视觉结果。

五、参数配置

图像分割参数

参数数值用途
HSV 粗定位H 3–40,S 15–255,V 20–255从背景中筛选疑似粪便区域
边界扩展最大轮廓外扩 20 px为 GrabCut 保留边缘上下文
GrabCut5 次迭代精细分离前景与背景

血丝与黏液参数

检测项阈值判定
血丝 HSVH 0–10 或 170–180;S > 80;V > 40红色面积比例 > 2% 报警;> 5% 为严重
黏液高光灰度 > 200高光面积 > 5% 视为存在黏液;> 15% 为高风险
杂质面积冻干 > 100 px;猫粮 > 150 px;白色碎片 > 80 px轮廓满足颜色范围和面积后计入

综合评分权重

维度权重满分条件
Purina 形态评分35%3、4 级为 100 分
颜色25%normal=100,medium=60,high=30,critical=10
血丝15%normal=100,medium=70,high=30,critical=5
黏液10%normal=100,medium=60,high=25,critical=5
杂质15%normal=100,medium=60,high=30,critical=10

六、五个检测阶段

Stage 1:形态评分(Purina 1–7 级)

目标:判断粪便干湿、成形和质地。
方法:对 ROI 灰度图量化为 16 个灰度级,计算四方向 GLCM 的 contrast、homogeneity、energy、correlation,再映射到 1–7 级。3–4 级为理想区间,1–2 偏干,5–7 偏软或水样。

Stage 2:颜色分析(HSV)

目标:筛查黑色、红色、黄色、灰白和绿色等异常颜色。
方法:在 mask 内计算平均 H/S/V;V<60 判为黑色风险,H<8 且 S>80 判为鲜红风险,H 25–40 且 S>50 判为黄色风险,S<30 且 V>150 判为灰白风险。

Stage 3:血丝检测

目标:检测 ROI 中红色像素占比。
方法:合并 H 0–10 与 170–180 两个红色区间,统计红色像素 / mask 像素;比例 <2% 正常,2–5% 警告,>5% 严重。

Stage 4:黏液检测

目标:通过高光面积和 Laplacian 平滑度识别湿润黏液特征。
方法:灰度 200–255 作为高光候选,计算其在 ROI 的占比,并统计 Laplacian 标准差辅助判断表面平滑度。

Stage 5:杂质检测

目标:发现未消化冻干、猫粮碎屑和白色异物。
方法:按每类 HSV 范围分割,开运算去噪,提取外轮廓并执行最小面积过滤,输出数量和面积占比。

七、边界与使用说明

本系统是宠物健康筛查和观察工具,不构成兽医诊断。光照、拍摄角度、猫砂遮挡、样本过小都会影响图像分割;出现持续腹泻、血便、黑便、精神差或食欲下降时,应及时咨询兽医。

AI 解读仅对已经计算出的检测指标进行文字化说明;视觉评分主流程不依赖 AI 服务。建议在相近光照和拍摄距离下连续记录多次结果,而不是依据单张图片做结论。