How to get 16-Bit information from 3D model on Figure

2 views (last 30 days)
I am manipulating 3D CAD models while using MATLAB's lighting features and need get the 2D projection at my given view angle with the current lighting and material properties.
I have been able to do this quickly and easily with getframe, but am limited to 8-bit data. I need at least 16-bit resolution for my application. Is there a way to trick MATLAB into giving me 16-bit data from the screen?
As background: my plotted model is displaying 16-bit color information and has 16-bit data in the object handle. I have tried using getframe, print, hardcopy, as well as import_fig from the file exchange.

Answers (1)

Walter Roberson
Walter Roberson on 19 Nov 2015
I am having difficulty with finding information about what is currently available.
If I understand what I am finding correctly, you will need Linux, and you will need an nvidia Quattro or better or a ATI/AMD Firepro, and it looks like most of those only get you 10 bits per channel. Whether you are using HDMI or Display Port seems to matter. And it looks like you might need to have attached a display that supports 48 bits (16 bits per channel, bpc) in order for the drivers to switch in to the right mode.
The keep word seems to be "Deep Color" for anything more than 8 bits per channel.
Related articles:
https://pcmonitors.info/articles/correcting-hdmi-colour-on-nvidia-and-amd-gpus/
https://devtalk.nvidia.com/default/topic/771081/30-bit-depth-with-linux-driver-does-not-produce-30-bit-output-on-monitor/
  2 Comments
Walter Roberson
Walter Roberson on 20 Nov 2015
To phrase this another way:
With the way you have defined your workflow, the data has to be sent to the graphics driver and rendered and then you need to pull it back from the graphics driver. But for the graphics driver to have 16 bits per component stored, the graphics card needs to be capable of 16 bits per component and needs to be configured for that. Consumer level graphics cards are not capable of that; maybe the high-end consumer cards can now do 10 bits per channel (you would have to look) but 16 bits per channel is decidedly Pro level.
The information I am finding is suggestive that at least for nvidia, graphics drivers that go beyond 10 bits per channel (or at most 32 bits Truecolor) might not be available for MS Window, that you might need to go to Linux. I do not know if the same restriction is true for ATI/AMD cards.
The nvidia cards appear to have the further restriction that they might not switch into the proper mode unless they detect that an appropriate monitor is connected. Perhaps this is something that could be overridden.
It appears that nvidia HDMI might default to the wrong signal representation but can be configured for the right representation if you have the right utilities. The AMD cards appear not to have this issue.
16 bits per component was something we used to be able to do on our higher end SGI workstations, about 8 years ago. Unfortunately SGI stopped making those and Mathworks stopped supporting SGI (and we were ordered to close for political reasons.)
Michael Mancinelli
Michael Mancinelli on 20 Nov 2015
Thanks for the detailed description and background Walter. This gives me lot to go on!! Thanks.

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!