Рубрика «обработка изображений» - 78

SikuliX (старое название Sikuli) — это инструмент, который позволяет автоматизировать то, что вы видите на экране с помощью визуального распознавания (картинок). На хабре уже есть достаточно информации по нему, но все примеры подразумевают использование реального экрана.

Здесь же я опишу свой опыт использования SikuliX в фоновом режиме на облачной IDE Cloud9. В процессе работы с данным инструментом набил немного шишек, поэтому возможно, мой опыт будет кому-то полезен.

Вариантов использования SikuliX достаточно много, вот некоторые из действий, которые вы можете автоматизировать:

  • Работа с флеш сайтами (и любими другими)
  • Автоматизация браузерных игр (собирать урожай на ферме)
  • Работа с десктопными приложениями
  • Настройка компьютера
  • Разнообразные боты
  • Всякого рода рутинная работа с сайтами/документами

Читать полностью »

Как камерой смартфона сделать фотографии, пригодные для OCR, или кое-что об ABBYY Mobile Imaging SDK - 1Количество программ — мобильных клиентов, привязанных к различным системам автоматизации деятельности предприятий, постоянно растёт. Согласно исследованию компании IDC, к 2016 году оно увеличится в 4 раза (по сравнению с 2014 годом). Конечно, ABBYY не могла остаться в стороне от этих тенденций, и у нас есть мобильные продукты, ориентированные на корпоративных пользователей. Об одном из них – ABBYY Mobile Imaging SDK (MI SDK) – мы ещё ни разу не рассказывали в блоге, исправляемся.

Наши пользователи привыкли, что мобильные продукты ABBYY – это либо про словари, либо про распознавание. Сразу оговоримся – в ABBYY Mobile Imaging SDK нет ни того, ни другого. Спрашивается, почему нам понадобилось выпускать такое приложение? Ответ – конечно, чтобы продать OCR ещё большему числу клиентов :). Ведь ABBYY Mobile Imaging SDK обычно используется в связке с нашими «корпоративными» решениями для распознавания данных (например, ABBYY Recognition Server) или извлечения данных (например, ABBYY FlexiCapture). Этот небольшой продукт призван помочь нашим «большим» решениям работать лучше, распознавать точнее.

Жизнь изменилась, и если раньше основным устройством, с которого мы получали изображение для распознавания, был сканер, то теперь его всё чаще заменяет мобильный телефон. Чем он отличается от сканера? Конечно, тем, что получить с него изображение хорошего качества гораздо сложнее (разумеется, в данном случае хорошее качество = достаточное для того, чтобы наши OCR-технологии могли распознать текст на фото). Читать полностью »

Linux в кармане — на службе у фотографа - 1Так получилось, что фотография, это мой основной профессиональный вид деятельности, а программирование — хобби, которое иногда позволяет размять мозг. Кроме непосредственно разминки для мозга, программирование помогает и в работе. Например, писал полезные штуки, такие как это или это, или это.

Недавно поставил себе задачу, как бы еще порадовать своих клиентов. Вспомнил многочисленные просьбы клиентов на свадебную съемку: «Как хорошо было бы, если бы на банкете вы смогли показать коротенькое слайдшоу из фотографий, которые отсняли за день». На эти просьбы приходилось отказывать, по нескольким причинам: лень таскать с собой ноутбук для сборки слайдшоу, нет времени на отбор пары десятков снимков из сотен, из raw опять же нужно конвертировать, и самое главное — на это все нужно время, которого нет.

Это рассказ, о том, как мне удалось сделать для себя инструмент, который с минимальным моим участием и минимальным дополнительным весом в рюкзаке, помогает сделать красивые слайдшоу. И конечно же рассказ о python, ffmpeg и linux на android.

Читать полностью »

В продолжение серии статей о веб-разработке на Java на платформе Google App Engine / Google Cloud Endpoints рассмотрим сервис для облачного хранения файлов Google Cloud Storage.

В целом схема выглядит следующим образом: сервер на бэкэнде генерирует временную ссылку (адрес) для передачи файла в определенный контейнер (bucket) нашего хранилища, которая на фронтэнде вставляется в форму для передачи файла. Пользователь на указанный адрес посылает POST HTTP-request с одним или несколькими файлами в теле запроса, файлы принимаются и размещаются в хранилище, и HTTP-request вместе с данными о размещенных файлах принимается сервлетом, который обработав информацию о размещенных файлах, возвращает пользователю HTTP response: JSON или text/html, или в общем что пожелаем.

Файлы сохраняются в хранилище, у сервлета есть в распоряжении ключ который дает возможность доступа к файлу, в частности можно выдать файл пользователю с помощью другого сервлета либо создать «статичную» ссылку (https://).
Доступ к хранилищу также доступен через веб-интерфейс, и из командной строки с помощью утилиты gsutil.
Читать полностью »

Постановка задачи компьютерного зрения - 1
Последние лет восемь я активно занимаюсь задачами, связанными с распознаванием образов, компьютерным зрением, машинным обучением. Получилось накопить достаточно большой багаж опыта и проектов (что-то своё, что-то в ранге штатного программиста, что-то под заказ). К тому же, с тех пор, как я написал пару статей на Хабре, со мной часто связываются читатели, просят помочь с их задачей, посоветовать что-то. Так что достаточно часто натыкаюсь на совершенно непредсказуемые применения CV алгоритмов.
Но, чёрт подери, в 90% случаев я вижу одну и ту же системную ошибку. Раз за разом. За последние лет 5 я её объяснял уже десяткам людей. Да что там, периодически и сам её совершаю…

В 99% задач компьютерного зрения то представление о задаче, которое вы сформулировали у себя в голове, а тем более тот путь решения, который вы наметили, не имеет с реальностью ничего общего. Всегда будут возникать ситуации, про которые вы даже не могли подумать. Единственный способ сформулировать задачу — набрать базу примеров и работать с ней, учитывая как идеальные, так и самые плохие ситуации. Чем шире база-тем точнее поставлена задача. Без базы говорить о задаче нельзя.

Тривиальная мысль. Но все ошибаются. Абсолютно все. В статье я приведу несколько примеров таких ситуаций. Когда задача поставлена плохо, когда хорошо. И какие подводные камни вас ждут в формировании ТЗ для систем компьютерного зрения.
Читать полностью »

GIF изнутри - 1
Вам когда-нибудь было интересно, как устроены gif-ки? В данной статье попробуем разобраться с внутренним строением GIF-формата и методом сжатия LZW.

Структура GIF

Файл в формате GIF состоит из фиксированной области в начале файла, за которой располагается переменное число блоков, и заканчивается файл завершителем изображения.

GIF изнутри - 2

Основные характеристики формата GIF:

  • Изображение в формате GIF хранится построчно, поддерживается только формат с индексированной палитрой цветов;
  • Поддерживается 256-цветовая палитра;
  • Этот формат позволяет хранить несколько изображений в одном файле;
  • GIF поддерживает анимационные изображения;

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

  • Поддерживает «прозрачность»;

    Один из цветов в палитре может быть объявлен «прозрачным». В этом случае в программах, которые поддерживают прозрачность GIF (например, большинство современных браузеров) сквозь пиксели, окрашенные «прозрачным» цветом, будет виден фон. GIF анимация может использовать прозрачность для того чтобы не сохранять очередной кадр целиком, а только изменения относительно предыдущего.

  • Используется универсальный алгоритм сжатия без потерь LZW.

Читать полностью »

Нет, игр не будет

Автомобильный суперкомпьютер Drive PX 2 от Nvidia для автономного вождения - 1Год назад на Международной выставке потребительской электроники CES 2015 производитель видеоускорителей Nvidia показал свой продукт для беспилотных автомобилей. Это был компьютер Drive PX. В этом году на CES 2016 глава Nvidia Жэнь-Сунь Хуан рассказал о обновлении этого продукта. Новый компьютер носит название Drive PX 2, обладает тепловыделением 250 ватт и системой жидкостного охлаждения.
Читать полностью »

Занимаясь разработкой приложений под ОС Android возникают интересные идеи, которые хочется попробовать, либо есть какой-то набор теоретических знаний и их хочется применить на практике, из совокупности этих факторов и возникла идея описываемого проекта.

Существует много статей о распознавании текста, о компьютерном зрении и об отдельных алгоритмах распознавания. В этой же публикации демонстрируется попытка реализации задачи, связанной с нахождением ключевого слова на изображении текста, что может позволить, например, найти необходимое место для чтения какого-либо текста в DjVu без распознавания самого текста.

Пример реализации представлен в виде Android приложения, а исходным изображением является скриншот текста, с введенным ключевым словом, для решения задачи применяются различные алгоритмы обработки и распознавания изображений.
Читать полностью »

Работа над дизайном космических рептилоидов: блуждание по лабиринтам возможностей - 1

Обычная такая рептилоидная раса, возникающая из пучин глубокого космоса. Бац-бац из лазерного оружия со всех бортов! Потом сближение и абордаж, в завершение нападения кровавая резня на борту захваченного судна. Рептилоиды – люди слова: сказали «всех порежем», значит всех порежут, кто б сомневался. И растворяются в морозной черноте, только их видели.

Впрочем, разведка донесла. Если открыть игровую Энциклопедию, выяснится:

Точные координаты базирования цивилизации Учча-Та неизвестны. Принято считать, что это планета Дрро-Адда (так называемая Планета-Мать) планетарной системы в районе W-Девы (звездное скопление TDD67, тип «распластанная медуза», спектральный класс неизвестен).

Итак, местопребывание установлено: после пиратских нападении на мирные корабли рептилоиды скрываются на родной Планетоматери.

И что это дает мне как арт-директору в смысле намеков на дизайн персонажа? А ничего.
Читать полностью »

Сегментация фона в Intel RealSense SDK - 1
В этом документе описывается, как разработчики могут использовать сегментацию фона (background segmentation, BGS) в Intel RealSense SDK для создания новых увлекательных приложений для совместной работы. Описывается предполагаемое поведение программ и их производительность в разных сценариях, оговариваются ограничения, о которых следует помнить разработчикам перед поставкой продуктов клиентам. Основная аудитория этой статьи — группы разработки, использующие BGS, и ОЕМ-производители.
На КДПВ — приложение Cyberlink YouCam RX как пример применения BGS.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js