СИСТЕМА ОБРАБОТКИ ИЗОБРАЖЕНИЯ

Полезная модель относится к области обработки данных, а именно к системам обработки изображения, и может быть применено для формирования, хранения и загрузки битового потока закодированного изображения в устройствах обработки видео изображения, предназначенных для сжатия изображения, видеоаналитики, фильтрации изображения, построения 30 моделей по исходному изображению и т.д.
В настоящее время в области цифровой обработки видео и фотоизображений высокой четкости (Full HD, Ultra HD и т.д.) к модулю обработки изображения предъявляется требование высокой пропускной способности при передаче данных между внешней памятью, источником изображения и обработчиком изображения, а также требование локализации всего процесса обработки изображения в рамках одной системы на кристалле. Существующие типы памяти (такие как DDR2, DDR3) позволяют получить пропускную способность шины передачи данных до 8 ГБ/с (теоретическая максимальная пропускная способность). Размеры несжатого кадра изображения в зависимости от разрешения и разрядности пикселя могут варьироваться в пределах от 8 МБ до 240 МБ. Таким образом, теоретически возможное количество кадров в секунду снятое сенсором или видеокамерой высокой и сверхвысокой четкости может быть от 100 до 30. Эти оценки приведены только для процесса сохранения исходного изображения во внешней памяти, не учитывая его обработку (сжатие, видеоаналитика, фильтрация и т.д.). То есть, при необходимости обработки исходного изображения, каждый последовательный алгоритм обработки уменьшает число возможных кадров в секунду в 2-3 раза. В контексте этой проблемы становиться актуальным уменьшение размера обрабатываемого изображения и распараллеливание выполнения алгоритма обработки.
Наиболее близкими к заявленной полезной модели является система обработки изображения (заявка US 20130182966) посредством размещения в памяти закодированного с помощью JPEG изображения в виде блоков с целью оптимизации обращений в память со стороны обработчиков изображения (DSP, Image Processor и т.д.) и организации доступа к произвольной части закодированного изображения. Данная система выбрана в качестве прототипа заявленной полезной модели.
Недостатком системы прототипа является то, что в ней не ясно, каким образом организован доступ к памяти обработчиков изображения.
Задачей заявленной полезной модели является создание системы обработки изображения, которая оптимизирует использование внешней памяти и увеличивает пропускную способность внешней памяти электронно-вычислительной системы на кристалле, за счет сжатия изображения и сохранения сжатого изображения во внешней памяти таким образом, который позволяет минимизировать обращения обработчика изображения к внешней памяти и обеспечивает доступ к произвольной части изображения во внешней.
Поставленная задача решена путем создания системы обработки изображения, содержащего кодер JPEG, который соединен с источником исходного изображения и с внешней памятью, декодер JPEG, который соединен с кэшем декодированных данных, который соединен с обработчиком изображения и с кэшем закодированных данных, который соединен с внешней памятью, с декодером JPEG и с кэшем длин микроблоков, который соединен с внешней памятью, причем на этапе сжатия изображения кодер JPEG выполнен с возможностью получения по частям исходного изображения, с возможностью разбиения исходного изображения на микроблоки, каждый из которых состоит из заданного числа блоков MCU, с возможностью определения для каждого микроблока, исходя из его максимального размера, начального адреса и размера области расположения сжатого микроблока и области расположения информации о длине сжатого микроблока во внешней памяти, а также с возможностью сжатия микроблоков по стандарту JPEG, при этом формирования выходного битового потока сжатого изображения, с возможностью определения его длины и с возможностью сохранения выходного битового потока сжатого изображения в определенные области во внешней памяти, при этом сохранения в соседние области во внешней памяти сжатых микроблоков и информации об их длинах одного макроблока; на этапе загрузки сжатого изображения обработчик изображения выполнен с возможностью формирования запроса данных в кэше декодированных данных, кэша декодированных данных выполнен с возможностью определения наличия в нем запрашиваемых данных, и при наличии запрашиваемых данных кэш декодированных данных выполнен с возможностью формирования ответа обработчику изображения и передачи в него запрашиваемых данных, а при отсутствии запрашиваемых данных кэш декодированных данных выполнен с возможностью формирования запроса данных в кэш закодированных данных, который выполнен с возможностью определения наличия в нем запрашиваемых данных, при наличии запрашиваемых данных кэш закодированных данных выполнен с возможностью направления закодированных запрашиваемых данных в декодер JPEG, который выполнен с возможностью декодирования закодированных запрашиваемых данных и передачи декодированных запрашиваемых данных в кэш декодированных данных, который выполнен с возможностью формирования ответа обработчику изображения и передачи в него запрашиваемых данных, при отсутствии запрашиваемых данных кэш закодированных данных выполнен с возможностью формирования запроса данных в кэш длин микроблоков, который выполнен с возможностью определения наличия в нем длин запрашиваемых микроблоков, при наличии длин запрашиваемых микроблоков кэш длин микроблоков выполнен с возможностью направления данных длин запрашиваемых микроблоков в кэш закодированных, который выполнен с возможностью формирования запроса данных во внешнюю память по определенным адресам, с возможностью загрузки закодированных запрашиваемых данных из внешней памяти и направления в декодер JPEG, который выполнен с возможностью декодирования закодированных запрашиваемых данных и передачи декодированных запрашиваемых данных в кэш декодированных данных, который выполнен с возможностью формирования ответа обработчику изображения и передачи в него запрашиваемых данных, при отсутствии длин запрашиваемых микроблоков кэш длин микроблоков выполнен с возможностью формирования запроса длин микроблоков во внешнюю память по заданным адресам, с возможностью загрузки из внешней памяти запрошенных длин микроблоков и передачи их в кэш закодированных данных, который выполнен с возможностью формирования запроса данных во внешнюю память по определенным адресам, с возможностью загрузки из внешней памяти закодированных запрашиваемых данных и направления их в декодер JPEG, который выполнен с возможностью декодирования закодированных запрашиваемых данных и передачи декодированных запрашиваемых данных в кэш декодированных данных, который выполнен с возможностью формирования ответа обработчику изображения и передачи в него запрашиваемых данных.
В предпочтительном варианте осуществления системы источником исходного изображения является CMOS-сенсор или канал связи.
В предпочтительном варианте осуществления системы кодер JPEG выполнен с возможностью разбиения исходного изображения на микроблоки, каждый из которых состоит из заданного числа блоков MCU, число которых для каждого микроблока предварительно задано пользователем исходя из необходимой ширины макроблока.
В предпочтительном варианте осуществления системы кодер JPEG выполнен с возможностью сохранения выходного битового потока сжатого изображения в соседние ячейки во внешней памяти.
В предпочтительном варианте осуществления системы обработчик изображения выполнен в виде графического контроллера (GPU).
Для лучшего понимания заявленной полезной модели далее приводится ее подробное описание с соответствующими графическими материалами.
Фиг. 1. Схема системы обработки изображения, выполненная согласно полезной модели.
Элементы:
1 - кодер JPEG;
2 - декодер JPEG;
3 - кэш декодированных данных;
4 - кэш закодированных данных;
5 - кэш длин микроблоков;
6 - обработчик изображения;
7 - внешняя память;
8 - источник изображения.
Фиг. 2. Схема расположения данных сжатого изображения во внешней памяти, выполненная согласно полезной модели.
Элементы:
9 - блок MCU;
10 - микроблок;
11 - макроблок.
Фиг. 3. Схема электронно-вычислительной системы, в которой может применяться заявленная система обработки изображения.
Элементы: управляющий процессор (CPU), контроллер внешней памяти (DDR), графический контроллер (GPU), контроллер первичной обработки изображения (IPP), контроллер вывода изображения (LCD), обработчики изображения (DSP, Video Codec, Intelligent Video Processor).
В общем виде работу заявленной системы обработки изображения можно описать следующим образом (Фиг. 1, 2). Исходное изображение, поступающее из источника изображения (например, CMOS-сенсора, канала связи и т.д.) разбивают на микроблоки 10, состоящие из блоков 9 MCU (minimum coding unit - минимально кодированная единица). Блок 9 MCU является наименьшей областью изображения, подвергаемой сжатию по стандарту JPEG (обычно 8×8 или 16×16). Количество блоков 9 MCU задается пользователем и зависит от необходимой ширины макроблока 11. Микроблоки 10 сжимают по стандарту JPEG. До сжатия размер сжатого микроблока 10 предсказать невозможно. По этой причине до сжатия под каждый сжатый микроблок 10 во внешней памяти 7 выделяют область фиксированного размера, которая определяется максимально возможным размером микроблока. Сжатые микроблоки 10 сохраняют во внешней памяти 7, при этом группируют таким образом, что микроблоки 10 одного макроблока 11 располагаются в соседних блоках внешней памяти 7. По окончании сжатия последнего блока 9 MCU каждого микроблока 10, в битовый поток данных изображения вставляют маркер RST (restart), и сбрасывают предсказанную DC компоненту для сжатия следующего микроблока 10. Для оптимизации обращений к внешней памяти 7 при выгрузке сжатого изображения посредством обработчика 6 изображения, во внешней памяти 7 выделяют также область под хранение информации о длинах битовых потоков сжатых микроблоков 10, определенных по результатам сжатия каждого микроблока 10. Как и сжатые микроблоки 10, информация об их длинах сгруппирована по макроблокам 11. Для различных применений заявленной системы возможны разные способы группировки закодированных данных и их длин во внешней памяти 7. Пользователь может задать зону перекрытия макроблоков 11. Размер зоны перекрытия измеряется в количестве блоков 9 MCU или пикселях. В случае перекрытия производят переформирование размеров микроблока 10 и макроблока 11 в соответствии с заданными значениями, и информацию, попадающую в зону перекрытия макроблоков 11, дублируют во внешней памяти 7 в области закодированных данных и в области длин закодированных данных. Возможны и другие способы формирования зоны перекрытия.
Таким образом, чтение и декодирование произвольного макроблока 11 сжатого изображения может осуществляться без загрузки и декодирования предыдущих микроблоков 10 (что является ограничением при работе со сжатыми по стандарту JPEG изображениями), а также без загрузки лишних данных, расположенных во внешней памяти 7 (так как во внешней памяти расположены области длин сжатых микроблоков 10).
Рассмотрим более подробно работу заявленной системы обработки изображения (Фиг. 1-2).
Система обработки изображения содержит кодер 1 JPEG, который соединен с источником 8 исходного изображения и с внешней памятью 7, декодер 2 JPEG, который соединен с кэшем 3 декодированных данных, который соединен с обработчиком 6 изображения и с кэшем 4 закодированных данных, который соединен с внешней памятью 7, с декодером 2 JPEG и с кэшем 5 длин микроблоков, который соединен с внешней памятью 7. Обработчик 6 изображения может быть выполнен в виде графического контроллера (GPU).
Исходное изображение поступает на вход кодера 1 JPEG по частям (в зависимости от реализации кодера 1 JPEG части изображения представляют собой линии или блоки). В кодере 1 JPEG реализован двухбуферный режим, который позволяет производить сжатие и сохранение сжатого изображения и дополнительной информации во внешней памяти 7 одновременно с приемом следующей части изображения.
Посредством кодера 1 JPEG выполняют следующие операции. Разбивают исходное изображение на микроблоки 10, состоящие из блоков 9 MCU, при этом количество блоков 9 MCU в одном микроблоке 10 задается (программируется) пользователем в зависимости от необходимой ширины макроблока 11. Определяют для каждого микроблока 10, исходя из его максимального размера, начальный адрес и размер области расположения сжатого микроблока 10 и области расположения информации о длине сжатого микроблока 10 во внешней памяти 7. Размер в битах области, выделяемой во внешней памяти под один микроблок 10 рассчитывают по следующей формуле:
M=k∗p∗n;
где k - количество пикселей в блоке MCU, p - разрядность одного пикселя, n - количество блоков MCU в одном микроблоке.
Для минимизации аппаратных ресурсов, размер области, выделяемой во внешней памяти 7, округляют до 32-разрядных слов в большую сторону.
Размер области, выделяемой во внешней памяти 7 под информацию о длине одного сжатого микроблока 10, выбирают в зависимости от размера микроблока 10. Для унификации и упрощения системы декодирования и чтения можно выбрать следующие размеры: 16 бит (полуслово) или 32 бита (слово) для длины одного микроблока. Общий размер в битах области, выделяемой во внешней памяти 7 под все длины сжатых микроблоков 10, вычисляют по следующей формуле:
;
i
i
w
l
где W - ширина изображения в блоке MCU, H - высота изображения в блоке MCU, N - количество блоков MCU в микроблоке, W - разрядность длины сжатого микроблока.
Размер области, выделяемой во внешней памяти 7 под информацию о длине сжатых микроблоков 10, в общем случае не превышает 5% от размера всего сжатого изображения. Микроблоки 10 сохраняют во внешней памяти 7 так, что микроблоки 10 одного макроблока 11 располагаются в соседних областях памяти 7. Таким образом происходит соединение нескольких микроблоков 10 в один макроблок 11. Начальные адреса микроблоков 10 вычисляют из координат макроблока 11 и номера микроблока 10 по вертикали.
Затем последовательно сжимают микроблоки 10 по стандарту сжатия JPEG. Результатом сжатия являются сжатое изображение и его длина в битах (или байтах, полусловах, словах в зависимости от потребности пользователя). Сжатые микроблоки 10 размещают в определенной области во внешней памяти 7.
Декодирование сжатого изображения выполняют следующим образом. Для осуществления чтения и декодирования сжатого изображения обработчик 6 изображения запрашивает у кэша 3 декодированных данных пиксель изображения с координатами X, Y или номер макроблока 11, необходимого для обработки. Кэш 3 декодированных данных, обработав запрос от обработчика изображения, выставляет признак попадания в кэш 3 декодированных данных. Признак попадания в кэш 3 декодированных данных сигнализирует о том, имеется в кэше 3 декодированных данных запрашиваемый пиксель или макроблок 11 или нет.
Если попадание пикселя или макроблока в кэш 3 декодированных данных произошло, тогда кэш 3 декодированных данных выдает пиксель или макроблок 11 обработчику 6 изображения. Если произошел промах (в кэше 3 декодированных данных не оказалось необходимого макроблока 11 или пикселя), тогда кэш 3 декодированных данных выставляет обработчику 6 изображения признак промаха и формирует запрос к кэшу 4 закодированных данных.
Если попадание пикселя или сжатого макроблока 11 в кэш 4 закодированных данных произошло, тогда кэш 4 закодированных данных выдает сжатый макроблок 11 декодеру 2 JPEG, после чего декодированные декодером 2 JPEG данные (пиксель или макроблок) поступают на вход кэша 3 декодированных данных. Если произошел промах (в кэше 4 закодированных данных не оказалось необходимого сжатого макроблока 11), тогда кэш 4 закодированных данных выставляет кэшу 3 декодированных данных признак промаха и формирует запрос к кэшу 5 длин сжатых микроблоков.
Если попадание необходимых длин микроблоков 10 в кэш 5 длин сжатых микроблоков произошло, тогда кэш 5 длин сжатых микроблоков выдает кэшу 4 закодированных данных все длины, необходимые для загрузки микроблоков 10, составляющих макроблок 11. После этого кэш 4 закодированных данных формирует запросы во внешнюю память 7 для загрузки сжатых микроблоков 10, которые после загрузки отправляет в декодер 2 JPEG и декодированные декодером 2 JPEG данные поступают на вход кэша 3 декодированных данных, который формирует ответ для обработчика 6 изображения. Если произошел промах (в кэше 5 длин сжатых микроблоков не оказалось необходимых длин микроблоков 10), тогда кэш 5 длин сжатых микроблоков выставляет кэшу 4 закодированных данных признак промаха и формирует запрос к внешней памяти 7 к области длин сжатых микроблоков. Затем кэш 5 длин сжатых микроблоков производит загрузку длин сжатых микроблоков 10 одного или нескольких макроблоков 11 из внешней памяти 7. После этого кэш 5 длин сжатых микроблоков передает длины сжатых микроблоков в кэш 4 закодированных данных. Посредством кэша 4 закодированных данных формируют запросы во внешнюю память 7 для загрузки сжатых микроблоков 10. После загрузки в кэш 4 закодированных данных сжатые микроблоки 10 отправляют в декодер 2 JPEG, после обработки в котором декодированные данные поступают на вход кэша 3 декодированных данных, который формирует ответ для обработчика 6 изображения.
После обработки изображения обработчиком 6 изображения, оно может быть сжато аналогичным способом и размещено во внешней памяти 7 для последующих операций над ним.
Процесс функционирования заявленной системы обработки изображения можно разбить на два этапа, этап сжатия изображения и этап загрузки сжатого изображения.
Сжатие изображения выполняют посредством кодера 1 JPEG, при этом сохраняют сжатое изображение во внешней памяти 7 таким образом, который позволяет минимизировать обращения к внешней памяти 7 со стороны обработчика 6 изображения (процессоров обработки изображения) и обеспечивает доступ к произвольной части изображения во внешней памяти 7: поскольку размер сжатого изображения определить заранее невозможно, то посредством кодера 1 JPEG генерируют список длин микроблоков 10 изображения и сохраняют их во внешней памяти 7 в порядке следования в макроблоке 11.
Загрузку изображения выполняют путем загрузки из внешней памяти 7 сжатых макроблоков изображения, их декодирования и передачи обработчику 6 изображения. При этом обеспечивают оптимизацию обращений во внешнюю память 7 за счет загрузки из нее только полезной информации: загрузка и декодирование произвольного макроблока 11 сжатого изображения может осуществляться без загрузки и декодирования предыдущих микроблоков 11 (что является ограничением при работе со сжатыми по стандарту JPEG изображениями), а также без загрузки лишних данных, расположенных во внешней памяти 7 (так как во внешней памяти 7 расположены области длин сжатых микроблоков 11). Используемый метод загрузки предполагает кэширование длин микроблоков, сжатых образов микроблоков и декодированных данных, что позволяет сэкономить время доступа к исходному изображению при повторном запросе обработчика 6 изображения.
На Фиг. 3 представлена схема электронно-вычислительной системы, в которой могут применяться заявленная система обработки изображения и которая содержит следующие элементы: управляющий процессор (CPU), контроллер внешней памяти (DDR), графический контроллер (GPU), контроллер первичной обработки изображения (IPP), контроллер вывода изображения (LCD), обработчики изображения (DSP, Video Codec, Intelligent Video Processor).
Заявленные система обработки изображения обладает следующими преимуществами: предоставляет произвольный доступ к изображению по MCU (или объединенным блокам); в процессе работы не осуществляет подкачки лишних данных; сокращает количество обращений к памяти, при извлечении из нее изображения, за счет кэширования; создает динамическую конфигурацию памяти путем объединения нескольких MCU в один блок, за счет чего уменьшает количество и длину макроблоков.
Хотя описанный выше вариант выполнения полезной модели был изложен с целью иллюстрации настоящей полезной модели, специалистам ясно, что возможны разные модификации, добавления и замены, не выходящие из объема и смысла настоящей полезной модели, раскрытого в прилагаемой формуле полезной модели.