功能简介
根系图像预处理器是 RootQuantify(RootImager.py)的浏览器版本,把根系扫描图处理成白底黑根的图像,供 WinRHIZO、RhizoVision Explorer 或 ImageJ 测量:
- 用多边形圈出根系区域。
- 工具按原始分辨率对该区域执行 RootQuantify 的背景扣除和阈值分割。
- 用画笔修正后导出。
验证
处理流程逐步复现 RootImager.py,以下各步都与之相同:
- 灰度转换;
- 50 × 50 px 形态学闭运算(背景估算);
- 相减、最小-最大归一化和阈值 30;
- 多边形填充。
在 403 张测试扫描图(最大 6000 × 8000 px,共约 2 亿像素)上,结果的每个像素都与用 OpenCV 4.14 和 5.0 运行的 RootQuantify 一致。测试图涵盖粗细根、分枝、光照不均、阴影,以及凸、凹两类区域。在 Chrome 中从上传文件到处理画布的完整流程,对 PNG 和 JPEG 扫描图同样逐像素一致。
对比脚本和结果在网站代码库中(scripts/rootquantify/、scripts/benchmarks/rootquantify-2026-10-14.md),npm run test:science 会用保存的 OpenCV 参考结果重复这项检查。
本地处理
图像的解码、处理、编辑和导出都在当前浏览器标签页内完成,扫描图不会上传。
开始之前
- 使用根系比托盘或纸张更暗的 JPG 或 PNG 扫描图。PNG 在所有浏览器中结果都相同;Safari 用自带的解码器解码 JPEG,个别像素的灰度可能相差 1 级。
- 扫描图按原始分辨率处理,每张最多 6000 万像素(相当于 800 dpi 的 A4 页面),最多同时打开 6 张。
- 关闭或刷新标签页前请保存结果;图像和编辑记录只保存在内存中。
快速流程
- 点击上传图像,选择一张或多张扫描图。
- 在批次中选择一张图像。
- 在多边形模式下,在右侧画布上沿根系区域点击,然后点击闭合多边形。这一步相当于 RootQuantify 中点选顶点后按
c。 - 可选:点击预览背景估算。
- ROI 矩形内显示的灰色背景中应看不到根系。
- 若最粗的根仍然可见,请增大背景核尺寸。
- 点击运行 ROI 处理。右侧画布显示处理后的 ROI 矩形,白底黑根。
- 在手动画笔中,选择绘制(黑)补回根系,或选择擦除(白)去除杂质,并调整画笔大小。这些对应 RootQuantify 的
d、e和+/-键。 - 撤销上一笔可撤回最近的修改(对应 RootQuantify 的
u)。图像修好后点击下载处理后的 PNG。 - 继续处理其余图像,或点击清空批次,把所有图像从内存中移除。
控件与输出
| 控件 | 作用 |
|---|---|
| 上传图像 | 按原始分辨率打开 JPG/PNG 扫描图,每张最多 6000 万像素,最多 6 张。 |
| 背景核尺寸 | 估算背景的方形闭运算边长。RootQuantify 用 50 px,应大于最粗根的直径。 |
| 阈值 | 与背景的归一化差值超过该值(满分 255)的像素判为根系。RootQuantify 用 30。 |
| 恢复 RootQuantify 默认值 | 把核尺寸设为 50 px、阈值设为 30。 |
| 预览背景估算 | 在 ROI 矩形内显示闭运算结果,处理前用来检查核尺寸。 |
| 闭合多边形 / 撤销上一个点 / 重置多边形 | 完成、删减或清空多边形(3 至 60 个点)。 |
| 运行 ROI 处理 | 生成 ROI 外接矩形图像:根系为黑色,其余部分(含多边形以外)为白色。 |
| 绘制(黑)/ 擦除(白)/ 画笔大小 | 涂黑或涂白。笔画会被归为纯黑和纯白,图像始终保持二值。 |
| 撤销上一笔 | 恢复最近 4 个状态之一。 |
| 下载处理后的 PNG | 保存为 processed-<文件名>.png,与 RootQuantify 的命名一致。参数记录中保存核尺寸、阈值、多边形和 ROI 矩形。 |
工作原理
与 RootImager.py 一样,所有计算都在多边形的外接矩形上进行:
- 用 OpenCV 的权重(0.299 R + 0.587 G + 0.114 B,15 位定点)把矩形区域转为灰度。
- 用方形核做形态学闭运算(先膨胀后腐蚀)得到背景。根系细而暗,闭运算会用周围的亮度把它们填平。
- 用背景减去灰度图。差值在根系上大、其他地方接近零,从而消除光照不均和阴影。
- 把差值拉伸到 0–255(最小-最大归一化)后做阈值分割。超过阈值的像素成为黑色根系,其余像素及多边形以外的区域为白色。
输出的是这个矩形区域而不是整张扫描图,与 RootQuantify 保存的内容相同。
数据、隐私与外部服务
- 文件只留在当前浏览器标签页中,不会传输。
- 不使用账号、云存储或自动保存。
- 清空批次、刷新、跳转或关闭标签页都会丢弃图像和编辑记录。
与桌面版的区别
- 输出为 PNG,二值图像无损保存。RootQuantify 沿用原文件格式,JPEG 输入会得到带压缩伪影的 JPEG 输出。
- 画笔笔画会被归为纯黑和纯白。RootQuantify 的抗锯齿画笔会留下灰色边缘像素。
- 不会把原图移到
processed_original文件夹,浏览器无法改动你的文件。 - 多数浏览器不支持 TIFF;请先把 TIFF 扫描图转为 PNG,或使用 RootQuantify。
局限
科研使用
处理后的图像是根系测量的输入,而不是测量结果。测量前请检查细根、交叉处和扫描伪影,与使用桌面版时相同。
- 根系必须比背景暗;浅色根系放在深色托盘上的扫描图需要先反相。
- 归一化以外接矩形内最暗的根为基准,所以结果与多边形的外接矩形有关。多边形圈得紧凑一些,不同扫描图的结果更可比。
- 没有缩放工具;精细修正时请使用较大的窗口。
常见问题
| 问题 | 检查项 |
|---|---|
| 文件被拒绝 | 使用小于 120 MB、不超过 6000 万像素的 JPG/PNG,且同时打开不超过 6 张。 |
| 运行 ROI 处理没有反应 | 先选择图像,添加至少 3 个多边形点,再点击闭合多边形。 |
| 粗根处理后中间是空的 | 核尺寸小于根的直径;增大背景核尺寸后重新处理。 |
| 模糊的细根丢失 | 降低阈值,或用**绘制(黑)**补画。 |
| 斑点或阴影被识别为根 | 提高阈值、把多边形圈紧,或用**擦除(白)**去掉。 |
| 无法编辑多边形 | 点击重置处理结果;需要新边界时再点击重置多边形。 |
