Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2008.12.07;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.005 c
3-1210917985
Dizzzel
2008-05-16 10:06
2008.12.07
Динамическое создание полей в хранимой процедуре


2-1225142982
MsGuns
2008-10-28 00:29
2008.12.07
"Цветные" проблемы


1-1202831739
somebody_
2008-02-12 18:55
2008.12.07
Статическая компоновка кода Делфи и С++


15-1223305707
Slider007
2008-10-06 19:08
2008.12.07
С днем рождения ! 5 октября 2008 воскресенье


15-1222800406
axis_of_evil
2008-09-30 22:46
2008.12.07
как получить список процессов ..





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский