Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.08.2019, 11:06   #11
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Не читал всю тему. Предложил бы такой вариант. Искомое значение это такое, которое сильнее всего отличается от среднего арифметического всех элементов, быть может, за исключением текущего значения.

То есть, для i = 1..n сравнить i-й элемент со средним арифметическим всех элементов, за исключением i-го. Элемент с максимальным отличием и будет искомым.
Вадим Мошев вне форума Ответить с цитированием
Старый 09.08.2019, 13:27   #12
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Эх ... с чего бы начать чтобы лишнего не болтнуть ))).
В общем это визуальное распознавание образов.
Объекты достаточно однородного цвета с частичными рисунками и надписями.
Объектов в поле может быть один или несколько.
Объекты в поле могут перемещаться с достаточно быстрой скоростью. И вот на большой скорости проявляется смазывание. При этом цвет объекта плывет.
Использую метрику сравнения гистограмм

храню предыдущий фрагмент объекта. На каждой итерации получаю список возможных объектов и сравниваю гистограмму с предыдущим. На основании самого наименьшего делаю вывод что объект предыдущий похож на текущий и дальше метка переходит на новый кадр. и так далее.


Цитата:
Сообщение от ViktorR Посмотреть сообщение
Но это общие фразы ...
Ну а как .. как человек я понимаю что в данном случае минимальный объект это похожий объект. Но когда объект новый и в базе его нету то минимальный объект не будет правильным потому что он не достаточно минимальный.
Но хочется какой то оценки не пороговой а адаптивной чтоли.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 09.08.2019, 18:23   #13
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Я бы сделал так. Рассчитал среднюю яркость кадра вычел бы её. Затем рассчитал бы локальную ярость по квадрату 100х100 и вычел бы её. Затем по базе подобрал бы максимальное совпадение с задним изображением по квадрату 14х14 затем вычитаем задний фон. После размываем картинку 3-5 раз. Затем ищем локальный максимум. Далее сортируете их по уровню и оставляете не более 100-500 таких максимов.
Потом используешь следующую метрику это произведение СКО(уровень)*СКО(дистанция) по этой метрике находишь геометрическую кляксу которую оставил объект (одна из модификаций алгоритма фагоцита).
Затем фильтруешь свои объекты по площади.

Но вообще обычно используют НС. Она распознаёт объект и даёт оценку. Делается это скользящим окном и потом для пикселей подсчитывается сколько окон дало положительное совпадение (IoU). И по порогу отсекаются лишние. Этот порог тренируешь на датасете.

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Ну а как .. как человек я понимаю что в данном случае минимальный объект это похожий объект. Но когда объект новый и в базе его нету то минимальный объект не будет правильным потому что он не достаточно минимальный.
Строят прямоугольник предсказания. И если в приделах 100 следующих кадров объект был распознан, то в базу заносится вся его траектория. Для этого у точек локального максимума которые мы нашли записывается их координата и время появления в кадре.

Примерно вот так это должно работать.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Старый 13.08.2019, 20:12   #14
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от Pavia Посмотреть сообщение
Я бы сделал так. Рассчитал среднюю яркость кадра вычел бы её. Затем рассчитал бы локальную ярость по квадрату 100х100 и вычел бы её. Затем по базе подобрал бы максимальное совпадение с задним изображением по квадрату 14х14 затем вычитаем задний фон. После размываем картинку 3-5 раз. Затем ищем локальный максимум. Далее сортируете их по уровню и оставляете не более 100-500 таких максимов.
Потом используешь следующую метрику это произведение СКО(уровень)*СКО(дистанция) по этой метрике находишь геометрическую кляксу которую оставил объект (одна из модификаций алгоритма фагоцита).
Затем фильтруешь свои объекты по площади.
Строят прямоугольник предсказания. И если в приделах 100 следующих кадров объект был распознан, то в базу заносится вся его траектория. Для этого у точек локального максимума которые мы нашли записывается их координата и время появления в кадре.
При всем уважении, но мне кажется вы прям черезчур усложняете ... НС я мягко говоря разочарован. Да и все это должно работать в реалтайме ... И с тренировкой не особо понятно. Объекты то в целом однотонные а при движении там смазывание такое что практически контуры отсутствуют всякие.

В общем сделал вот так:

По всем объектам формирую расчетную выборку с результатами сравнений гистограмм:
Код:
double base_KLDiv = Cv2.CompareHist(hist_base, hist_test1, HistCompMethods.KLDiv);
CheckResult.Add(new KeyValuePair<double, Fragment>(base_KLDiv, bl));
Код:
double xa = CheckResult.Average(p => p.Key); // вычисляем среднее по характеристике

// и для каждого элемента считаем квадрат отклонения
// добавил дополнительно фильтр по значениям меньшим чем среднее
// равно нужно для случаев когда в наборе оказывается всего один элемент
var info = CheckResult.Where(d => d.Key <= xa).Select(p => new { Spr = Math.Pow(p.Key - xa, 2) / xa, Item = p }).ToList();

xa = info.Average(p => p.Spr); // повторно считаем среднее квадратов
// равно нужно для случаев когда в наборе оказывается всего один элемент
var filterfrags= info.Where(p => p.Spr >= xa).ToList(); // и считаю его базовым порогом для кандидатов
filterfrags.Sort((a, b) => b.Spr.CompareTo(a.Spr));
var maxfrag = filterfrags.FirstOrDefault(); // дальше достаю максимальный элемент
if (maxfrag!= null)
{
	max = maxfrag.Item.Value;
	Cv2.ImShow("finded", max.sample);
	Cv2.WaitKey(2);
}
Боюсь сглазить но вроде на сложном видео с большими скоростями ни одного сбоя это не дало. Будем надеятся что в реальном времени все также стабильно будет.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.

Последний раз редактировалось WorldMaster; 13.08.2019 в 20:29.
WorldMaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Найти значение на другом листе и подставить значение следующей ячейки ElenaNTro Microsoft Office Excel 12 11.02.2019 12:44
Найти значение выражения Lolopop12 Общие вопросы C/C++ 3 08.02.2016 19:58
Найти наименьшее значение Dima-War Общие вопросы C/C++ 3 24.03.2012 10:26
найти наибольшее значение laychan Помощь студентам 1 23.03.2012 12:48
Найти значение функции Y ahtung Microsoft Office Excel 6 24.12.2008 15:59