Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.02.2013, 17:37   #1
alik98
Пользователь
 
Регистрация: 28.05.2012
Сообщений: 54
По умолчанию Гауссово распределение, С#

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

Код:
public Bitmap smoothBitmap_Gauss(Bitmap smoothingBitmap, int patternRadius)
        {
            Bitmap newBitmap = new Bitmap(resolution, resolution);
            int d = patternRadius * 2 + 1;
            float[,] matrix;

            for (int x = 0; x < resolution; x++)
            {
                for (int y = 0; y < resolution; y++)
                {
                    for (int i = 0; i < d; i++)
                    {
                        for (int j = 0; j < d; j++)
                        {
                            //...
                            //заполнение матрицы сюда
                            //...
                        }
                    }

                    float g = 0;
                    float sum = 0;

                    for (int i = 0; i < d; i++)
                    {
                        for (int j = 0; j < d; j++)
                        {
                            if (x + i - patternRadius > -1 && x + i - patternRadius < resolution 
                                && y + j - patternRadius > -1 && y + j - patternRadius < resolution)
                            {
                                g += smoothingBitmap.GetPixel(x + i - patternRadius, y + j - patternRadius).R * matrix[i, j];
                                sum += matrix[i, j];
                            }
                        }
                    }

                    g /= sum;

                    newBitmap.SetPixel(x, y, Color.FromArgb((byte)g, (byte)g, (byte)g));
                } 
            }

            return newBitmap;
        }
P.S. поправьте меня, пожалуйста, если где-то еще ошибку совершил.

Последний раз редактировалось alik98; 24.02.2013 в 17:44.
alik98 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Распределение в массиве SPAHI4 PHP 10 27.06.2011 20:55
Гауссово размывание (Gaussian Blur) в Delphi нужно сделать готовую прогу Art-1989 Помощь студентам 0 19.04.2011 09:10
пуассоновское распределение Dafka Помощь студентам 0 30.03.2010 21:15
(BC 3.1) Распределение памяти! Lawliet32 Помощь студентам 8 28.12.2009 23:49
Распределение памяти Jeni Общие вопросы Delphi 6 31.03.2008 19:59