From: Ian S. <ian...@st...> - 2004-11-29 16:24:07
|
Wheeler, Frederick W (Research) wrote: > VXL Maintainers: > > Here is a recent change to ITK by Bill Lorensen for the conversion of RGB to > grayscale: > > http://www.itk.org/cgi-bin/viewcvs.cgi/Code/IO/itkConvertPixelBuffer.txx?roo > t=Insight&r1=1.15&r2=1.16 > > Here is a snippet: > > 139,141c141,143 > < 0.2125 * static_cast<OutputComponentType>(*inputData) + > < 0.7154 * static_cast<OutputComponentType>(*(inputData+1)) + > < 0.0721 * static_cast<OutputComponentType>(*(inputData+2)) ); > --- > >> (2125.0 * static_cast<OutputComponentType>(*inputData) + >> 7154.0 * static_cast<OutputComponentType>(*(inputData+1)) + >> 0721.0 * static_cast<OutputComponentType>(*(inputData+2))) / > > 10000.0 ); > > It was found that this change was necessary to get the same results on Intel > and non-Intel platforms when r=g=b. With q=0.2125*r+0.7154*g+0.0721*b and > r=g=b=187 the result is q==186 on non-Intel platforms. There are a few > other values from 0-255 that give similar results. > > In vil_convert.h we cannot make the same change without adding computation > because vil_convert_rgb_to_grey lets you pass in the weights. We'd have to > multiply by 10000 to maintain the current API. > > Should VXL make the same change? I don't think so because of the additional > computation, but I wanted to report the issue. I think, it might be worth pointing this out in the documentation, but leaving the code as is. Ian. |