Ошибка изменения цвета пикселя C# Bitmap

по алгоритму нахожу среднее значение цвета пикселей вокруг и меняю сломанный, на среднее. Почему-то алгоритм с квадратным форматом изображения работает отлично, как только формат становится несимметричным, программа зависает и вылетает. В чем может быть проблема? При дебаггинге показывает, что зацикливается структура Color:

int status = Gdip.GdipBitmapSetPixel(new HandleRef(this, nativeImage), x, y, color.ToArgb());

public int ToArgb() => unchecked((int)Value);

А именно функция: HandleRef(this, nativeImage) Код алгоритма:

public static Bitmap Denoize(System.Drawing.Bitmap scrBitmap)
    {
        for (int i = 0; i < scrBitmap.Height; i++)
        {
            for (int j = 0; j < scrBitmap.Width; j++)
            {
                if (Broken(scrBitmap.GetPixel(i, j), i , j, scrBitmap))
                {
                    //Среднее значение цвета вокруг пикселя
                    Color averageColor = FindAveragePixel(scrBitmap,i, j); 
                    //Меняем значение пикселя на среднее
                    try
                    {
                        scrBitmap.SetPixel(i, j, averageColor);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex.Message);
                    }
                }
                //Иначе ничего не делаем

            }
        }

        return scrBitmap;
    }

Ответы (0 шт):