On Thu, Feb 7, 2013 at 7:27 AM, Uma Maheshwaran <span dir="ltr"><<a href="mailto:uma@lucidindia.com" target="_blank">uma@lucidindia.com</a>></span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<font face="verdana, sans-serif">Hello David,</font><div><font face="verdana, sans-serif"><br></font></div><div><font face="verdana, sans-serif">Thanks for the information. Please see the page 15, 16 of <a href="http://www.totoku.com/display/support/pdf/Required_Grayscale_Accuracy_in_Medical_Displays(En)_V10.pdf" target="_blank">Totoku white paper on GrayScale resolution</a></font></div>


<div><font face="verdana, sans-serif"><br></font></div><div><font face="verdana, sans-serif">I am not able to get any details about "Customized conversion table".</font></div><div><font face="verdana, sans-serif"><br>


</font></div><div><font face="verdana, sans-serif">Please clarify following questions regarding lookup table,</font></div><div><ul><li><font face="verdana, sans-serif"> We are using vtkColorTransferFunction and vtkImageResliceMapper. As per your suggestion, we will have to change this to vtkLookupTable with 4096 entries to support monochrome 12-bit display.</font></li>

</ul></div></blockquote><div><div><font face="Verdana, Geneva, Helvetica, Arial, sans-serif">Yes, you should use a vtkLookupTable.  Do not use a vtkColorTransferFunction. </font></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div><ul>
</ul><div><div><div><font face="verdana, sans-serif"><span style="white-space:pre-wrap">        </span>vtkSmartPointer <vtkColorTransferFunction> lookupTable = vtkSmartPointer <vtkColorTransferFunction> :: New();</font></div>


<div><font face="verdana, sans-serif"><span style="white-space:pre-wrap"> </span>lookupTable -> AddRGBPoint(range[0], 0, 0, 0); // scalarmin</font></div><div><font face="verdana, sans-serif"><span style="white-space:pre-wrap">     </span>lookupTable -> AddRGBPoint(range[1], 1, 1, 1); //scalarmax</font></div>


</div><div><font face="verdana, sans-serif"><br></font></div><div><div><font face="verdana, sans-serif"><span style="white-space:pre-wrap">   </span>vtkSmartPointer <vtkImageProperty> imageProp = vtkSmartPointer <vtkImageProperty> :: New();</font></div>


<div><font face="verdana, sans-serif"><span style="white-space:pre-wrap"> </span>imageProp -> SetLookupTable(lookupTable);</font></div><div><font face="verdana, sans-serif"><span style="white-space:pre-wrap">       </span>imageProp -> SetInterpolationTypeToNearest();</font></div>


</div><div><font face="verdana, sans-serif"><br></font></div><div><div><font face="verdana, sans-serif">        vtkSmartPointer <vtkImageResliceMapper> mapper = vtkSmartPointer <vtkImageResliceMapper> :: New();</font></div>


<div><font face="verdana, sans-serif"><span style="white-space:pre-wrap"> </span>mapper -> SetInputConnection(imageData -> GetProducerPort());</font></div></div></div><div><ul><li><font face="verdana, sans-serif">As per your suggestion in vtk-users forum, the following lookup table is created for 11-bit grayscale. Luminance is calculated based on the standard formula </font><span style><font face="Verdana, Geneva, Helvetica, Arial, sans-serif">Y = R*0.30 + G*0.59 + B*0.11.  Please verify and I will try to set this 2048 entries in vtkLookuptable.</font></span></li>


</ul></div></div><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><div><font face="verdana, sans-serif"><div> R,G,B ->  y</div></font></div>


</div></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><div><font face="verdana, sans-serif"><div> 0,0,0<span style="white-space:pre-wrap"> </span>     0      </div>
</font></div></div></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><div><font face="verdana, sans-serif"><div> 0,0,1     0.11 (close to 0.125)  </div></font></div></div></div></blockquote>


<blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><div><font face="verdana, sans-serif"><div> 1,0,0     0.3 (close to 0.25)   </div></font></div></div></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px">


<div><div><div><font face="verdana, sans-serif"><div> 1,0,1     0.41 (close to 0.375)  </div></font></div></div></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><div><font face="verdana, sans-serif"><div>


 1,0,2     0.52 (close to 0.5)    </div></font></div></div></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><div><font face="verdana, sans-serif"><div> 0,1,0     0.59 (close to 0.625 )</div>


</font></div></div></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><div><font face="verdana, sans-serif"><div> 0,1,2     0.81 (close to 0.75)   </div></font></div></div></div></blockquote>


<blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><div><font face="verdana, sans-serif"><div> 1,1,0     0.89 (close to 0.875)  </div></font></div></div></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px">


<div><div><div><font face="verdana, sans-serif"><div> 1,1,1     1      </div></font></div></div></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><div><font face="verdana, sans-serif"><div>


 1,1,2     ~1.125  </div></font></div></div></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><div><font face="verdana, sans-serif"><div> 2,1,1     ~1.25   </div></font></div></div>


</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><div><font face="verdana, sans-serif"><div> 2,1,2     ~1.375  </div></font></div></div></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px">


<div><div><div><font face="verdana, sans-serif"><div> 2,1,3     ~1.5    </div></font></div></div></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><div><font face="verdana, sans-serif"><div>


 1,2,1     ~1.625  </div></font></div></div></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><div><font face="verdana, sans-serif"><div> 1,2,3     ~1.75   </div></font></div></div>


</div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px"><div><div><div><font face="verdana, sans-serif"><div> 2,2,1     ~1.875 </div></font></div></div></div></blockquote><blockquote style="margin:0 0 0 40px;border:none;padding:0px">


<div><div><div><font face="verdana, sans-serif"><div> 2,2,2     2  (....etc upto 2048 entries)</div></font></div></div></div></blockquote></blockquote></blockquote><div><br></div><div><div><span style="font-family:Verdana,Geneva,Helvetica,Arial,sans-serif">Yes, this should provide 11 bits of grey on greyscale monitors.</span></div>

</div><div><span style="font-family:Verdana,Geneva,Helvetica,Arial,sans-serif"><br></span></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div><div><ul><li>

<font face="verdana, sans-serif">How to build 4096 entries lookup table?  For example, What R, G,B value should be used to get 0.0625 luminance?  Do we have to use alpha channel for generating 4096 entries?</font></li>
</ul><div><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px"><font face="verdana, sans-serif"> R,G,B,A->       y</font></blockquote><blockquote style="margin:0px 0px 0px 40px;border:none;padding:0px">

<font face="verdana, sans-serif"> 0,0,0<span style="white-space:pre-wrap">      </span>,0          0      <br>
 0,0,0,128       ~0.0625<br></font><span style="font-family:verdana,sans-serif"> 0,0,1,0           ~0.125<br></span><span style="font-family:verdana,sans-serif"> 0,0,1,128        ~0.1875....like this etc upto 4096 entries?</span></blockquote>

</div></div></div></div></blockquote><div><br></div><div><font face="Verdana, Geneva, Helvetica, Arial, sans-serif">The alpha channel is not transmitted to the monitor, so it cannot be used.</font></div><div><font face="Verdana, Geneva, Helvetica, Arial, sans-serif">There is no alpha in the equation: </font><span style="font-family:Verdana,Geneva,Helvetica,Arial,sans-serif">Y = R*0.30 + G*0.59 + B*0.11</span></div>

<div><br></div><div><span style="font-family:Verdana,Geneva,Helvetica,Arial,sans-serif">For 12-bit, you need to choose the R, G, and B that provide Y values</span></div><div><font face="Verdana, Geneva, Helvetica, Arial, sans-serif">that most closely approximate the desired greyscale values.  It will</font></div>

<div><font face="Verdana, Geneva, Helvetica, Arial, sans-serif">be impossible to achieve a linear scale with 4096 distinct greys, but</font></div><div><font face="Verdana, Geneva, Helvetica, Arial, sans-serif">I think that over 3000 will be possible.</font></div>

<div><font face="Verdana, Geneva, Helvetica, Arial, sans-serif"><br></font></div><div><font face="Verdana, Geneva, Helvetica, Arial, sans-serif">You should also check with the manufacturer for the exact equation</font></div>

<div><font face="Verdana, Geneva, Helvetica, Arial, sans-serif">that they use to convert R, G, B to Y.  The equation that I gave is</font></div><div><font face="Verdana, Geneva, Helvetica, Arial, sans-serif">the one most commonly used in North America, but it is part of an</font></div>

<div><font face="Verdana, Geneva, Helvetica, Arial, sans-serif">old video standard (CCIR 601).  That's why it would be best if you</font></div><div><font face="Verdana, Geneva, Helvetica, Arial, sans-serif">can get the conversion table directly from Totoku.</font></div>

<div><font face="Verdana, Geneva, Helvetica, Arial, sans-serif"><br></font></div><div><font face="Verdana, Geneva, Helvetica, Arial, sans-serif"> - David</font></div></div>