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

2expres

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

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

  • Посещение

  • Days Won

    3

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

  1. Думаю, в вашем случае, только платный продукт. Вот, например, http://www.mallenom.ru/demo/avtomarshal/
  2. Занимаюсь сравнением объектов методом контурного анализа. Получил 2 периодических последовательности данных, искомый объект и эталон (128 значений последовательности). Последовательность не зависит от местоположения, угла поворота и масштаба. Они отличаются только выбором начальной точки. Если делать сравнение методом перебора, нужно сравнить 128х128 значений. У меня ~3000 контуров в изображении и 200 эталонов. Может кто то знает более быстрый способ совмещения начальных точек или сравнения. График последовательностей на 36 точек представлен ниже, точки периодически повторяются:
  3. Дескрипторы можно сравнивать 2 способами: 1) находим погрешность каждого из дескрипторов, погрешности складываем и сравниваем с порогом. Возможно погрешности возводим в квадрат и суммируем. 2) сравниваем с порогом каждую погрешность и если один из дескрипторов превышает порог, то сравнения нет. Какой из двух способов верный?
  4. Спасибо, за ответ. Ссылку я уже видел ранее. Именно она вдохновила меня на распознавание шрифтов, но другим способом. В данной ссылке автор Pavel Torgashov применяет 30 элементарных векторов. Я считаю, что даже для шрифта это недостаточно и применяю 128. У меня всегда любой контур описывается 128 элементарными векторами (ЭВ). Соответственно эталоны так же описаны, как 128 ЭВ. В данном случае максимальное число дескрипторов Фурье может быть 128. Я хочу выбрать 8. Это 6,25%, достаточно ли это распознавания шрифта? Так же не понятно, как сравнивать дескрипторы, какую брать погрешность?
  5. Мне предложили делать сравнение сигналов с эталонами не методом перебора, а с помощью дескрипторов Фурье. Дескрипторы сигналов я вычисляю быстро применяя табличные коэффициенты. Дескрипторы эталонов вычисляю заранее. Сколько необходимо дескрипторов и как их сравнивать на подобие?
  6. Много есть способов можно Канни, порог, метод Оцу, сегментация, нейронные сети. Приведенное изображение лучше поможет понять о чем идет речь.
  7. Привет! Я правильно понимаю, что это студенческая задача? Решается она через "порог". Задав значение 67 ты получишь результат, но будет полно мелких сегментов. Тебе нужно или удалить или не считать сегменты размер, которых меньше 400 пикселей. Моя программа удаляет сегменты, результат ниже. P.S. Число сегментов около 320 шт. P.P.S. Можешь попробовать порог Оцца и последующую сегментацию.
  8. Contours detection

    Я преобразую растр в вектор без применения стандартных библиотек: делаю сегментацию, векторизацию методом "жука", аппроксимацию ломанной полученного полигона, получение векторного файла *.svg. Меня интересует вопрос, что Вы будете делать с векторным файлом дальше? Есть ли стандартные методы распознавания векторного полигона? Я нахожусь на стадии распознавания силуэта(полигона).
  9. Привет! Хочу поделится с Вами результатами своей работы по сегментации изображений. Исходные фотографии взяты из статей, стереоизображения произвольные из интернета. За 9 месяцев в графическом редакторе Лубок проведены следующие изменения: 1) Преобразование к палитре цветов. Количество цветов от 2 до 32. Преобразования веду методом медианного среза, преобразую изображение к 256 цветам, затем методом кластеризации 256 цветов привожу к заданному количеству цветов. Подобные преобразования есть в графическом редакторе GIMP и Color quantizer . Gimp выполняет преобразование изображения 24 МП в среднем более 1 минуты, но качество преобразования мне не нравится. Изображение приводится к серым цветам. Более качественное преобразование за счет большого количества ручных настроек выполняет Color quantizer , но время выполнения превышает 15 минут. Наше преобразование по качеству находится между GIMP и Color quantizer и выполняется 0,4 секунды. 2) На основе палитры цветов выполнена сегментация, которую я назвал сегментация медианного среза вначале выполняется преобразование к палитре цветов, а затем сегментация изображения. 3) После сегментации изображения получаю очень большое количество мелких сегментов (на 24 МП фотографии до 2 миллионов сегментов). В Каждом мелком сегменте находятся ближайшие соседи и работает алгоритм присоединения мелких сегментов к более крупным. В программе задается минимальная площадь сегмента от 1 до 500 пикселей. Это позволяет резко сократить количество сегментов. Время сегментации и сокращения количества сегментов для 24 МП фотографии всего менее 3 сек!!! 4) Доработана программа векторизации растровых изображений. В начале мы получаем векторный файл методом "хромого" жука (более подробно об этом методе я напишу статью на хабре), в котором углы между векторами кратны 90 градусов. Описание такого файла получается большим. Для сокращения векторного описания необходимо применять аппроксимацию полученного контура. Аппроксимацию я выполняю ломанной линией. Для дизайнерских работ аппроксимацию необходимо выполнять кривыми Безье, тогда векторное изображение выглядит более эстетично. Но для компьютерного зрения ломанная линия более предпочтительна, потому что проще производить распознавание объектов. После аппроксимации я формирую файл *.svg, который можно просмотреть любым браузером или векторным редактором. 5) Если производить аппроксимацию в чистом виде, каждого сегмента, то между границами сегментов появляются разрывы, особенно при грубой сегментации. Т.к. сегменты аппроксимируются по разному в зависимости от начала сегмента. В моей программе выполняется стыковка границ сегментов, если этот сегмент уже аппроксимирован, то следующий сегмент берет в качестве описания границу ранее описанного сегмента. Этот метод работает, только для 4-х связной сегментации медианного среза. 6) Обработка больших файлов до 8000 х 8000 пикселей. Для обработки больших файлов очень хорошее предложение дал smorodov, делать обработку не каждого пикселя, а через пиксель и строку. В этом случае время выполнения можно сократить в 4 раза. Но мы этого пока не сделали. Пример 1: Результат в векторе: 8.svg Сегментация ректифицированных стереоизображений: исходное изображение сегментация 2 цвета. Минимальный размер сегмента 50 сегментация 4 цвета. Минимальный размер сегмента 50 сегментация 8 цветов. Минимальный размер сегмента 50 сегментация 32 цвета. Минимальный размер сегмента 50 Полученные результаты позволяют получать привязки к сегментам, узнать расстояние до объектов. Время обработки до 65 мс (это одним ядром)- это позволяет производить обработку в реальном масштабе времени 30 кадров в секунду. Пример, из статьи https://habrahabr.ru/company/intel/blog/266347/ : исходное изображение Изображение после сегментации алгоритмом WaterShed полученное в статье результат полученный в графическом редакторе Лубок. 4-х связная сегментация (6 цветов, мин размер сегмента 500) В полученном мной результате монеты отделены от фона, многие монеты разделены друг от друга.
  10. Детектор кругов

    Результат получили выполнив 2 сегментации: вначале легкую 8-ми связную сегментацию для выравнивания освещенности, затем глубокую сегментацию медианного среза используя разделение по 2 цветам. Программы и алгоритмы полностью наши. Можете сами поиграться с нашей сегментацией http://esm.ho.ua/Automat.html внизу графический редактор Лубок и как им пользоваться для сегментации изображений.
  11. Детектор кругов

    Немного занимался похожей тематикой: визуальный контроль при производстве печатных плат, если интересно http://esm.ho.ua/Visual.html Я пришел к выводу, что для получения качественных результатов необходимо: качественная съемка с высоким разрешением и уделить особое внимание освещению печатной платы. Оно должно быть равномерным, без бликов и затемнений. Как вариант использование бестеневых ламп. В исходной фотографии, что по ссылке нет хорошего освещения, но за счет высокого разрешения и четкости все дорожки печатных плат сегментируются. Что Вы можете видеть по результатам сегментации.
  12. Прошу помощи не получается запустить исходники http://cs.brown.edu/~pff/segment/ Знаю, много их использовали, но в линуксе не сильно силен. Копирую в папку, после этого выполняю команду <make>. Появляется файл *segment. Запускаю его командой: ./segment 0,5 20 20 /1/segment/test.png /1/segment/test1.png или ./segment 0,5 20 20 test.png test1.png Получаю ошибку: loading input image. terminate called after throwing an instance of 'pnm_error' Aborted Пробовал на 2 системниках CentOS и Debian результат тот же.
  13. Можно пример видео? Чтобы понять о чем идет речь.
  14. Наткнулся на сегментацию нейросетью. Результат очень впечатлил. Но возник вопрос с быстродействием. Это обработка в реальном масштабе времени? И каким компьютером?
  15. Я с Вами полностью согласен, поэтому хочу понять какие классы задач можно решать GPU. Если можно решить выше приведенный примитивный пример, то стоит GPU осваивать. На GPU хорошо решаются задачи выделения границ, получил частичку изображения и записал туда же откуда и взял. Это будет на порядки быстрее чем на CPU. Компрессию и так уже сделали уменьшив разрядность с 24 до 18. Дальнейшие уменьшение разрядности приведет к заметным искажениям. А размер таблицы гистограммы не зависит от размера изображения. Хорошо получаем множества таблицу другого вида, состоящую не из одного значения(количество пикселей данного цвета ), а из двух(номер цвета и количество пикселей). А вот задача получить конечную таблицу будет получить сложнее, чем просто посчитать цвета в изображении. На мой взгляд CPU данную задачу решит быстрее.
  16. Пример приведен для всего изображения. Да изображение я могу разбить на части и обрабатывать разными процессорами. Но создаваемая таблица размером 1 Мб должна быть доступна для всех процессоров и каждый процессор должен записывать результат непредсказуемо или в начало или в конец или середину этой таблицы. И основное время будет уходить не на вычислительные процессы, а на обращение к памяти. Как можно реализовать по другому? На CPU я могу прогрузить таблицу в кеш 2 или 3 уровня увеличив быстродействие. Как это реализовать на GPU быстрее, чем на CPU?
  17. Спасибо за ответ. Разбирал структуру CUDA. У меня почему то все задачи по компьютерному зрению сводятся к последовательному прохождению каким-либо окном по изображению и составлению таблиц. Последовательное прохождение по изображению хорошо работает с памятью, т.к. непосредственно работаю с кешем. А вот создание таблиц - это кошмар для кеша, если таблица занимает несколько мегабайт памяти. Так как неизвестно в какую область таблицы я перейду на следующем шаге. Структура CUDA (может я ее не правильно понял) будет отлично работать только для последовательной обработки изображений. Пример, изменение яркости изображения, когда идет последовательная подкачка памяти. А как работать с таблицами в несколько мегабайт? Простейший пример, на мой взгляд неэффективности CUDA: сделать цветную гистограмму изображения(т.е. посчитать количество пикселей каждого цвета). Даже если ограничимся 6 разрядами каждого цвета RGB, итого 18 разрядов. Размер таблицы 1 МегаБайт.
  18. Какой критерий выбора суперпикселей? В данном случае я вижу приблизительно 300 пикселей в 1 суперпикселе, на всем изображении ~1800 суперпикселей. Это будет сильно сокращать вычисления. И еще мне интересно время разбивки данного изображения на суперпиксели?
  19. Я провел сегментацию своей программой. Время сегментации одного кадра 30 мс. Поможет ли это вам для разделения объектов?
  20. Можете выслать несколько кадров из видео для того чтобы я мог посмотреть, как они будут сегментироваться моей программой. Результатами, если интересно могу поделиться.
  21. И все-таки я хотел бы получить более конкретный ответ по поводу быстродействия нейросети в данном случае. Как я понимаю, что это задача для одного компьютера, отрабатывать будет одна и та же видеокарта, поэтому предложенный мной подход должен работать. У вас хорошее предложение по поводу распараллеливания задачи. Здесь действительно хорошо можно разбить на потоки. Только я бы для упрощения на потоки посылал разные кадры, т.е. каждое ядро обрабатывает свой кадр.
  22. Интересно, сколько времени будет отрабатывать нейросеть сравнивая 300 возможных объектов?
  23. Если объекты абсолютно совпадают по цвету, то можно выполнить предварительную свертку базы объектов и делать такую же свертку объектов на картинке. Далее производишь сравнение сверток. Это значительно ускорит программу. Я думаю здесь подойдет 16 разрядная свертка типа CRC 16, но лучше использовать 32 разряда(CRC 32). Т.е. каждый объект будет представлять собой 4 байта. Тогда можно обрабатывать хоть все 60 кадров в секунду.
×