public void ComposeSigned12() { int bitsStored = 12; bool isSigned = true; double windowWidth = 16384; double windowLevel = 4096; double rescaleSlope = 1.0; double rescaleIntercept = 0; IModalityLut modalityLUT = _lutFactory.GetModalityLutLinear( bitsStored, isSigned, rescaleSlope, rescaleIntercept); Assert.AreEqual(-2048, modalityLUT.MinInputValue); Assert.AreEqual(2047, modalityLUT.MaxInputValue); Assert.AreEqual(-2048, modalityLUT.MinOutputValue, _tolerance); Assert.AreEqual(2047, modalityLUT.MaxOutputValue, _tolerance); Assert.AreEqual(-2048, modalityLUT[-2048], _tolerance); Assert.AreEqual(2047, modalityLUT[2047], _tolerance); BasicVoiLutLinear voiLUT = new BasicVoiLutLinear(); voiLUT.WindowWidth = windowWidth; voiLUT.WindowCenter = windowLevel; LutComposer lutComposer = new LutComposer(bitsStored, isSigned); lutComposer.ModalityLut = modalityLUT; lutComposer.VoiLut = voiLUT; Assert.AreEqual(-2048, voiLUT.MinInputValue, _tolerance); Assert.AreEqual(2047, voiLUT.MaxInputValue, _tolerance); Assert.AreEqual(-2048, voiLUT.MinOutputValue); Assert.AreEqual(2047, voiLUT.MaxOutputValue); Assert.AreEqual(-1536, voiLUT[-2047]); Assert.AreEqual(-1024, voiLUT[0]); Assert.AreEqual(-513, voiLUT[2047]); //This test is a little different from the others, it tests the output using a grayscale color map. var colorMap = _lutFactory.GetGrayscaleColorMap(); colorMap.MaxInputValue = lutComposer.MaxOutputValue; colorMap.MinInputValue = lutComposer.MinOutputValue; Assert.AreEqual(31, 0x000000ff & colorMap[lutComposer.Data[0]]); Assert.AreEqual(63, 0x000000ff & colorMap[lutComposer.Data[2048]]); Assert.AreEqual(95, 0x000000ff & colorMap[lutComposer.Data[4095]]); }
public void ComposeSigned12() { const int bitsStored = 12; const bool isSigned = true; const double windowWidth = 16384; const double windowLevel = 4096; const double rescaleSlope = 1.0; const double rescaleIntercept = 0; IModalityLut modalityLut = _lutFactory.GetModalityLutLinear( bitsStored, isSigned, rescaleSlope, rescaleIntercept); Assert.AreEqual(-2048, modalityLut.MinInputValue); Assert.AreEqual(2047, modalityLut.MaxInputValue); Assert.AreEqual(-2048, modalityLut.MinOutputValue, _tolerance); Assert.AreEqual(2047, modalityLut.MaxOutputValue, _tolerance); Assert.AreEqual(-2048, modalityLut[-2048], _tolerance); Assert.AreEqual(2047, modalityLut[2047], _tolerance); BasicVoiLutLinear voiLut = new BasicVoiLutLinear(); voiLut.WindowWidth = windowWidth; voiLut.WindowCenter = windowLevel; LutComposer lutComposer = new LutComposer(bitsStored, isSigned); lutComposer.ModalityLut = modalityLut; lutComposer.VoiLut = voiLut; Assert.AreEqual(-2048, voiLut.MinInputValue, _tolerance); Assert.AreEqual(2047, voiLut.MaxInputValue, _tolerance); Assert.AreEqual(-2048, voiLut.MinOutputValue); Assert.AreEqual(2047, voiLut.MaxOutputValue); Assert.AreEqual(-1535.84380, voiLut[-2047], _tolerance); Assert.AreEqual(-1024.18751, voiLut[0], _tolerance); Assert.AreEqual(-512.53122, voiLut[2047], _tolerance); //For this, we want the output range to be the same as the VOI. var output = lutComposer.GetOutputLut((int)Math.Round(voiLut.MinOutputValue), (int)Math.Round(voiLut.MaxOutputValue)); Assert.AreEqual(-1536, output[-2047]); Assert.AreEqual(-1024, output[0]); Assert.AreEqual(-513, output[2047]); Assert.AreEqual(voiLut.MinOutputValue, output.MinInputValue); Assert.AreEqual(voiLut.MaxOutputValue, output.MaxInputValue); Assert.AreEqual(voiLut.MinOutputValue, output.MinOutputValue); Assert.AreEqual(voiLut.MaxOutputValue, output.MaxOutputValue); //This test is a little different from the others, it tests the output using a grayscale color map. var colorMap = _lutFactory.GetGrayscaleColorMap(); colorMap.MaxInputValue = output.MaxOutputValue; colorMap.MinInputValue = output.MinOutputValue; Assert.AreEqual(32, 0x000000ff & colorMap[output.Data[0]]); Assert.AreEqual(64, 0x000000ff & colorMap[output.Data[2048]]); Assert.AreEqual(96, 0x000000ff & colorMap[output.Data[4095]]); }