The output of vtkLookupTable is always 8 bits per component. You cannot use it to produce 16-bit data.
Didn’t I already say that VTK does not provide the solution to your problem?
In order to create an output for saving, you must create your own LUT (not as a vtkLookupTable!). The LUT can be implemented simply as an array of type “unsigned short” with a length of 65536. In other words, you can even use a vtkUnsignedShortArray as the LUT. But you will probably have to write the C++ code that maps every pixel in the image through the LUT.
No worries… We can write a C++ code to loop through each pixel and to change the scalar value.
In the example gamma correction code you have mentioned about noise level of raw data.
Is this black level? or in other words , can we put the minimum scalar range value as the noise value?