Обновить
87.64

Обработка изображений *

Работаем с фото и видео

Сначала показывать
Порог рейтинга
Уровень сложности

Собственный алгоритм 2. Поиск похожих изображений

Время на прочтение2 мин
Охват и читатели7K
В своей первой статье на Хабре, я рассказал о своем алгоритме для поиска похожих изображений. Сегодня я хочу рассказать о второй (улучшенной) версии своего алгоритма.

Статья будет несколько короче предыдущей т.к. расскажу только об отличиях двух алгоритмов. Поэтому желательно прочесть предыдущею статью, что бы «быть в теме».
Читать дальше →

Создание анаморфных искажений в Unity

Время на прочтение3 мин
Охват и читатели12K
Всем привет! Сейчас я работаю в VRTech, и в рамках работы я натолкнулся на интересную задачу о которой хочется рассказать. Задача заключалась в том, чтобы получить анаморфное отображение картинки. Я попытаюсь рассказать, что такое анаморфные искажения, как рассчитать простейший случай линейного отображения такого искажения на плоскость, а так же предложу своё решение реализованное с помощью Unity.

image

Материалы журналов Университета ИТМО: исследования в сфере обработки изображений и компьютерного моделирования

Время на прочтение6 мин
Охват и читатели5.2K
В этом дайджесте мы собрали интересные статьи, вышедшие за последние 2 года в журналах Университета ИТМО. Все материалы находятся в открытом доступе и охватывают темы, связанные с обработкой изображений (от расчетов объективов до автоматической корректировки изображения) и компьютерным моделированием различных процессов: начиная от работы светодиодного светильника и заканчивая моделированием поведения датчика индукционного лага на глубоководном судне.

Читать дальше →

Собственный алгоритм поиска похожих изображений. Теория

Время на прочтение6 мин
Охват и читатели27K
Недавно, в связи с разработкой новой линейки продукции, в нашей компании встала задача поиска идентичных изображений в базе.

Отдавать реализацию на аутсорс слишком дорого и не гарантирует наилучшего решения. Отдать на откуп фрилансеру — дешевле, но и решение скорее всего будет таким же дешевым и основанным на существующих библиотеках, типа OpenCV. Но если бы задача решалась так просто, то конкуренты уже давно бы этим воспользовались и сделали достойный продукт, но его на рынке нет. В общем, присущие нам перфекционизм, амбициозность и желание быть лучшими, не позволяют нам выводить на рынок продукт «как у всех», нам нужно лучше, быстрее, сильнее. Приняли решение самостоятельно разобраться в вопросе, выработать решение, написать подробное техническое задание и уже отдать на реализацию фрилансеру. Была надежда, что существуют готовые решения, которых просто не заметили конкуренты. Но изучив вопрос (а вместе с ним и алгоритмы ORB, BRIEF, FAST, SIFT, SURF, BRISK, A-KAZE, Viola-Jones и еще несколько) стало понятно, что у всех этих алгоритмов есть свои недостатки. Хотя для решения нашей задачи некоторые из вышеперечисленных алгоритмов и подходили, но как то неожиданно захотелось уникальности и простоты решения. И вот выношу на суд сообщества, алгоритм собственного сочинения.

Любителей покритиковать (конструктивно) прошу под кат.
Читать дальше →

"… и в каждой шутке есть доля шутки"

Время на прочтение1 мин
Охват и читатели25K
image

Не так давно я опубликовал маленькую заметку о небольшой программе, которую я разработал для приятеля. К моему удивлению, она получила неплохие отзывы и «пришлась ко двору» некоторым «хабровчанам».

Я подумал и решил поделиться ссылками на другие свои «крохотульки», маленькие разработки, опубликованные open source. Number #2 будет небольшая программа-шутка, превращающая картинку в формате jpeg в Excel spreadsheet ;)
Читать дальше →

Установка OpenCV в Windows для чайников и подключение библиотеки в Code Blocks

Время на прочтение17 мин
Охват и читатели116K
image

Данная статья будет полезна чайникам новичкам в программировании, которые хотят начать изучать техническое зрение при помощи библиотеки OpenCV с полного нуля. Если Вы пользователь Windows и даже не знаете, что значит «прилинковать библиотеку», и при этом Вы мечтаете поглубже изучить работу OpenCV и программирование «под железо», перейти на кроссплатформенное ПО, пойти по пути тру специалиста, то Вам сюда. В статье будут приведены подробные инструкции с картинками, так что не понять, что к чему, будет просто невозможно!
Читать дальше →

Типичные ошибки начинающих работать с изображениями

Время на прочтение13 мин
Охват и читатели63K

Цифровая обработка изображений — весьма интересная область, но она таит в себе множество подводных камней, на которые постоянно натыкаются новички. Мы активно привлекаем студентов к участию в грантах и проектах, но когда мы пытались давать студентам реальные задания, которые требуют реализации новых алгоритмов обработки изображений, мы были в ужасе от совершаемых ими детских ошибок.


Поэтому перед постановкой полноценных задач мы стали давать студентам ряд практических заданий по реализации стандартных алгоритмов обработки изображений: базовые операции над изображениями (поворот, размытие), свёртка, интерполяция с помощью простых фильтров (билинейная, бикубическая), направленная интерполяция, выделение границ с помощью алгоритма Канни, детектирование ключевых точек и т.д. Язык программирования мог быть любым, однако при выполнении заданий не допускается использование сторонних библиотек, за исключением чтения и записи изображений. Это связано с тем, что задания носят обучающий характер, самостоятельная реализация алгоритмов является хорошей практикой в программировании и позволяет понять, как работают методы изнутри.


Данная статья описывает наиболее частые ошибки, совершаемые студентами при выполнении практических заданий по обработке изображений. Изображения обычные, никакой экзотики типа 16-битной глубины цвета, панхроматичности и 3D-изображений нет.

Читать дальше →

Мобильный OCR. Как всё начиналось (часть 2)

Время на прочтение6 мин
Охват и читатели6K
В предыдущем посте мы начали рассказывать, как OCR-технологии «переезжали» с настольных компьютеров в смартфоны – а началось всё с приложения для сканирования визиток Business Card Reader. Но сканирование визиток – это только один сценарий, где нужно мобильное распознавание. О том, как решались другие задачи хотелки пользователей, – читайте ниже.

Как мы уже говорили, перенос технологии распознавания на смартфоны связан с кучей ограничений и сложностей. Главной была и остаётся ресурсоёмкость технологии – невозможно перенести ее в мобильное устройство как есть. Но у нас уже с 2007 года был готовый инструментарий разработчика ABBYY Mobile OCR Engine, который позволял на мобильном оцифровать изображение и выдать результат в формате TXT без сохранения форматирования. И для начала в 2011 году мы решили воплотить в жизнь небольшие пользовательские сценарии, в которых такое «элементарное» распознавание вполне подходило.
Читать дальше →

Распознавание чеков в Google Docs с помощью ABBYY OCR SDK

Время на прочтение3 мин
Охват и читатели24K
В северном полушарии нынче зима, а это значит что пора на лыжи! Мы с друзьями поддались этому течению и приступили к подготовке нашего совместного зимнего отдыха. Детали всего процесса планирования раскрывать не буду, скажу лишь только, что мне выпала ответственная роль сбора магазинных чеков наших совместных трат.
Читать дальше →

«Галоп пикселя — часть четвертая» — Анимация света и тени

Время на прочтение18 мин
Охват и читатели33K


«Галоп пикселя», часть I — базовые понятия, этапы взросления, прикладные упражнения (линк)
«Галоп пикселя», часть II — перспектива, цвет, анатомия и прикладные упражнения (линк)
«Галоп пикселя», часть III — Анимация (линк)
«Галоп пикселя», часть IV — Анимация света и тени (линк)
«Галоп пикселя», часть V — Анимация персонажей. Ходьба (линк)

Доброго времени суток Хабру и ценителям пиксель-арта, поклонникам квадратных точек, адептам лимитированных разрешений и цветов. Рад представить на ваш суд очередную статью из цикла «Галоп Пикселя». Не буду тратить время на оправдания моего долгого отсутствия и в виду явного присутствия перейду к сути дела. Сегодня мы продолжим изучать анимацию. На этот раз это будет анимация света и тени. Большей частью на статических объектах. Всё помнят – сначала база. Сначала фундамент. Сначала простое. Ну а сложное ввалится в ваши двери само, вслед за детишками.

В этой статье мы рассмотрим анимацию света плоскостями, когда мы анимируем свет крупными заливками и лишь затем начинаем его детализировать. Анимацию света по контуру объекта, и поведение света на разных поверхностях, иначе на объектах с разными материалами. Три главы. Три пули. Надеюсь, что в цель.

Цель этой статьи показать насколько силён дуэт брата и сестры, Света и Тени в движении. Мы уже видели, как они преображают сцены в статике. Но динамика нам ещё не знакома. Давайте исправим это упущение.

Лопаты в руки.


Лопатить пиксели

Логика сознания. Часть 9. Искусственные нейронные сети и миниколонки реальной коры

Время на прочтение26 мин
Охват и читатели57K
Приходит ветеринар к терапевту. Терапевт: — На что жалуетесь? Ветеринар: — Нет, ну так каждый может!

Искусственные нейронные сети способны обучаться. Воспринимая множество примеров, они могут самостоятельно находить в данных закономерности и выделять скрытые в них признаки. Искусственные нейронные сети во многих задачах показывают очень неплохие результаты. Закономерный вопрос — насколько нейронные сети похожи на реальный мозг? Ответ на этот вопрос важен главным образом для того, чтобы понять, можно ли, развивая идеологию искусственных нейронных сетей, добиться того же, на что способен человеческий мозг? Важно понять, носят ли различия косметический или идеологический характер.

Как это ни удивительно, но очень похоже, что реальный мозг противоречит всем базовым принципам искусственных нейронных сетей. Это вдвойне удивительно, учитывая, что изначально искусственные нейронные сети создавались как попытка воспроизвести именно биологические механизмы. Но в том и коварство подобных ситуаций. Очень часто то, что на первый взгляд выглядит правдоподобно, на поверку оказывается полной противоположностью того, что есть на самом деле.
Читать дальше →

Оптимизация кода для платформы Эльбрус на простых примерах

Время на прочтение8 мин
Охват и читатели33K

"Обычно хакер пишет программы не ради выгоды,
а ради собственного удовольствия. Такая программа
может оказаться полезной, а может остаться
всего лишь игрой интеллекта."
Генри С. Уоррен. Алгоритмические трюки для программистов [1]


Сегодня мы продолжим наши заметки об Эльбрусе. Первую статью, посвященную запуску и оптимизации системы распознавания паспорта, можно прочитать тут.


image


Однажды мы с коллегами заинтересовались, как самые простые методы оптимизации работают на Эльбрусе.

Читать дальше →

OpenCV: установка таймаута на ожидание кадра в классе VideoCapture

Время на прочтение4 мин
Охват и читатели9K
Всем доброго времени суток! Появилась тут как-то задача: воспроизвести RTSP-видеопоток с камеры. Т.к. я в достаточной мере знаком с API OpenCV, было принято решение использовать именно его. Для захвата видеопотока в OpenCV используется класс VideoCapture. К сожалению, сеть достаточно часто у нас обрывается, и проблема эта на моем уровне не решается, поэтому необходимым условием комфортной работы стала достаточно быстрая реакция на падение видеопотока — стандартный таймаут на подключение и ожидание следующего кадра составляет 30 секунд, причем внутри VideoCapture вызовы open() и read() блокирующие, что заставляет писать вокруг простого на самом-то деле кода различные обертки вроде вызова их в отдельном потоке и ожидания получения результата в асинхронном режиме. Естественно, никакой радости по этому поводу я не испытывал — все это ресурсы, которые в программе должны были уходить на иные цели, не говоря уже об усложнении кода. Было принято решение: изменить стандартный таймаут, либо добавить возможность его внешней установки. Получился достаточно грязный хак, который, впрочем, может кому-то пригодиться. Возможно, если есть способ лучше — если таковой имеется — очень бы хотелось его узнать, так что прошу комментариев. В идеале — может быть, среди читателей Хабра найдутся разработчики OpenCV, которые таки обратят внимание на данную проблему. Целью было заставить код «работать, как надо, под Windows x64».

Кому интересно — прошу под кат.
Читать дальше →

Ближайшие события

Сервис такси разыгрывает базу контактов клиентов и водителей

Время на прочтение4 мин
Охват и читатели28K
Популярный украинский сервис такси Uklon регулярно устраивает розыгрыши среди своих водителей и клиентов. По результатам каждого розыгрыша они публикуют на свою facebook страницу видео с контактными данными участников: имя и адрес электронной почты (пример, видео удалили). Фрагмент кадра:


В оригинальном видео адреса не размыты, их для статьи размыл я, чтобы не распространять эти данные дальше. На мое письмо в их поддержку, что это не очень хорошая идея:
Добрый день!
Нельзя в видео (ссылка) выкладывать адреса и имена людей.
1. Во-первых, ваши конкуренты могут получить список ваших клиентов и водителей
2. Во-вторых, вы нарушаете закон Украины про доступ к персональным данным

Они ответили, что им все равно:
Здравствуйте, Денис, при регистрации каждый пользователь дает согласие на использование его персональных данных uklon.com.ua/document/useragreement — пункт 2.6. Большое спасибо за ваш отзыв.

Поэтому я решил написать небольшой пост, как можно получить контактные данные с видео, не используя какие-то специальные умения. Дисклаймер: этот пост носит образовательный характер, и демонстрирует как не стоит обращаться с данными клиентов.
Читать дальше →

Deep Learning: Cочетание глубокой сверточной нейронной сети с рекуррентной нейронной сетью

Время на прочтение6 мин
Охват и читатели23K
Представляем вам завершающую статью из цикла по Deep Learning, в которой отражены итоги работы по обучению ГСНС для изображений из определенных областей на примере распознавания и тегирования элементов одежды. Предыдущие части вы найдете под катом.


Читать дальше →

«Великий уравнитель» или способ решить проблему выравнивания по высоте

Время на прочтение4 мин
Охват и читатели18K
Мы много занимаемся электронной коммерцией и часто встречаем задачу по выравниванию элементов. На первый взгляд все просто, в коде пишется несколько строк и все ок. Но на самом деле элементы бывают очень разные, правил применения тоже много, а еще есть адаптив.

Эта статья пригодится тем, кто часто встречается с проблемой выравнивания элементов по высоте в разных ситуациях.

Рис. 1. Порядок отображения группы товаров.

Читать дальше →

Квантизация изображений

Время на прочтение5 мин
Охват и читатели26K
Квантизация — уменьшение цветов изображения (wiki). Конечно, сейчас мало кому это необходимо, но задача сама по себе интересная.


Квантизированная Лена привлекает внимание

Например, старый добрый формат GIF использует палитру, максимум на 256 цветов. Если вы захотите сохранить серию своих селфи как gif-анимацию (кому бы это надо было), то первое, что вам, а точнее программе, которую вы будете для этого использовать, надо будет сделать – создать палитру. Можно использовать статическую палитру, например web-safe colors, алгоритм квантизации получиться очень простым и быстрым, но результат будет «не очень». Можно создать оптимальную палитру на основе цветов изображения, что даст результат наиболее визуально похожий на оригинал.

Алгоритмов создания оптимальной палитры несколько, каждый имеет свои плюсы и минусы. Я не стану утруждать читателя нудной теорией и формулами, во первых мне лень, во вторых большинству это не интересно – статью просто пролистают, рассматривая картинки.

Далее вас ждёт скучное и непонятное повествование о методе медианного сечения, алгоритму рассеивания ошибок (шума квантизации) по Флойду-Стейнбергу (и не только), особенностях цветового восприятия человеческого глаза, а так же немного говнокода.
Читать дальше →

Deep Learning: Transfer learning и тонкая настройка глубоких сверточных нейронных сетей

Время на прочтение7 мин
Охват и читатели28K
В предыдущей статье из цикла «Deep Learning» вы узнали о сравнении фреймворков для символьного глубокого обучения. В этом материале речь пойдет о глубокой настройке сверточных нейронных сетей для повышения средней точности и эффективности классификации медицинских изображений.


Читать дальше →

Как технологии ABBYY помогают улучшить работу систем обнаружения утечек данных

Время на прочтение10 мин
Охват и читатели10K
Несмотря на прогнозы о скором наступлении светлого безбумажного будущего, объём бумажных документов всё ещё огромен. Часть из них сканируется и продолжает свою «жизнь» уже в электронном варианте – но только в виде изображений. В среднем в организациях объем сканированных копий составляет 30% от всех документов, которые хранятся в электронном виде. В госсекторе он достигает 41,5%, в ритейле – 17%, в сфере услуг – 23%, в банках и телеком-сфере приближается к 45%. Когда сканы документов лежат себе в нужной папке или делают работу, для которой они предназначены, – это хорошо. Плохо, когда кто-то пытается использовать данные из этих сканов в мошеннических схемах или как-то иначе злоупотреблять ими. Чтобы конфиденциальная информация не «утекла», в информационные системы компаний устанавливают DLP – системы предотвращения утечек.

Сегодня мы расскажем, как в одну из таких программ – Контур информационной безопасности SearchInform – был интегрирован SDK-продукт ABBYY FineReader Engine и что из этого получилось.
Читать дальше →

Как собрать RidgeRun SDK

Время на прочтение6 мин
Охват и читатели4.5K
image

Само по себе RidgeRun SDK не очень распространенная SDK, однако, если Вам придётся занимать работой с видео для встраиваемых систем, то Вам наверняка будет интересно оценить эту SDK (Официальный сайт RidgeRun SDK).
Читать дальше →

Вклад авторов