Avizo用户使用手册-4
[TOC]
Chapter 4
4 为图像数据创建图像处理工作流
以下教程需要Avizo许可证(Avizo Lite Edition许可证是不够的)。
图像数据既可以被解释为一叠2D图像,也可以被解释为单个3D体积。
Image Stack Processing(ISP,图像堆栈处理)模块允许创建和执行图像处理配方(recipe)——配方会自动地在任何兼容数据上重新执行一系列模块——以便将图像数据当作2D堆栈来处理(堆栈中的每张图像都被单独处理)。
Image Volume Processing(IVP,图像体积处理)模块允许创建和执行图像处理配方,以便将图像数据当作3D体积来处理。
这两个模块(分别是Image Stack Processing或Image Volume Processing)各自会打开一个独立的编辑工作室(分别是Image Stack Processing工作室或Image Volume Processing工作室)。
这些编辑工作室提供了一个交互式、动态的编辑环境,能够对正在构建的配方持续给出反馈。配方中的任何步骤都可以被访问和修改,并立即反馈每次修改对最终输出的影响。这是一套在Avizo软件中增强和分割数据的优化流程。
注意:ISP配方与通用配方(参见Creating recipes to automate workflow execution创建配方以自动执行工作流)之间的主要区别总结在下表中:
| ISP或IVP配方 | 通用配方 | |
|---|---|---|
| 用途 | 在图像堆栈上(ISP)或在3D体积上(IVP)自动执行图像处理工作流 | 自动执行通用工作流 |
| 配方步骤的输入/输出 | 仅限图像数据类型 | 任意数据类型 |
| 编辑 | 不受限制 | 受限 |
注意:ISP模块可以作为通用配方中的一个步骤,反之则不行。
ISP和IVP工作区都可以访问一套专用于图像处理的工具目录。对配方的编辑始终是在输入图像数据的预览上完成的(堆栈模式下是单个切片,体积模式下是一个板块slab),并配有两个2D查看器。默认情况下,这两个2D查看器分别显示某个配方步骤处理之前(左侧)和之后(右侧)的数据。查看器也可以被设置为显示步骤输入、步骤输出、工作流输入或工作流输出(参见viewers)。
图 4.1:处理前(左),处理后(右)。
ISP扩展也可以通过命令行以批处理模式使用(参见How to batch process如何进行批处理)。该模式适用于在线处理(采集过程中的实时图像处理)。
配方可以逐切片地处理输入数据,也可以将其作为一个3D体积整体处理,这取决于你用来创建配方的模块(ISP还是IVP模块)。
如果输入数据是3D的,而用来创建配方的模块是ISP,那么输入将被解释为一叠2D切片,配方将逐切片地应用。
你可以对一叠大图像使用堆栈处理机制,从一个输入目录处理到一个输出目录,且内存中每次最多只保留一张图像,方法是:
- 使用
Process Stack On Disk模块 - 用ISP模块进行
Batch process a stack of large images(批处理一叠大图像)
要进一步了解该扩展中可用的工具,请参阅以下链接:
Image Stack Processing moduleImage Volume Processing moduleImage Stack and Volume Processing tutorialProcess Stack On Disk moduleBatch process a stack of large images
4.1 图像堆栈与体积处理教程Image Stack and Volume Processing Tutorial
Image Stack或Volume Processing工作室是一套直观且优化的流程,用于在Avizo中增强和分割图像数据。它让你能够构建专用于图像数据处理的配方,并提供一套图像处理工具目录:
- 预处理(降噪、对比度增强、背景校正等)
- 分割(阈值处理、特征选择等)
以下教程说明如何使用Image Stack Processing(ISP)工作室,以及如何构建一个ISP配方来处理一叠2D图像。Image Volume Processing工作室(IVP)的工作方式与ISP工作室完全相同,因此这个教程对两者都适用。
本教程分为以下部分:
Main rules of the workroom工作室的主要规则Access the workroom进入工作室Use the viewers使用查看器Add and modify steps添加和修改步骤Change a reference更改参考Insert steps插入步骤Inspect a different slice of the data检查数据的其他切片Save the ISP recipe保存ISP配方Export multiple outputs导出多个输出Remove/replace steps and manage error删除/替换步骤并处理错误Add external inputs to the workflow向工作流添加外部输入Export workflow parameters for easy access from the Image Stack Processing module导出工作流参数以便从ISP模块轻松访问Quit the workroom退出工作室Use the ISP recipe from the project room在项目工作室中使用ISP配方Processing a 3D image in IVP room在IVP工作室中处理3D图像
4.1.1 工作室的主要规则
本节列出了在ISP工作室中工作所需了解的规则:
- “参考”(reference)数据是工作室的主输入。ISP工作流总是从参考数据开始。它对应于一个线性工作流的起点。图4.2中展示了一个线性工作流及其ISP等价形式。
图 4.2:池中的线性工作流与Image Stack Processing工作室。
然而,工作流的参考可以在工作室内随时更改,以便从工作室中已有并列出的数据开始一个新的线性工作流(参见Change a reference更改参考)。示例见图4.3。
图 4.3:更改工作流的参考。
- ISP工作室是模态的。它会阻止你返回到另一个工作室并更改与该工作室关联的参考数据。在返回其他工作室之前,你必须显式地关闭该工作室(
Quit退出)。 - 所选工具的主数据(主连接)会自动连接到前一个输出。如果你需要连接到不同的输出,则必须添加一个参考步骤(参见
Changing reference更改参考)。 - 该工作室只操作图像数据。
- 只有那些计算输出且保持维度不变(输出与输入维度相同)的模块才可用。
- 插入到现有工作流中的工具总是被插入在所选步骤的下方。
- 要向工作流添加外部数据,该数据在X、Y和Z维度上必须与初始参考具有相同的尺寸,这样更改切片编号时所有数据才能保持一致。
- 工具的次级数据输入的组合框中列出的数据,指的是
Workflow面板中所列步骤的输出,并以其步骤编号作为前缀。 - 如果在计算某个给定切片的过程中出现任何错误,则该处理后的切片将被填充为空值(null values)。
图 4.4:以步骤编号为前缀的各步骤输出。
4.1.2 进入工作室
本节说明如何从主项目工作室打开ISP工作室。这是本教程的第一步。
在Avizo主项目工作室中,打开以下数据:
AVIZO_ROOT/data/tutorials/chocolate-bar.amAVIZO_ROOT/data/tutorials/isp/chocolate-bar.nougat_invert.am
右键单击池中显示的chocolate-bar.am数据模块,在Object Popup的Image Processing目录下选择Image Stack Processing。
选中该模块,然后在Properties面板中单击Action端口的Create Workflow。
ISP工作室随即打开,参考数据同时显示在左侧和右侧查看器中(见图4.5)。
图 4.5:查看器中显示的参考数据。
4.1.3 使用查看器
本节说明如何操作ISP工作室中可用的查看器。在本教程中,你将查看巧克力棒样本。
ISP工作室设置了两个水平布局的查看器。默认情况下,左侧查看器显示所选步骤的输入,右侧查看器显示所选步骤的输出。两个查看器的相机始终保持同步。你可以平移(使用鼠标中键,或在平移模式下使用鼠标左键),也可以缩放(使用鼠标滚轮,或在缩放模式下使用鼠标左键)。
查看器模式可以通过View组合框更改:
图 4.6:查看器模式。
任何视图都可以设置为:
- 步骤输入
step input(左侧查看器的默认设置) - 步骤输出
step output(右侧查看器的默认设置) - 工作流输入
workflow input - 工作流输出
workflow output
如果Label Blending开关处于打开状态,二值图像或标签图像的输出会自动与堆栈中最后一张灰度图像混合叠加。
图 4.7:二值数据叠加混合在灰度图之上。
使用quick probe快速探针工具可以评估鼠标下方像素的数值。使用snapshot快照工具可以为视图创建快照(注意capture all viewers复选框可以让你只对其中一个或对两个查看器同时创建快照)。
4.1.4 添加和修改步骤
本节说明如何在工作流中添加工具并观察它们对数据的影响。在本教程中,你将创建牛轧糖(nougat)相的掩膜。添加工具的机制非常简单,只需在Tool Browser中选择该工具。此操作会将该工具添加到工作流面板中,并以其默认参数自动应用于前一步骤的输出。随后你就可以测试参数设置并观察对数据的影响。
首先,将每个查看器中的Label Blending开关设为关闭,以停用标签混合。
将16位数据转换为8位。某些滤镜需要这一步才能运行。
在模块浏览器窗口中,你可以进入convert目录并选择Convert Image Type模块,或者在快速搜索框中键入其名称。
图 4.8:快速搜索快捷方式。
一旦选中,工作流中就会添加一个步骤。
图 4.9:工作流中添加的步骤。
该步骤会被自动选中,模块属性显示在Properties面板中。
图 4.10:模块属性。
同时,该模块会被自动应用于上一个输出步骤(本例中即原始参考数据)。其结果显示在右侧查看器中。
将scale端口更改为0.1。右侧查看器会随之更新。
向工作流中添加以下工具,以构建牛轧糖相的掩膜:
- 一个
Thresholding阈值处理,用于粗略选择牛轧糖。强度范围设置为51-98。 - 一个
Erosion腐蚀,用于腐蚀选区并减少巧克力棒周围的噪声。类型设置为disc,尺寸设置为1。 - 一个
Remove Small Spots移除小斑点,用于移除小斑点。这将消除焦糖残留。尺寸设置为200。
图 4.11:图像类型转换。
图 4.12:缩放系数为0.1的图像类型转换。
图 4.13:阈值处理以选择牛轧糖。
- 一个
Dilation膨胀,用于过度膨胀选区。这将填充孔洞并平滑边界。尺寸设置为12。 - 再一个
Erosion腐蚀,用于腐蚀选区,使牛轧糖选区上的腐蚀/膨胀净效果为零(回到没有孔洞的原始数据形状)。尺寸设置为9。
我们的掩膜现在已经准备好了。你将用它来分割牛轧糖相内部的孔隙。
注意:ISP工作室支持插入Python Script Object模块,前提是它满足以下要求:
- 该模块以图像作为输入,并创建具有相同尺寸和边界框的图像;
- 它不应修改其输入;
- 工作流中位于
Python Script Object之前的那个步骤输出总是连接到data端口。因此,data端口总是主输入; data端口的图像类型必须始终在Python Script Object中通过self.data的valid_types成员来定义;- 在开始计算之前,必须勾选
Python Script Object中的Apply按钮; - 计算过程不应需要任何GUI交互。
如果脚本存在任何其他行为,则不作任何保证。
图 4.14:使用尺寸为1的Disc进行腐蚀。
图 4.15:移除尺寸为200的小斑点。
图 4.16:尺寸为12的膨胀。
图 4.17:尺寸为9的腐蚀。
当工作流中使用了Python Script Object模块时,Pack&Go导出和固定端口(pinned ports)均不受支持。
4.1.5 更改参考
本节说明如何在工作流内更改参考。在本教程中,你将捕获牛轧糖相内部的孔隙,并为其打标签。
现在你已经有了牛轧糖相的掩膜,可以使用我们最初的阈值处理结果来捕获牛轧糖内部的孔隙。
由于一般规则(参见Main rules of the workroom工作室的主要规则)是所选工具的主数据(主连接)会自动连接到前一个输出,因此你需要把最后一个输出更改为步骤3。在Workflow面板中单击Insert a reference change step旁边的+按钮。
图 4.18:更改参考按钮。
这会插入一个新步骤。
图 4.19:更改参考步骤。
该步骤前面带有错误图标(警告),因为它尚未被设置,所以还不能产生输出。你需要直接从工作流面板中选择一个数据集。
可用列表代表工作流过程中创建的数据。每个数据集前面都带有一个编号,对应该输出所来自的步骤。
在本例中,选择:3_Thresholding。
图 4.20:选择数据。
一旦设置好参考端口,错误图标就会消失。
图 4.21:将参考更改为3_Thresholding。
从该模块的输出开始,在一个新分支中继续构建工作流。
- 用一个
Invert模块反转选区,以选中孔隙(气泡)。
图 4.22:应用Invert。
- 用一个
Mask模块,配合我们最初创建的掩膜,遮蔽掉牛轧糖相之外的所有内容。
在这最后添加的步骤中,你可以看到我们的掩膜太大了。工作流还可以做一些改进。在ISP中,很容易在工作流内更改和测试各种变体。
首先,设置查看器,以便你能看到某个特定步骤对最终工作流输出的影响:
- 将左侧
View组合框设为Step Output。 - 将右侧
View组合框设为Workflow Output。
在工作流面板中单击选择Erosion步骤(7),并将光标定位到Properties面板的size端口上。
图 4.23:应用Mask。
使用鼠标滚轮逐步增大该数值。边界会慢慢消失,直到工作流输出中只剩下孔隙(最终值为13)。
图 4.24:修改Erosion步骤。
在工作流面板中单击mask步骤以返回该步骤。将左侧View组合框设为Step Input。添加一个Labeling模块来为孔隙打标签。
图 4.25:为孔隙打标签。
尝试在Labeling模块之后插入一个Marker-Based Watershed。此时会出现错误,因为它需要一个灰度图像作为主输入。你必须先将参考更改为灰度图像,然后再把标签数据连接为次级输入。
4.1.6 插入步骤
在本节中,你将通过插入步骤来修改工作流。在本教程中,你将清理孔隙并创建反转的牛轧糖掩膜。
上面的工作流对牛轧糖相内部的孔隙进行了逐个分类。有些非常小的孔隙可以被视为噪声,因为它们是在阈值处理中为去除噪声数据时被包含进来的。你可以尝试在阈值处理之前插入一个降噪模块来改进工作流。由于在现有工作流中插入工具总是在所选步骤的下方进行(参见rules规则),因此请选择步骤2,并在阈值处理之前插入一个Median Filter中值滤波,做法如下:
- 删除先前创建的
Marker-Based Watershed步骤。 - 选择步骤2。
- 进入模块浏览器,在快速搜索工具栏中键入
median。选择Median Filter。 - 一个新的中值滤波步骤被插入在
Convert Image Type步骤下方、Thresholding步骤之前。
通过将左侧视图设为步骤输出、右侧视图设为工作流输出,你可以看到降噪对最终数据中孔隙选区的影响。尝试把迭代次数降为1,并将type端口改为disk。现在选区中只剩下主要的孔隙。
图 4.26:左侧是步骤输出,右侧是工作流输出。
将查看器恢复为默认设置:
- 将左侧
View组合框设为Step input。 - 将右侧
View组合框设为Step output。
要继续构建工作流,你还需要一个反转的牛轧糖相掩膜,以便捕获焦糖相并确保两相之间没有重叠。
选择步骤8(Erosion),并在更改参考之前插入一个Invert步骤来反转选区(见图4.27)。
图 4.27:反转选区。
4.1.7 检查数据的其他切片
在本节中,你将更改工作流用作输入的切片,以检查堆栈的其他部分,并检查工作流是否需要改进。在本教程中,你将创建焦糖相的掩膜。
- 选择步骤13(
Labeling)。 - 创建一个新的参考步骤:在
Workflow面板中单击Insert a reference change step旁边的+按钮,并将其设置为步骤2。 - 添加一个
Non-Local Means Filter非局部均值滤波,在保留颗粒边缘对比度的同时降低噪声,以便更容易选择焦糖。将Mode设置为GPU Standard,Local Neighborhood设置为2。
图 4.28:非局部均值滤波。
- 用一个
Normalize Grayscale灰度归一化增强整体对比度,以便于选择焦糖。将Range Mode设置为other。输入范围设置为100-160,输出范围设置为0-150。 - 用一个
Thresholding模块粗略选择属于焦糖的像素,然后将强度范围设置为54-98。
图 4.29:灰度归一化。
图 4.30:对焦糖进行阈值处理。
- 用一个
Dilation模块膨胀选区,以连接断开的特征并平滑边界。将类型设置为Disc,Size设置为3。
图 4.31:使用Dilation连接断开的特征。
在当前阶段,选区在当前切片上看起来不错,但在其他切片上可能会存在伪影。
为了进一步检查工作流,确认它在堆栈数据的每个切片上都有效,你可以更改工作流所应用的切片。
将Workflow面板的Preview workflow on image滑块移动到切片135。
图 4.32:更改切片编号。
你会看到如下显示,膨胀之后仍然残留着一个斑点。
图 4.33:切片135上的工作流结果。
通过插入一个尺寸为200的Remove Small Holes移除小孔洞模块来去除这个伪影。
图 4.34:移除尺寸为200的小孔洞。
用尺寸7对选区进行Erode腐蚀。
图 4.35:对选区进行腐蚀。
继续检查工作流。选择切片283。这里也存在一些残留的斑点。
图 4.36:切片283上的结果。
添加一个Remove Small Spots模块,尺寸设置为200。
图 4.37:移除小斑点。
添加一个Dilation模块,重新膨胀焦糖选区,使腐蚀/膨胀的净效果为零(回到原始形状,但不含已被形态学步骤去除的伪影)。将Size设置为6,类型为Disc。
图 4.38:焦糖的重新膨胀。
从焦糖中减去牛轧糖选区,以确保两者之间没有重叠。
添加一个Mask模块,其二值图像为步骤9(Invert),即你在Insert steps插入步骤一节中准备好的那个(见图4.39)。
图 4.39:使用掩膜减去牛轧糖选区。
现在,除了牛轧糖相之外,焦糖相也被选中了。
为了完成整个工作流,添加一个Image Arithmetic图像算术步骤,使用以下输入和公式,把每个已分类的巧克力相(孔隙、牛轧糖和焦糖)汇总到同一个标签中:
图 4.40:Image Arithmetic参数。
最终分割出来的巧克力如图4.41所示。
图 4.41:分割后的巧克力棒。
4.1.8 保存ISP配方
在这个阶段,最好把正在编辑的工作流保存下来。
在Workflow窗口中,单击Save As,然后将工作流保存到磁盘。文件扩展名为.hxisp。
如果已经指定了文件,Save按钮允许你覆盖当前的.hxisp文件。如果没有新内容需要保存,Save按钮将被禁用。
4.1.9 导出多个输出
在本教程中,你将导出糖果棒数据的多个输出。
默认情况下,只有ISP工作流的最后一个步骤会作为ISP模块的最终输出被导出。
它由以下输出图标表示。
要导出额外的输出,例如焦糖相和牛轧糖相,请单击Output图标。
图 4.42:导出额外的输出。
当你从主项目工作室单击Apply来执行ISP模块时,该模块会输出ISP配方的最后一个步骤,以及在工作室中被选为额外输出的那些数据(如上所述)。
4.1.10 删除/替换步骤并处理错误
在ISP中,任何步骤都可以被删除。例如,你可以用一个Selective Closing选择性闭运算来替换Dilation及其后的Erosion:
- 选择步骤7并单击
delete图标。工作流会自动重新计算,以纳入这些更改。 - 选择
Erosion步骤(现在是步骤7),然后单击delete图标。 - 在这种情况下,
Workflow面板会检测到错误,并在步骤10中用错误图标高亮显示(更多信息可在控制台窗口中查看)。mask步骤当时正在使用你刚刚删除的那个步骤的输出。堆栈中的断连会以不可用步骤的形式被高亮出来: - 该工作室不会删除所有步骤。你仍然有机会通过简单地重新编辑工作流来修复它。
图 4.43:删除步骤。
图 4.44:工作流中不可用的步骤。
- 选择步骤6(现在是
Remove Small Spots),并在模块浏览器的快速搜索工具栏中键入”selective”。 - 从列表中选择
Selective Closing。 - 将迭代次数设置为5,阈值设置为3。
- 单击出现错误的那个
mask步骤,然后将Selective Closing的输出设置为其二值图像。
工作流现在已修复。
工作流可能出错的另一个原因是:某个模块的主数据期望的数据类型与前一个输出不同(例如,期望二值数据,而前一个输出是灰度数据)。
例如,你可以尝试删除第一个Thresholding步骤,此时工作流的大部分内容都会变为不可用。
4.1.11 向工作流添加外部输入
在本教程中,你将为ISP添加一个额外的输入。
ISP工作室的默认行为是:只允许你访问那些从打开该工作室时所用的参考数据构建出来的数据。
不过,也可以向工作流添加外部数据,条件是该数据在X、Y和Z上与输入参考数据具有相同的维度。
作为示例,使用你最初加载的那个反转牛轧糖掩膜数据(名为chocolate-bar.nougat_invert.am)。以下是把它作为额外输入加入ISP的方法:
- 查看工作流面板底部的
External Input字段。
图 4.45:外部输入列表。
该列表中填充的是与当前工作流兼容的外部数据。
- 选择要添加到工作流的外部数据:
chocolate-bar.nougat_invert.am - 单击
Add按钮。 - 会有一条消息通知你该数据现已可用。
图 4.46:外部输入添加确认。
- 在最后一个
Mask步骤中,从Properties面板中选择这个新数据。
图 4.47:外部输入现已可用。
回到主项目工作室。额外的输入现在在ISP模块中已经可用。
为了本教程的目的,请移除这个额外的步骤,以便只保留一个主输入:
图 4.48:Image Stack Processing模块中的外部输入。
- 在最后一个
Mask步骤中,把二值图像重新选回Invert步骤的结果。 - 单击
Clean。
图 4.49:清理未使用的外部数据。
- 会有一条消息通知你某个输入已被移除。
- 在
Mask模块的Input Binary Image列表中,chocolate-bar.nougat_invert已不再可用。
4.1.12 导出工作流参数以便从Image Stack Processing模块轻松访问
在本教程中,你将从ISP工作室中选择并导出特定参数,使它们可以从项目工作室中的ISP模块访问。
由于ISP配方可以通过ISP模块应用于项目工作室中的任何输入数据,因此有时把工作流的特定参数直接暴露在该模块上会很实用。这样,当配方被应用到与创建它时不同的数据集上时,你就可以对配方进行微调。任何参数都可以通过Properties面板中的图钉(pin)图标导出。当图标被按下固定时,该参数就可以直接从项目工作室的ISP模块中访问。
单击Thresholding步骤,然后单击Intensity Range参数的图钉图标:
图 4.50:固定Intensity Range端口。
回到项目工作室(参见quit the workroom退出工作室),并选择Image Stack Processing模块。查看Properties面板。Intensity Range现在已经可用,并且可以被更改:
图 4.51:Thresholding端口现已在Image Stack Processing模块中可用。
4.1.13 退出工作室
要切换回项目工作室,请单击Quit。在确认之前,请确保.hxisp文件已被保存。
4.1.14 在项目工作室中使用ISP配方
在本节中,你将使用ISP模块,从项目工作室把一个已保存的工作流应用到3D数据上(作为图像堆栈处理)。在本教程中,你将把创建好的工作流应用到完整数据集上。
在这个阶段,附加到chocolate-bar数据上的ISP模块应该指向你保存在磁盘上的那个.hxisp文件。
要用该工作流处理数据,请在池中选中ISP模块后,在Properties面板中单击Apply。
该模块输出以下标签:
图 4.52:工作流结果。
现在工作流已经作为一个ISP配方准备就绪,它可以被应用到任何数据上。用户可以通过更改Image Stack Processing模块的输入,在不同的数据上测试它。
本教程中描述的工作流可以在以下位置找到:$AVIZO_ROOT/share/isp/Chocolate_Bar_Segmentation_tutorial.hxisp
要加载它,请单击Image Stack Processing模块的Browse按钮并选择该配方。
现在你可以单击Edit workflow来查看该配方的详细内容。
4.1.15 在IVP工作室中处理3D图像
Image Volume Processing(IVP)工作室也可用于创建和编辑一个将被整体应用于3D图像的配方。Image Volume Processing模块允许你创建3D工作流并配置输入的处理方式。
要编辑3D工作流,你可以单击Action端口的Create Workflow。IVP工作室会打开,并显示参考数据(见图4.5)。
该工作室的工作方式与ISP工作室完全相同,因此你可以按照本教程来了解如何使用它。
在这个工作室中,区别在于你可以预览工作流应用于一个3D板块(slab)的结果,以此来近似该工作流在整个3D图像上的最终3D结果。在查看器中,你一次只能看到板块中的一个切片,但预览是在整个板块上计算的。板块可以使用Preview滑块和Width微调框进行编辑(见图4.53):
Preview滑块是板块所居中的切片编号Width是构成该板块的切片数量
图 4.53:板块编辑。
4.2 批处理一叠大图像Batch process a stack of large images
准备
使用ISP扩展直接以磁盘到磁盘的方式处理大型数据集(核外处理out of core processing)。流程如下:
- 加载少量切片用于测试并创建一个配方。
- 从命令行运行Avizo,以磁盘到磁盘的方式逐切片应用该配方。
处理过程中的内存占用会很低且稳定。
步骤
以下部分描述如何批处理一叠大图像:
- 加载以下图像:
AVIZO_ROOT/data/teddybear/teddybear002.jpg - 将一个
Image Stack Processing模块附加到该数据。 - 单击
Create workflow。 - 构建一个示意性的配方,以便稍后处理存储在输入目录中的每一张图像:
- 添加一个
Median Filter步骤(默认参数)。 - 添加一个尺寸为1的
Erosion。
- 添加一个
- 将配方保存到以下目录:
<temporary_directory>/dummy.hxisp
现在,ISP配方示例已经用单张图像构建完成,我们将从磁盘读取teddybear数据集的每个切片,对其进行处理,然后把结果直接输出到磁盘上:
- 把
AVIZO_ROOT/data/teddybear/输入数据目录复制到你选择的目录中。批处理脚本会把输出写入该输入数据目录,因此你需要拥有写权限。 - 打开一个DOS命令窗口。
- 在该窗口中,进入存放Avizo可执行文件的目录(
AVIZO_ROOT/bin/arch-Win64VC12-Optimize),然后键入以下命令:
1 | Avizo.exe -nogui -tclargs "'<your_data_directory>/teddybear' '<temporary_directory>/dummy.hxisp' jpg {load -unit mm -jpg +box 0 127 0 127 0 1 +mode 100}" ../../share/isp/disk2disk_isp.hx |
该命令会在teddybear目录中生成一个包含已处理切片的输出目录。
该命令的工作方式如下:
1 | Avizo.exe inputDirectoryName hxispFileName extensionOfFilesToLookFor LoadCommand scriptPath |
如果你不知道LoadCommand,那么可以在Avizo中加载该数据,并在数据参数编辑器的LoadCmd部分查找它。
