体渲染与处理
体渲染与处理
三维数据集可以从一个文件或一系列文件中导入. 典型的切面按二维图像的一个栈被存储,然后可被组合,用来创建一个三维图像. 一个三维图像可以用三维或四维数据数组创建,其中第一个三维对应于三维图像的切面、行和列.
| Image3D | 用一个数据数组或图像切面列表创建一个几何体 |
| Import | 从文件中导入数据 |
| RandomImage | 用像素值的伪随机数组创建一个几何体 |
Image3D[{(| | | |
| -- | -- | -- |
| 0 | 8 | 16 |
| 24 | 32 | 40 |
| 48 | 56 | 64 |), (| | | |
| --- | --- | --- |
| 72 | 80 | 88 |
| 96 | 104 | 112 |
| 120 | 128 | 136 |), (| | | |
| --- | --- | --- |
| 144 | 152 | 160 |
| 168 | 176 | 184 |
| 192 | 200 | 208 |)}, "Byte", ColorFunction -> GrayLevel]用一个四维数据数组创建一个多通道 Image3D:
Image3D[{{{{1, 0, 0}, {0, 0, 1}}, {{1, 1, 0}, {(1/2), 1, 1}}}, {{{(1/2), (1/2), (1/2)}, {0, 1, 1}}, {{0, (1/2), 1}, {1, 0, 1}}}}]Image3D[{[image], [image], [image], [image], [image]}]按 Image3D 导入存在 TIFF 文件中的一个图像栈:
engine = Import["ExampleData/CTengine.tiff", "Image3D"]揭示几何体的内部的一个方便的方法是显示三维体的二维切面. Image3DSlices 按着指定的方向提取一个几何体的二维切面.
| Image3DSlices | 沿着给定方向切开三维数据集 |
Image3DSlices[engine, {70, 75, 80}, "XY"]| ImageDimensions[image] | 给出与 image 相关的光栅的像素大小 |
| ImageChannels[image] | 给出 image 数据中出现的通道数 |
| ImageColorSpace[image] | 给出 image 相伴的颜色空间 |
| ImageType[image] | 给出 image 中每个像素元素值的类型 |
| ImageData[image] | image 中像素值的数组 |
| ImageMeasurements[image] | 对图像数据的度量 |
| Options[symbol] | 给出分配给符号的默认的选项列表 |
ImageDimensions[engine]ImageColorSpace[engine]ImageType[engine]ImageMeasurements[engine, "MeanIntensity"]| ColorFunction | 如何把数据值转换为颜色 |
| ClipRange | 从视图中去掉长方形区域 |
| Background | Image3D 对象的背景颜色 |
| BoxRatios | 三维边界框比例 |
ColorFunction (传递函数)
在体渲染中,传递函数把体素值转换成对应的不透明度和颜色值. 在 Wolfram 语言中,传递函数可用 ColorFunction 选项指定.
data = ExampleData[{"TestImage3D", "CTengine"}, "Data"];Image3D[data, "Byte"]Image3D[data, "Byte", ColorFunction -> (GrayLevel[#, #]&)]Image3D[data, "Byte", ColorFunction -> "XRay"]Image3D[data, "Byte", ColorFunction -> (Append[ColorData["Rainbow"][#], #]&)]ClipRange
为了看见几何体的内部,一般,几何体的一部分会被剪掉. ClipRange 选项可用于指定从视图中裁掉的长方形.
knee = \!\(\*Graphics3DBox[«8»]\);Image3D[knee, ClipRange -> {{50, 128}, All, {100, 128}}]Manipulate[Image3D[\!\(\*Graphics3DBox[«8»]\), ClipRange -> {All, All, {z, 128}}], {{z, 128}, 0, 128}]Background
Image3D[knee, ColorFunction -> "XRay", Background -> Black]BoxRatios
head = ExampleData[{"TestImage3D", "CThead"}]如果数据没有展示出立方体的体素,嵌在几何体的边框比率可用 BoxRatios 选项指定.
Image3D[head, BoxRatios -> 1]数据嵌入
colors = Table[List@@ColorData["BrightBands"][i / 54], {i, 0, 26}];
Image[{colors}, ImageSize -> {Automatic, 10}]重塑创建的列表为一个3个立方体的结构并创建一个 Image3D 对象:
data = ArrayReshape[colors, {3, 3, 3, 3}];cube = Image3D[data]Graphics3D[Raster3D[data]]索引坐标
MaxFilter[[image], {0, 0, 3}]图像坐标
第二个坐标系统不是数据固有的,但是附加在嵌入的空间. 连续的图像坐标系统,像 Graphics3D 坐标系统,它的原点在图像的左前下角,
-坐标从左至右,
-坐标从前至后,
-坐标从下至上. 图像域覆盖三维区间
×
×
.
图像处理命令不适用于任意数组在标准的图像坐标系统中渲染它们的结果. 这些标准的图像坐标很容易被用于 Graphics3D 的图元.
engine = [image];
ic = ImageMeasurements[engine, "IntensityCentroid"]Show[engine, Graphics3D[{Red, PointSize[.05], Point[ic]}]]相关指南
-
▪
- 图像处理和分析
相关技术笔记
-
▪
- 图像处理