Вход | Регистрация


Информационные технологии :: Математика и алгоритмы

Экстремум двумерной функции

Экстремум двумерной функции
Я
   megabax
 
16.09.16 - 10:12
Добрый день. Подскажите пожалуйста алгоритм поиска экстремума двумерной функции (с двумя аргументами, например, f(x,y)) с дискретным шагом аргументов (аргументы координаты пикселов), таким образом, чтобы этот экстремум был единственный в окне заданного размера.
 
 
   Irbis
 
1 - 16.09.16 - 10:14
(0) Вышку прогуливал?
   RomanYS
 
2 - 16.09.16 - 10:21
Тупой перебор не предлагать? Что за функция?
   jsmith
 
3 - 16.09.16 - 10:22
Найти частные производные первого порядка
Решить систему уравнений (частные первого порядка = 0). Определить стационарную точку
Вычислить частные производные второго порядка в стационарной точке. Если <> 0, то стационарная точка - экстремум. Если > 0, то минимум, сели < 0, то максимум.
   megabax
 
4 - 16.09.16 - 10:29
(2) Результат свертки изображения с фильтром гаусса и корреляционной функцией, функция нормированная, значения от -1 до 1.
Пробовал искать экстремум тупым перебором с использованием скользящего окна, но у меня все равно получаться куча экстремумов рядом.
Вот функция (зеленый +1, красный -1)
https://yadi.sk/i/G0iVdgoZvEHS7
Вот результат:
https://yadi.sk/i/mZUYQwYhvEHXz
Вот алгоритм:
       private void tsmiFeatures_Click(object sender, EventArgs e)
        {
            double[,] matrix = Preprocessing.create_gauss(7, 3);
            double[,] skl = core.data.rgb_frame.get_gray().singularities_skeleton(matrix, 7);

            RGBFrame res = new RGBFrame(core.data.rgb_frame.width, core.data.rgb_frame.height);

            int delta = 7;
            int count = 0;
            bool[,] matr=new bool[core.data.rgb_frame.width, core.data.rgb_frame.height];
            for (int i = delta; i < core.data.rgb_frame.width-delta; i++)
            {
                for (int j = delta; j < core.data.rgb_frame.height-delta; j++)
                {
                    int xmax=-1;
                    int ymax = -1;
                    int xmin = -1;
                    int ymin = -1;
                    double max = -2;
                    double min = 2;
                    for (int x = i - delta; x <= i + delta; x++)
                    {
                        for (int y = j - delta; y <= j + delta; y++)
                        {
                            double light = skl[x, y];
                            if (light > max && light>=0 )
                            {
                                max = light;
                                xmax = x;
                                ymax = y;
                            }
                            if (light < min && light < 0 )
                            {
                                min = light;
                                xmin = x;
                                ymin = y;

                            }
                        }
                    }

                    if (max > -1.5 && !matr[xmax, ymax])
                    {
                        res.matrix[xmax, ymax] = new RGBPoint(0, Convert.ToInt32(max * 255.0), 0);
                        count++;
                        matr[xmax, ymax] = true;
                    }
                    if (min < 1.5 && !matr[xmin, ymin])
                    {
                        res.matrix[xmin, ymin] = new RGBPoint(Convert.ToInt32(min * -255.0), 0, 0);
                        count++;
                        matr[xmin, ymin] = true;
                    }
                }

            }
            MessageBox.Show(count.ToString());

            res.create_picture();
            pbShow.Image = res.picture;
        }
   Irbis
 
5 - 16.09.16 - 10:30
(3)+ Можешь ещё прочитать про градиент и искать методом истинно научного тыка, смещаясь в направлении наибольшего роста/убывания функции.
   Loky9
 
6 - 16.09.16 - 10:46
НЧ фильтр по "окну заданного размера"?
   Йохохо
 
7 - 16.09.16 - 10:47
(4) а ничего что у Вас экстремум размерности 1?
   varyag
 
8 - 16.09.16 - 10:52
офигеть вы умные посоны
   megabax
 
9 - 16.09.16 - 10:53
(7) В смысле экстремум размерности 1? Значение функции как раз и одномерное, это аргумент двумерный
   Йохохо
 
10 - 16.09.16 - 10:54
(9) в смысле попробуй вручную отметить экстремум, это линия
 
 Рекламное место пустует
   megabax
 
11 - 16.09.16 - 10:55
(10) Как линия?
   Йохохо
 
12 - 16.09.16 - 10:55
или хз, напиши лучше смысл задачи, а не способ решения. по картинке из (4) цель не понятна
   Йохохо
 
13 - 16.09.16 - 10:56
лейкоциты считаешь на 1с?)
   megabax
 
14 - 16.09.16 - 11:00
(12) Смысл задачи - найти особые точки на картинке типа такой:
https://yadi.sk/i/kGIh5OLrvEMis
Для этого считаем некую функцию, представляющую собой свертку изображения с гауссианом и корреляцией, которая принимает значения от -1 до +1, получается вот такая красно зеленая картинка, как в (4), а потом каким то макаром надо найти экстремумы в плюсахх и в минусах, это ибудут искомые особые точки. По этим особым будет происходить навигация беспилотного летательного аппарата, то есть по снимкам на камере определять, в какюу сторону он успел улететь и на какое расстояние.
   Loky9
 
15 - 16.09.16 - 11:03
   Irbis
 
16 - 16.09.16 - 11:05
(14) Я понимаю основная проблема много локальных экстремумов в заданной области, а нужен один глобальный, и численные методы начинают расходиться?
   В тылу врага
 
17 - 16.09.16 - 11:06
(14) зачем это все?
   Loky9
 
18 - 16.09.16 - 11:07
(17) Конкурс у него)
   megabax
 
19 - 16.09.16 - 11:11
(16) Проблема в том, что экстремумы совсем рядом, то есть в результате обработки должны получиться раскиданные по всей картинке точки, а не пятна, как получилось у меня.
(17) Магистерская диссертация
   Loky9
 
20 - 16.09.16 - 11:13
http://cyberleninka.ru/article/n/obnurazhenie-i-soprovozhdenie-dvizhuschihsya-obektov-metodom-sopostavleniya-blokov
И можно по MPEG что-нибудь ещё.
(19) До чего дожили.
   Хоменко Валерий
 
21 - 16.09.16 - 11:15
Сколько лет назад это было... Метод скользящего допуска в книжке Химмельблау.
   Irbis
 
22 - 16.09.16 - 11:18
(19) А я как написал? Придётся сужать область поиска. При попадании в окрестность локального экстремума числовой метод начинает сходиться.
   megabax
 
23 - 16.09.16 - 11:22
(15) (20) Спасибо за ссылки, почитаю.
В общем спасибо всем, оказывается ларчик просто открывался - надо проверять, совпадает ли найденный экстремум в центром скользящего окна.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует