Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.12.07;
Скачать: CL | DM;

Вниз

Максимумы в гистограмме   Найти похожие ветки 

 
Shart   (2008-02-14 22:52) [0]

Есть картинка, по ней я строю гистограмму яркости.
Для простоты предположим, что изображение всё черное, кроме двух белых маленьких кругов. Т.е. в гистограмме визуально видны максимумы. Вот их координаты надо найти. Проблемы тут в том, что кругов может быть до 4. И их надо все разделить по координатам, это надо будет делать вторую гистограмму (но это уже просто).

Что у меня есть сейчас:
Прохожу по массиву (он, кстати одномерный типа byte), для каждого элемента нахожу, больше ли он тех элементов, которые в окрестности. Если всё ок - то это максимум...
Но это очень плохо работает, т.к. в изображении есть маленький шум, который даёт очень много максимумов...

Короче, нужен алгоритм нахождения максимума среди числовой последовательности. Заранее спасибо!


 
KilkennyCat ©   (2008-02-14 23:52) [1]

> который даёт очень много максимумов...


много максимумомумов не бывает.


> Короче, нужен алгоритм нахождения максимума среди числовой
> последовательности.

High


 
Shart   (2008-02-15 00:08) [2]

Я имел в виду не максимальное значение, а максимум (т.е. экстремум).


 
Бегущий человек ©   (2008-02-15 00:26) [3]

2 Аффтар...

Предлагаю усреднить массив (как это делается, думаю понятно)  - шум перестанет сильно мешать, останутся только экстремумы.


 
Jeer ©   (2008-02-15 09:57) [4]

Экстремум == производная равна нулю.


 
Shart   (2008-02-15 10:02) [5]

Ну я делаю небольшую фильтрацию сначала (b[i]=(b[i-1]+b[i]+b[i+1]) div 3),но это не слишком помогает, т.к. в массиве все равно появляются такое (8 10 11 12 11 10 9) и мой алгоритм считает это максимум. и этих "волн" много, потому появляется много максимумов. а мне надо "более выраженные" точки...


 
Сергей М. ©   (2008-02-15 10:55) [6]


> в изображении есть маленький шум


На то существует ФНЧ.

Сначала прогони данные через фильтр-функцию, а уж потом ищи в полученных данных производные.


 
Shart   (2008-02-15 18:00) [7]

Так, значит алгоритм такой:
1. Убираем из массива все элементы, меньшие чем "порог", т.е. как бы ФНЧ.
2. Найдём производные. Думаю, что можно просто сделать ещё один массив и туда записывать разницу b[i+1]-b[i] (насколько я помню производная - это (f(x)-f(x0))/(x-x0), x-x0 в моём случае равно 1).
3. Из массива производных находим максимумы, т.е. если производная перешла из положительного числа к отрицательному - то это максимум.

Всё верно?


 
MBo ©   (2008-02-15 18:11) [8]

>Убираем из массива все элементы, меньшие чем "порог", т.е. как бы ФНЧ.
ФНЧ - фильтр низких частот, сглаживает, это никак не связано с порогом


 
MBo ©   (2008-02-15 18:11) [9]

>Убираем из массива все элементы, меньшие чем "порог", т.е. как бы ФНЧ.
ФНЧ - фильтр низких частот, сглаживает, это никак не связано с порогом


 
Бегущий человек ©   (2008-02-16 15:24) [10]

Что фильтр низких частот может сглаживать?


 
MBo ©   (2008-02-16 20:22) [11]

>Что фильтр низких частот может сглаживать?
Высокочастотный шум убирать



Страницы: 1 вся ветка

Текущий архив: 2008.12.07;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.013 c
15-1222839778
ВадимЛ
2008-10-01 09:42
2008.12.07
Починить Делфи Д5 (пути ?)


2-1225283336
Кирей
2008-10-29 15:28
2008.12.07
консольные команды Windows


15-1223223967
Anton
2008-10-05 20:26
2008.12.07
Вопрос по структуре будущего проекта


2-1225277295
garik_
2008-10-29 13:48
2008.12.07
Наследование


2-1225174004
worldmen
2008-10-28 09:06
2008.12.07
Программно нажать комбинацию клавиш