Перейти к содержимому
Compvision.ru

iskees

Пользователи
  • Количество публикаций

    202
  • Зарегистрирован

  • Посещение

  • Days Won

    19

Все публикации пользователя iskees

  1. Работа с контурами

    Есть контура в них прямоугольники и еще сбоку сверху или еще где-то прилипший другой контур, причем не факт что там вообще есть прямоугольник. Как проверить есть ли там прямоугольник и выделить его? условия на все дело не больше 3-5мс
  2. c# это emgu и opencvsharp, первый лучше развивается а у второго структура больше на C# похоже (emgu очень уж C++ напоминает). Лица и знаки уж больно разные задачи.
  3. большая кнопка не работает, пока только по шагам. http://iskees.wordpress.com/2013/02/13/%D0%BF%D1%80%D0%B8%D0%BC%D0%B5%D1%80-%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F-svm-hog-%D0%B4%D0%BB%D1%8F-%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0-%D0%BA%D1%80%D1%83/ пример, ну и видео там есть. если не разберетесь шлите данные на которых обучаете проверю. а разметка она еще в процессе пару дней и будет готово.
  4. hog и его проверка вшита в opencv svmlight он вроди как и внутри есть но непонятно как он работает так что использую внешний с сайта svmlight. да разметка мне тоже нужна была и он есть на вкладке разметка инфа сохраняется в xml файл который потом можно будет использовать в создании классификатора. по ошибке вчера новую версию не сделал основной перзагрузите еще раз программу
  5. результат распознавания программой,так что могут быть ошибки особенно в регионе так как программа обучалась в основном на трех регионах. и еще момент 500 пикселей width нереальность 200 максимум, а в среднем камеры дают 120-150. Кстати как символы выделяли? http://www.4shared.com/rar/L_utLMo1/test.html
  6. не будем считать если изложите используемые у вас алгоритмы
  7. 1-2 все верно но как это реализовать загадка 3 однозначно существующие OCR не катят только самопал. 4 HAAR как в поиске лиц или SVM-HOG как в пешеходах применить можно даже работать будет но даже не приличном компе с ускорением через GPU меньше 100мс не получается. Возможно со временем оптимизируют но пока для риал тайма не подходит. 5 ни разу тени от козырька не видел больше наоборот пересвист 7 про какой распознаватель речь?
  8. Удаление шумов

    Есть фото с камеры, качество ужасное, нужно хоть как-то удалить шум но при этом не потерять границ. Хотя мне кажется такой шум уже не убрать, но может кто-то знает способ (OpenCV)
  9. HOG

    Кстати эти лекции есть на ютубе очень хорошо изложено все, можно было бы их на главную страницу повесить. http://www.youtube.com/user/aktoshik/videos?view=0
  10. Работа с камерами

    Тоже нужно было вызвать это окно, но в OpenCV такой функции нет, пришлось использовать другую библиотеку (vidgrab - первое что попалось под .net). Кстати еще одна особенность, это окно может появляется с задержкой в несколько секунд.
  11. Выбор камеры

    По поводу Logitech и OpenCV. У меня с510 win7 OpenCV 3.2 и через раз вылетал BSOD именно при получении картинки с нее, с другой камерой все нормально.
  12. MOXA VPort 351 и OpenCv

    Самый просто способ это запустить сам vcl плеер с параметрами командной строки и он будет ретранслировать. А можно использовать библиотеку LibVLC, я пишу на C# и использую врапер но принцип должен быть один. IMediaPlayerFactory factory = new MediaPlayerFactory(); media = factory.CreateMedia<IMedia>(ip, ":sout=#http{mux=avi,dst=:8561/} "); player = factory.CreatePlayer<IVideoPlayer>(); player.Open(media); player.Play(); данный кусочек берет поток по адресу ip и перенаправляет его в новой поток http. Собственно он нужен для перевода потока из rtsp в http.
  13. MOXA VPort 351 и OpenCv

    Можно как костыль использовать vlc. Vlc считывает нужный поток если нужно перекодирует и направляет его в другой поток с которого уже OpenCV и считывает без проблем.
  14. Я для распознавания цифр и букв использую FANN, библиотека предельно простая. На вход подаю бинаризованное изображение 10/15 пикселей и получаю цифру, вероятность для цифр за 99% для букв (которые с латиницей совпадают) 98-99%. Сама библиотека может и обучать нейросеть, работает очень быстро но если не хватит скорости есть версия на OpenCL. Для обучения можно использовать утилиту FannTools. Найти можно по первой ссылке в гугле. Но нейросеть нейросетью, а главное правильно сегментировать и бинаризовать.
  15. Трекинг объектов.

    Подскажите методы сопровождения людей в кадре. В кадре очень много движущихся объектов (не людей) поэтому вычитания фона не подходит. Использую SVM-HOG из примеров им нахожу людей и нужно сопоставить их в разных кадрах. Пробовал SURF вроди как работает но часто сбивается видимо из-за движения людей и изменения фона и вообще картина не очень качественная. также люди часто пресекаются и пропадают из виду. Вопрос быстродействия не критичен можно хоть 0,1сек потратить на это, также есть GPU.
  16. SVMDetector как его сделать

    В OpenCV есть несколько примеров с svm детектором, в частности детектор пешехода, как он работает в принципе понятно. Собственно вопрос в том, как сделать свой детектор имея в наличии базу верных и ошибочных изображений, так чтобы можно было написать using (HOGDescriptor des = new HOGDescriptor()) { des.SetSVMDetector(HOGDescriptor.GetDefaultPeopleDetector()); regions = des.DetectMultiScale(image); } и получить результат.
  17. SVMDetector как его сделать

    В результате экспериментов выяснилось следующее: Hog дескриптор считается методом Compute объекта HOGDescriptor. Для этого создаем этот объект (во врапере OpenCVSharp) OpenCvSharp.CPlusPlus.HOGDescriptor hog = new OpenCvSharp.CPlusPlus.HOGDescriptor(new CvSize(64, 16), new CvSize(16, 16), new CvSize(8, 8), new CvSize(8, 8), 9, 0, -1); float[] f = hog.Compute(new Mat(image)); Первый параметр это размер изображения, чем больше размер, тем длиннее дескриптор. Сам по себе дескриптор оказался очень хорош в отбрасывание ненужных объектов. Например, если ищем таблички, можно посчитать дескриптор этой предполагаемой таблички найденной например по контуру загнать его в нейросеть которая выдаст результат табличка это или что то другое и если не табличка то нее обрабатываем ее экономя время. А для создания собственно SVM детектора нужно 1. Сделать набор изображений положительных и отрицательных одного размера кратного двойке 2. Посчитать их дескрипторы 3. Дескрипторы записать в файл Структура файла такая: 1 1:f[0] 2:f[1] .. i+1:f Первая цифра 1-изображение из положительного набора -1-из отрицательного, потом через пробел пара индекс(считается от 1) двоеточие и значение из дескриптора List<string> b = new List<string>(); foreach (string file in Положительные примеры) { string s = "1 "; IplImage im = new IplImage(file); int j = 1; foreach (float i in hog(im)) { s += j.ToString() + ':' + i.ToString("0.00") + " "; j++; } s = s.TrimEnd(' ').Replace(',', '.'); b.Add(s); } foreach (string file in Отрицательные примеры) { string s = "-1 "; IplImage im = new IplImage(file); int j = 1; foreach (float i in hog(im)) { s += j.ToString() + ':' + i.ToString("0.00") + " "; j++; } s = s.TrimEnd(' ').Replace(',', '.'); b.Add(s); } File.WriteAllLines("SVMHOG.dat", b.ToArray()); ----------------------------------------------------------------------- float[] hog(IplImage im) { IplImage image = new IplImage(new CvSize(64, 16), im.Depth, im.NChannels); Cv.Resize(im, image); OpenCvSharp.CPlusPlus.HOGDescriptor hog = new OpenCvSharp.CPlusPlus.HOGDescriptor(new CvSize(64, 16), new CvSize(16, 16), new CvSize(8, 8), new CvSize(8, 8), 9, 0, -1); Mat m = new Mat(image); float[] f = hog.Compute(m); image.Dispose(); m.Dispose(); return f; } 4. Полученный файл скармливаем svm_learn.exe (http://svmlight.joachims.org/) через командную строку. Первый параметр это файл дескрипторов второй файл, куда будет записан результат. 5. Файл результат SVM-light Version V6.02 0 # kernel type 3 # kernel parameter -d 1 # kernel parameter -g 1 # kernel parameter -s 1 # kernel parameter -r empty# kernel parameter -u 252 # highest feature index 60677 # number of training documents 5160 # number of support vectors plus 1 13.06453 # threshold b, each following line is a SV (starting with alpha*y) И затем набор векторов разделанных # и новой строкой. Берем самый последний первое число отбрасываем а все остальные в таком же формате (индекс:значение) и будут вектором который можно скормить SetSVMDetector. Собственно все бы должно работать, ошибок не вылетает, но ничего не находит. Непонятно где ошибка.
  18. SVMDetector как его сделать

    В статье из поста выше, только теоретическое описание действий без описание подробностей. Получаются нужно делать следующее: 1. Подготовить выборку положительных и отрицательных изображений с размерами толи степенями двойки толи кратные ей 2. Рассчитать HOG дескрипторы изображений, используя HOGDescriptor::compute. 3. Собрать из этих дескрипторов некий файл, верность которого можно проверить функцией библиотеки libsvm/tools/checkdata 4. Обучить SVM детектор при помощи libsvm, проверить на тестовой выборке ложные срабатывание запихать в обучающую выборку и обучить снова и так пока терпения хватит 5. Выковырять из обученного SVM детектора <float> getDefaultPeopleDetector () который и можно будет скормить openCV и добавить в его конец порог который нужно подобрать эмпирически. Будем разбирается дальше
  19. Демпингуете. А можно посмотреть как оно работает на какой нибудь пробной версии(видео с камер аналоговых и IP)?
  20. Существующие системы дико дорогие, цена за один канал от 50т.р. и все они заточены под массовое применение например гаишниками. А если вы хотите например у себя дома над гаражом повешать камеру которая бы увидев вашу машину сама открывала ворота, или у вас маленький магазинчик у дороги и т.п. то вы не будите платить эти 50 т.р. Ну и вообще интересно же.
  21. 95% это реально причем это среднее значение за сутки днем может быть 97, а ночью под 80. какой смысл от распознание номера в вероятностью 70%. 99% процентов вероятность успешного распознания сегментированного символа, а не всего номера. при ошибке больше 1%, а в номере символов 8-9 уже не укладываемся в 95%.
  22. Ну это вообще не серьезно, мало того что номер без фона без искажений и вообще в тепличных условиях, так еще и 200мс на кадр когда максимум это 30мс.
  23. tesseract не распознает номер(кто не верит может взять базу номеров и прогнать) целиком даже если его вырезать прямо по рамке, вернее распознает что-то но не с точностью хотя бы 95%. номера у нас такие, флаги полоски символы рядом, а если еще учесть качество картинки с камер... Под распознаванием имелось ввиду распознание уже сегментирование бинаризованных символов, тут нейрости самое то дадут вероятность за 99% на символ, и по производительности хороши. Если знаете другие способы выделения границ и вообще номера пишите обсудим.
  24. Проектов таких много уже неизбалованных но увы все с закрытым кодом. Насчет того кода что выше и вообще подхода с бинаризацией, хорошего результата от него не получить(фон может быть идентичен номеру этим грешат тазы, различная освещенность и часто сливаются номера сливаются с окантовкой номера или окантовка с машиной и прямоугольника по пропорциям нужным уже нет).Но если кому то все таки хочется бинаризацию то советую смотреть в стороны метода Кристиан, он чуть медленнее Отсу и его нет в OpenCV но для номеров он намного лучше. Еще что то было написано про сравнение гистограмм на кусках изображение. Тоже метод мало полезный, даже если номер и найдется что маловероятно из за радиаторных решеток(мерседесы например) и бамперов(с хромом), то все равно локализация номера будет плохая и уже распознать символы будет сложно. Но большинство систем что сейчас на дорогах стоят ищут именно про перепадам яркости. Целесообразно пилить метод который бы искал номер по каким то мелким но четки признакам(найти не разорванный прямоугольник маловероятно под мало имеется ввиду 70-80%), например искать углы. Или второе направление это изобрести метод который бы в контурах полученных от FindContour искал прямоугольник но не по периметру а обходом точек. Пример такого контура в прикрепленном. Да и распознание это безусловно нейросети само распознание задача плевая большая проблема это сегментация символов особенно наших знаков( разная высота разные положения флаг еще этот). tesseract-ocr как распознаватель не катит проверено не однократно. Если кому нужно оттестировать свой метод пишите, есть тысячи номеров реальных машин с нашими номерами и уже распознанными номерами сами фото разумеется не дам все таки фотографии реальные с реальными машинными и у их владельцев разрешение на распространение не спрашивали.
×