简介:这份 Mimics 中文版教程面向医学影像建模初学者与生物工程相关专业学生,针对软件界面陌生、操作流程不熟悉的入门难题,系统讲解从影像导入到三维模型输出的完整链路。压缩包为单个 PDF 文档,大小约 3.99MB,内容以图文步骤编排,便于边看边在软件中对照操作。目前已有 1581 人学习下载,说明其在医学三维建模入门资料中具有一定认可度。教程以实例贯穿,覆盖打开工程后在轴视、前视、侧视三视图中的定位与方位标记调整,通过窗口化调节对比度以区分骨骼与软组织,二值化中阈值上下界的取舍思路,区域增长去除漂浮像素并生成独立掩膜,以及 Calculate 3D 生成三维表示、STL 文件导出、RP 分层与支撑文件生成等环节。作者还特别提示阈值大小对模型孔洞与义肢建模效果的影响,属于实践中容易踩坑的细节,可帮助读者建立可复用的分割与建模流程认知。
1. 先弄明白 Mimics 在忙什么:它把一叠 CT 切片捏成一个能打印的立体骨头
新手第一次打开 mimics 中文版教程,最常见的反应是愣住:满屏灰扑扑的切片、几条彩色交叉线、一堆不认识的按钮,鼠标往哪儿放都不知道。其实它的活儿用一句话能说清——把医院拍出来的二维 CT 切片,拼成一个能转、能看、能导出打印的三维模型。骨头、牙齿、软组织密度不同,在 CT 里对应不同灰度值,软件让你按灰度把关心的部分圈出来,再一层层堆成实体。适合谁?做口腔颌面术前规划的方向、做假体和支具设计的工程方向,还有刚接触医学图像三维重建的学生。这套 mimics 中文版教程(Mimics Medical 常用功能为主)就是按“开工程、调对比度、二值化、区域增长、建 3D、导 STL”的顺序,带你把第一个模型跑出来。
2. 为什么值得学:一条从灰度值到实体模型的流水线
学任何软件,先知道它在整条生产线上站哪个位置,比死记按钮有用得多。骨科、口腔颌面、康复辅具这些场景里,医生拿到的是 CT 或 MRI 的一叠二维切片,几百张,一张张看能看出病灶,却看不出“这块骨头到底是什么形状、缺了多少、补块要多大”。手工做这个判断很费劲,也容易出错。Mimics 干的活,是把这些切片里的灰度信息翻译成几何形状,让你能在屏幕上旋转观察,最后把形状交给 3D 打印机或者快速成型设备。所以它不是一个纯画图软件,更像一个“翻译器”:输入是像素,输出是实体。理解了这一层,后面那些阈值、掩膜、区域增长的名词,就都能挂到这条流水线上,不容易乱。
学习曲线也在这里。第一次打开工程的人,九成会卡在“我到底该从哪一步开始”上。教程之所以从打开工程讲起,不是因为打开文件难,而是因为后面每一步都依赖前一步的结果:对比度没调好,二值化就选不准阈值;二值化没做,区域增长没有原料;掩膜不干净,3D 模型就带一堆碎渣。这条链子断一环,后面全歪。下面把链条上的三个核心概念先讲透,再动手。
2.1 三个视图不是摆设:轴视、前视、侧视各管什么
打开工程后窗口被分成三块。右边大的是轴视图,也叫 xy 视图或 axial view,相当于从上往下把人“横着切片”;左上角是前视图,xz 视图或 coronal view,从前往后切;左下角是侧视图,yz 视图或 sagittal view,从左往右切。三块视图里各有一条彩色交叉线,线的位置代表当前切片的位置,你在任意一个视图里点一下鼠标,另外两个视图会立刻跳到对应的那一层。这个联动是三维软件最核心的交互,也是新手最容易忽略的地方。
很多人只盯着轴视图干活,滚鼠标滚轮一层层往下翻,翻到眼酸还漏了侧面的病变。正确姿势是三点定位:在轴视图里找到可疑区域,看交叉线在前视图和侧视图上落在哪个位置,反过来再确认。教程里 Simon 那个案例最有说服力——检查下颌骨掩膜时,作者是在侧视图 87.25 的位置发现了三颗本该属于下颌骨、却被分到上颌骨掩膜的像素,然后靠交叉线在轴视图 -4.50、-3.50、-2.50 三层把它们找回来。只在一个视图里看,这种错误永远发现不了。
视图上的方位字符要留意。有时候软件识别出的左右、上下方位是反的,做出来的模型就是镜像的,打印出来戴不上。教程给的办法是 File > Change Orientation,在弹窗里用右键选正确的方位字母。如果觉得交叉线、刻度线、切片位置标记、方位字符太碍眼,View > Indicators 里可以分别关掉,但入门阶段建议全留着,这些标记就是你判断位置的唯一依据。图片里有明显不合适、需要剔除的切片,用 File > Organize Images 处理,别让它混进模型里。
2.2 掩膜:给像素分组贴颜色的那层便利贴
掩膜(mask)这个词听着玄,其实就是“一堆你觉得属于同一个东西的像素”的集合。你按灰度值把骨头圈出来,这些像素就组成一个掩膜,软件给它涂上颜色,方便你区分。一个工程里可以有很多个掩膜,绿色的是骨头、黄色的是另一块骨头,各不相同,但同一时刻只有一个掩膜是“活动的”(active),只有活动的那个才能被编辑。这个设定跟修图软件里的图层一个逻辑:你可以看见所有图层,但画笔只作用在选中的那一层上。
理解掩膜,后面所有操作都顺了。二值化(Thresholding)是“按灰度范围批量选像素”,产出一个掩膜;区域增长(Region Growing)是“在已有掩膜里按连通性再分区”,从旧掩膜里拎出一块新的;编辑(Editing)是“手动拿橡皮和画笔修补掩膜”;导出 STL 是“把某个掩膜的表面算成三角面片”。整条链子都在跟掩膜打交道。
工程管理器(Project Manager)就是管掩膜的抽屉,如果它没在屏幕上,View 菜单里把它调出来。掩膜标签里你会看到每个掩膜的颜色块、名字、使用的阈值范围,名字是绿色可编辑状态时点一下就能改名。名字旁边那个小眼镜图标控制显隐,点一下掩膜就在视图里消失或出现——注意,隐藏只是看不见,不代表它被删了,也不代表它变成活动掩膜了,这两个状态经常被新手混为一谈。掩膜多的时候,给它们起个能看懂的名字,skull、mandible、maxilla,比 Green、Yellow 强太多。教程里专门提醒过:一个月后重新载入工程,你根本记不住哪个颜色对应哪块骨头。
2.3 流水线的六个环节:先在脑子里跑一遍再动手
把整条流程连起来看,一共六个环节,每个环节的输出就是下一个环节的输入。
第一环打开工程,把 CT 数据读进来,三视图联动起来。第二环窗口化(Windowing),调对比度,让骨头和软组织在视觉上分得开,这一步不改数据,只改你看到的显示区间。第三环二值化,用阈值把关心的像素圈成掩膜,这是第一次真正动数据。第四环区域增长,把二值化结果里不连通的漂浮碎点甩掉,得到一块干净的目标。第五环建 3D,把掩膜的轮廓算成三维表面。第六环导出,生成 STL 或 RP 分层用的轮廓文件和支持文件。
这六环里有三个“不可逆”的点要记住。二值化产生的掩膜如果一开始阈值就选歪,后面区域增长只是照着歪的继续分;编辑擦掉的像素,如果不小心没保存,找回来很麻烦;区域增长时如果没勾选保留原始掩膜,原掩膜会被直接改掉,想重来都没原料。教程在区域增长那节专门写了提示:一定要先二值化再做区域增长,因为后续操作全是建在二值化产出的掩膜上的。这句话可以当口诀背。
理解了流水线,再回头看那些按钮,你会发现它们不是随便排的,顺序本身就是答案。接下来就按这个顺序,跑第一个例子。
3. 第一个例子:跟着 mimi 工程把全流程跑通
这个例子用教程自带的 mimi.mcs 工程,目标是从头做出一个头骨的 3D 模型并导出 STL。别急着一次把所有功能都点一遍,照着步骤走,每步做完先检查结果,再往下。教程把每一步都拆得很细,这里按“做什么、怎么做、做砸了看什么”的顺序重新捋一遍。
3.1 打开工程和窗口化:先把图片调到看得清
先做三件事:进工程、认视图、调亮度。
步骤一,File 菜单里选 Open,或者直接 Ctrl+O,弹窗会列出工作目录里的所有工程,双击 mimi.mcs。三块视图立刻填满切片,右边轴视图、左上冠状位、左下矢状位,彩色交叉线交叉在同一个解剖位置上。
步骤二,在任意视图中点鼠标左键,交叉线跳到点击位置,另外两个视图同步更新到对应切片。用视图右侧的滚动条或者滚轮翻层。这一步多试几次,把“点哪看哪”的肌肉记忆建立起来。
步骤三,打开工程管理器,切到对比度标签。那里有一条直方图曲线,上面压着一条可以拖动的“窗口线”。窗口线左边端点以下,所有灰度值都显示成纯黑;右边端点以上,全部显示成纯白;夹在中间的是渐变的灰。左键拖端点可以缩放窗口,按住线中间拖动可以整体平移。标签底部还列了一批预设窗口,点一下直接套用。
这一步的白话解释:CT 的原始数值范围很宽,如果全塞进屏幕,骨头和软组织都糊成一片灰。窗口化就是把显示范围收窄到肉眼看得出差别的那一段。骨头密度高、亮度高,软组织密度低、偏暗,窗口收窄之后两者对比就出来了。注意窗口化只影响你眼睛看到的显示,不改变数据本身,所以它随时可以调,调坏了也不会毁掉工程。
做砸了会怎样:窗口调得太窄,图片一半死黑一半死白,看不到细节;调得太宽,又回到糊成一团的状态。判断标准很简单——骨头的边界能看清,软组织也能分辨出层次,就够了。教程里还提了一个容易被忽略的入口:View > Indicators 可以关掉刻度线、交叉线、切片位置和方位字符,嫌乱可以关,但入门阶段建议全留着。
3.2 二值化:用一条阈值线把骨头从软组织里挑出来
窗口化只是好看,二值化才是真正开始圈地。
步骤一,点工具栏上的 Threshold 按钮,弹出 Threshold Toolbar,上面有 Min 和 Max 两个数值框,还有一条可以拖的阈值线。
步骤二,先别急着拖。点 Profile 按钮,在轴视图里穿过骨头画一条线:在软组织上点一下定起点,按住拖过骨头,在另一侧点一下结束。屏幕上会跳出一条强度剖面曲线,横轴是沿这条线的位置,纵轴是灰度值,骨头的峰值高高凸起,软组织在低位趴着。这条曲线就是选阈值的依据,比凭感觉瞎拖靠谱得多。
步骤三,点 Start Thresholding,上下拖动下界那条直线,观察视图里被高亮标出的区域怎么变化。拖到骨头被完整覆盖、又没把周围软组织大范围包进来的时候停手。
步骤四,点 End Thresholding 保存当前阈值,再点 Apply 确认。视图里出现一片彩色高亮,这就是新生成的掩膜。
参数怎么定,教程给了一个非常实用的分岔判断:如果你要的是一个“好看”的模型,阈值取小一点,因为阈值低保留的像素多,模型上的洞少;如果你是为了做假体、义肢这类需要贴合致密骨的服务,阈值取大一点,只保留最硬的部分,边界更清楚。mimi 工程里给出的参考值是 270 左右(Hounsfield 单位),Simon 案例里是 538,两个数差得挺远,正好说明阈值没有标准答案,跟扫描设备、扫描参数、建模目的都有关。
做砸了会怎样:阈值拉太低,软组织、甚至空气里的噪声都被圈进来,3D 模型会肿一圈、表面糊着毛刺;阈值拉太高,骨头中间出现空洞,模型像被虫蛀过。视图里能直接看出来——高亮区域断开、缺块,就是拉高了;高亮区域蔓延到骨头外面一大圈,就是拉低了。补救办法就是重新点 Threshold,改数值,再 Apply 一次。教程还教了一个放大局部的小技巧:Zoom 按钮旁边的下拉菜单选 Box,点 Zoom,光标变成小放大镜,在图上框一个矩形就放大那块,看完点 Unzoom 回到整图。看细小结构(比如牙根)时这个功能很有用。
还有一点要刻在脑子里:掩膜生成之后,同一时刻只有一个处于活动状态。工程管理器的掩膜标签里点一下某个掩膜,它才变成活动的,才能被编辑。这个细节在后面每一步都会咬人。
3.3 区域增长:把散落的碎点甩掉
二值化的结果通常不干净——骨头主体是连着的,但周围散着一堆密度相近的小碎点,比如钙化点、噪声、别的骨头的一角。区域增长就是干这个的。
步骤一,点 Region Growing 按钮,或者按 Ctrl+R。光标变成十字,弹出 Region Growing 窗口。
步骤二,在窗口里选源掩膜(这里就是刚才二值化出来的绿色掩膜),再选目标掩膜,可以新建一个。
步骤三,在视图里骨头的绿色高亮区域上点一下鼠标左键。软件开始算,凡是和这个点连通的像素,全部被拎出来放进新掩膜,新掩膜默认是黄色。不连通的碎点留在原来的绿色掩膜里,不跟过来。
步骤四,点 Close 关掉窗口,在视图工具栏里切到黄色掩膜,把绿色掩膜用眼镜图标隐藏,逐层翻一遍,看看黄色掩膜是不是干净、完整。
白话解释:这有点像图片处理里的“魔棒”工具,点一下就把颜色相近且连成一片的区域选出来,只不过这里的“相近”是按你刚才的阈值算的,“连成一片”是三维空间里的连通,上下层之间接得上才算连。所以区域增长特别依赖二值化的质量——二值化把该连的连上了,区域增长才能一刀切干净。
做砸了会怎样:如果骨头中间有个地方阈值没圈住,出现了断层,区域增长就会只拿到半块骨头,另一半被当成不连通的部分留在原掩膜里。表现是黄色掩膜少了一截。这时候回到二值化,把阈值往下调一点点,重新来一次。教程在区域增长那节有一句提醒,翻译过来就是:区域增长一定要在二值化之后做,因为这一步处理的对象就是二值化产出的像素集合。
3.4 生成 3D 并转起来看
掩膜干净了,就可以把它变成三维表面。
步骤一,先在工程管理器的掩膜标签里把黄色掩膜改个名。点一下名字进入可编辑状态,敲上 skull,回车。这一步看着小,实际是给自己留后路——过几周再打开,你绝不会记得“黄色”是什么。
步骤二,点 Calculate 3D 按钮,弹出 Calculate 3D Models 对话框。里面列出所有掩膜,勾选你要建的那个。想同时建多个就按住 Ctrl 多选。这里只勾 skull,点 Calculate。
步骤三,等进度条走完,模型出现在 3D 窗口里。右侧有一条垂直的 3D 工具栏,可以控制各个模型的显示开关;工程管理器的 3D 对象标签里也有小眼镜图标,功能一样。
步骤四,调整观察方式。3D 窗口右侧有旋转按钮,也可以按住鼠标右键拖动直接转;标准视角按钮能一键跳到顶部、前面、底部这些固定角度;缩放和移动各有对应按钮。想改颜色,右键选 Color;想让它半透明,点 Toggle Transparency,或者去 3D 对象标签的透明度那一栏选高、中、低、不透明四档。
步骤五,背景色不喜欢,View > 3D Background Color 里换。
这里有个参数新手特别容易误会:生成模型时那个可视化质量的滑块。拖高,屏幕上的模型更光滑;拖低,模型看起来棱角分明。教程原话写得很清楚,这个设置只影响屏幕上显示的效果,不影响你在快速成型机器上实际做出来的模型精度。所以别为了“看起来精细”把滑块拉满然后被卡死,先用低质量把形状确认了,最后要截图或者给医生看的时候再调高。质量越低,计算时间越短,之后重新加载占的内存也越少。
3.5 导出 STL 与 RP 分层文件
模型在屏幕上看顺眼了,下一步是把它变成下游设备能读的文件。这里分两条路:一条是通用的 STL,一条是快速成型设备用的分层文件。
先走 STL 这条路。点工程管理器掩膜标签里的 STL+ 按钮,弹出窗口里有三个标签,分别对应掩膜、3D 对象和 .3dd 中间文件。这里选掩膜标签,选中 skull,点 Add,文件名出现在下方的输出区,可以改。输出格式下拉框里有 STL、VRML 等好几种,选 STL。点 Next,进入转换到 STL 的参数对话框,参数保持默认,点 Finish,一个 STL 文件就生成了。
白话解释:STL 是三维打印领域最通用的一种文件格式,它只描述模型的表面形状,用一堆小三角面片拼出来,不管材料、不管颜色。所以机床、切片软件、三维查看器基本都认它。中间的 .3dd 文件是可选的,它相当于掩膜和 3D 对象之间的一个中转存档,教程明确说了这一步不是必须的,计算可以直接在掩膜或 3D 对象上做,别被多出来的按钮吓住。
再走 RP 分层这条路。这条是给快速成型设备用的,设备是一层一层堆材料做出实物的,所以需要的是每一层的轮廓,而不是整个表面。步骤是:掩膜标签里点 RP Slice,在弹出窗口的掩膜标签选中 skull,Add,输出格式选 SLI,点 Next,在转换到 RP 格式的对话框里填参数,再 Next,在计算参数对话框里确认数值,点 Finish,开始计算,最后得到一个 SLI 轮廓文件。
如果设备还需要支撑结构,继续往下:重新打开 RP 分层窗口,这次切到轮廓文件标签,输入格式选 .SLI,选中刚才生成的那个文件,Add,点 Next。支撑参数里教程举的例子是支撑到层高 50.00 就够了,这个值和材料、模型悬空程度都有关,不是固定数。点 Finish,开始生成,产出一个带支撑信息的 SLI 文件。
到这里你手里就有两样东西:一个模型文件、一个支撑文件。教程在这一段末尾写了一句话,语气很轻,但意思很重——有了这两样,才算是真正可以交给设备的状态。
4. 新手最容易翻车的地方:五个坑和解法
上面那条流程,第一次跑十有八九会在某一环卡住。下面这五个坑,是教程正文里反复提醒、也是新手最常撞上的。每个都按“现象、原因、怎么解决”写清楚,撞上了直接对号入座。
4.1 阈值和掩膜状态上的三个坑
坑一:点了区域增长,结果一片空白,或者新掩膜里啥也没有。
现象是 Ctrl+R 按下去了,也在骨头上点了,可新掩膜空空如也,或者只出来零星的几点。原因通常是还没做二值化就跳到了区域增长,源掩膜列表里没东西可选,或者选错了掩膜。教程在这个地方有一句用感叹号标出的提示:区域增长之前必须先二值化。解决很简单,回到工具栏点 Threshold,把阈值走完,Apply,等掩膜出现了再做区域增长。如果掩膜有,但点下去没反应,检查一下你点的地方在不在当前活动掩膜的范围内,点在掩膜外面是不会有结果的。
坑二:3D 模型千疮百孔,或者胖了一圈糊着毛刺。
现象是模型表面全是洞,像被虫蛀,或者边界模糊、粘着一层不该有的东西。原因几乎都出在阈值上:拉太高,骨头中间密度稍低的区域被排除,断层就变成洞;拉太低,软组织、噪声、邻近的骨头都被圈进来,模型自然发胖。解决靠 Profile 线,别靠感觉。画一条穿过骨头的剖面线,看骨头峰值落在哪个区间,阈值取在峰值和软组织平衡水平之间。教程给的两条经验可以当参照:想要好看的模型,阈值比软组织水平稍高一点点,洞会少;想做义肢、假体这种贴合致密骨的东西,阈值拉到软组织和骨头最大值之间,边界更利落。mimi 工程用 270,Simon 案例用 538,数值差别大很正常,不同数据不同目的,别死记。
坑三:改了半天没变化,以为软件卡了。
现象是拿橡皮擦了半天,掩膜纹丝不动,或者擦的地方跟鼠标位置对不上。两个原因:一是你操作的不是活动掩膜,工程管理器里高亮的是另一个;二是你想改的那个掩膜被眼镜图标隐藏了,看得见的是别人。解决办法是打开工程管理器掩膜标签,确认目标掩膜的名字是选中高亮状态,再确认它的眼镜是睁开的。这个坑我自己踩过不止一次,后来养成习惯:每次动手编辑前,先用眼睛扫一眼工程管理器里哪个名字是亮的,再开始。
4.2 编辑和显示上的两个坑
坑四:区域增长做完发现结果不理想,想重来,原始数据已经没了。
现象是增长出来的新掩膜边缘不对,想回到增长前的状态重新点一次,结果发现原掩膜已经被改得面目全非。原因是 Region Growing 工具栏里有一个“保留原始掩膜”的选项没勾上。这个选项的行为得记清楚:勾上,增长选中的像素会被复制到一个新掩膜,原掩膜完整保留,你不满意可以重来;不勾,选中的像素会从原掩膜里移走,原掩膜被永久改变,再想从同一份数据重新增长就不可能了。教程在编辑那节把这两句话写得很明白。
入门阶段的建议是:只要还没确定结果满意,就勾上保留。确认新掩膜没问题了,再决定要不要清理原掩膜。这相当于给自己留一颗后悔药,成本只是多占一点内存。
坑五:可视化质量拉满,电脑卡到转不动;或者把显示质量当成了打印精度。
现象是 Calculate 3D 一点,进度条走半天,模型出来之后旋转卡顿,重新加载工程也慢。原因是生成模型时把可视化质量滑块拖到了最高。教程原文写得很直白:这个设置只影响屏幕上显示的效果,不影响快速成型机器上实际创建的模型。解决方式是先用低质量快速看形状,确认掩膜的形态没问题,需要给别人展示或者截图时再把质量调高重新算一遍。另一个变体是把显示质量和导出精度混为一谈,以为屏幕上光滑,打印出来就光滑。打印精度取决于导出 STL 时的参数和设备的层厚,跟这个滑块没关系。
另外补一个小坑,虽然不算致命但很烦人:掩膜不改名。工程里一堆 Green、Yellow、Red,过一周打开完全不知道谁是谁。教程专门提醒过这件事——一个月后重新载入工程,你可能很难记起存储的结果。所以掩膜一建好,立刻改名,几秒钟的事。
5. 从能跑到跑对:编辑掩膜与本地阈值
mimi 那个例子是单块骨头,比较顺。真实病例往往是一堆骨头挤在一起,二值化一视同仁地把它们全圈进来,区域增长也会把连着的部分一起拎走。教程第三个案例 Simon 讲的就是这个:下颌骨部分缺齿,病人戴着含硫酸钡的假牙做 CT,假牙和骨头密度接近,得手动把它们分开。这一章讲三个进阶动作,都是从 Simon 案例里提炼出来的。
5.1 上下颌骨分不开?先擦一层再增长
上下颌骨在 CT 里是贴着的,区域增长会把两块一起拿走。解决办法是人为制造一道“断口”。
步骤一,在侧视图里找到上颌骨和下颌骨之间最清楚的那一层,把水平指示线放上去。教程里这个位置在 -4.50 附近,但不是说每张图都能看清,得自己翻一翻找最好的位置。
步骤二,切到对应的轴视图,点 Edit Masks 按钮,选 Erase 模式,把光标调成一个大矩形,在那一层把活动掩膜里的像素全部擦掉。要确保擦干净、没有遗漏,这一层就是将来两块骨头分开的界线。
步骤三,翻到下面几层,对下颌骨做区域增长。这次不要勾“保留原始掩膜”,让像素从原掩膜里移走。做完之后,原来的掩膜剩上颌骨,新掩膜是下颌骨,两块就分开了。
步骤四,分别改名成 mandible 和 maxilla,然后用滚轮从头到尾翻一遍,检查有没有分错的像素。
检查这一步不能省。教程举了个具体的例子:在 64.50 这个位置,有几颗本该属于上颌骨的牙齿像素被错误地留在了下颌骨掩膜里。找它的方法很巧——把两条指示线移动到交叉点正好压在那个颜色不对的像素上,然后到对应的轴视图层(-6.50 和 -5.50 两层)去,把属于牙齿的部分从下颌骨掩膜里擦掉。反过来也有:侧视图 87.25 附近有三层像素本该在下颌骨掩膜里,结果两层跑到了上颌骨、一层在最初擦除时被抹掉了,得把它们加回来。
这就是三视图联动的真正价值。单看一个视图,你只能判断“这一层像不像”,看不出“这个像素在三维空间里到底归谁”。交叉线一压,三个方向对上,误分类无所遁形。
5.2 本地阈值:只对眼前这一小块生效的后悔药
把误删的像素加回去,有两种方式:画线(Draw)和本地阈值(Local Threshold)。教程专门解释了区别,这个区别很关键。
画线模式下,光标扫过的像素全部被加进掩膜,不管你扫到的是骨头还是旁边的空气。本地阈值模式下,只有灰度值落在设定范围内的像素才会被加进去——光标扫过一片区域,软件按阈值筛一遍,符合的留下,不符合的忽略。要做精确的分割,当然选后者。
操作步骤:按 Ctrl+T 调出编辑工具栏,阈值模式已经被选中。光标形状可以选成圆形,大小调到和牙齿差不多。动手之前再确认一次,下颌骨掩膜是活动状态。然后在牙齿区域用左键拖着扫,把整个牙齿覆盖到。扫完去前视图和侧视图核对,如果其他掩膜里出现了下颌骨掩膜的颜色,说明有像素被错加进来了,切回 Erase 模式擦掉就行。
本地阈值和最开始那个全局阈值是两回事。全局阈值在工程开头设定,对数据集里所有图片一视同仁;本地阈值只作用在你当前扫过的那张图的局部区域,不改动其他任何地方。教程管它叫“后悔药”也不为过——大范围分割定好之后,零星的漏网之鱼和误伤,就靠它一点点补和修。
它还有一个隐藏用法:默认阈值可以改。双击对话框里的数值就能编辑,改完按回车确认。什么时候需要改?教程说,等到后面处理图像伪影的时候就得动了。也就是说,不同组织、不同伪影,需要的阈值区间不一样,别把默认值当成唯一真理。
5.3 布尔操作和结果检查:两个掩膜之间做加减
教程 Simon 案例的目录里还列了布尔操作和最终结果,正文没有展开细节,但概念可以先建立起来。布尔操作就是在两个掩膜之间做集合运算:并集是把两块合起来,差集是从一块里挖掉另一块,交集是只保留两块重叠的部分。典型场景是假牙和骨头密度接近、二值化分不开的时候,先分别圈出两块,再用差集把假牙从骨头掩膜里减掉。
入门阶段不用急着把布尔运算玩熟,但要知道它存在,而且要养成一个习惯:任何布尔操作之前,先复制一份掩膜留底。掩膜运算不像编辑那样可以撤销,算错了就得从头来。教程在编辑那节反复强调的“保留原始掩膜”,思路是一样的——给自己留退路。
结果检查这一步,说到底是三句话:翻层看、换视图看、对着原始 CT 看。翻层看有没有断层和碎点;换视图看有没有某个方向上被忽略的误分类;对着原始 CT 看掩膜的边界是不是真的贴着解剖边界。这三步做完,再点 Calculate 3D。模型建出来之后再发现问题,改起来就贵了。
6. 下一步学什么:三周练习路线和一份参数速查
到这里,mimi 和 Simon 两个案例的主干已经走通一遍。接下来最怕的是“看懂了但自己一动手就懵”,所以给一条可以照着排的三周路线。
6.1 三周怎么排
第一周只做一件事:把 mimi 工程从打开到导出 STL 完整跑三遍。第一遍照步骤点,允许出错;第二遍不看步骤,凭记忆点,卡住了再翻回去;第三遍故意把阈值调错,看看模型会烂成什么样,再调回来。第三遍最有价值,你对阈值的手感就是从“知道错了长什么样”里长出来的。
第二周练检查。拿 mimi 工程,只做二值化和区域增长,然后逼自己用三视图逐层核对掩膜,每一层都问一句“这个像素真的属于这块骨头吗”。再把掩膜重命名、隐藏、切换活动状态这几个动作练熟。这周不碰 3D,就练掩膜。
第三周上 Simon 案例。先跑通分离上下颌骨那一段,再练本地阈值补像素,最后试着用布尔操作处理假牙。跑完对照教程的最终结果图,看差在哪。
| 阶段 | 主要任务 | 完成标准 | 常卡住的地方 |
|---|---|---|---|
| 第一周 | mimi 全流程跑三遍 | 不看步骤能独立导出 STL | 阈值选不准、区域增长前忘二值化 |
| 第二周 | 三视图逐层核对掩膜 | 能自己发现并修正误分类像素 | 分不清活动掩膜和可见掩膜 |
| 第三周 | Simon 案例分离与编辑 | 上下颌骨干净分开 | 本地阈值范围设错、擦除漏层 |
6.2 每次开新工程都先做这几件事
第一,打开工程先看方位字符对不对,File > Change Orientation 里核对,这一步花三十秒,能省掉后面几小时的返工。第二,调窗口化,把骨头和软组织的对比拉出来,再动阈值。第三,给每个新建的掩膜立刻改名,别拖。第四,区域增长前确认“保留原始掩膜”的勾选状态符合你当前的目的。第五,任何大范围编辑之前,先复制一份掩膜留底。
参数这块,别背数字。270、538 这些值都是特定数据下的参考,换一台设备、换一个扫描协议,数值就变了。真正要背的是方法:用 Profile 线看剖面,阈值取在目标组织和背景之间的低谷附近;要好看取低一点,要贴合取高一点。
我第一次做这类分割的时候,觉得翻层检查是浪费时间,模型建出来一看挺好就导出了,结果打印出来的实物在某个角度缺了一小块,回头翻原始数据,才发现有三层像素被分错了掩膜,屏幕上那个角度正好看不见。从那以后我每次建完 3D 都强制走一遍三视图逐层核对,哪怕看着再顺眼也不跳。这个习惯救过我很多次。希望帮到你。
本文还有配套的精品资源,点击获取