此示例示出了如何执行使用主动轮廓(蛇)3-d的分割。您可以查看使用卷浏览器应用程序的结果。
装载人工胸部CT扫描数据到工作区。要运行这个例子,你必须从MathWorks公司™使用的Add-On浏览器下载的样本数据。看到安装示例数据使用的Add-On资源管理器。
加载chestVolume谁是
名称大小字节类属性V 512x512x318 166723584 INT16
从转换CT扫描数据INT16
至单
将这些值归一化到[0,1]的范围内。
V = im2single(V);
查看使用卷浏览器应用的胸部扫描。打开从MATLAB®应用工具条的应用程序。您也可以通过打开应用程序volumeViewer
命令并指定体积作为参数:volumeViewer(V)
。体积查看器具有旨在提供某些类型的数据的最佳视图预设alpha贴图。为了让胸部扫描的最佳视图中,选择CT-骨预设。
段使用主动轮廓技术在CT扫描数据中的肺部。主动轮廓是一个区域生长算法,需要初始种子点。该示例使用图像分段应用程序通过分割两个正交2-d片,一个在XY平面内,而另一个在XZ平面中创建这个种子掩膜。然后,该示例插入这两个分割成3 d掩模。的例子中通过这个掩模的activecontour
函数来创建在胸腔肺的3-d的分割。(本例使用主动轮廓方法,但你可以使用其他的分割技术来完成同样的目标,如洪水填充。)
提取在XY和XZ尺寸两个中心片。
XY = V(:,:,160);XZ =挤压(V(256,:,:));
查看使用2-d片imshow
功能。
图imshow(XY,[],'边界','紧');
imshow(XZ,[],'边界','紧');
您可以执行在图像分段应用的分割。从MATLAB应用程序工具条,打开应用程序或使用imageSegmenter
命令,指定2-d切片作为参数,imageSegmenter(XY)
。
要开始分割过程,单击阈打开的肺切片阈标签。在阈值选项卡,选中手工阈值选择并移动阈值滑块指定达到润肺的良好分割的阈值。请点击创建规则接受阈值,并返回分割标签。
该应用程序执行以下的代码,以阈值的图像。
BW = XY> 5.098000e-01;
这个最初的肺分割后,使用上的选项清理面膜瑞风面膜菜单。
在应用中,你可以点击每个选项反转掩模图像,使肺部都处于前景(反相蒙版),删除其它的分段元件除了肺(边界清晰肺分割内部),和填孔(补洞)。最后,使用形态学选项以平滑肺分割的边缘。在形态选项卡,选择侵蚀面膜操作。执行这些步骤后,选择显示二进制和掩模图像保存到工作空间。
该应用程序执行以下代码细化面具。
BW = imcomplement(BW);BW = imclearborder(BW);BW = imfill(BW,“洞”);半径= 3;分解= 0;SE = strel(“盘”,半径,分解);BW = imerode(BW,SE);maskedImageXY = XY;maskedImageXY(〜BW)= 0;imshow(maskedImageXY)
在XZ片执行相同的操作。使用加载图像,选择XZ
变量。使用阈值处理进行肺部的初始分割。对于XZ片时,全局阈值选项创建适当的分割(调用imbinarize
在下面的代码)。由于与XY片,使用上的选项瑞风面膜菜单来创建肺部的抛光分割。在形态学标签上的侵蚀操作,指定的13的半径,以除去小无关物体。
来分割XZ切片和抛光的结果,该应用程序执行以下的代码。
BW = imbinarize(XZ);BW = imcomplement(BW);BW = imclearborder(BW);BW = imfill(BW,“洞”);半径= 13;分解= 0;SE = strel(“盘”,半径,分解);BW = imerode(BW,SE);maskedImageXZ = XZ;maskedImageXZ(〜BW)= 0;imshow(maskedImageXZ)
创建3-d籽面膜,你可以用用activecontour
功能分割肺部。
创建逻辑3- d体积的大小与输入体积和插入相同mask_XY
和mask_XZ
在适当的空间位置。
掩模=假(大小(V));掩模(:,:,160)= maskedImageXY;掩模(256,:,:) =掩模(256,:,:) |重塑(maskedImageXZ,[1512318]);
使用该3-d种子掩膜,段使用动态轮廓方法在3 d体积肺部。此操作可能需要几分钟的时间。为了获得高质量的分割,利用histeq
超过可用范围蔓延体素值。
V = histeq(V);BW = activecontour(V,掩模,100,“赞Vese”);segmentedImage = V. *单(BW);
您可以通过运行以下命令查看卷查看器应用程序分割的肺volumeViewer(segmentedImage)
。通过操纵在渲染编辑器的alpha贴图设置,你可以得到的只是肺部的一个很好的观点。
使用regionprops3
与功能'体积'
选项来计算肺的体积。
volLungsPixels = regionprops3(逻辑(BW),'体积');
指定要在所述体素的间距X,ÿ和ž尺寸,这是从原始文件的元数据收集。元数据是不包含在图像数据您从附加在资源管理器中下载。
spacingx = 0.76;spacingy = 0.76;spacingz = 1.26 * 1E-6;unitvol = spacingx * spacingy * spacingz;volLungs1 = volLungsPixels.Volume(1)* unitvol;volLungs2 = volLungsPixels.Volume(2)* unitvol;volLungsLiters = volLungs1 + volLungs2
volLungsLiters = 5.7726