コード例 #1
0
        public void testCrop()
        {
            Wavelet2D wavelet = new OrderWavelet2D(4, 4);

            float[,] test = new float[4, 4];
            for (int y = 0; y < 4; y++)
            {
                for (int x = 0; x < 4; x++)
                {
                    test[x, y] = 50.0f;
                }
            }
            float min;
            float max;

            test[1, 0] = 10.0f;
            test[0, 1] = -10.0f;
            wavelet.CropCoefficients(test, 10.1f);
            wavelet.EnableParallel = false;
            wavelet.getCoefficientsRange(test, out min, out max);
            Assert.AreEqual(0.0f, min);
            Assert.AreEqual(50.0f, max);
            test[1, 0] = 10.0f;
            test[0, 1] = -10.0f;
            wavelet.CropCoefficients(test, 9.9f);
            wavelet.EnableParallel = true;
            wavelet.getCoefficientsRange(test, out min, out max);
            Assert.AreEqual(10.0f, min);
            Assert.AreEqual(50.0f, max);
        }
コード例 #2
0
        public void testScale()
        {
            Wavelet2D wavelet = new OrderWavelet2D(16, 16);

            initArrays(16, 16);

            foreach (bool parallel in new bool[] { false, true })
            {
                for (int y = 0; y < 16; y++)
                {
                    for (int x = 0; x < 16; x++)
                    {
                        test [x, y] = x + y;
                        if (((x % 8) == 7) && ((y % 8) == 7))
                        {
                            valOrg [x, y] = 2.5f * test [x, y];
                        }
                        else
                        {
                            valOrg [x, y] = test [x, y];
                        }
                    }
                }
                wavelet.EnableParallel = parallel;
                wavelet.ScaleCoefficients(test, new float[] { 2.5f }, 8);
                Assert.True(compareSource());
            }
        }
コード例 #3
0
        public void testRange()
        {
            Wavelet2D wavelet = new OrderWavelet2D(512, 512);

            float[,] test = new float[512, 512];
            for (int y = 0; y < 512; y++)
            {
                for (int x = 0; x < 512; x++)
                {
                    test[x, y] = 50.0f;
                }
            }
            float min;
            float max;

            wavelet.EnableParallel = false;
            wavelet.getCoefficientsRange(test, out min, out max);
            Assert.AreEqual(min, 50.0f);
            Assert.AreEqual(max, 50.0f);
            test[5, 5]    = 100.0f;
            test[10, 100] = -10.0f;
            wavelet.getCoefficientsRange(test, out min, out max);
            Assert.AreEqual(min, 10.0f);
            Assert.AreEqual(max, 100.0f);
            wavelet.EnableParallel = true;
            wavelet.getCoefficientsRange(test, out min, out max);
            Assert.AreEqual(min, 10.0f);
            Assert.AreEqual(max, 100.0f);
        }
コード例 #4
0
        private static void applyAdaptiveDeadzone(float[,] array, int numCoeffs)
        {
            int width  = array.GetLength(0);
            int height = array.GetLength(1);
            Biorthogonal53Wavelet2D wavelet53    = new Biorthogonal53Wavelet2D(width, height);
            OrderWavelet2D          waveletOrder = new OrderWavelet2D(width, height);

            wavelet53.EnableCaching    = true;
            waveletOrder.EnableCaching = true;
            wavelet53.TransformIsotropic2D(array);
            //Reverse the ordering of the coefficients
            waveletOrder.BacktransformIsotropic2D(array);
            //Use numCoeffs cofficient out of 64 (8x8) -> for e.g. numCoeffs = 5 this
            //means a compression to 7,8% of the original size
            waveletOrder.CropCoefficients(array, 7, 8);
            waveletOrder.TransformIsotropic2D(array);
            wavelet53.BacktransformIsotropic2D(array);
        }
コード例 #5
0
ファイル: Program.cs プロジェクト: rzel/TurboWavelets.Net
        private static void applyAdaptiveShapening(float[,] array, float position)
        {
            int width  = array.GetLength(0);
            int height = array.GetLength(1);
            Biorthogonal53Wavelet2D wavelet53    = new Biorthogonal53Wavelet2D(width, height);
            OrderWavelet2D          waveletOrder = new OrderWavelet2D(width, height);

            wavelet53.EnableCaching    = true;
            waveletOrder.EnableCaching = true;
            wavelet53.TransformIsotropic2D(array);
            //Reverse the ordering of the coefficients
            waveletOrder.BacktransformIsotropic2D(array);
            float[] scale = new float[8 * 8];

            for (int x = 0; x < 8 * 8; x++)
            {
                scale [x] = 1.0f + 2.0f / ((position - x) * (position - x) + 1.0f);
            }
            waveletOrder.ScaleCoefficients(array, scale, 8);
            waveletOrder.TransformIsotropic2D(array);
            wavelet53.BacktransformIsotropic2D(array);
        }