用户故事

IDNEO开发嵌入式计算机视觉和机器学习算法,用于解释血型结果

挑战

自动化医院工作人员用于确定患者血液抗原性分型的卡片的视觉解释

解决方案

使用MATLAB开发、测试和生成用于图像分析和机器学习算法的嵌入式代码

后果

  • 超出精度要求
  • 工程完成时间减半
  • 优化系统交付

“通过使用嵌入式编码器生成代码节省了时间,我们能够在MATLAB中试验新功能并完成额外的迭代,并结合客户对早期原型的反馈。”

马克·布兰奇,伊德尼奥

格里弗斯牌。


了解医疗创伤患者的血液抗原分型通常是医生提供有效治疗的关键。Grifols MDmulticard可以在五分钟内从一滴血中确定血液抗原分型。该卡采用基于免疫层析条带的横向流动技术,显示清晰的红色条带,指示是否存在关键抗原。

为了帮助临床医生解释MDmulticard结果,Grifols聘请IDNEO开发了一种自动读卡器。在MATLAB中开发的读卡器软件®并在Android target硬件上实现,包括图像处理、计算机视觉和机器学习算法,这些算法可以将卡上带的模式和形状转换为血液抗原分型结果。

IDNEO研发硬件主管马克·布兰奇(Marc Blanch)说:“MATLAB使我们能够在几次迭代中快速分析图像并改进算法。”。“在我们开发了这些算法之后,MATLAB使得将它们部署到嵌入式系统变得很容易。用C或其他语言来实现这一点要困难得多,特别是在短时间内。”

挑战

MDmulticard上的红色条带有时会因湿度、温度、患者的输血史、用于稀释血样的手动过程或其他因素而变形或褪色。因此,IDNEO团队需要开发能够处理条带模式和形状重大变化的算法。该团队只有在项目开始时获得有限数量的卡片。他们需要一个支持快速迭代的工作流程,以便在收到更多具有不同波段模式和形状的卡片时,能够轻松改进算法。金宝app

Grifols和IDNEO希望尽快交付一个原型,使临床工作人员能够在算法部署到生产硬件之前提供软件反馈。因为团队的工作时间很短,所以他们希望采用一种敏捷开发方法,使他们能够将客户输入与d对不断变化的需求作出快速反应。

解决方案

IDNEO工程师在MATLAB中开发了图像处理、计算机视觉和机器学习算法,然后生成代码,用于使用嵌入式编码器实现MDmulticard阅读器®.

核心图像分析算法,用MATLAB和图像处理工具箱开发™, 执行颜色均衡和白平衡,将图像转换为CIELUV颜色空间,计算色差,然后在卡上定位指示图像中带状图案的基准标记。IDNEO团队将带状分析添加到核心算法中,创建图像的二进制版本,然后应用形态学运算to获取卡上每个波段的骨架图像。

接下来,他们实现了一个线性回归分类器,该分类器使用从骨骼图像中提取的特征进行训练。该分类器检测固体条带(分类为阳性)、无条带(分类为阴性)和混合场条带(分类为可疑),这些条带可能在患者之前输血时出现。

在Grifols提供的图像上测试了算法之后,工程师们用MATLAB App Designer设计了一个用户界面。他们使用MATLAB编译器™ 制作一个独立的MATLAB应用程序,Grifols工程师和选定的医院工作人员无需安装MATLAB即可使用。

IDNEO团队使用嵌入式编码器从核心图像分析算法生成生产C代码。他们通过比较C代码生成的结果与原始MATLAB算法生成的结果来测试C代码,并使用MATLAB Profiler测量代码覆盖率。

该团队将生成的代码集成到一个Android应用程序中,该应用程序为Grifols MDmulticard阅读器提供触摸屏界面。

为了满足客户紧凑的时间表,IDNEO团队在整个开发过程中使用了Scrum流程框架和持续集成。MATLAB支持这一工作流程,Jenkins jobs在一个卡片图像数据库中测试嵌入式编码器生成的代码。金宝app

一个经过充分验证的预生产原型读卡器正在西班牙多家医院进行可用性测试。同时,IDNEO工程师使用统计和机器学习工具箱中的分类学习器应用程序,继续提高算法的准确性™ 评估支持向量机和其他机器学习模型。金宝app

后果

  • 超出了精度要求。Blanch说:“我们的客户设定了一个要求,即在识别阳性和阴性波段时,准确率要高于90%。”。“我们在MATLAB中开发的算法在样本数据集中产生零误报或漏报,因此我们超出了这一要求。”
  • 项目完成时间减半。“MATLAB和嵌入式编码器使我们能够将完成项目所需的时间从24个月减少到12个月,而无需向团队中增加更多的工程师,”Blanch说。“这种方法使团队成员能够专注于他们的特定角色,使我们更高效,并减少软件错误的数量。”
  • 优化系统交付.布兰奇说:“使用嵌入式编码器为设备生成C代码,使我们能够完全专注于开发和优化算法。”。“因此,我们能够在现有的时间内提供更高质量的系统。”