Распознавание предметов на изображении - что почитать и поизучать.

Тема в разделе "WASM.HEAP", создана пользователем _Juicy, 1 ноя 2008.

  1. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    Нужен мне софт, который будет находить на обычной фотографии заданные предметы. Например, синий кубик или там жестяную банку из-под Пепси.
    Ну, не готовый софт, а изучить принципы этого дела, чтобы иметь возможность написать такой софт самостоятельно.
    Не подскажете ли, в какую сторону копать, а то я даже ни одного спецтермина на эту тему не знаю.
     
  2. wsd

    wsd New Member

    Публикаций:
    0
    Регистрация:
    8 авг 2007
    Сообщения:
    2.824
    Squash
    что-то более-менее вменяемое стоит большие бабки
     
  3. CrystalIC

    CrystalIC New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2008
    Сообщения:
    500
    Slicing.
     
  4. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    http://ru.wikipedia.org/wiki/Компьютерное_зрение
     
  5. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    W4FhLF
    Надо так.
    http://en.wikipedia.org/wiki/Category:Computer_vision
    На английском гораздо больше. Существует открытая библиотека OpenCV - по слухам наши ребята из intel делают.

    Squash
    Первое получаем изоброжение. Пред обработка. Далее обробатываем его выделяем призныки, особенности. Дальше имея эти признаки проводим классификацию. Так вот, прежде чем произвести классификацию, нужно сделать обучение машины.
    Под обучением понимается предварительная кластеризация имеющихся объектов, их призноков.

    Теперь самое интерестное существует множество методов: как для выделения признаков, так классификации и кластеризации.

    Тут на русском можно почитать. http://courses.graphicon.ru/
     
  6. _Juicy

    _Juicy Active Member

    Публикаций:
    0
    Регистрация:
    12 авг 2003
    Сообщения:
    1.159
    Адрес:
    SPb
    wsd потому и интересуюсь :)

    W4FhLF, Pavia, огромное спасибо, благодаря вам нарыто много стартовой информации.
     
  7. driver

    driver New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    302
    опенсурсная есть библиотека - так накодили уже 50 метров, а не работает ни фига... и - попробуй ка разобраться в этой куче г. Надо писать на масме с нуля - и публиковать ..здесь например, может кто-то подключится, исправит, дополнит...
     
  8. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    driver
    Если писать, то на fasm с использованием макросов. Лично я свою на дельфи пишу по тихоньку.
     
  9. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    driver
    Писать на ассемблере такую вещь верх идиотизма. Там много сложных алгоритмов, причем не кричитных по вычислениям, но критичных по сложности. ДА и вообщк не люблю людей которые чтото называют куче г, если это опен сорц, да еще в такой специфичной области молиться на эту библиотеку нужно.
     
  10. driver

    driver New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    302
    фасм - мизерная экономия чего-то, непонятно чего, код - нечитабельный и неудобоваримый
     
  11. EvilsInterrupt

    EvilsInterrupt Постигающий азы дзена

    Публикаций:
    0
    Регистрация:
    28 окт 2003
    Сообщения:
    2.428
    Адрес:
    Russia
    Надо писать не код, надо писать Понятные статьи по этому делу и в большом кол-ве! Чтобы программер мог разобраться и не утонуть в деталях
     
  12. Pavia

    Pavia Well-Known Member

    Публикаций:
    0
    Регистрация:
    17 июн 2003
    Сообщения:
    2.409
    Адрес:
    Fryazino
    SPA
    Как раз таки критичных по времени, если говорить о распознавании в реальном времени. Сложность - вещь относительная.

    driver
    А на Си что читаемый? Ты хотя бы видел исподники быстрого алгоритма выделения углов? Вернее на Си он был сгенерирован. А писался на каком-то другом языке. Причем я уверен что это не лучший вариант так как еще не ясно насколько хорошо его проглотит компилятор Си. Могу сказать только одно фасам с его макросами в этой области должен быть лучшим выбором.

    EvilsInterrupt
    Да это то что нужно. Но область эта динамически развивается. И угнаться будет трудно.
     
  13. perez

    perez Member

    Публикаций:
    0
    Регистрация:
    25 апр 2005
    Сообщения:
    502
    Адрес:
    Moscow city
    С нейросетями поиграйся.
    Для студентов распознаватель символов написал за 1 вечер на базе FANN (hxxp://leenissen.dk/fann/).
    На codeproject или sourceforge видел более сложные примеры - например, выдедение лица в видеопотоке и распознавание.
     
  14. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    Зачем сразу бросаться что-то писать, тем более на ассемблере? Это бред.

    Необходимо разобраться с теорией, создать свою математическую модель алгоритма, который призван решать задачу. Создавать эту модель лучше в специализированных пакетах типа MathCAD или Matlab, чтобы не тратить время на технические детали и отладку, а сосредоточиться на задаче. Когда модель удовлетворяет требованиям, можно задуматься о создании архитектуры(зарисовать её диаграммами например). И только после уже решайте, что использовать в качестве инструментария. Хотите параллельные вычисления на CPU? Я бы выбрал С/С++, ибо в современных компиляторах есть поддержка OpenMP. Хотите вычисления на GPU для ускорения? Опять же СИ. Современные С/С++ компиляторы и оптимизацию делают лучше человека на объёмах кода начиная с нескольких тысяч строк, причём им для этого нужно несколько секунд, а не недель.
    А можно всю математику реализовать на С, собрать потом в библиотеку и прикрутить к высокоуровневому модулю на питончике. Получится удобно и гибко.

    Вроде программисты собрались, а подход к проблеме как у третьеклассников.

    Я знаю, сам её активно использую. Хорошая библиотека с удобным API и оптимизирована прилично.
     
  15. Barbos

    Barbos Slavon

    Публикаций:
    0
    Регистрация:
    13 ноя 2007
    Сообщения:
    280
    Адрес:
    Kharkov
    нарыл у себя в библиотеке скан некоего древнего писания второй половины прошлого столетия с названием "Введение в статистическую теорию распознавания образов" Фукунага К.
     
  16. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    Да основы тех же нейросетей были заложены ещё в 50х, а в 70х уже сущестсовал мощный мат. аппарат, который с тех пор никаких революционных изменений не претерпел.

    Например у меня есть такая книга 1973г:

    [​IMG]

    Там, в прицнипе, вся современная математика описана. Раньше, кстати, было принято публиковать ссылки на литературу, где проблема освещалась ранее или хорошо описана, при изучении какой-то области это очень помогает. И ещё раньше фраза "нейронная сеть" не была так популяризирована.

    Вообще, система над которой работаю я написана по книгам 70-80х годов и ничего, про какие-то более совершенные аналоги не слышал. :)
     
  17. Barbos

    Barbos Slavon

    Публикаций:
    0
    Регистрация:
    13 ноя 2007
    Сообщения:
    280
    Адрес:
    Kharkov
    Когда я просматриваю подобные книги, я понимаю, насколько сильно выветрилась из головы высшая математика :dntknw:
     
  18. driver

    driver New Member

    Публикаций:
    0
    Регистрация:
    18 июн 2008
    Сообщения:
    302
    нейронные сети хорошо бы делать на аппаратном уровне - чип, несколько тысяч ( миллионов в перспективе) независимых микроядер, с собственной памятью и микрокодом, который реализует эмуляцию нейрона ... обычное програмирование нейросетей - линейное... не катит...
     
  19. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    В Matlab используются библиотеки OpenCV для обработки изображений в основном видео.