C# CDF 5/3 Wavelet - значения всегда 255

Я пытаюсь реализовать высокие и низкие частоты Коэн-Добеши-Фове-Вейвлет 5/3.

Я застрял на данный момент. Мое выходное изображение всегда белое, потому что все значения становятся 255 во время моих расчетов. Очень трудно найти примеры такого вейвлета. Кто-нибудь видит ошибку в моем расчете, которую я не могу найти.

static double[] lowpass = {1/8d, 2/8d, 6/8d, 2/8d, -1/8};
static double[] highpass = {1/2d, 1d, -1/2d };

    public static void lowPassFilter(Bitmap img)
    {
        int index = 0;
        double R = 0.0, G = 0.0, B = 0.0;

        Bitmap filteredImg = img;

        // Iterate over each pixel
        for (int x = 0; x < filteredImg.Width; x++)
        {
            for (int y = 0; y < filteredImg.Height; y++)
            {

                // Apply filter in x direction
                for (int i = 0; i < lowpass.Length; i++)
                {
                    index = Math.Min(Math.Max(x - (lowpass.Length / 2) + i, 0), filteredImg.Width - 1);

                    R += img.GetPixel(index, y).R * lowpass[i];
                    G += img.GetPixel(index, y).G * lowpass[i];
                    B += img.GetPixel(index, y).B * lowpass[i];
                }

                R = Math.Min(Math.Max(R, 0), 255);
                G = Math.Min(Math.Max(G, 0), 255);
                B = Math.Min(Math.Max(B, 0), 255);

                filteredImg.SetPixel(x, y, Color.FromArgb((int)R, (int)G, (int)B));
            }
        }

0 ответов

Другие вопросы по тегам