1値画像データに任意のカラーマップを適用する。直接カラーマップのRGB値を指定するため、Save Data時にそのままPNG形式で出力することが可能である。
Programmable Filter適用後、Object Inspector上のPropertiesタブにて‘Map Scalars’のチェックを外す。
動作確認バージョン
ParaView 4.2.0
Output Data Set Type
vtkImageData
Script
import numpy as np variableName = 'PNGImage' def HSV2RGB(c, lower, upper): r = (upper - lower) / 6.0 steps = np.arange(upper, lower - 0.5 * r, -r) if c > steps[0]: return np.array((1.0, 0.0, 0.0)) elif c > steps[1]: return np.array((1.0, (steps[0] - c) / r, 0.0)) elif c > steps[2]: return np.array(((c - steps[2]) / r, 1.0, 0.0)) elif c > steps[3]: return np.array((0.0, 1.0, (steps[2] - c) / r)) elif c > steps[4]: return np.array((0.0, (c - steps[4]) / r, 1.0)) elif c > steps[5]: return np.array(((steps[6] - c) / r, 0.0, 1.0)) elif c > steps[6]: return np.array((1.0, 0.0, (c - steps[6]) / r)) else: return np.array((1.0, 0.0, 0.0)) def HSV2GS(c, lower, upper): return (c - lower) / (upper - lower) inp = self.GetInput() n = inp.GetNumberOfPoints() out = self.GetOutput() out.CopyStructure(inp) ca = vtk.vtkUnsignedCharArray() # vtk.vtkUnsignedShortArray() for 16bit ca.SetName('PNGImage') ca.SetNumberOfComponents(3) # 1 for Grayscale for i in range(n): r, g, b = HSV2RGB(inp.GetPointData().GetArray(variableName).GetValue(i), -1.0, 1.0) * 255.0 ca.InsertNextTuple((r, g, b)) # gray = HSV2GS(inp.GetPointData().GetArray(variableName)[i].ToFloat(), 0.0, 1.0) * 65535.0 # ca.InsertNextValue(gray) out.GetPointData().SetScalars(ca)
コメントを残す