Система и способ использования данных предыдущего кадра для оптического распознавания символов кадров видеоматериалов
Иллюстрации
Показать всеГруппа изобретений относится к технологиям оптического распознавания символов (OCR) кадров видеоматериалов с целью обнаружения в них текстов на естественных языках. Техническим результатом является оптимизация OCR видеоматериалов. Предложен способ проведения оптического распознавания символов (OCR) в кадре видеоматериала. Способ содержит этап, на котором получают первый кадр из видеоматериала посредством аппаратного процессора. Далее выполняют OCR как минимум части первого кадра для генерации данных первого кадра. При этом выполнение OCR как минимум части первого кадра включает обнаружение связных компонент в как минимум части первого кадра для добавления как минимум одного описания связной компоненты к данным первого кадра, а также обнаружение символов-кандидатов в как минимум части первого кадра для добавления как минимум одного описания символа-кандидата к данным первого кадра. Также согласно способу осуществляют обнаружение текстов-кандидатов в как минимум части первого кадра для добавления как минимум одного описания текста-кандидата к данным первого кадра, и обнаружение строк текста в первой части первого кадра для добавления как минимум одного описания строки текста к данным первого кадра. 3 н. и 41 з.п. ф-лы, 9 ил.
Реферат
Область техники
[0001] Настоящее изобретение относится в общем к области оптического распознавания символов (OCR) видеоматериалов, и, более конкретно, к системам и способу использования данных предыдущего кадра для OCR кадров видеоматериалов.
Уровень техники
[0002] Одним из вариантов использования оптического распознавания символов (OCR) является распознавание текста, присутствующего в видеоматериалах, например, видеозаписях или видеосъемке в режиме реального времени, сделанной пользователем с помощью видеокамеры, мобильного устройства с возможностями записи видео и т.д. Текст, присутствующий в видеоматериалах, обычно присутствует на снятых видеосъемкой объектах, таких как страницы текста, уличные таблички, меню ресторанов и т.д. При обнаружении наличия текста содержащаяся в нем информация может быть использована в будущем. Обнаруженный текст можно распознать и/или использовать для сжатия видеоинформации или других целей в дальнейшем. Распознанный текст в дальнейшем можно прочесть и преобразовать в голосовой сигнал, используя одну из многих технологий преобразования текста в речь, для людей, испытывающих затруднения с чтением текста. Распознанный текст также может быть немедленно после съемки переведен на другой язык, так что пользователь сможет прочесть или услышать (с помощью технологии преобразования текста в речь) перевод текста, снятого камерой, направленной на текст на иностранном языке.
[0003] Обработка видео может быть реализована простым применением одной из технологий анализа структуры документа к каждому последовательному отдельному кадру или каждому кадру в выборке кадров видео из видеоматериала. Однако такой подход является очень медленным или очень неэкономичным в смысле процессорных ресурсов и потребления энергии, потому что он не в состоянии использовать дублируемость, присутствующую в большинстве реальных сценариев захвата видео. Таким образом, существует потребность в повышении эффективности и результативности обработки видеоматериалов. Для иллюстрации настоящего изобретения далее для распознавания символов (OCR) будут использоваться образцы видеокадров.
Раскрытие изобретения
[0004] Настоящим заявителем было обнаружено, что текст в видеоматериалах часто присутствует в ряде последовательных видеокадров, и положение текста в этих видеокадрах слабо изменяется от кадра к кадру. Например, если пользователь хочет перевести уличную табличку, он наведет камеру на табличку и будет ее удерживать, пока не снимет хотя бы несколько видеокадров, причем положение таблички будет меняться незначительно. Также пользователь может захотеть перевести страницу текста или ресторанное меню, перемещая камеру по тексту, в этом сценарии также один и тот же текст обычно присутствует на нескольких видеокадрах, пока камера перемещается над ним, и положение текста на кадрах меняется относительно медленно. Таким образом, для эффективного OCR видеокадров видеоматериала можно использовать данные с предыдущих кадров.
[0005] Например, данные предыдущего кадра для OCR видеокадров видеоматериала можно использовать следующим образом. При проведении обработки OCR видеокадра, если было установлено, что это не первый кадр видеоматериала и предшествующий или предыдущий видеокадр или видеокадры уже были обработаны, данные OCR, созданные во время проведения OCR предыдущего видеокадра или видеокадров, могут быть использованы при проведении OCR текущего видеокадра. В частности, расположение текста на предыдущем видеокадре или видеокадрах можно использовать для определения расположения текста на текущем видеокадре. Кроме того, если как минимум часть текста с предыдущего видеокадра присутствует на текущем видеокадре, эту часть нет необходимости подвергать OCR повторно, вместо этого можно использовать результаты проведения OCR этого текста с предыдущего видеокадра или видеокадров.
[0006] В одном случае пример способа проведения OCR кадра видеоматериала включает получение кадра из видеоматериала аппаратным процессором, извлечение из памяти данных о предыдущем кадре, связанным с видеоматериалом, и обработку аппаратным процессором как минимум части кадра для обнаружения одной или более текстовых строк, при этом проведение OCR части кадра включает как минимум одну операцию из следующих: использование данных предыдущего кадра для обнаружения в части кадра как минимум одной связной компоненты, аналогичной как минимум одной связной компоненте в данных предыдущего кадра, использование как минимум одной связной компоненты, аналогичной как минимум одной связной компоненте, для обнаружения в части кадра как минимум одного символа-кандидата, аналогичного как минимум одному символу-кандидату, описанному в данных предыдущего кадра, использование как минимум одного символа-кандидата, аналогичного как минимум одному символу-кандидату из данных предыдущего кадра, для обнаружения как минимум одного текста-кандидата, аналогичного как минимум одному тексту-кандидату, описанному в данных предыдущего кадра, для обнаружения в части кадра как минимум одной текстовой строки, аналогичной как минимум одной текстовой строке из данных предыдущего кадра.
[0007] В одном случае пример системы для проведения OCR кадра видеоматериала включает компьютерный процессор, настроенный для приема кадра видеоматериала, память, соединенную с процессором и настроенную для хранения данных предыдущего кадра, связанных с видеоматериалом; где процессор дополнительно настраивается для вызова механизма OCR для обнаружения в части кадра как минимум одной текстовой строки, где механизм OCR включает как минимум один элемент из следующих: модуль обнаружения связных компонент, настроенный на использование данных из предыдущего кадра для обнаружения в части кадра как минимум одной связной компоненты, аналогичной как минимум одной связной компоненте, описанной в данных предыдущего кадра, модуль обнаружения символов-кандидатов, настроенный на использование не менее одной связной компоненты, аналогичной как минимум одной связной компоненте, описанной в данных предыдущего кадра, для обнаружения в части кадра как минимум одного символа-кандидата, аналогичного хотя бы одному символу-кандидату, описанному в данных предыдущего кадра, модуль обнаружения текстов-кандидатов, настроенный на использование как минимум одного символа-кандидата, аналогичного как минимум одному символу-кандидату, описанному в данных предыдущего кадра, для обнаружения в части кадра как минимум одного текста-кандидата, аналогичного как минимум одному тексту-кандидату из данных предыдущего кадра, модуль обнаружения текстовых строк, настроенный на использование как минимум одного текста-кандидата, аналогичного как минимум одному тексту-кандидату из данных предыдущего кадра, для обнаружения в части кадра как минимум одной текстовой строки, аналогичной как минимум одной текстовой строке, описанной в данных предыдущего кадра.
[0008] В одном случае пример компьютерного программного продукта, который хранится на энергонезависимом машиночитаемом носителе данных, содержит выполняемые компьютером команды для проведения OCR кадра видеоматериала, включая команды для: получения аппаратным процессором кадра из видеоматериала, извлечения из памяти данных о предыдущем кадре, связанном с видеозаписью и выполнения аппаратным процессором обработки как минимум части кадра для обнаружения одной или более текстовых строк, при которой выполнение OCR части кадра включает как минимум одну из следующих операций: использование данных предыдущего кадра для обнаружения в части кадра как минимум одной связной компоненты, аналогичной как минимум одной связной компоненте, описанной в данных предыдущего кадра, использование как минимум одной связной компоненты, аналогичной как минимум одной связной компоненте, описанной в данных предыдущего кадра, для обнаружения в части кадра как минимум одного символа-кандидата, аналогичного как минимум одному символу-кандидату, описанному в данных предыдущего кадра, использование как минимум одного символа-кандидата, аналогичного как минимум одному символу-кандидату, описанному в данных предыдущего кадра, для обнаружения в части кадра как минимум одного текста-кандидата, аналогичного как минимум одному тексту-кандидату, описанному в данных предыдущего кадра и использование как минимум одного текста-кандидата, аналогичного как минимум одному тексту-кандидату, описанному в данных предыдущего кадра, для обнаружения в части кадра как минимум одной текстовой строки, аналогичной как минимум одной текстовой строке, описанной в данных предыдущего кадра.
[0009] Некоторые аспекты также включают как минимум одно из следующих действий: перевод как минимум одной строки текста на другой язык и преобразование как минимум одной текстовой строки в аудиоформат.
[0010] В некоторых случаях аналогичность включает как минимум одну аналогичность положения в кадре, аналогичность по ориентации в кадре, аналогичность по форме и аналогичность по содержанию.
[0011] В некоторых случаях данные предыдущего кадра содержат только данные о небольшой части кадра, сопровождаемые частью кадра.
[0012] В некоторых случаях как минимум одно описание связной компоненты из данных предыдущего кадра содержит положение связной компоненты в кадре, ориентацию связной компоненты в кадре и форму связной компоненты.
[0013] В некоторых случаях как минимум одно описание символа-кандидата в данных предыдущего кадра содержит положение символа-кандидата в кадре, ориентацию символа-кандидата в кадре и форму символа-кандидата.
[0014] В некоторых случаях как минимум одно описание текста-кандидата в данных предыдущего кадра содержит положение текста-кандидата в кадре, ориентацию текста-кандидата в кадре и форму текста-кандидата.
[0015] В некоторых случаях описание как минимум одной текстовой строки в данных предыдущего кадра содержат положение текстовой строки в кадре, ориентацию текстовой строки в кадре и содержимое текстовой строки.
[0016] В некоторых случаях аппаратный процессор, используемый для выполнения OCR части кадра, и как минимум один аппаратный процессор, используемый для генерации данных предыдущего кадра, являются разными аппаратными процессорами.
[0017] В некоторых случаях аппаратный процессор, используемый для выполнения OCR части кадра, и как минимум один аппаратный процессор, используемый для генерации данных предыдущего кадра, представляют собой разные ядра одного многоядерного процессора.
[0018] Некоторые случаи также включают хранение в памяти данных нового кадра, включающих как минимум одно из как минимум одной обнаруженной связной компоненты, как минимум один обнаруженный символ-кандидат, как минимум один обнаруженный текст-кандидат и как минимум одну обнаруженную текстовую строку.
[0019] В некоторых случаях выполнение OCR части кадра также включает как минимум одно из: обнаружение в части кадра как минимум одной связной компоненты, не аналогичной связным компонентам, описанным в данных предыдущего кадра, обнаружение в части кадра как минимум одного символа-кандидата, не аналогичного символам-кандидатам, описанным в данных предыдущего кадра, обнаружение в части кадра как минимум одного текста-кандидата, не аналогичного текстам-кандидатам, описанным в данных предыдущего кадра и обнаружение в части кадра как минимум одной текстовой строки, не аналогичной текстовым строкам, описанным в данных предыдущего кадра.
[0020] В одном случае пример способа проведения OCR кадра видеоматериала включает проведение аппаратным процессором OCR первой части первого кадра для генерации данных первого кадра, при этом обработка OCR первой части первого кадра включает обнаружение как минимум одной связной компоненты в первой части первого кадра с целью добавления как минимум одного описания связной компоненты в данные первого кадра, обнаружение символа-кандидата в первой части первого кадра для добавления как минимум одного описания символа-кандидата в данные первого кадра, обнаружение текста-кандидата в первой части первого кадра для добавления описания как минимум одного текста-кандидата в данные первого кадра, и обнаружение строки текста (текстовой строки) в первой части первого кадра для добавления как минимум одного описания строки текста в данные первого кадра, а также обработка OCR с помощью аппаратного процессора второй части второго кадра, следующего по времени за первым кадром, где проведение OCR второй части второго кадра включает как минимум одну из следующих операций: обнаружение связной компоненты во второй части второго кадра с помощью данных первого кадра для обнаружения хотя бы одной связной компоненты, аналогичной как минимум одной связной компоненте, обнаруженной на первом кадре, обнаружение символов-кандидатов во второй части второго кадра с помощью данных первого кадра для обнаружения хотя бы одного символа-кандидата, аналогичного хотя бы одному символу-кандидату, обнаруженному на первом кадре, обнаружение текста-кандидата во второй части второго кадра с помощью данных первого кадра для обнаружения хотя бы одного текста-кандидата, аналогичного хотя бы одному тексту-кандидату, обнаруженному в первом кадре, и обнаружение строки текста во второй части второго кадра с помощью данных первого кадра для обнаружения хотя бы одной строки текста, аналогичной хотя бы одной строке текста, обнаруженной в первом кадре, где аналогичность включает хотя бы один признак из аналогичности положения в кадре, аналогичности ориентации в кадре и аналогичности содержимого.
[0021] В некоторых случаях очертание второй части второго кадра содержит очертание первой части первого кадра.
[0022] В некоторых случаях как минимум одно описание связной компоненты содержит расположение связной компоненты на первом кадре, ориентацию связной компоненты на первом кадре и форму связной компоненты.
[0023] В некоторых случаях как минимум одно описание символа-кандидата содержит положение символа-кандидата на первом кадре, ориентацию символа-кандидата на первом кадре и форму символа-кандидата.
[0024] В некоторых случаях как минимум одно описание текста-кандидата содержит положение текста-кандидата на первом кадре, ориентацию текста-кандидата на первом кадре и форму текста-кандидата.
[0025] В некоторых случаях как минимум одно описание строки текста содержит положение строки текста на первом кадре, ориентацию строки текста на первом кадре и содержание строки текста.
[0026] В некоторых случаях аппаратный процессор, используемый для OCR, который обрабатывает первую часть первого кадра, и аппаратный процессор, используемый для OCR второй части второго кадра, представляют собой разные процессоры.
[0027] В некоторых случаях аппаратный процессор, используемый для OCR, который обрабатывает первую часть первого кадра, и аппаратный процессор, используемый для OCR второй части второго кадра, представляют собой разные ядра одного многоядерного процессора.
[0028] Приведенный выше упрощенный обзор примеров предназначен для базового понимания настоящего изобретения. Этот обзор не является развернутым описанием всех предполагаемых примеров, а также не предназначен для обозначения ключевых или критических элементов всех примеров или описания области действия некоторых или всех примеров настоящего изобретения. Его единственное предназначение в том, чтобы представить в упрощенной форме один или более примеров в качестве предисловия к более подробному описанию изобретения, которое приведено ниже. Для завершения изложенного выше следует сказать, что один или более примеров настоящего изобретения включают особенности, описанные и особо подчеркнутые в формуле изобретения.
[0029] Техническим результатом описанного выше изобретения является оптимизация оптического распознавания символов (OCR) видеоматериалов. Для оптимизации оптического распознавания символов (OCR) изобретение использует дублируемость, присутствующую в большинстве реальных сценариев захвата видео. В частности, если как минимум часть текста с предыдущего видеокадра присутствует на текущем видеокадре, эту часть нет необходимости подвергать OCR повторно, вместо этого можно использовать результаты проведения OCR этого текста с предыдущего видеокадра или видеокадров. Таким образом, изобретение позволяет сократить время и число операций, необходим для выполнения распознавания символов (OCR) кадров видеоматериалов, содержащих повторяющуюся информацию.
Краткое описание чертежей
[0030] Прилагающиеся чертежи, которые включены в это описание изобретения и являются его частью, иллюстрируют один или более примеров к настоящему изобретению и совместно с подробным описанием служат для пояснения его принципов и реализации.
ФИГ. 1А иллюстрирует блок-схему примера системы для использования данных предыдущего кадра для OCR видеокадров из видеоматериалов в соответствии с одним примером.
ФИГ. 1В иллюстрирует блок-схему примера структуры данных для хранения данных видеокадров для проведения OCR видеокадров из видеоматериалов в соответствии с одним примером.
ФИГ. 2 иллюстрирует блок-схему примера способа использования данных предыдущего кадра для проведения OCR видеокадров из видеоматериалов в соответствии с одним примером.
ФИГ. 3 иллюстрирует блок-схему примера способа обнаружения связных компонент в соответствии с одним примером.
ФИГ. 4 иллюстрирует блок-схему примера способа обнаружения символа-кандидата в соответствии с одним примером.
ФИГ. 5 иллюстрирует блок-схему примера способа обнаружения текста-кандидата в соответствии с одним примером.
ФИГ. 6 иллюстрирует блок-схему примера способа обнаружения текстовой строки в соответствии с одним примером.
ФИГ. 7 иллюстрирует блок-схему примера способа использования данных предыдущего кадра для проведения OCR видеокадров из видеоматериалов в соответствии с одним примером.
ФИГ. 8 иллюстрирует пример компьютерной системы общего назначения, такой как персональный компьютер или сервер, которая может использоваться для реализации раскрываемых систем и способов использования данных предыдущего кадра для OCR кадров из видеоматериалов в соответствии с одним примером.
Подробное описание
[0031] Примеры в этом документе описаны в контексте системы, способа и программного продукта для компьютеров для проведения OCR видеокадров из видеоматериалов. Специалисты среднего уровня в данной области техники смогут осознать, что приведенное ниже описание является исключительно иллюстративным и не предназначено для каких-либо ограничений. Такие специалисты в данной области техники легко могут предложить другие примеры, сохраняющие преимущества настоящего изобретения. Ниже будут даны подробные ссылки на варианты реализации, показанные на прилагаемых чертежах. Одни и те же указатели ссылок, насколько это возможно, будут использоваться для всех чертежей и последующего описания, чтобы ссылаться на одинаковые или схожие элементы.
[0032] ФИГ. 1А и 1В демонстрируют пример системы 100 для использования данных предыдущего кадра для OCR видеокадров из видеоматериалов в соответствии с одним примером настоящего изобретения. Система 100 может быть реализована на устройстве пользователя, таком как мобильный телефон, настольный компьютер, персональный компьютер, цифровая видеокамера или устройство обработки данных другого типа. В одном из примеров, проиллюстрированном на ФИГ. 1А, система 100 может включать устройство видеозахвата 105, например, цифровую видеокамеру. Устройство видеозахвата 105 может включать как минимум оптику для видеосъемки, включая объектив, через который можно захватывать видео, и сенсор изображения для получения цифровых изображений через оптику камеры. Устройство видеозахвата 105 отправляет поток 101 несжатых необработанных цифровых изображений (например, видеокадры 102a-z) процессору 115 для выполнения OCR. В другом случае цифровое видео может храниться в памяти 135 (например, ОЗУ или флэш-памяти) системы 100 в виде сжатого видеофайла 103, такого как Flash, AVI, QuickTime, MPEG-4, Windows Media Video или в другом формате сжатого видео. Ниже приводятся примеры видеоматериалов, содержащих временную последовательность видеокадров.
[0033] В одном из примеров система 100 может использовать для проведения OCR видеоматериалов 101 или файлов 103 один процессор 115 (например, ЦП компьютера, процессор для обработки изображений, процессор для цифровой обработки сигналов, графический процессор и т.д.) или специализированную заказную интегральную схему (ASIC). В другом примере система 100 может использовать для проведения OCR видеоматериалов несколько параллельно работающих процессоров 115 или один многоядерный процессор 115 (например, Intel Core Duo®). Например, как будет более подробно описано далее в этом документе, проведение OCR видеокадров из видеоматериала может распределяться между несколькими параллельно работающими процессорами 115 или между разными ядрами одного многоядерного процессора 115.
[0034] Независимо от конкретной реализации процессор 115 настраивается для выполнения механизма оптического распознавания символов (OCR) 125. Механизм OCR 125 получает видеокадры из видеоматериалов, например, несжатый видеопоток 101, создаваемый устройством захвата видеоизображения 105 или сжатый видеофайл 103, сохраненный в памяти 135, и выполняет OCR текста, имеющегося в полученных кадрах видеоизображения. Обработка может включать обнаружение связных компонент, запись описания связных компонент, обнаружение символов-кандидатов, запись описания символов-кандидатов, обнаружение текстов-кандидатов, запись описания текстов-кандидатов, обнаружение строк текста, этапы описания строк текста и другие действия. Эти этапы будут подробно описаны ниже. Механизм 125 OCR может быть реализован в виде программного обеспечения, например, автономной программы для настольного компьютера или мобильного приложения, в виде веб-приложения, исполняемого с помощью веб-браузера, или в качестве фонового процесса (или программы), исполняемой программным обеспечением видеозахвата или воспроизведения видео пользовательского устройства. В одном из примеров механизм 125 OCR может содержать множество функциональных модулей, включая, но не ограничиваясь, модуль 110 обнаружения связных компонент, модуль 120 обнаружения символов-кандидатов, модуль 130 обнаружения текстов-кандидатов и модуль 140 обнаружения строк текста. В одном из примеров все функциональные модули механизма 125 OCR могут полностью выполняться процессором 115 пользовательского устройства. В другом примере некоторые модули могут выполняться процессором 115, а другие модули - удаленным сетевым сервером. Например, механизм OCR 125 может дополнительно содержать модуль перевода, который может выполнять перевод обнаруженного текста (строк текста) на различные языки. Поскольку перевод текста обычно является весьма ресурсоемким процессом, для экономии вычислительных ресурсов системы 100 он может выполняться удаленным сетевым сервером.
[0035] В одном из примеров данные о кадрах 107 сохраняются в память 135 в ходе обработки видеокадров, относящихся к одному видеоматериалу (например, потоку 101 видео или видеофайлу 103). Как показано на ФИГ. 1В, данные кадра 107 могут включать, помимо прочего, описание связной компоненты 145 для каждого обработанного кадра видео или группы последовательно идущих кадров, описания символов-кандидатов 155 для одного или нескольких связных компонент в каждом обработанном кадре видео или группе последовательно идущих кадров, описания текстов-кандидатов 165 для одного или нескольких символов-кандидатов в каждом обработанном кадре видео или группе последовательно идущих кадров, описания строк текста 175 для одного или нескольких текстов-кандидатов в каждом обработанном кадре видео или группе последовательно идущих кадров и необязательные переводы текстовых строк 185 для одной или более текстовых строк в каждом обработанном кадре видео или группе последовательно идущих кадров.
[0036] В одном из примеров модуль обнаружения связных компонент 110 может быть настроен на выполнение обнаружения связных компонент в получаемых кадрах видео. Обнаружение связных компонент основано на математических методах поиска в графических изображениях регионов, отличающихся по свойствам, например, яркости или цвету от областей, окружающих эти регионы. Связная компонента представляет собой регион цифрового изображения, такой, что некоторые свойства этого региона постоянны или изменяются в заданном диапазоне значений, все точки связной компоненты могут в определенном смысле считаться похожими. Если выражать интересующее нас свойство в виде функции положения в цифровом изображении, можно выделить два основных типа детекторов связных компонент: (i) дифференциальные методы, которые основаны на производных функций по положению и (ii) методы, основанные на локальных экстремумах, которые основаны на поиске локальных минимумов и максимумов функций.
[0037] В одном из примеров обнаружение связных компонент может выполняться для всего видеокадра 102 или только для части видеокадра. Например, сначала для обнаружения связных компонент может быть обработана часть видеокадра, ближайшая к центру изображения. Затем при наличии последующих видеокадров часть изображения, в которой были обнаружены связные компоненты и проводились дальнейшие действия по OCR, расширяется, так что текст в центре изображения, который наиболее интересен пользователю, распознается раньше, чем текст на периферии изображения.
[0038] Модуль обнаружения связных компонент 110 может использовать, например, алгоритмы, предоставленные IJBlob, библиотеки анализа связных компонент и анализа формы, описанные в статье Wagner, Т and Lipinksi, Н 2013 IJBlob: An ImageJ Library for Connected Component Analysis and Shape Analysis. Journal of Open Research Software 1:e6, DOI: http://dx.doi.org/10.5334/jors.ae. Общий подход к обнаружению связных компонент состоит в бинаризации, при которой серое или цветное изображение преобразуется в черно-белое, исходя из того, превышает ли значение изображения определенное граничное значение. Другой способ обнаружения связных компонент известен в профессиональных кругах как MSER, максимально стабильные экстремальные регионы.
[0039] После обнаружения связной компоненты его свойства и параметры или любой поднабор его свойств и параметров, например, положение связной компоненты на видеокадре, форма связной компоненты, ориентация связной компоненты, количество отверстий, центр тяжести, замкнутая область, зона выпуклой оболочки, периметр, периметр выпуклой оболочки, степень приближения к окружности, коэффициент сужения, диаметр Фере, минимальный диаметр Фере, длинная сторона минимального ограничивающего прямоугольника, короткая сторона минимального ограничивающего прямоугольника, соотношение сторон, отношение площадь/периметр, отношение тензоров моментов инерции, количество горизонтальных штрихов с кодированием RLE (кодирование длины серий), количество вертикальных штрихов с кодированием RLE, модуль разности средних значений серого внутри и снаружи региона связной компоненты, отклонение уровней серого внутри региона, отклонение уровней серого снаружи региона, HOG (гистограмма ориентированных градиентов), температура внешнего контура, фрактальная размерность прямоугольника, моменты региона, центральные моменты региона, собственное значение главной оси, собственное значение малой оси, удлинение, выпуклость, компактность, ориентация и внешний контур в виде цепного кода Фримана, могут быть записаны или сохранены в памяти системы 135, формируя описание связных компонент 145. Описание связных компонент 145 может быть сохранено для каждой обнаруженной связной компоненты; это описание добавляется к данным кадра 107 для видеокадра, в котором обнаружена связная компонента.
[0040] После обнаружения пятен в примере модуль обнаружения символов-кандидатов 120 обнаруживает связные компоненты, которые могут соответствовать символам естественного языка (то есть символы-кандидаты), и связные компоненты, которые не могут соответствовать символам естественного языка (или как минимум не похожи на отображение символов), например, используя такие алгоритмы, как классификатор AdaBoost и/или SVM (метод опорных векторов) и/или случайный лес. Следует отметить, что для символов разных языков могут использоваться разные алгоритмы обнаружения символов (например, для английского, русского, китайского, арабского языка и т.д.).
[0041] После обнаружения в связных компонентах видеокадра символов-кандидатов соответствующее описание связной компоненты 145 может быть помечено в системной памяти 135 для дальнейшего проведения OCR и/или оставшиеся описания связных компонент 145 могут быть помечены в системной памяти 135 как исключенные из дальнейшего проведения OCR, кроме того, к соответствующему описанию связной компоненты 145 и данным кадра 107, записанным или сохраненным в системной памяти 135, могут быть добавлены дополнительные данные, полученные для каждой связной компоненты при выполнении алгоритмов обнаружения символов-кандидатов. Эти пометки и дополнительные данные могут образовать описание 155 символа-кандидата для каждого символа-кандидата, добавленного к данным 107 кадра для видеокадра, на котором обнаружены связные компоненты.
[0042] В одном из примеров при выполнении обнаружения связных компонент на видеокадре 102b описания связных компонент 145, обнаруженных при поиске связных компонент на предыдущем видеокадре 102а (такие, как положение связной компоненты на видеокадре, его форма, ориентация связных компонент и т.д., как указано выше в этом документе) могут использоваться для обнаружения идентичных или похожих связных компонент на текущем видеокадре 102b. Предыдущий видеокадр может быть видеокадром, непосредственно предшествующим текущему видеокадру по времени, или любым предыдущим видеокадром. Например, если все связные компоненты, обнаруженные на предыдущем видеокадре 102а, сосредоточены в определенном регионе этого видеокадра, как минимум сначала обнаружение связных компонент будет производиться в этом же регионе текущего видеокадра 102b. В одном из примеров данные о перемещении кадра относительно снимаемой сцены, полученные, например, с помощью одного из алгоритмов нахождения движения, могут использоваться для обнаружения предполагаемого положения рассматриваемого региона текущего кадра на предыдущем кадре. Если связная компонента, найденная на текущем видеокадре 102b, имеет сильное сходство по положению, форме, ориентации и/или другим характеристикам и параметрам с связной компонентой на предыдущем видеокадре 102а, эти две связные компоненты на разных видеокадрах могут распознаваться как соответствующие одному и тому же объекту, который наблюдается устройством видеозахвата 105, например, одной и той же букве на поверхности. В этом случае часть последующей обработки связной компоненты на текущем видеокадре для получения некоторых данных этой связной компоненты может быть необязательна, потому что вместо них могут использоваться данные, сохраненные после получения их для этой связной компоненты на предыдущем видеокадре. Например, если связная компонента на предыдущем видеокадре была определена в качестве символа-кандидата, аналогичную связную компоненту на текущем видеокадре можно считать символом-кандидатом без выполнения алгоритмов обнаружения символа-кандидата.
[0043] После обнаружения на видеокадре нескольких символов-кандидатов в одном из примеров для группировки как минимум части символов-кандидатов в кластеры, соответствующие блокам текста, например, словам, предложениям, абзацам и т.д., может использоваться модуль обнаружения текста-кандидата 130, например, использующий алгоритм поиска минимального остовного дерева и/или алгоритм иерархической кластеризации (например, с одиночной связью). Обнаруженные кластеры символов-кандидатов соответствуют обнаруженным текстам-кандидатам.
[0044] При обнаружении текста-кандидата его характеристики и параметры или любой поднабор характеристик и параметров, например, положение на видеокадре, форма, ориентация и символы-кандидаты, образующие текст-кандидат, могут быть записаны или сохранены в системной памяти 135, образуя описание текста-кандидата 165. Описание текста-кандидата 165 для каждого обнаруженного текста-кандидата может сохраняться, эти описания добавляются к данным кадра 107 для видеокадра, в котором были обнаружены тексты-кандидаты.
[0045] После обнаружения текстов-кандидатов, в одном из примеров модуль обнаружения текста 140 выполняет алгоритмы поиска текста в текстах-кандидатах. Эти алгоритмы принимают на вход текст-кандидат (т.е. кластер выбранных связных компонент) и возвращают текстовую строку, которую представляет этот кластер связных компонент, (результат распознавания) и информацию о расположении этой строки, например, ее размер, длину и ширину, ее ориентацию, ее охватывающий прямоугольник и т.д.
[0046] При выполнении обнаружения текстов-кандидатов в видеокадре для обнаружения текстов-кандидатов на текущем видеокадре могут использоваться тексты-кандидаты, обнаруженные на предыдущем видеокадре (например, положение кластеров символов-кандидатов на видеокадре, их форма и ориентация символов-кандидатов и т.д., как указано выше в этом документе). Например, если все тексты-кандидаты, обнаруженные на предыдущем видеокадре 102а, расположены в определенном регионе видеокадра, как минимум первичное обнаружение текстов-кандидатов может проводиться только для символов-кандидатов в этом регионе текущего видеокадра 102b. Если обнаруженный кластер символов-кандидатов (то есть текст-кандидат) на текущем видеокадре аналогичен по положению, форме, ориентации и другим характеристикам и параметрам обнаруженному кластеру символов-кандидатов (то есть тексту-кандидату) на предыдущем видеокадре, эти два текста-кандидата на разных видеокадрах могут считаться представляющими один объект, например, ту же группу слов на поверхности, что и текст-кандидат из предыдущего видеокадра. В таких случаях последующая обработка текста-кандидата из текущего видеокадра для получения некоторых данных, относящихся к этому тексту-кандидату, может не понадобиться, так как вместо них можно будет использовать данные, полученные и сохраненные для текста-кандидата из предыдущего видеокадра. Например, если текст-кандидат из предыдущего видеокадра был определен как представляющий некоторую строку текста, и аналогичный текст-кандидат присутствует на текущем видеокадре, в данные текущего кадра можно добавить описание строки текста, основанное на описании строки текста для текста-кандидата из предыдущего кадра, не выполняя алгоритмы обнаружения строки текста.
[0047] После обнаружения строки текста ее параметры, такие как положение на видеокадре, размер, длина и ширина, ориентация и содержание записываются или сохраняются в системной памяти 115, образуя описание строки текста 175. Описание строки текста 175 может сохраняться для любой обнаруженной строки текста, эти описания добавляются к данным кадра 107 для видеокадра, на котором были обнаружены тексты-кандидаты. В одном из примеров описание текстовой строки можно использовать для перевода обнаруженного текста на другой язык в интерактивном режиме с заменой текста на кадре его переводом на другой язык. В этом случае перевод строки текста 185 также может быть сохранен в данных кадра 107 и использован для замены аналогичного текста на последующих кадрах без необходимости повторного выполнения перевода текста для каждого последующего кадра.
[0048] В одном из примеров выполнение OCR видеокадров видеоматериала может распределяться между несколькими процессорами 115, работающими параллельно, или между несколькими ядрами одного многоядерного процессора 115. Каждый последующий видеокадр, обрабатываемый системой 100, может обрабатываться любым из модулей 110, 120, 130 и 140, выполняемых на одном процессоре 115, или на процессоре, который отличается от процессора, использованного для обработки предыдущего видеокадра, или на другом ядре процессора 115, работающем параллельно для повышения эффективности. Например, пока один процессор 115