Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Mishana_319
3 / 3 / 4
Регистрация: 07.12.2015
Сообщений: 50
1

Поиск максимумов кривой линии

12.12.2016, 02:47. Просмотров 94. Ответов 0
Метки нет (Все метки)

имеется контур ладони
необходимо найти кончики пальцев - максимумы кривой (пальцы)
алгоритм примерно следующий:
работаем по возрастанию функции (кривой)
сравниваются две соседние точки (x;x+1) по координате Y, в цикле
шагаем до тех пор пока не найдем спад линии
фиксируем последнюю максимальную точку
далее работаем по спаду функции
ищем момент когда функция начинает возрастать
и снова работаем по возрастанию - ищем следующую точку
.
для обозначения спада или возрастания использовал флажок
.
на словах, вроде не сложно,
но когда написал код и запустил, тут началось...
дальше первого пальце не идет почемуто
помогите кто ниб разобраться
вот кусок проблемного кода
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
for (x = 0; x <= picture2.Width - 1; x++)
            {
                for (y = 0; y <= picture2.Height - 1; y++)
                {
                    if (picture2.GetPixel(x, y).ToArgb() == Color.White.ToArgb())// если находим белый пиксель
                    {
                        p1.X = x;
                        p1.Y = y;//поиск первой точки
                        xcont = x;
                        k = 1;
                    }
                   if (k == 1) break;
                }
                if (k == 1) break;
            }
            for (x = xcont + 1; x <= picture2.Width - 1; x++)//продолжаем с того же места по Х
            {
                for (y = 0; y <= picture2.Height - 1; y++)
                {
                    if (picture2.GetPixel(x, y).ToArgb() == Color.White.ToArgb())// если находим белый пиксель
                    {
                        p2.X = x;
                        p2.Y = y;
 
                        if (flag == 0)
                        {
                            if (p1.Y < p2.Y)
                            {
                                arrX[i] = p1.X;
                                arrY[i] = p1.Y;
                                flag = 1;
                                i++;
                                break;
                            }                            
                        }
 
                        if (flag == 1)
                        {
                            if (p1.Y > p2.Y)
                            {
                                flag = 0;
                            }
                        }
 
                        p1.X = p2.X;
                        p1.Y = p2.Y;
                    }                    
                    if (i == 5) break;
                }
                if (i == 5) break;
            }
            for (i = 0; i <= 4; i++)
            {
                g.DrawEllipse(red, arrX[i], arrY[i], 1, 1);
            }
            richTextBox1.Text += arrX[0] + ", " + arrY[0] + Environment.NewLine +
                                 arrX[1] + ", " + arrY[1] + Environment.NewLine +
                                 arrX[2] + ", " + arrY[2] + Environment.NewLine +
                                 arrX[3] + ", " + arrY[3] + Environment.NewLine +
                                 arrX[4] + ", " + arrY[4];
            pictureBox1.Image = picture2;
        }
    }
}
небольшие пояснения к коду:
для начала необходимо найти первую точку
далее в двойном счетчике находится вторая и сравниваются
далее они переприсваиваются и все повторяется заново пока не наберется 5 точек (5 пальцев)
скриншот того что получилось - все точки на первом пальце
0
Миниатюры
Поиск максимумов кривой линии  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2016, 02:47
Ответы с готовыми решениями:

Рисование кривой линии с помощью мыши
Рисую произвольную кривую на форме с помощью мыши в событии формы Mouse_Move,...

Поиск локальных максимумов в двумерном массиве
Задача такая: Дан двухмерный массив 20 × 20 целочисленных элементов.Найдите все...

Поиск локальных максимумов в двумерном массиве
Задача: Дан двухмерный массив 20 × 20 целочисленных элементов.Найдите все...

Определение максимумов и минимума на кривой
Имеется txt-файл, содержащий 300 тыс. значений в двух столбцах. Необходимо...

Псевдокод рисования кривой линии
Дано: рисунок кривой линии и входные данные, описывающие эту кривую. Надо...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.12.2016, 02:47

MFC рисование кривой линии
Добрый вечер.Скажите как корректно нарисовать ломанную в MDI?Рисовать отрезки и...

Разбиение кривой Безье на прямые линии
Доброго времени суток всем! Проблема заключается в математике. Необходимо...

Корректно отобразить дату по кривой линии
задача : есть некий параметр ( дата ) . надо изобразить её по изгибающейся...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru