Beispiel #1
0
        private static LutValueRange SyncMinMaxValues(IComposableLut[] luts, int bitsStored, bool isSigned)
        {
            var range = new LutValueRange();

            luts[0].MinInputValue = range.MinInputValue = DicomPixelData.GetMinPixelValue(bitsStored, isSigned);
            luts[0].MaxInputValue = range.MaxInputValue = DicomPixelData.GetMaxPixelValue(bitsStored, isSigned);

            var lutCount = luts.Length;

            for (var j = 1; j < lutCount; ++j)
            {
                luts[j].MinInputValue = luts[j - 1].MinOutputValue;
                luts[j].MaxInputValue = luts[j - 1].MaxOutputValue;
            }

            range.MinOutputValue = (int)Math.Round(luts[lutCount - 1].MinOutputValue);
            range.MaxOutputValue = (int)Math.Round(luts[lutCount - 1].MaxOutputValue);
            return(range);
        }
		private static LutValueRange SyncMinMaxValues(IComposableLut[] luts, int bitsStored, bool isSigned)
		{
			var range = new LutValueRange();

			luts[0].MinInputValue = range.MinInputValue = DicomPixelData.GetMinPixelValue(bitsStored, isSigned);
			luts[0].MaxInputValue = range.MaxInputValue = DicomPixelData.GetMaxPixelValue(bitsStored, isSigned);

			var lutCount = luts.Length;
			for (var j = 1; j < lutCount; ++j)
			{
				luts[j].MinInputValue = luts[j - 1].MinOutputValue;
				luts[j].MaxInputValue = luts[j - 1].MaxOutputValue;
			}

			range.MinOutputValue = (int) Math.Round(luts[lutCount - 1].MinOutputValue);
			range.MaxOutputValue = (int) Math.Round(luts[lutCount - 1].MaxOutputValue);
			return range;
		}
		private static void AssertComposedLut(IComposableLut[] luts, ComposedLut composedLut, LutValueRange lutRange)
		{
			Assert.AreEqual(lutRange.MinInputValue, composedLut.MinInputValue, "MinInputValue");
			Assert.AreEqual(lutRange.MaxInputValue, composedLut.MaxInputValue, "MaxInputValue");
			Assert.AreEqual(lutRange.MinOutputValue, composedLut.MinOutputValue, "MinOutputValue");
			Assert.AreEqual(lutRange.MaxOutputValue, composedLut.MaxOutputValue, "MaxOutputValue");

			var data = composedLut.Data;
			Assert.IsNotNull(data, "Data");

			var lutCount = luts.Length;
			for (var i = -65536; i < 65535; ++i)
			{
				double value = i;
				for (var j = 0; j < lutCount; ++j)
					value = luts[j][value];

				var expectedValue = (int) Math.Round(value);
				Assert.AreEqual(expectedValue, composedLut[i], "LUT @{0}", i);

				if (i >= lutRange.MinInputValue && i <= lutRange.MaxInputValue)
				{
					Assert.AreEqual(expectedValue, data[i - lutRange.MinInputValue], "Data @{0} (Value {1})", i - lutRange.MinInputValue, i);
				}
			}
		}
Beispiel #4
0
        private static void AssertComposedLut(IComposableLut[] luts, ComposedLut composedLut, LutValueRange lutRange)
        {
            Assert.AreEqual(lutRange.MinInputValue, composedLut.MinInputValue, "MinInputValue");
            Assert.AreEqual(lutRange.MaxInputValue, composedLut.MaxInputValue, "MaxInputValue");
            Assert.AreEqual(lutRange.MinOutputValue, composedLut.MinOutputValue, "MinOutputValue");
            Assert.AreEqual(lutRange.MaxOutputValue, composedLut.MaxOutputValue, "MaxOutputValue");

            var data = composedLut.Data;

            Assert.IsNotNull(data, "Data");

            var lutCount = luts.Length;

            for (var i = -65536; i < 65535; ++i)
            {
                double value = i;
                for (var j = 0; j < lutCount; ++j)
                {
                    value = luts[j][value];
                }

                var expectedValue = (int)Math.Round(value);
                Assert.AreEqual(expectedValue, composedLut[i], "LUT @{0}", i);

                if (i >= lutRange.MinInputValue && i <= lutRange.MaxInputValue)
                {
                    Assert.AreEqual(expectedValue, data[i - lutRange.MinInputValue], "Data @{0} (Value {1})", i - lutRange.MinInputValue, i);
                }
            }
        }