- Пример реализации методов обработки и распознавания изображений на Android
- Задача
- Получение изображения
- Предварительная обработка полученного изображения
- Сегментация
- Распознавание
- Заключение
- Оживляющие приложения: поющее лицо, живое фото, анимация
- Поющее лицо — приложение Avatarify
- MugLife — аналог для Андроид
- Как отображать дату и время на фото на android
- Различные методы отметки времени на ваших фотографиях на смартфоне Android
- Загрузите приложение камеры с опцией отметки времени
- Используйте приложение для управления фотографиями, чтобы добавить дату и время
Пример реализации методов обработки и распознавания изображений на Android
Занимаясь разработкой приложений под ОС Android возникают интересные идеи, которые хочется попробовать, либо есть какой-то набор теоретических знаний и их хочется применить на практике, из совокупности этих факторов и возникла идея описываемого проекта.
Существует много статей о распознавании текста, о компьютерном зрении и об отдельных алгоритмах распознавания. В этой же публикации демонстрируется попытка реализации задачи, связанной с нахождением ключевого слова на изображении текста, что может позволить, например, найти необходимое место для чтения какого-либо текста в DjVu без распознавания самого текста.
Пример реализации представлен в виде Android приложения, а исходным изображением является скриншот текста, с введенным ключевым словом, для решения задачи применяются различные алгоритмы обработки и распознавания изображений.
Задача
Допустим у нас есть изображение какого-то текста, это может быть фотография, сканированное изображение или скриншот, и на этом изображении необходимо отыскать какую-то фразу или слово в максимально короткий срок, чтобы быстро извлечь необходимую часть информации, здесь на помощь нам приходят алгоритмы обработки изображений и распознавания.
Подробно этапы создания Android приложения здесь описаны не будут, как и не будет представлено подробное теоретическое описание алгоритмов. При минимальном тестовом интерфейсе приложения основными целями нижеописанного являются:
- Ознакомление с некоторыми методами обработки изображений и распознавания образов;
- Ознакомление с возможностями и сложностью реализации этих методов для Android.
Получение изображения
Для получения исследуемого изображения создаем Activity, в которой будет всего три элемента:
1. EditText — для ввода ключевого слова;
2. TextView — для отображения текста, в котором необходимо найти это слово;
3. Кнопка создания скриншота и перехода на другой экран.
! Весь код носит исключительно демонстративный характер и не является правильной инструкцией к действию.
Примерно так это будет выглядеть:
Для поиска, например, введем слово «dreams»:
Таким образом мы получаем одиночное ключевое слово, после которого ниже следует текст. Стоит обратить внимание на то, что ключевое слово и сам текст имеют разный размер шрифта (для усложнения задачи, скажем так).
Нажимаем на кнопку и получаем скриншот области с ключевым словом и текстом.
Полученный скриншот открывается в новой Activity, где в NavigationDrawer собраны функции последовательных действий. В реальном приложении некоторые из операций могут быть объединены в одну для исключения лишних проходов по изображению.
Предварительная обработка полученного изображения
Для начала нужно выполнить перевод полученного цветного изображения в полутоновое.
Перевод изображения из цветного в полутоновое
Для перевода используется схема RGB to YUV.
В нашем случае необходима лишь интенсивность (яркость), а получить её можно по форумуле:
Y = 0.299*R + 0.587*G + 0.114*B, где R,G,B красный, зеленый и синий каналы соответственно.
Для работы с цветами, как ни странно, полезен класс Color и, в частности, его статические методы red, green и blue, в которых реализованы операции с побитовыми сдвигами для выделения нужного цветового канала из интового значения цвета пикселя.
Пример кода, для перевода цветного пикселя в яркость:
Выполнять сегментацию на полутоновом изображении не на много легче, чем на цветном, поэтому следующим шагом необходимо полутоновое изображение перевести в бинарное (значения яркостей пикселей имеют лишь два значения 0 и 1).
Бинаризация полутонового изображения
В данной задаче для бинаризации достаточно элементарного порогового метода, с порогом по умолчанию 128.
В дальнейшем для корректировки результатов порог можно подобрать экспериментальным путем (в приложении реализована возможность задания порога пользователем).
Для получения бинарного значения яркости выполняется проверка полученной ранее полутоновой яркости:
Где threshold — порог, Color.WHITE и Color.BLACK — константы для удобства, чтобы не путаться с 0 и 1.
После проделанного перевода в полутоновое и дальнейшей бинаризации получаем следующий результат:
Так как эти два способа обработки изображения очень близки, они объединены в один метод.
Сегментация
Для нахождения ключевого слова необходимо после бинаризации выполнить несколько этапов сегментации, которые заключаются в поиске строк в тексте, поиске слов в строках и отнесение найденных слов к словам претендентам по количеству букв (для сужения круга слов для распознавания).
Сегментация строк
Для определения строк текста необходимо найти части гистограммы с количеством черных пикселей больше нуля, которые находятся между частями гистограммы с нулевым количеством пикселей. Для этого составляется гистограмма количества черных пикселей в каждой однопиксельной строке изображения, после чего она обрабатывается для получения координат строк по вертикали (по сути номера строк в гистограмме). Зная эту координату и общие размеры изображения, можно выделить область, содержащую строку со словами.
«Inline» гистограмма для наглядности (слева) выглядит, например, так:
Для удобства отображения гистограмма нормализуется.
Когда известно расположение строк на изображении, можно переходить к поиску слов.
Сегментация слов
Для того, чтобы понять, где слова а где просто соседние символы, необходимо определиться, какие расстояния между символами считать расстояниями между словами, а какие расстояниями между символами внутри одного слова. Здесь на помощь приходит метод мод, а точнее его адаптированный вариант, потому что чаще всего этот метод встречается в бинаризации, но его суть можно применить и в данной ситуации.
Для начала как и для строк, аналогичным образом строим гистограмму внутри строки (по сути была вертикальная, теперь горизонтальная), она необходима, чтобы понять, где символы, а где белые промежутки.
Пример получения такой гистограммы ниже и аналогичен предыдущему.
Обрабатывая эту гистограмму можно получить новую гистограмму — промежутков между черными пикселями, т.е., первая градация её будет количеством «пробелов» шириной 1 пиксель, вторая градация количество «пробелов» шириной 2 пикселя и так далее.
Получится примерно что-то такое:
Исходя из логики метода мод мы находим два ярко выраженных пика (на изображении выше они очевидны), и всё что находится около одного пика — расстояния между символами внутри слова, около второго — расстояния между словами.
Имея такую информацию о «пробелах» и гистограмму строки можно выделить участки изображения, где находятся слова, а также посчитать сколько символов содержится в этих словах.
Полный код данного процесса смотри в исходниках.
Для визуальной оценки работы вышеизложенной совокупности алгоритмов слова в тексте окрашиваются в чередующееся цвета, а слова претенденты (напомню, те, у которых количество символов совпадает с количеством символом в ключевом слове) остаются черного цвета:
И так, на данном этапе есть кусочки изображений (точнее координаты этих кусочков), которые содержат ключевое слово и слова претенденты на основании количества символов, можно попробовать найти среди претендентов ключевое слово.
Распознавание
Обращаю внимание, что здесь под распознаванием подразумевается распознавание ключевого слова среди претендентов, при этом о распознавании из каких именно символов они состоят речи не идет.
Для распознавания подбирается набор информативных признаков: это может быть количество концевых точек, узловых точек, а также количество пикселей с 3, 4 и 5 черными пикселями-соседями, и другие. Опытным путем установлено, что большое количество признаков теряет смысл, так как они «перекрывают» друг друга.
На данном этапе остановимся на количестве концевых точек, с учетом их расположения (в верхней и нижней части изображения — для каждой части признаки считаются отдельно).
Для каждого слова выполняется подсчет количества признаков, после чего происходит поиск по методу ближайших соседей на основании евклидова расстояния.
Обо всех характерных числах типа A4, A8 и т.д. можно найти информацию дополнительно.
Учитывая повторяемость слов и погрешности, в результате можно получить 2-3 ближайших соседа, среди которых будет найдено ключевое слово (на рисунке выделены красным).
Также на рисунке видно, что среди красных слов есть искомое слово «dreams».
Для улучшения качества распознавания можно попробовать подобрать другой порог бинаризации, а также выбрать другие информативные признаки, добавив к ним, например, зонды.
Заключение
Поставленных целей удалось достичь, были опробованы некоторые методы обработки и распознавания изображений, при этом их реализация под Android не накладывает никаких дополнительных сложностей, просто нужно учитывать расход памяти и не хранить одновременно несколько больших Bitmap.
Надеюсь, информация окажется полезной для начинающих свой путь в решении задач по работе с изображениями под Android.
Описание всех используемых алгоритмов, подсчет характерных чисел и т.п. можно с легкостью найти в открытом доступе как на habrahabr, так и в многочисленных учебниках и онлайн ресурсах.
Источник
Оживляющие приложения: поющее лицо, живое фото, анимация
Речь пойдет о приложениях, которые оживляют лица на фото. Самым популярным на данный момент является приложение, где лицо поет и двигается. Как такое возможно? С помощью искусственного интеллекта и нейронных сетей. Подобная технологиях используется и для распознавания лиц и для анимации в киноиндустрии. Теперь она доступна и нам.
Поющее лицо — приложение Avatarify
Самое популярное приложение, где лицо поет называется Avatarify. По-другому его еще называют Оживи селфи. Оно доступно только для айфонов, но без паники — далее расскажу про аналог для Андроид.
Смысл в том, чтобы оживить фотографию — добавить мимику, движение и даже сделать поющее лицо. Оживить можно любое фото, не только себя, но и знаменитость, вашего друга, бабушку или кота. Как?
Шаг 1. Выбираете любой снимок (свое или из предложенных вариантов). Можно тут же сделать селфи через камеру.
Шаг 2. Далее выбираем режим.
- «Использовать GIF» — если хотите чтобы лицо пело как знаменитость. Здесь уже есть варианты песен и мимики известных исполнителей.
- «Live mode» — если хотите чтобы лицо повторило вашу мимику и слова. Вы переходите в режим видеосъемки и создаете образец, а живая фотография повторит все ваши действия на камеру, включая голос. Эта функция работает корректно только если ваш телефон поддерживает Face ID.
Шаг 3. Последнее — выбираем формат и качество. Всё, видео генерируется. Приложение выдает фото с поющим лицом на выходе. Пример:
Очень забавно наблюдать, как бывшая статичной фотография начинает шевелиться, двигаться и петь песню. Особенно, если это твое живое фото. Еще более интересно попробовать оживить несколько лиц.
В бесплатной версии нельзя скачать видео без водяного знака, выбрать высокое качество или сделать длинный видеоролик. Для этого придется покупать премиум. Ну и вновь напомню, что доступно это бесплатное приложение с поющим лицом только для пользователей айфона. Что же делать любителям системы Андроид? Воспользоваться другими оживляющими приложениями, о которых ниже.
MugLife — аналог для Андроид
Это первый аналог для Андроида. В создании анимированного живого фото MugLife практически не уступает Avatarify. Здесь тоже много GIF, которые можно взять за образец. Есть вся палитра эмоций, можно копировать знаменитостей и также выбрать вариант, где лицо поет.
Сам процесс создания оживленного фото практически не отличается от описанного выше. Единственная разница в том, что все делается на основе других снимков и гив-образцов. Вы не можете загрузить собственный пример из видео. Зато здесь можно создавать мемы — то есть накладывать на оживленную фотографию надпись. Можно оживлять статуи, животных и любых других персонажей и делать забавные подписи. Ну и самая крутая функция — можно создавать анимацию вручную:
Сохранить файл можно в нескольких форматах:
- Цикл видео (самое лучшее качество)
- GIF (качество хуже)
- SMS (тоже гиф, но адаптировано для отправки)
- Foto (как jpeg)
- Аватар (квадратная гифка)
И бонус платной версии. В ней доступна ручная анимация фотографии и создание групповых анимированных снимков, где можно оживить несколько лиц — все они поют по вашему желанию. Два этих приложения для анимации стали очень популярны в 2021 году в Тик ток и Инстаграм.
Источник
Как отображать дату и время на фото на android
Вы вспоминаете важные моменты своей жизни, наблюдая фото на вашем телефоне, но тебе тяжело напомнить вам точную дату. Однако это действительно практично и приятно знать в какой именно момент эти воспоминания возвращаются.
Это позволяет нам немного ограничить наши воспоминания, чтобы Расскажи эти истории еще точнее. К сожалению, раньше с большинством фотоаппаратов того времени можно было записывать дату и время на записанных изображениях.
Сегодня, в эпоху цифровых технологий, у нас часто бывает стопка фотографий на наших телефонах, иногда только с деталями файла.
Так ты хочешь лучше датируйте эти воспоминания, отображая дату и время на ваших фотографиях на вашем Android-смартфоне.
В этой статье мы подробно расскажем вам различные методы, которые помогут вам поставить отметку времени на ваших фотографиях. Есть два способа сделать это.
Во-первых, важно знать, что это как правило, наши телефоны недоступны для доступа к функциям без помощи внешнего приложения.
Так что вам придется скачать инструмент из Play-store.
Различные методы отметки времени на ваших фотографиях на смартфоне Android
Вот два разных метода отображения времени и даты на ваших фотографиях. Первый метод предполагает загрузку приложения камеры, которое сможет отображать время и дату в реальном времени и сохранять с ними ваш снимок.
Загрузите приложение камеры с опцией отметки времени
Мы выбрали для вас одно из лучших приложений на рынке для этой функциональности. Однако в этом первом методе у вас будет возможность вставить время и дату на следующих фотографиях, которые вы сделаете, на вашем телефоне Android.
Другими словами, если вы хотите Поставьте отметку времени для уже сделанных фотографий, которые находятся в вашей галерее, перейдите непосредственно к следующему абзацу для 2-го метода.
Для этой функции все, что вам нужно сделать, это скачать это приложение из Play-store;
Мы выбрали PRO версия, здесь по 5 долларов, потому что она действительно производительность. Здесь бесплатная версия здесь, но менее стабильно, и некоторые из них пользователи сообщают о проблеме с автофокусом на телефоне Android.
Вам решать, что от этого нужно. если ты используйте его часто, выбирайте профессиональную версию. В противном случае, если ваше использование очень пунктуальность, подойдет бесплатная версия.
Вернемся к этому Pro версия позволит вам делать качественные снимки, а затем очень легко добавлять время и дату.
Это приложение получило оценку почти 5/5 среди более чем 2000 пользователей. пользовались профессионалами, результатом все довольны.
Если вы хотите напишите дату и время ваших снимков на фотографиях, которые уже существуют на вашем телефоне AndroidИтак, вот второй способ.
Используйте приложение для управления фотографиями, чтобы добавить дату и время
Таким образом, с помощью этой манипуляции вы сможете вручную добавьте определенное время и дату к уже существующим снимкам.
Имеет смысл знать эту информацию. Вот какое приложение вы можете скачать, мы протестировали несколько и выбрали, на наш взгляд, лучший на смартфоне Android :
Это приложение просто позволит вам добавить текст, точное время и дату. У вас будет выбор выбрать» время и дата, когда была сделана фотография, или персонализированная дата, когда фотография уже была в вашей галерее.
Очень простое и интуитивно понятное управление позволит вам Отметьте время на ваших изображениях и видео в кратчайшие сроки.
Источник