用户故事

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

Challenge

Automate the visual interpretation of cards used by hospital staff to determine patient blood antigenic typing

Solution

使用MATLAB开发,测试和生成嵌入式代码以进行图像分析和机器学习算法

Results

  • 准确性要求超出
  • 项目完成时间减半
  • Optimized system delivered

“随着我们通过使用嵌入式编码器生成代码来节省的时间,我们能够尝试新功能并在MATLAB中完成其他迭代,从而结合了早期原型的客户反馈。”

马克·布兰奇(Marc Blanch)
Grifols mdmulticard。

Grifols mdmulticard。


Knowing the blood antigen typing of a patient involved in a medical trauma is often essential for the physician to deliver effective treatment. The Grifols MDmulticard can determine blood antigen typing from a single drop of blood in just five minutes. The card uses lateral flow technology based on immunochromatographic strips to display distinct red bands that indicate the presence or absence of key antigens.

To help clinicians interpret MDmulticard results, Grifols engaged IDNEO to develop an automated card reader. The software for the card reader, developed in MATLAB®and implemented on Android target hardware, includes image processing, computer vision, and machine learning algorithms that translate the patterns and shapes of the bands on the card into blood antigen typing results.

Idneo的研发硬件主管Marc Blanch说:“ MATLAB使我们能够快速分析图像并改善我们的算法。”“在我们开发了算法之后,MATLAB使它们很容易将其部署到嵌入式系统中。在C或其他语言中这样做会更加困难,尤其是在短时间线上。”

Challenge

The red bands on the MDmulticard are sometimes misshapen or faded due to humidity, temperature, the patient’s transfusion history, the manual process used to dilute the blood sample, or other factors. As a result, the IDNEO team needed to develop algorithms capable of handling significant variations in band patterns and shapes. The team only had access to a limited number of cards at the start of the project. They needed a workflow that supported rapid iterations so that they could easily refine their algorithms as they received more cards with different band patterns and shapes.

Grifols和Idneo希望尽快提供原型,以使临床人员能够在将算法部署到生产硬件之前提供有关软件的反馈。由于团队正在制定短时间线工作,因此他们想采用一种敏捷的开发方法,使他们能够纳入客户的投入并迅速对转移要求做出反应。

Solution

IDNEO工程师开发的图像处理,第一版er vision, and machine learning algorithms in MATLAB and then generated code for the production Android implementation of the MDmulticard reader with Embedded Coder®.

使用MATLAB和Image Processing Toolbox™开发的核心图像分析算法,执行颜色均衡和白色平衡,将图像转换为Cieluv色彩空间,计算颜色差异,然后在卡片上定位图像中的带状图像。Idneo团队在核心算法中添加了频段分析,创建了图像的二进制版本,然后应用形态操作以获取卡上每个频段的骨架图像。

接下来,他们实施了一个线性回归分类器,该分类器训练了从骨架图像中提取的功能。分类器检测出固体带(分类为正),不存在带(分类为负)和混合场带(归类为可疑),这可能会发生在患者先前的输血。

在Grifols提供的图像上测试算法后,工程师设计了使用MATLAB应用程序设计器的用户界面。他们使用Matlab Compiler™制作了独立的MATLAB应用程序,该应用程序Grifols工程师和选定的医院工作人员可以在不安装MATLAB的情况下使用。

The IDNEO team generated production C code from the core image analysis algorithms with Embedded Coder. They tested the C code by comparing the results it produced with the results produced by the original MATLAB algorithms, using MATLAB Profiler to measure code coverage.

The team integrated the generated code into an Android app that provides a touch-screen interface to the Grifols MDmulticard reader.

To comply with the customer’s tight schedule, the IDNEO team used the Scrum process framework and continuous integration throughout development. MATLAB supported this workflow, with Jenkins jobs testing the code generated with Embedded Coder against a database of card images.

A fully validated, preproduction prototype of the card reader is undergoing usability testing at various hospitals in Spain. Meanwhile, IDNEO engineers continue to improve the accuracy of their algorithms, using the Classification Learner app in Statistics and Machine Learning Toolbox™ to evaluate support vector machines and other machine learning models.

Results

  • 准确性要求超出.“Our customer set a requirement of greater than 90% accuracy in identifying positive and negative bands,” says Blanch. “The algorithm we developed in MATLAB produced zero false positives or false negatives in the sample data set, so we exceeded that requirement.”
  • 项目完成时间减半。布兰奇说:“ MATLAB和嵌入式编码器使我们能够减少完成项目所需的时间从24个月到12个月,而无需为团队增加更多的工程师。”“这种方法使团队成员能够专注于他们的特定角色,使我们更加高效,并减少软件错误的数量。”
  • Optimized system delivered.“Using Embedded Coder to generate C code for the device enabled us to concentrate fully on developing and optimizing our algorithms,” says Blanch. “As a result, we were able to deliver a higher quality system in the time that we had.”