有个需求:
尿检有那种试纸,比如,一个试纸条,上面有 10 个测试项目(矩形小纸片贴在试纸上,有间隔),尿液侵泡几十秒后,就能读取数值了。
现在要把整套程序化,自动识别数值。
因为程序运行环境限制,js 实现最好。
这似乎是 CV 计算机视觉领域的问题,难道要用 opencv 。
感觉好难。有大佬能接吗?(可外包,有偿)
给个思路也行。
目前我想到的难点: 1 、从扫一扫那样的照片帧中,一帧一帧的识别图片
2 、一个图片帧中,识别出 10 个色块,有点麻烦
3 、试纸是湿的,颜色肯定会溢出矩形,对程序识别造成麻烦
4 、取得的颜色,在比色卡中,如何解读出他对于的数值,好难。。。
1
ch2 2022-04-22 00:22:45 +08:00
直接深度学习,图片数量够多,打标训练很简单的事,就是 n 分类
|
2
v2mo OP <img alt="图片注释" src="http://www.yxkxyghx.org/CN/abstract/html/PIC/yxkxyghx-36-4-340-1.jpg">
|
3
raycool 2022-04-22 00:41:52 +08:00
直接 CNN 一把梭
|
4
7gugu 2022-04-22 00:46:15 +08:00
看看 opencv.js ,它们官网提供了一部分的 demo ,你可以参考一下
|
5
mikumkf 2022-04-22 00:54:29 +08:00
这个不需要用到任何的 CV 知识吧?视频就是图片,调用摄像头获得某一帧就好了,识别色块也简单,如果能限制试纸的放置位置直接拿图像对应的地方矩阵就好了 ,颜色的话把读到 RGB3 通道转到 HSL 空间和比色卡算数值差,设定一个 threshold 就可以了。如果不能限制试纸的位置,用读到的整张图片转化色彩空间到比色卡的空间范围内做 Clip 然后算最大的面积。 拿 JS+Canvas+Camera API 就行,可能这里唯一的问题是怎么保证 Camera 读到的颜色偏色不太大,可以考虑在拍的时候用一个亮的白光灯打着。
|
6
rabbbit 2022-04-22 10:22:26 +08:00
tensorflow.js?
测颜色估计要看试制质量和拍照环境. 拿新冠的那个抗原测试棒为例, 没干的时候肉眼看着都费劲,色差非常小. 还有大量干扰,例如滴多了会有不规则条纹 或者有人把自己鼻子捅漏了. |
7
rabbbit 2022-04-22 10:22:52 +08:00
试制 -> 试纸
|
8
weiwoxinyou 2022-04-22 13:09:59 +08:00
CNN 不背这个锅,深度学习需要大量数据进行训练,不适合这个场景。
@mikumkf 的方案个人认为更可行,再补充一下细节问题: 1. 针对视频,可以设置识别图像上限,一个视频也就识别10张可能比较合适。 2. 确定试纸形成的颜色范围,需要考虑手、背景的影响,控制识别矩形框在一定的范围比较合适。 3. 针对识别结果不同,建议选择连续识别一致的结果,如前8结果 A 后2结果 B 可以考虑丢弃后2的识别结果,如果间歇识别不同结果,建议同时给出。 4. 用识别的矩阵减去由色卡组成的同样大小的矩阵,色差最小的即为识别结果。 |