跳到主要内容
本页目录
Research notebook

Root Quantify:用 Python 交互式预处理根系图像

一个交互式 OpenCV 工具:通过多边形 ROI 选择、光照校正、阈值分割和画笔修正,把原始根系扫描图和照片处理为干净的二值图像,可直接用于根系性状软件。

RhizoVision Explorer、WinRHIZO 等根系性状软件从二值图像计算根长、直径和根系构型,结果的好坏取决于这张二值图像。原始根系照片中有托盘、标签、不均匀光照、阴影和土壤颗粒,全自动阈值分割要么丢失细小侧根,要么保留杂质。

Root Quantify 是我为这一预处理环节编写的 OpenCV 桌面工具,将自动校正与有针对性的人工复核结合起来:用户圈定根系区域,工具校正不均匀光照并进行阈值分割,用户再用画笔修正剩余错误。输出为干净的二值根系图像,可直接导入根系性状软件。

处理流程​

阶段操作结果
文件夹扫描查找 JPG、JPEG、PNG、BMP、TIF 和 TIFF 文件待处理图像队列
ROI 选择用多边形圈定有效根系区域掩膜后的裁剪图
预处理估计背景、校正不均匀光照、阈值分割并反相浅色背景上的深色根系
人工修正用可调画笔补画或擦除像素经复核的二值图像
导出保存校正后的图像,并将原图移入归档文件夹下次运行不会重复处理

校正后的图像在 RhizoVision Explorer、WinRHIZO、ImageJ 或实验室自有流程中进行测量。

安装​

源代码见 Root Quantify GitHub 仓库。

git clone https://github.com/smiler488/RootQuantify.git
cd RootQuantify

python -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txt

Windows 下用以下命令激活环境:

.venv\Scripts\activate

程序需要图形桌面环境;在无显示的服务器或 notebook 中,OpenCV 选择窗口无法显示。

运行前将 RootImager.py 中的 folder_path 设为图像所在目录。处理完成的原图会被移入 processed_original,因此请另行备份原始图像。

运行​

python RootImager.py

程序使用两个窗口:一个始终显示原图,另一个用于 ROI 选择和修正。

键盘操作​

按键阶段功能
cROI 选择确认多边形(至少三个顶点)
rROI 选择重置多边形
d人工修正补画深色根系像素
e人工修正擦除为浅色背景
+ / -人工修正增大或减小画笔
u人工修正撤销上一笔
q人工修正完成当前图像

确认多边形后仔细检查自动阈值结果,只修正明显的分割错误;人工修改越多,可重复性越低,修改情况应记入实验记录。

输入与输出​

校正后的图像写入 output 目录,文件名带 processed- 前缀;每张处理完成的原图移入 processed_original。

为保证可复现,与输出一并保存:

  • 原始图像(单独存放的只读备份);
  • Root Quantify 的提交哈希;
  • 脚本中的预处理参数;
  • 操作者和修正日期;
  • 对困难图像或剔除图像的说明。

质量控制清单​

  • 根系与背景的灰度差异明显;
  • ROI 已排除标签、标尺、盆沿和无关物体;
  • 阈值分割后细小侧根得以保留;
  • 阴影未被误判为根系;
  • 人工修正尽量少且有记录;
  • 用于发表的测量,由第二人抽查样本;
  • 下游测量已用已知尺寸物体或人工参考数据检验。

适用范围与局限​

阈值分割对阴影、反光、基质和重叠根系敏感,这正是工具保留人工修正环节的原因;而人工修正会引入操作者差异,因此修改应尽量少并留有记录。二值输出不保留颜色和灰度信息。交互式设计面向实验规模图像集的精细处理,而非无人值守的高通量处理;性状测量本身在下游软件中完成。

实验室中另有浏览器版本:根系图像预处理器(教程)。

讨论

有问题或田间观察想交流?