Конференция "Основная" » Максимумы в гистограмме [D7, WinXP]
 
  • Shart (14.02.08 22:52) [0]
    Есть картинка, по ней я строю гистограмму яркости.
    Для простоты предположим, что изображение всё черное, кроме двух белых маленьких кругов. Т.е. в гистограмме визуально видны максимумы. Вот их координаты надо найти. Проблемы тут в том, что кругов может быть до 4. И их надо все разделить по координатам, это надо будет делать вторую гистограмму (но это уже просто).

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

    Короче, нужен алгоритм нахождения максимума среди числовой последовательности. Заранее спасибо!
  • KilkennyCat © (14.02.08 23:52) [1]
    > который даёт очень много максимумов...


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


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

    High
  • Shart (15.02.08 00:08) [2]
    Я имел в виду не максимальное значение, а максимум (т.е. экстремум).
  • Бегущий человек © (15.02.08 00:26) [3]
    2 Аффтар...

    Предлагаю усреднить массив (как это делается, думаю понятно)  - шум перестанет сильно мешать, останутся только экстремумы.
  • Jeer © (15.02.08 09:57) [4]
    Экстремум == производная равна нулю.
  • Shart (15.02.08 10:02) [5]
    Ну я делаю небольшую фильтрацию сначала (b[i]=(b[i-1]+b[i]+b[i+1]) div 3),но это не слишком помогает, т.к. в массиве все равно появляются такое (8 10 11 12 11 10 9) и мой алгоритм считает это максимум. и этих "волн" много, потому появляется много максимумов. а мне надо "более выраженные" точки...
  • Сергей М. © (15.02.08 10:55) [6]

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


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

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

    Всё верно?
  • MBo © (15.02.08 18:11) [8]
    >Убираем из массива все элементы, меньшие чем "порог", т.е. как бы ФНЧ.
    ФНЧ - фильтр низких частот, сглаживает, это никак не связано с порогом
  • MBo © (15.02.08 18:11) [9]
    >Убираем из массива все элементы, меньшие чем "порог", т.е. как бы ФНЧ.
    ФНЧ - фильтр низких частот, сглаживает, это никак не связано с порогом
  • Бегущий человек © (16.02.08 15:24) [10]
    Что фильтр низких частот может сглаживать?
  • MBo © (16.02.08 20:22) [11]
    >Что фильтр низких частот может сглаживать?
    Высокочастотный шум убирать
 
Конференция "Основная" » Максимумы в гистограмме [D7, WinXP]
Есть новые Нет новых   [134482   +38][b:0][p:0]