public void ShouldModifyInputImageForNonTrivialNonUniformityModel()
        {
            // Given
            var nonUniformityModel  = new NonUniformityModel(new[] { 1, 0, 0.5, 0.25 }, new[] { 5.0, 0, -4, 5 }, new ImageModel(2, 2, ImageBitDepth.Bpp8));
            var imageModel          = new ImageModel(2, 2, ImageBitDepth.Bpp8);
            var inputImage          = new Image(new ushort[] { 5, 0, 2, 8 }, imageModel);
            var correctionAlgorithm = new TwoPointNonUniformityCorrectionAlgorithm(new TwoPointNonUniformityCorrectionTemplate {
                NonUniformityModel = nonUniformityModel
            });

            // When
            var correctedImage = correctionAlgorithm.ProcessImage(inputImage);

            // Then
            Assert.AreNotEqual(inputImage, correctedImage);
        }
        public void ShouldThrowErrorWhenTryingToCorrectImageOfDifferentModelThanNonUniformityImageModel()
        {
            // Given
            var imageModel = new ImageModel(4, 2, ImageBitDepth.Bpp12);
            var inputImage = new Image(new ushort[] { 5, 0, 2, 8, 2, 8, 2, 8 }, imageModel);

            var nonUniformityModel = new NonUniformityModel(new[] { 1, 0, 0.5, 0.25 }, new[] { 5.0, 0, -4, 5 }, new ImageModel(2, 2, ImageBitDepth.Bpp8));

            var correctionAlgorithm = new TwoPointNonUniformityCorrectionAlgorithm(new TwoPointNonUniformityCorrectionTemplate {
                NonUniformityModel = nonUniformityModel
            });

            // When
            // Then
            Assert.Throws <ImageModelMismatchException>(() => { correctionAlgorithm.ProcessImage(inputImage); });
        }
        public void ShouldReturnSameImageWhenProvidedDefaultNonUniformityModel()
        {
            // Given
            var nonUniformityModel  = new DefaultNonUniformityModel(new ImageModel(2, 2, ImageBitDepth.Bpp8));
            var correctionAlgorithm = new TwoPointNonUniformityCorrectionAlgorithm(new TwoPointNonUniformityCorrectionTemplate {
                NonUniformityModel = nonUniformityModel
            });

            var imageModel = new ImageModel(2, 2, ImageBitDepth.Bpp8);
            var image      = new Image(new ushort[] { 1, 2, 3, 4 }, imageModel);

            // When
            var correctedImage = correctionAlgorithm.ProcessImage(image);

            // Then
            Assert.AreEqual(correctedImage, image);
        }