Esempio n. 1
0
        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]]);
        }
Esempio n. 2
0
        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]]);
        }