Вход | Регистрация
 
Информационные технологии :: Математика и алгоритмы

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

Экстремум двумерной функции
Я
   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) Спасибо за ссылки, почитаю.
В общем спасибо всем, оказывается ларчик просто открывался - надо проверять, совпадает ли найденный экстремум в центром скользящего окна.


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