![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Максимумы в гистограмме [D7, WinXP]
Shart © (2008-02-14 22:52:00)Есть картинка, по ней я строю гистограмму яркости.
Для простоты предположим, что изображение всё черное, кроме двух белых маленьких кругов. Т.е. в гистограмме визуально видны максимумы. Вот их координаты надо найти. Проблемы тут в том, что кругов может быть до 4. И их надо все разделить по координатам, это надо будет делать вторую гистограмму (но это уже просто).
Что у меня есть сейчас:
Прохожу по массиву (он, кстати одномерный типа byte), для каждого элемента нахожу, больше ли он тех элементов, которые в окрестности. Если всё ок - то это максимум...
Но это очень плохо работает, т.к. в изображении есть маленький шум, который даёт очень много максимумов...
Короче, нужен алгоритм нахождения максимума среди числовой последовательности. Заранее спасибо!
MBo (2008-02-16 20:22:00) [1]>Что фильтр низких частот может сглаживать?
Высокочастотный шум убирать
Бегущий человек (2008-02-16 15:24:00) [2]Что фильтр низких частот может сглаживать?
MBo (2008-02-15 18:11:00) [3]>Убираем из массива все элементы, меньшие чем "порог", т.е. как бы ФНЧ.
ФНЧ - фильтр низких частот, сглаживает, это никак не связано с порогом
MBo (2008-02-15 18:11:00) [4]>Убираем из массива все элементы, меньшие чем "порог", т.е. как бы ФНЧ.
ФНЧ - фильтр низких частот, сглаживает, это никак не связано с порогом
Shart (2008-02-15 18:00:00) [5]Так, значит алгоритм такой:
1. Убираем из массива все элементы, меньшие чем "порог", т.е. как бы ФНЧ.
2. Найдём производные. Думаю, что можно просто сделать ещё один массив и туда записывать разницу b[i+1]-b[i] (насколько я помню производная - это (f(x)-f(x0))/(x-x0), x-x0 в моём случае равно 1).
3. Из массива производных находим максимумы, т.е. если производная перешла из положительного числа к отрицательному - то это максимум.
Всё верно?
Сергей М. (2008-02-15 10:55:00) [6]
> в изображении есть маленький шум
На то существует ФНЧ.
Сначала прогони данные через фильтр-функцию, а уж потом ищи в полученных данных производные.
Shart (2008-02-15 10:02:00) [7]Ну я делаю небольшую фильтрацию сначала (b[i]=(b[i-1]+b[i]+b[i+1]) div 3),но это не слишком помогает, т.к. в массиве все равно появляются такое (8 10 11 12 11 10 9) и мой алгоритм считает это максимум. и этих "волн" много, потому появляется много максимумов. а мне надо "более выраженные" точки...
Jeer (2008-02-15 09:57:00) [8]Экстремум == производная равна нулю.
Бегущий человек (2008-02-15 00:26:00) [9]2 Аффтар...
Предлагаю усреднить массив (как это делается, думаю понятно) - шум перестанет сильно мешать, останутся только экстремумы.
Shart (2008-02-15 00:08:00) [10]Я имел в виду не максимальное значение, а максимум (т.е. экстремум).
KilkennyCat (2008-02-14 23:52:00) [11]> который даёт очень много максимумов...
много максимумомумов не бывает.
> Короче, нужен алгоритм нахождения максимума среди числовой
> последовательности.
High