MRI影像上脑出血量的精准计算研究

2019-09-10 07:22路玲玲
赤峰学院学报·自然科学版 2019年10期
关键词:脑出血应用程序体积

摘 要:本文设计出MRI图像上脑出血量的准确计算应用程序系统.基本思想是:首先识别MRI影像上的出血区域,然后计算出血区域所包含的像素总量,最后换算成准确的患者脑出血体积.该系统是由C++语言作为系统开发基本编程语言,以MFC、OpenCv4.0、Visual Studio 2017、Windows操作系统作为系统主要开发环境,用患者MRI图片作为系统处理对象来源所开发设计的应用系统,是一款运行于PC端的免安装的桌面应用程序.

关键词:MRI;MFC;OpenCv4.0;脑出血;像素;计算

中图分类号:R743.3  文献标识码:A  文章编号:1673-260X(2019)10-0078-04

1 系统分析

1.1 系统的功能需求分析

MRI影像上脑出血量的精准计算软件系统主要为医院提供脑出血患者血肿体积的快速计算功能.主要功能有以下几点:

(1)单层出血面积计算,操作者选定处理图层的图片并圈取出血区域大概范围,系统会自动计算出当前检测图层的出血面积大小;

(2)脑部出血的血肿的总体积计算,操作者在完成所有单个图层出血面积的计算后,单击软件系统的按键可以直接输出血肿的总体积;

(3)打印检测结果,操作者完成患者的血肿体积计算后,打印检查检测结果并形成书面诊断结果报告.

1.2 系统关键技术

1.2.1 MPBM基本原理

应用MRI影像测定患者脑出血体积的基本原理:患者进行核磁共振成像检查时,成像结果是核磁共振仪器将患者头颅按一定的轴线与角度分割成厚度相同的连续断面,者该患者脑出血的体积就等于每一层的的面积乘以层厚的积分[1].而通过计算机软件方法可以利用头颅脑出血面图像的像素数(Pi)、单个像素的面积(S)及单个切层的层厚(Di)计算出被测血肿块的体积(V).层厚越小,层数(i)越多,测量结果越接近血肿块实际体积[2].理论上,精确的计算公式如下:

实际应用中的计算公式为:

例如,豫北地区某医院在MRI检查中,常设每层厚度di=6mm,相邻层间距为2mm,每幅图像大小为512×512像素(5.89×5.89inch或14.95×14.95厘米),算得s=8.525×10-4cm2,故脑血肿体积计算公式为

1.2.2 MPBM操作

MRI图像预处理包括以下步骤:

(1)打开图像处理软件(如Windows自带的“画图”软件),读入一幅待处理的头颅MRI图像副本;

(2)识别出血区域;

(3)在工具栏中选择“自由图形选择”工具,完整描绘出血区域的边界,右键单击选定区域,在下拉菜单中选定“反向选择”功能,并“剪切”掉血肿区域之外的部分(非出血区域“变白”),保存该副图像到磁盘上某一特定文件夹;

(4)如果一幅图像上有两个或多个出血区域,则对该幅图像的每个出血区分别实施第3步,得到相应两个或多个预处理图像,然后通过复制和粘贴,合并形成该层一副预处理图像[3];

(5)类似地预处理该患者每一幅头颅出血层的MRI图像.

1.2.3 脑血肿体积的计算原理

设经预处理共得到n幅出血层的血肿图像,则脑血肿体积算法的NS流程图如图1所示.

2 系统设计

根据系统需求分析结果,对系统进行规范的,可靠和科学的设计不仅需要满足系统的需求分析内容,同样需要满足以下四个方面:

(1)安全性.对患者诊断信息以及医院诊断数据的保护十分重要,诊断结果不仅是患者的隐私,更是医院相关研究的重要数据来源;

(2)兼容性.因为每一台的PC级Windows操作系统用户的配置不同,因此开发过程中应让应用程序在运行的满足兼容性要求;

(3)高效性.如何高效地利用计算机资源和程序高效的執行计算与处理功能,这正是用户的需求;

(4)先进性.在符合用户的要求的同时,适当使用目前流行技术,并根据用户的使用意见不断对软件进行迭代更新.

2.1 系统功能模块设计

MRI影像上脑出血量的精准计算应用程序软件需要实现BMP格式图片的读取,单层出血面积计算,出血总体积的计算,检测结果保存和打印的四个功能模块实现.该系统的功能模块如图2所示.

2.2 系统开发环境和目标平台

2.2.1 系统开发环境

(l)Microsoft Visual Studio编程软件;

(2)微软公司开的C++基础类库—MFC;

(3)基于BSD许可(开源)发行的跨平台计算机视觉库OpenCv4.0.

2.2.2 系统目标平台

该应用程序系统所用的平台是Windows7、Windows8、Windows10或者更高的版本.

3 编码与实现

3.1 基于MFC的对话框程序创建

由于本软件是基于MFC对话框进行开发,且本应用程序在使用过程中不需要数据库软件和网络资源,对于检测结果是保存于本地磁盘的指定文件夹的目录下.因此在开发前先进行MFC的对话框创建,创建步骤如下:打开Microsoft Visual Studio 2017开发软件→新建→项目→Visual C++→MFC/ATL→MFC应用程序,修改项目名称为MRI Accurate calculation cerebral hemorrhage,更改项目创建地址为D:\Microsoft Visual Studio\C++\,然后点击确定.

3.2 BMP图片读取

本PC端桌面应用程序处理的图片格式主要是24位的BMP格式图片,而核磁共振成像图片是本软件的处理的图片唯一来源.当操作选择本地磁盘的指定图片到系统后,系统需要对图片的相关信息判断,如是判断图片是否正确读入、图片是否是BMP格式、图片是否是24位的、BMP图片的文件头是否正确读入等相关信息的判断[4].

3.3 BMP图片处理

本PC端应用程序在系统读入图片后,由操作人员圈取出血的大致区域,系统会根据圈选的曲线对图片进行相关处理(以操作者圈取出血区域的曲线为分割线,在圈选区域内的像素点保持其像素原值不变以待系统下一步处理,在圈选区域之外的像素点进行像素值变换处理,使其像素值为255,其原因是255像素值不属于出血区域的像素值),排除在系统通过像素识别出血区域的时候不必要的其他因素影响,防止其误导系统在计算合格的像素点数时候存在误差,导致单个图层的出血面积计算不准确进而影响到出血体积的计算.

3.4 单个检测层的出血面积计算

MRI影像上脑出血量的精准计算PC端应用程序在对出血面积经行计算的时候,先对系统处理过的图片像素进行遍历,逐个判断单个像素点的像素值是否在符合脑出血的像素值范围.当单个像素值在属于脑出血的像素值范围的时候,对属于出血的像素点进行+1的操作,反之系统自动进入下一个像素点的像素值判断,直到遍历完被处理图片的所有像素[5].获取到被处理图片符合出血范围的像素总个数后,用总个数乘以单个像素的面积(单个像素面积:0.0008525944cm2)计算出被处理的该张图片上的出血面积.主要的核心代码如下:

if (!pBmpData10)

{

AfxMessageBox(_T("存储器错误!"));

delete pBmpData10;

return;

}

if (bmpFile.Read(pBmpData10, dataBytes) != dataBytes)

{

AfxMessageBox(_T("讀取BMP数据失败!"));

delete pBmpInfo10;

delete pBmpData10;

return;

}

bmpFile.Close();

CWnd *pWnd = GetDlgItem(PICTURE10);

CRect rect;

pWnd->GetClientRect(&rect);

CDC *pDC = pWnd->GetDC();

pDC->SetStretchBltMode(COLORONCOLOR);

StretchDIBits(pDC->GetSafeHdc(), 0, 0, rect.Width(), rect.Height(), 0, 0, bmpInfo.biWidth, bmpInfo.biHeight, pBmpData10, pBmpInfo10, DIB_RGB_COLORS, SRCCOPY);

bmpWidth10 = bmpInfo.biWidth;

bmpHeight10 = bmpInfo.biHeight;

biBitCount10 = bmpInfo.biBitCount;

dst10.release();

bmpFile.Remove(StrFileName);

int lineByte = (bmpWidth10 * biBitCount10 / 8 + 3) / 4 * 4;

CString str;

int z = 0, m = 0, n = 0;

double k = 0;

if (biBitCount10 == 24)

{

for (int i = 0; i < bmpHeight10; i++)

{

for (int j = 0; j < bmpWidth10; j++)

{

for (int k = 0; k < 3; k++)

{

m = *(pBmpData10 + i * lineByte + j * 3 + k);

}

if (m < 35) {

z++;

}

n++;

}

}

k = z * 0.0008525944;

str.Format("%f", k);

SetDlgItemText(AREA10, str);

}

}

3.5 出血体积的计算

MRI影像上脑出血量的精准计算PC端应用程序会在计算完所有的单个图的出血面积后,根据当前系统中已处理的单个图层面积计算出出血的体积.

3.6 系统运行效果

通过双击打开MRI Accurate calculation cerebral hemorrhage.exe启动应用程序软件,可以看到窗口有10个选择图片按钮、生成检测结果和打印结果等信息.

当进行多个图片依次读入应用程序处理后,单击生成检测结果按钮,系统自动在显示出血体积位置打印出患者脑出血体积.程序运行情况如图3所示.

4 系统测试与运行

4.1 系统测试的目的

进行软件测试主要目的在于三点,其一确定软件以正确的方式去做开发者期待软件做的事情;其二,通过测试为开发人员提供软件风险评估所需要的相关信息;其三,通过测试发现软件开发过程存在的编程问题,并保证软件的高质量开发过程.对于本PC端应用程序系统我们主要是在运行于Windows系统上,针对使用对象是医院的脑出血体积检测的相关医生,因此考虑医院真实环境和需求进行测试.

4.2 系统测试范围

MRI影像上脑出血量的精准计算应许程序软件是运行于PC端Windows操作系统上.所以测试包括兼容性测试、读取图片测试、单个出血面积计算测试、体积计算测试、检测结果保存测试与打印功能测试.

4.3 测试结果

4.3.1 容错性和易用性测试

在对软件进行功能测试的时候进行容错性的测试十分重要,主要对检测系统对合法输入和非合法输入处理和判断的能力(合法输入的时候检查系统功能是否可以正常实现,非法输入的情况下检测系统是否可以及时判断出错误并进行相应的处理)[6].易用性测试主要测试软件在使用过程中操作容易,使用过程简洁并且不存在不必要的操作,并且测试内容包含系统操作是否满足用户操作习惯.

4.3.2 测试用例设计

本软件在测试过程中从软件启动、使用和计算结果等多个方面经进行相关的测试,对MRI影像上脑出血量的精准计算经行测试设计,具体如表l所示.

4.3.3 测试结果

按照5.3.2中测试用例对软件进行测试,其结果和测试用例预期结果一致,如表5.2所示.该软件经过测试,达到设计之初要求,可以满足对脑出血体积的精确计算,并控制结果在允许的误差范围内.具体如表2所示.

5 结论

MRI影像上脑出血量的精准计算应用程序(MRI Accurate calculation cerebral hemorrhage)的开发是为了更加精确快捷的计算出脑出血而研发设计的一个基于Windows操作系统应用程序软件.此PC端应用程序软件可实现对BMP格式的图片读取,并根据操作者圈取的大致出血区域进行计算核磁共振成像的单个图像的出血面积和患者脑出血体积.它改变原来MRI不报告脑出血量、脑出血计算过程复杂、耗时漫长和结果不精确等现状,为患者提供可靠治疗依据并争取到宝贵治疗时间.同时该系统操作简单快捷,使用者可以轻松上手,具有较高的实效性,还可以根据操作者需求保存并打印每次检测结果,不仅使检测结果清晰的呈现于患者面前,而且后期对每次的检测结果有迹可循,实现电子化自动存档.MRI影像直接报告脑出血量,从而减少诊断时间、节约治疗成本、缓解CT资源紧张局面.

参考文献:

〔1〕盛波,陈松,吕发金,肖智博,吕富荣.体视学法在颅内血肿体积测量的应用[J].中国CT和MRI杂志,2016(01):5-7.

〔2〕刘涤,杜芳,程海泉.基于MRI图像纹理分析的应用及研究进展[J].中国医学计算机成像杂志,2018(05):426-429.

〔3〕谢勇.基于FCM聚类算法人脑MRI图像分割[J].大理大学学报,2017(12):49-52.

〔4〕侯东奥.MRI脑部肿瘤分割及其三维重建[D].南昌航空大学,2018.

〔5〕路玲玲.基于Converse 3D的房屋管理系统设计与实现[D].河南农业大学,2017.

〔6〕岳书丹.修建性详细规划电子报批系统规整端的設计与实现[J].洛阳师范学院学报,2019(05):32-36.

猜你喜欢
脑出血应用程序体积
全方位促醒护理在重症脑出血术后昏迷患者中的应用观察
1立方厘米与1立方分米
中西医结合治疗脑出血的疗效观察
护理干预在脑出血患者肺部感染中的预防
颅内减压技术在高血压脑出血患者中的应用
删除Win10中自带的应用程序
谷歌禁止加密货币应用程序
谈拟柱体的体积
谁的体积大
三星电子将开设应用程序下载商店