Ошибка изменения цвета пикселя 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;
}