Изобретение касается электронного устройства, которое включает в себя средство обработки данных и память для выполнения обработки данных изображения на основе блоков, в которых данные изображения размещены для того, чтобы быть закодированными в модульные блоки, размещенные предварительно установленным способом, когда область обработки, согласно параметрам настройки, может быть сформирована из данных одного или более блоков и при обработке которого данные, относящиеся к области обработки, размещаются в памяти, так же как и данные предварительно установленным способом, в соседних для области обработки областях для того, чтобы обрабатывать краевые области для области обработки. Кроме того, изобретение также касается способа и программного продукта.
Обработка изобразительной информации большого размера и/или с высоким разрешением увеличивает требуемый объем и конфигурацию памяти электронных устройств из-за огромного количества вовлеченных данных изображения. Как известно, основанный на блоках способ обработки изображения использовался в попытке решить проблемы, связанные с требованием памяти большой емкости. Некоторые известные примеры стандартов кодирования изображения, которые обрабатывают изображение от блока к блоку, включают в себя, например, JPEG (Объединенную группу экспертов по машинной обработке фотографических изображений), MPEG (экспертную группу по кинематографии), H.26x, и т.д. Другие кодеры-декодеры DCT (дискретного косинусного преобразования) могут также быть включены в эту группу. В основанной на блоках обработке размер модульного блока обычно составляет 8×8 или 16×16 пикселей. Блок 16 на 16 пикселей называют, в общем случае, макроблоком (MB).
Фиг.1 показывает структуру кадра I изображения при применении макроблочного подхода. Здесь каждая макроблочная строка MB_row, обрабатываемая в любой момент, состоит из одной или двух горизонтальных строк. Строка включает в себя блоки B для полной ширины кадра I изображения. Макроблоки MB могут иметь пиксельный размер, например 16×16.
Фиг.2 показывает некоторые примеры предшествующего уровня техники для течения данных (то есть потока), происходящего через канал передачи данных, который может также быть выполнен, используя блоки. Цепочка 10.1 в верхней части Фиг.2 показывает режим обработки на основе изображения. Цепочка 10.2' в нижней части показывает основанную на блоках обработку. В основанной на блоках обработке 10.2' принципом является выполнение декодирования, постобработки, других операций повышения качества изображения и масштабирование на одном макроблоке MB одновременно. Это означает, что для режима 10.2' основанной на блоках обработки, среди других вещей, необходимо осуществить обработку в реальном времени и для того, чтобы сократить потребление памяти, более чем рекомендовано, например, для режима на основе изображения.
Чтобы изменять точку изображения (то есть пиксель), многие алгоритмы 14 обработки изображений требует некоторую информацию относительно соседних пикселей, смежных с интересующим местоположением изображения. На основании этого, чтобы обработать определенную макроблочную область, алгоритмы 14 обработки изображения также требуют доступа к некоторым из макроблоков, окружающих рассматриваемое местоположение изображения. Фиг.3 показывает ситуации, касающиеся этого.
Однако существенные проблемы в условиях использования памяти касаются такой обработки, выполненной согласно, например, матрицеподобному, двумерному, блочно-модульному делению. Если области EA1, EA2, EA4, которые окружают макроблочную область PA, обрабатываются и были выбраны этим способом, принимается во внимание значительный объем памяти, требуемой в устройстве 10.2'.
Некоторыми примерами таких алгоритмов являются алгоритмы повышения качества изображения. Из них фильтры распаковки блоков, например, требуют информации об окружении точки пикселя, обрабатываемого в это время, для того чтобы быть способным обнаружить и удалять артефакты, вызванные разделением на блоки. Другой группой алгоритмов, применяющих окрестности пикселя, являются алгоритмы масштабирования изображения, которые применяют различные методы интерполяции.
Во всех основанных на блоках решениях, согласно предшествующей области техники, была практика обрабатывать в рабочей памяти область данных изображения, которая является более обширной, чем фактическая обрабатываемая макроблочная область. Это было также необходимо для того, чтобы успешно обрабатывать краевые области макроблочной области, находящиеся в изображении, обрабатываемом каждый раз. Огромное количество данных изображения делает из этого проблему.
Согласно первому возможному решению полное изображение должно быть обработано один раз в рабочей памяти. Однако это нельзя рекомендовать из условия использования памяти, из-за огромного количества данных изображения.
Фиг.3 показывает пример области, которую требуется обработать для обработки области PA размера одного модульного блока согласно предшествующей области техники (PA = макроблок N на строке макроблоков M). Таким образом, правильная законченная обработка соответствующего макроблока (N, M) также требует информации пикселей для блоков MBPx, MBNx (разрезанная область), окружающих обрабатываемую блочную область PA. В соответствии с этим способом определения области требуется информация даже для блока N+1 следующей строки M+1 блоков (=MBN4). Блок MBN4 является теперь конечным блоком в структуре единичной матрицы, который является соседом фактической блочной области PA, обрабатываемой в данное время (разрезанная поперек область).
Упомянутое выше означает, что все блоки, следующие за макроблоком (N, M) в последовательности обработки в данный момент времени должны всегда декодироваться, до конечного соседнего блока N+1, M+1 (=MBN4). Одним из способов выполнения является декодирование сначала строки М макроблоков, соответствующей уместной обрабатываемой области, до ее конца, то есть продолжение декодирования к правому краю кадра I изображения. Следующей, в свою очередь, является следующая строка M+1, от которой декодирование продолжается вправо, начиная с левого края кадра I изображения. Декодирование продолжается вправо к блоку N+1 строки M+1 (=MBN4). MBN4, таким образом, является конечным блоком, который является непосредственно смежным с областью PA, обрабатываемой в этот момент времени.
Как можно предположить, процедура, описанная выше, требует большой емкости памяти в устройстве, тем более что в зависимости от режима обработки часто требуется обработать только несколько пиксельных строк от соседних блоков MBP1-MBP3, MBP, MBN1-MBN4 для обработки краевой области для области PA. Данные пикселей края ближайших соседних блоков могут также быть представлены в памяти, например одна макроблочная строка за раз. В этом случае, при перемещении от одного обрабатываемого блока к следующему, нет никакой потребности всегда извлекать (декодировать) одни и те же краевые данные. Однако, также и в этом случае, потребление памяти остается существенно тем же самым.
Чтобы уменьшить потребление памяти, отправная точка в случае, описанном выше, согласно предшествующему уровню техники должна обрабатывать за один раз только часть области изображения. Вообще, способ, используемый при этом, является также обработкой, основанной на макроблочной строке. При этом декодирование, чтение рабочей памяти и обработка выполняются на единственной блочной строке в один момент времени. Кроме того, малое количество памяти на дополнительные строки требуется для обработки границ блочных строк. Со ссылкой к упомянутому выше описанию требуется, однако, декодирование блоков, которые ожидаются для дальнейшей обработки. Данные соседних пикселей предыдущих и последующих блочных строк сохраняются в этих дополнительных блоках строк памяти.
Общий подход состоял в сохранении информации предварительно декодированных и обработанных блоков в некоторой временной рабочей памяти и использование, позднее, этой информации в более поздней обработке. Обычно это означает, что есть потребность хранить данные изображения нескольких горизонтальных прочитанных пиксельных строк. Однако данные блоков, следующих за областью, обрабатываемой в настоящее время, которые необходимы для того, чтобы иметь дело с краями обрабатываемой области, существенно увеличивают требуемые объемы памяти для процедуры, основанной на блоках.
Данное изобретение предназначено для создания способа нового типа для основанной на блоках обработки цифровых данных изображения, посредством которого края обрабатываемой области могут также быть обработаны, используя существенно меньшую требуемую память, чем в решениях согласно предшествующему уровню техники. Дополнительно, изобретение также предназначено для создания электронного устройства нового типа, в котором способ, в соответствии с изобретением, может быть применен с разумными требованиями к памяти при, однако, обеспечении соответствующей обработки данных. Характерные особенности электронного устройства, в соответствии с изобретением, заявлены в пункте 1 приложенной формулы изобретения, в то время как характерные особенности способа, применимого к этому, заявлены в пункте 9 приложенной формулы изобретения. Кроме того, изобретение также касается программного продукта, характерные особенности которого заявлены в пункте 17 приложенной формулы изобретения.
Электронное устройство, в соответствии с изобретением, включает в себя средство обработки данных и память для выполнения выбранных операций по обработке на данных изображения на основе блоков. Данные изображения размещены для того, чтобы быть закодированными в модульные блоки, размещенные предварительно установленным способом. Область обработки, согласно параметрам настройки, может быть сформирована из кодированных данных одного или более модульных блоков. Для обработки память устройства содержит данные относительно области обработки. Кроме того, память содержит данные об окружении области обработки, определенной способом настройки, для обработки краевых областей области обработки. В изобретении часть области обработки размещена для того, чтобы быть сформированной из одного или нескольких модульных блоков, которые были предварительно кодированы и, возможно, уже по меньшей мере частично обработаны. Использование такого выбора позволяет избежать или, по меньшей мере, уменьшить ненужное предшествующее кодирование модульных блоков, приходящих после обрабатываемой области, что, как известно, требует большого объема памяти в устройстве.
Дополнительно, в способе, в соответствии с изобретением, для основанной на блоках обработки данных изображения данные изображения кодируются в модульные блоки установленным способом. Область обработки, согласно параметрам настройки, может быть сформирована из кодированных данных одного или более модульных блоков для обработки в памяти, размещая данные, относящиеся к области обработки. Кроме того, данные окружения для области обработки размещаются в памяти предварительно установленным способом для того, чтобы обработать краевые области области обработки. В способе часть области обработки формируется из одного или более модульных блоков, которые были предварительно кодированы и, по меньшей мере частично, уже были обработаны.
Кроме того, программный продукт, в соответствии с изобретением, для основанной на блоках обработки данных изображения, к которому изобретение также относится, включает в себя код для кодирования данных изображения установленным способом в модульные блоки, размещенные в виде матрицы. Дополнительно, программный продукт включает в себя код для формирования области обработки в виде набора из данных одного или более модульных блоков и, кроме того, код для формирования данных окружения для области обработки для использования при обработке краевых областей области обработки. Программный продукт также включает в себя код, посредством которого часть области обработки размещается для формирования из одного или более модульных блоков, которые были предварительно закодированы, и возможно, по меньшей мере частично, уже были обработаны.
В соответствии с изобретением кодирование может быть, например, декодированием или закодированием.
Согласно первому варианту воплощения предварительно закодированные и, возможно, уже по меньшей мере частично обработанные модульные блоки могут быть выбраны несколькими различными способами. Они могут быть выбраны, например, только из блочно-модульной строки, которая была закодирована и, возможно, уже частично обработана, перед обработкой области обработки. В дополнение к вышеупомянотому, эти модульные блоки могут также быть выбраны из столбца модульных блоков, который был закодирован и, возможно, уже частично обработан перед обработкой области обработки.
Изобретение допускает эффективную по памяти, основанную на блоках модель обработки цифровых данных изображения или видеоданных. Изобретение особенно может быть использовано в приложениях, в которых обрабатываются потоки данных изображения или видеоданных. Модель, в соответствии с изобретением, имеет очень общую природу. Оно может быть применено к блоку или изображению вообще любого размера.
Использование изобретения имеет существенные преимущества перед предшествующим уровнем техники. Изобретение требует только любой предварительной обработки блоков/макроблоков кадра изображения, находящегося в процессе обработки в один момент времени, но вместо этого используют данные, закодированные вместе с обработкой предыдущих областей. Обрабатываемая область может быть закодирована из потока данных и может быть обработана непосредственно выбранным способом и затем сохранена для более позднего использования. Некоторыми примерами этих процедур обработки является повышение качества изображения или масштабирование и возможные их комбинации. Модель обработки, в соответствии с изобретением, является особенно подходящей для приложений, в которых применяются потоки данных.
Способ имеет удивительно малые требования по памяти. Например, в рабочей памяти в любой момент требуется несколько строк памяти для соседних блоков предыдущей области обработки, также как и малый объем памяти для обработки фактической области обработки.
Другие характерные особенности электронного устройства, способа и программного продукта, в соответствии с изобретением, очевидны из приложенной формулы изобретения, в то время как дополнительные преимущества, которые могут быть достигнуты, перечислены в описательной части.
Ниже изобретение, которое не ограничено вариантами воплощения, раскрытым ниже, исследуется более подробно при обращении к приложенным чертежам, в которых
Фиг.1 показывает один пример основанного на блоках деления данных изображения,
Фиг.2 показывает некоторые примеры конфигурации цепочек обработки данных изображения, согласно предшествующему уровню техники,
Фиг.3 показывает пример определения, согласно предшествующему уровню техники, области в основанной на блоках обработке,
Фиг.4 показывает первый вариант воплощения определения, в соответствии с изобретением, области обработки при масштабировании изображения,
Фиг.5 показывает пример требуемой для способа памяти в соответствии с изобретением, в варианте воплощения согласно Фиг.4,
Фиг.6 показывает вариант воплощения изобретения при применении его к деблокированию (распаковке блоков) и масштабированию,
Фиг.7 показывает пример цепочки обработки изображения в варианте воплощения по Фиг.6,
Фиг.8a-8e, показывают некоторые примеры требуемой памяти примера обработки согласно Фиг.6.
Фиг.7 показывает компоненты, в терминах изобретения, одного примера электронного устройства 10.2, в котором изобретение может быть применено. Устройство 10.2 включает в себя цепочку обработки изображения, которая может использоваться для обработки данных 12.1 изображения. Данные 12.1 изображения могут быть обнаружены, например, используя детектор 11, принадлежащий устройству 10.2. Данные изображения 12.1 могут, например, также быть получены от сети связи. Данные 12.1 изображения могут быть цифровыми фотографиями или видеоизображением, которые никоим образом не ограничены, в соответствии с изобретением. Некоторыми, но никоим образом не ограничительными, примерами электронных устройств 10.2, к которым изобретение имеет отношение, являются мобильные устройства, устройства мультимедиа, цифровые приставки/ресиверы и цифровые камеры.
Электронное устройство 10.2 включает в себя средство 13 обработки данных, 14.1, 14.2, 16, 18 и память 17 для выполнения выбранных операций по обработке данных 12.1 изображения на основе блоков. Средство 16 обработки данных, согласно одному варианту воплощения, может быть образовано компоновкой, показанной на фиг.7. В ней декодер 13, принадлежащий устройству 10.2, используется для декодирования потока данных 12.1. В этом случае декодер 13 действует на основе блоков.
Перед декодированием 13 данные 12.1 изображения были уже закодированы 30. При кодировании 30 данные изображения, выводимые детектором 11, принадлежащим, возможно, устройству 10.2, делятся, с помощью разделения на блоки, на модульные блоки B, MB способом, зависящим от способа кодирования. Модульные блоки B, MB могут быть размещены в матричном, двумерном табличном расположении, как показано на Фиг.1, например. Кодирование 30 и декодирование 13 могут упоминаться, в общем случае, как кодирование (преобразование в некоторый машинный код) данных изображения.
Декодер 13 помещает данные 12.1 изображения, закодированные кодером 30, в форме, которая может быть обработана снова (=, то есть распакована в ее более или менее первоначальную форму). При декодировании 13 в один момент времени декодируется один макроблок MB и после этого направляется в цепочку 16 для обработки выбранным способом.
Декодер 13 сопровождается желательными функциональными возможностями постобработки 14. Это может быть повышением качества изображения - функциональная возможность 14 масштабирования показана как пример в варианте воплощения, согласно Фиг.2, к которому основанная на блоках обработка может быть также применена. Также возможны другие функциональные возможности, как раскрыто в последующих прикладных примерах.
После постобработки 14 обработанные данные 12.3 изображения сохраняются в закодированной форме, например, в памяти большого объема, отображаясь также на дисплее 15 устройства 10.2, или могут быть посланы в сеть связи, в зависимости от варианта воплощения.
Фиг.4 показывает основной принцип изобретения. В изобретении, в зависимости от выполняемой в данный момент обработки, область PA обработки сформирована согласно настройке, используя данные одного или более модульных блоков, по меньшей мере уже декодированных на более ранней стадии. Область PA может быть предусмотрена дополнительно как сформированная из подобластей PA1, PA2, PA3 (Фиг.1 и 4). Макроблоки MBP1-MBP3, декодированные перед макроблоком MB (N, M), рассматриваемым как фактическая область обработки PA, могут быть, возможно, уже по меньшей мере частично обработаны в их области. Размер области PA определен согласно операциям, которые будут выполнены. Таким образом, область PA может быть установлена отдельно для каждого компонента 18, 14.1, 14.2 обработки из цепочки 16 обработки изображения так, чтобы даже конечная стадия 14.2 обработки могла быть осуществлена предпочтительным способом в соответствии с изобретением, в терминах использования памяти.
Декодирование 13 может выполняться всегда согласно тому же самому блочному делению B, MB изображения. Область PA определена уже перед началом декодирования первого блока изображения I. После обработки каждого блока MB область PA обработки передвигается так же, как и край блока MB, декодированного согласно делению набора блоков, так же передвигается по мере прогресса обработки. Область PA, которая на самом деле является несколькими строками и столбцами пикселей 'после' фактически декодированного блока, если о направлении обработки думают, как о происходящей слева направо и сверху вниз.
Кадр I изображения, показанный как обрабатываемый на Фиг.1, может самостоятельно состоять из, например, фотографического изображения или это может также быть один кадр I непрерывного видеоизображения. Информация о других кадрах изображения, типа, например, данных кадра изображения, который является предшествующим обрабатываемому кадру I изображения, или последующий кадр изображения изобретению вообще не требуется. Обработка для обрабатываемого кадра I изображения может быть выполнена по очереди для одной области PA за раз, продолжаясь в последовательности набора в кадре I. Таким образом, могут быть обработаны требуемые части всего кадра I изображения.
Фиг.1 показывает один пример такой последовательности. Здесь, чтобы выполнить обработку всей области I изображения, начинают, например, от левого верхнего угла кадра I изображения. Оттуда обработка продолжается от левого края области I изображения в макроблочной строке MB_row, от столбца до столбца, к правому краю, в соответствии с делением области набора (стрелка с прерывистой линией i на Фиг.1). Как только обработка будет закончена на правом краю кадра I, рассматриваемая строка будет обработана. После этого процесс перемещается вниз в следующую макроблочную строку. Обработка продолжается снова, начиная с левого края области I изображения, от начала этой следующей макроблочной строки (стрелка с прерывистой линии ii). Это продолжается до достижения правого, самого нижнего угла кадра I изображения. Как только кадр I изображения был обработан выбранным способом, в случае видеоданных, следующий кадр I+1 изображения может быть взят для обработки. Для этого выполняется соответствующая процедура обработки, являющаяся независимой от предыдущего кадра I изображения. Конечно, могут быть другие способы хода обработки.
Фиг.4 показывает один пример подхода к способу, в соответствии с изобретением, основанной на блоках обработки. Здесь область PA обработки кадра I изображения может быть представлена как сформированная из некоторого количества подобластей PA1, PA2, PA3. Область PA имеет размер индивидуального макроблока MB. Область PA показана как белая область, остающаяся внутри квадрата, нарисованного толстой линией. Здесь области периметра EA1, EA2, EA4, требуемые для обработки области PA, показаны заштрихованными.
Правая нижняя часть PA3 области PA обработки в кадре I изображения является сформированной, главным образом, из последнего декодированного макроблока MB (N, M). Благодаря декодированию макроблока, которое было выполнено как раз перед этим, данные от реального макроблока MB (N, M) относительно области обработки PA3 сохраняются в памяти 17.2 устройства 10.2. Далее, данные области EA4, окружающей область PA3, ниже и справа от области PA3, также сохраняются в памяти 17.2 устройства 10.2. Эта область EA4 была также только что декодирована так, чтобы она была соответствующим образом доступна от декодера 13. На Фиг.4 область EA4 ограничена областью PA3 и макроблоками MBP2, MBN1, MBN3 и MBP3.
Субблоки PA1 и PA2 области PA обработки теперь сформированы непредсказуемым способом из некоторых из предыдущих соседних блоков MBP1-MPB3 (=macroblock_previous) обрабатываемого кадра I изображения. Таким образом, данные от этих соседних блоков MBP1-MBP3 также сохраняются в памяти 17.1', от их областей PA1-PA2 и их областей EA1-EA2 периметра. Сохранение выполняется уже вместе с областью, обрабатывающей предыдущий соответствующий обрабатываемый макроблок MB (N, M).
Подобласти PA1 и PA2, расположенные в предыдущих блоках MBP1-MBP3, теперь формируют часть области PA, обрабатываемой способом в соответствии с изобретением. Далее, области EA1 и EA2, расположенные в предыдущих блоках MBP1-MBP3, состоят из верхней и левой части граничных областей, остающихся вне области PA обработки. В некоторых приложениях требуются граничные данные от граничных областей EA1, EA2 для того, чтобы должным образом обработать краевые области, принадлежащие областям PA1, PA2. Краевые области этих областей PA1, PA2 могут быть поняты как являющиеся пикселями около границ (толстая непрерывная линия выше и налево), определяющая области обработки PA, которые, таким образом, будут обработаны для их части, принадлежащей области PA обработки.
Согласно упомянутому выше, часть фактической области PA обработки, обрабатываемой в любое время, сформирована из одного или более модульных блоков MBP1-MBP3, которые были уже, возможно по меньшей мере частично, обработаны и, таким образом, по меньшей мере уже декодированы. На основании этого можно использовать в любое время относительно реального MB (N, M), который расценивается как частично обработанный, только пиксели блоков MBP1-MBP3, предыдущие этому. Эти блоки MBP1-MBP3 уже декодированы в памяти 17.1 устройства 10.2. Кроме того, по меньшей мере часть областей блоков MBP1-MBP3 была, возможно, уже обработана вместе с предыдущей соответствующей областью PA обработки.
В результате способа определения области обработки PA в соответствии с изобретением, нет никакой потребности передавать реальный конечный краевой блок MB (N, M) в направлении прогресса обработки, из которого теперь сформирован соответствующий блок MB (N, M) области обработки, в виде его подобласти PA3. Даже более подробно, это означает, что предварительное декодирование согласно предшествующему уровню техники не требуется для выполнения на блоках MBN1-MBN4 (=macroblock_next), находящихся на правой нижней стороне реального блока MB (N, M), находящегося в правом нижнем углу области обработки PA или даже вообще на любом из последующих макроблоков.
Модульные блоки MBP1-MBP3, которые для их частей формируют области PA1, PA2, PA3, могут быть выбраны в изобретении несколькими различными способами. Согласно первому более простому варианту воплощения предыдущий блочный модуль области PA1 может быть исключительно соседним блоком MBP2, найденным из предыдущей модульно-блочной строки M-1, где область была уже, возможно, по меньшей мере частично, обработана перед обработкой (N, M) макроблока или которая была, по меньшей мере, уже декодирована. Кроме того, малое количество дополнительных данных необходимо из предыдущей макроблочной строки M-1, от макроблоков MBP1, MBP2, MBP, находящихся в окружении обрабатываемой подобласти PA1. Дополнительные данные необходимы для обработки краевых частей обрабатываемой подобласти PA1. В этом случае предварительное кодирование должно быть выполнено на блоке MBN1 макроблоков, окружающих область PA. Несмотря на это есть очень небольшой результат потребления памяти устройства 10.2, сравнимый, например, с предварительным декодированием, включая все последующие блоки, согласно предшествующему уровню техники.
От предыдущей макроблочной строки M-1, в зависимости, например, от процедуры обработки или алгоритма, объем декодированных данных пиксельных строк краевых областей EA1, PA1 блоков MBP1, MBP2, MBP сохраняется в памяти. Кроме того, пиксели требуются от правого края блока MBP3 для формирования области EA2. Поскольку они являются уже полностью декодированными блоками MBP1, MBP2, MBP, данные их нижней части уже готовы в памяти 17.1. Это делает обработку эффективной и в терминах использования памяти, и в терминах времени обработки.
Согласно вышеупомянутому, полная обработанная область PA1, PA3 может теперь быть рассмотрена как 'смещенная' вверх элементом набора пикселей от реальной границы блока (N, M). В этом случае никакое смещение налево не имеет место на той же самой строке М как макроблок MB (N, M), который рассматривают, главным образом, как обрабатываемый, как описано в воплощении по Фиг.4.
Согласно второму варианту воплощения изобретения, показанному на Фиг.4, модульные блоки MBP1, MBP2, формирующие область PA обработки, которые уже были предварительно, по меньшей мере, декодированы, и, возможно, также области, которые уже, по меньшей мере частично, обработаны, могут, в дополнение к предыдущей строке M-1, также быть из блочно-модульного столбца N-I. Этот блочно-модульный столбец N-1 также уже, по меньшей мере, декодирован перед главной обработкой предполагаемого макроблока MB (N, M). В дополнение к декодированию, блочно-модульный столбец N-1 может также быть в его области, возможно уже, по меньшей мере частично, обработанной. Макроблоку MBP3 (=N-1, M), который является последним для декодирования и обработки, часто непосредственно предшествует в блочной матрице I фактический макроблочной области MB (N, M), которая воспринимается как главная обрабатываемая, таким образом, будучи также с этим в той же самой макроблочной строке М.
Данные, касающиеся макроблока MBP3 (=N-1, M), или по меньшей мере данные краевых областей EA2, PA2 этого блока MBP3, все еще выгодно декодируются в памяти 17.1 устройства 10.2. Из-за этого обработка макроблока MB (N, M), который в тот момент расценивается, главным образом, как обрабатываемый, и в своей части также формирование области PA могут быть выполнены, используя данные области PA1 выше области PA и, кроме того, данные области PA2 слева от нее.
Нижняя горизонтальная строка пикселей и самый правый вертикальный столбец пикселей, принадлежащий области обработки PA, находятся рядом с правым краем и нижним краем последнего реального блока (теперь MB (N, M)), формирующего, главным образом, обрабатываемую область PA так, что нет никакой потребности от пикселей блоков MBN1-MBN4, следующих за областью PA, быть декодированными/сохраненными или вниз, или также вперед. Такое решение обеспечивает, среди других вещей, чрезвычайно эффективное расположение для упорядочивания дополнительных данных, требуемых от окружения области PA.
Как может быть замечено на Фиг.4, обрабатываемые блочные области PA1, PA2, PA3 (главным образом = MB (N, M)) являются теперь несколькими пикселями в вертикальных и горизонтальных направлениях перед реальной блочной областью MB (N, M). Она включает в себя, однако, большинство пикселей реальной блочной области MB (N, M). Область PA, таким образом, является теперь, по-видимому, 'смещенной' на заданное число пикселей и в верхнем, и в противоположном направлении к направлению хода обработки (стрелки прерывистыми линиями i и ii на Фиг.1) из-за реального (N, M) макроблочного деления. 'Смещение' зависит от выполняемой обработки в этот момент времени.
На основе упомянутого выше способ вовлекает необходимость использовать только области EA1, PA1, EA2, PA2 пикселей, которые получены из областей, обработанных непосредственно перед блоком MB (N, M), который рассматривают как обрабатываемый. На одной ее части эта область EA2, PA2 сформирована из макроблока MBP3, уже обработанного, по меньшей мере частично, от его области, последней и, таким образом, уже полностью декодированной. На ее второй части эта область EA1, PA1 сформирована из нижних частей соседних макроблоков MBP1, MBP2 из предыдущей макроблочной строки M-1. Также, строка M-1 уже, по меньшей мере частично, обработана и для этой цели декодирована перед обработкой строки М, расцениваемой как обрабатываемая в этот момент.
Кроме того, дополнительно необходимо отметить, что в обоих случаях, описанных выше, размер фактической обрабатываемой области PA, однако является тем же самым, что и размер реальной макроблочной области MB (N, M).
Изобретение может использоваться для того, чтобы избежать предварительной обработки, которая требует много памяти. Согласно предшествующему уровню техники предварительная обработка должна быть выполнена даже на макроблоках или областях MBN1-MBN4 после макроблока (N, M), который расценивается как обрабатываемый в этот момент.
Данные пикселей, требуемые каждой процедурой обработки или алгоритмом, могут быть сохранены во временных рабочих блоках памяти 17.1 устройства 10.2. Объем данных пикселей областей EA1, EA2, EA4, формирующих и окружающих область PA, и, таким образом, также для ее части, 'смещения' области обработки PA в реальном (N, M) делении единичной матрицы, определяет алгоритм обработки или алгоритмы, которые используются в этот момент времени.
Фиг.5 показывает пример требований к памяти по способу, выполняемому в электронном устройстве 10.2. Как было заявлено выше, размер окрестности блочных областей PA1, PA2, PA3 уже обработан, и, следовательно, требования к памяти по способу зависят, в значительной степени, от обработки, выполненной на областях PA1, PA2, PA3. Ниже раскрывается, как первый пример применения, основанное на блоках масштабирование изображения, к которому способ, в соответствии с изобретением, может быть применен.
При масштабировании изображения область PA1, PA2, PA3 относится к области PA изображения, которая масштабируется до выходного изображения. В прикладном примере ниже масштабирование приводит к увеличению, то есть к большему изображению (более высокая разрешающая способность). Изобретение может быть одинаково хорошо применено к масштабированию с уменьшением, то есть к более низкой разрешающей способности.
При масштабировании применяются выбранные алгоритмы интерполяции. Алгоритмы интерполяции основаны на линейной комбинации входных данных и специального ядра, которое нет необходимости описывать более подробно в связи с этим. Интерполированное значение пикселя может быть рассчитано как линейная комбинация соседних пикселей. В связи с этим можно применить два примера способа. Первый из них относится к билинейной интерполяции BIL и второй - к бикубической сверточной интерполяции BIC.
В билинейной интерполяции BIL используются четыре (2×2) соседних значения пикселей для вычисления значения пикселя. Таким образом, требуется один пиксель с каждой стороны от пикселя, обрабатываемого в это время. В бикубической интерполяции BIC шестнадцать (4×4) соседних значений пикселей требуются для вычисления значения пикселя. Таким образом, требуются два последовательных пикселя, простирающихся от каждой стороны вокруг обрабатываемого пикселя. Согласно упомянутому выше, когда области PA1, PA2, PA3 являются, поскольку они здесь являются примерами, областями, соответствующими размеру макроблока MB (N, M), требуются одна или две пиксельные строки и столбцы вокруг него (k=1 или k=2, Фиг.5). Таким образом, несколько наиболее удаленных пиксельных строк принадлежат блочной области PA1, PA2, PA3.
Требуемые одна или две пиксельные строки и столбцы снаружи обработанной области PA1, PA2, PA3 являются непосредственно внешними к обработанным областям PA1, PA2, PA3. В случае двух пиксельных строк, они могут, в общем случае, простираться существенно последовательно относительно обрабатываемого пикселя. Соответственно, интерполяция каждого пикселя в пределах области PA1, PA2, PA3 требует, в зависимости от способа интерполяции, один или два пикселя, простирающихся последовательно вокруг фактически обрабатываемого пикселя.
Поскольку области PA1, PA2, PA3, которые является объектом масштабирования, обрабатываемого в любое время, выбраны таким способом, что они заданным количеством пикселей в направлении модульных блоков MBP1-MBP3, которые были предварительно, по меньшей мере, декодированы и возможно с областями уже по меньшей мере частично масштабируемыми, это необходимо также принять во внимание при определении строк EA1 и столбцов EA2 пикселей вне макроблоков (N, M) в этих направлениях. Необходимо отметить, что полные области PA1, PA2, PA3 имеют, однако, по-прежнему размер требуемой области PA обработки.
На основе упомянутого выше билинейная интерполяция BIL требует двух пиксельных столбцов EA2, PA2 и строк EA1, PA1 от левых блочных областей макроблочной области MB (N, M), рассматриваемой как обрабатываемая главным образом, и, соответственно, также от верхних блочных областей MBP3, MBP1, MBP2 (BIL=1+1=2, на Фиг.5). Из этих пиксельных строк EA1, PA1 и столбцов EA2, PA2, области PA1, PA2 ближе к области PA3 для ее части, формирующей обрабатываемую область PA. Соответственно, внешние области EA1, EA2 относительно области PA3 представляют данные окружения, внешнего к области PA, требуемой для масштабирования.
Бикубическая сверточная интерполяция BIC требует четырех пиксельных столбцов EA2, PA2 и строк EA1, PA1 от левой стороны блочных областей макроблочной области MB (N, M), рассматриваемой как обрабатываемая главным образом, и, соответственно, также от верхних блочных областей MBP3, MBP1, MBP2 (BIC=2+2=4, Фиг.5), которые уже были предварительно, по меньшей мере, декодированы и также уже, возможно, по меньшей мере частично, обработаны. Из этих пиксельных строк EA1, PA1 и столбцов EA2, PA2, области PA1, PA2, ближайшие к области PA3, формируют для их части обрабатываемую область PA. Соответственно, две внешние области EA1, EA2 относительно области PA3 представляют данные окружения, внешнего к области PA, требуемой для масштабирования.
Естественно, данные для масштабирования также соответственно требуются от области EA4 вне области PA3 и от правой области EA4 так, чтобы пиксели на самой нижней границе и на противоположном правом крае, которые принадлежат области PA, могли должным образом масштабироваться (серая область EA4 макроблока MB (N, M) на Фиг.5). Данные необходимы от нижней области EA4 области PA3 до нижнего края реальной границы блока MB (N, M). Данные необходимы от правой области EA4 области PA3 до левого края реальной границы блока MB (N, M). Поскольку область PA была, соответственно, перемещена способом, описанным выше, и верхние, а также дополнительные данные слева, требуемые для нижнего края и правого края области PA3, будут также приняты во внимание, без необходимости предварительного кодирования блоков MBN1-MBN4, которые будут масштабироваться позднее.
В билинейной интерполяции BIL области PA1, PA2, PA3, соответствующие размеру макроблока, который обрабатывается в этот момент, могут, таким образом, быть замещены столбцом на один пиксель, соответственно делению макроблока (N, M) единичной матрицы, в направлении макроблочной области MBP3, которая была предварительно, по меньшей мере, декодирована и уже, возможно, по меньшей мере частично, обработана в своей области. Соответственно, восходящее смещение обработанных макроблочных областей PA1, PA2, PA3 может также быть строкой в один пиксель в направлении областей MBP1 и MBP2 с вышеупомянутыми характеристиками. Область PA тогда будет в своей верхней части однопиксельной строкой выше верхнего края макроблочной строки М, рассматриваемой как обработанная. Соответственно, область PA будет однопиксельной строкой выше нижнего края макроблочной строки М, сочтенной обработанной.
В бикубической сверточной интерполяции BIC обрабатываемые макроблочные области PA1, PA2, PA3, согласно упомянутому выше, могут быть замещены столбцами на два пикселя, относительно деления макроблока (N, M) единичной матрицы, в направлении макроблока MBP3, который был, по меньшей мере, декодирован до этого и уже, возможно, по меньшей мере частично, обработан в своей области. Соответственно, восходящее смещение обрабатываемых макроблочных областей PA1, PA2, PA3 может также быть двухпиксельными строками в направлении областей MBP1 и MBP2. Область PA, которая будет обработана, будет тогда замещена двухпиксельными строками в областях MBP1, MBP2 макроблочной строки M-1, которая была частично уже обработана на более ранней стадии, будучи перемещенной теперь немного выше макроблочной строки М, которую считают обрабатываемой.
Необходимое количество горизонтальных и вертикальных пиксельных строк BIL/BIC от предыдущих блоков MBPx к обрабатываемому в это время блоку PA или вообще области для обработки обрабатываемой области PA и для ее части также для того, чтобы формировать обрабатываемую область PA, сохраняется в памяти 17.1 устройства 10.2. Эти пиксельные строки показаны как затененные области на Фиг.5. Таким образом, данные о пикселях снаружи фактического модульного блока MB (N, M) требуются таким образом, как описано выше, для формирования краевых областей PA1, PA2 обрабатываемой области PA и для соответствующей обработки краевых областей PA1, PA2 области.
Когда обрабатываемая область PA исследована, высота области EA1+PA1 является той же самой, что и L участков строковой памяти. Длина области EA1+PA1 является шириной фактического макроблока MB (N, M) (=16 пикселей)+L. L введено потому, что область PA переместилась налево от реального блочного деления (N, M). Таким образом, дополнительно требуются L столбцов пикселей в горизонтальном направлении от блока MBP1 для того, чтобы сформировать области EA1, PA1 и обработать области PA1. Другими словами EA1+PA1=L*(16+L).
Соответственно, размер области EA2+PA2 является высотой макроблока MB (N, M) (=16 пикселей)+L столбцов пикселей от предыдущего макроблока MBP3. Другими словами, EA2+PA2=16*L. В этом случае масштабирования L=S+S, то есть L=1+1, или L=2+2, в зависимости от применяемого способа интерполяции.
Эти пиксельные строки могут включать в себя, прежде всего, пиксельные строки BIL/BIC. Они требуются по меньшей мере от блочной строки M-1 предыдущей области PA1, PA2, PA3 обработки, от которой приняты во внимание требуемые части нижних пиксельных строк соответствующих соседних блоков MBP1, MBP2. В случае области PA1 необходимые строки начинаются, в зависимости от интерполяции, одно- или двухпиксельными столбцами перед вертикальной строкой (на Фиг.5, от точки S), которая определяет обрабатываемую область PA. В этом случае число пиксельных строк BIL/BIC (=EA1+PA1) является L=2 или 4, в зависимости от способа интерполяции.
В дополнение к нескольким пиксельным строкам верхних областей MBP1, MBP2 обрабатываемой области PA, начиная с точки S, несколько нижних пиксельных строк BIL/BIC (=EA1', PA1') удерживаются в памяти 17.1 наряду с фактическим блоком MB (N, M), который расценивается как обрабатываемый в этот момент, от блока MBP3 на той же самой строке М. Эти строки начинаются с левой стороны изображения I, и, таким образом, они также включают в себя данные блоков слева от блока MBP3, которые уже были предварительно обработаны настолько, насколько граница E сформирована окружающими пикселями, требуемыми обрабатываемой областью PA. Можно заметить из Фиг.5, что границы S и E находятся по существу на той же самой вертикальной строке. В соответствии с примером число пикселей в памяти 17.1 формируется, как для этой дополнительной строки данных, приблизительно L*горизонтальный размер кадра I изображения в пикселях.
Дополнительно, некоторые вертикальные столбцы блока MBP3 пикселей предшествующего макроблоку MB (N, M), который считают обрабатываемым, также сохраняются в рабочей памяти 17.1. Эти пиксели (=EA2+PA2) показаны штриховкой на Фиг.5. В случае этого примера число этих пикселей становится L*16 пикселей. Это происходит потому, что высота обрабатываемой области PA теперь соответствует размеру MB_size макроблока MB. Также требуется малое количество пространства в памяти 17.1 устройства 10.2 для этой области EA2+PA2.
Число пикселей, требуемых от окружающих областей MBP1-MBP3 фактической области MB (N, M), которую считают обрабатываемой, таким образом, в этом случае, также зависит от применяемого алгоритма обработки. Размер блока (макроблочная обработка) упомянутых выше 16×16 пикселей является только примером, ни являясь ограничением способа в соответствии с изобретением. Таким образом, можно рассматривать вообще любой размер блока.
Кроме того, пикселям, требуемым для обработки краевых областей PA1, PA2, определенным выше, и в части, также формирующей фактическую область PA обработки, память 17.2 также естественно требуется для данных подобласти PA3 для того, чтобы частично формировать обрабатываемую область PA, которую на Фиг.5 показывают, таким образом, как серую область 16x16. Эта область PA3+EA4 полностью соответствует области в памяти 17.2, поскольку она только что была декодирована. Тем не менее, другая память, которая также требуется, это - память 17.3, предназначенная для результирующего блока 12.3 масштабируемого макроблока PA. Размер этой памяти 17.3 может зависеть, например, от коэффициента масштабирования. Результирующий блок 12.3 может быть перемещен немедленно после обработки соответствующей блочной области PA непосредственно в память дисплея или к хранилищу 15.
В обеих из процедур масштабирования, упомянутых выше, способ, в соответствии с изобретением, обеспечивает эффективный по использованию памяти путь выполнения желательных операций масштабирования.
Фиг.6 показывает в качестве второго примера приложения, к которому способ, в соответствии с изобретением, может также быть применен, масштабирование изображения, основанное на блоках, и распаковку блоков. В случае ссылок области PA1, PA2, PA3, ссылаются на Фиг.4 и 5, в которых показано местоположение этих областей в пределах обрабатываемой области PA. Деблокирование (распаковка блоков) 18 требуется, поскольку масштабирование было выполнено на обрабатываемой области PA, сформированной из основанных на блоках данных. В этом случае область PA включает в себя, главным образом, части нескольких блоков 8×8 B1-B4. Область, требуемая преобразователем 14.1 масштаба, показана как S-область, остающаяся в пределах квадрата, окруженного прерывистой линией. Область, требуемая для деблокирования 18, показана, в случае Фиг.6, как темная и светло-серая область, которая в этом случае включает в себя область PA и некоторые пиксели справа и снизу от области PA, как может легко быть замечено из Фиг.6.
Фиг.7 показывает пример блок-схемы способа выполнения постобработки, в случае в соответствии со вторым вариантом воплощения. В этом примере деблокирование 18 выполняется после декодирования 13, но, однако, перед масштабированием 14.1 и повышением качества изображения. С другой стороны, иногда может быть необходимо выполнить только распаковку блоков, коэффициент масштабирования в этом случае равен 1. В этом случае также масштабирование 14.1 сопровождается возможной обработкой 14.2 для повышения качества изображения. С другой стороны, обработка для повышения качества изображения также может предшествовать масштабированию 14.1. Это происходит потому, что может быть меньше пикселей перед масштабированием 14.1, чем после масштабирования 14.1, так что предпочтительно было бы выполнить обработку для повышения качества изображения до масштабирования 14.1. Необходимо отметить, что основанная на блоках обработка может также включать в себя другие операции, которые не представлены в этом варианте воплощения, по причинам ясности.
Если цепочка 16 постобработки видеоданных или данных изображения 12.1 также включает в себя фильтр 18 деблокирования (распаковки блоков), данные, требуемые фильтром, тогда должны также быть приняты во внимание. Это может быть замечено из Фиг.6, где фильтр 18 деблокирования может немного увеличить область вокруг обрабатываемой области PA, требуемой для обработки, по сравнению с, например, масштабированием. Фиг.6 показывает один пример дополнительных пикселей М, D, A, требуемых для обработки распаковки блоков. Необходимо отметить, что различные способы масштабирования и распаковки блоков будут требовать различного количества дополнительных пикселей, как может быть замечено на Фиг.8a-8e. Однако обе формы обработки 18, 14.1 вместе установят число дополнительных требуемых пикселей.
В связи с этим, нет необходимости описывать основную технологию, касающуюся деблокирования 18 более подробно, вместо этого может быть сделана ссылка, например, на WO публикацию 98/41025. Она раскрывает адаптивный фильтр для предотвращения артефактов, вызываемых блоками.
Однако в связи с этим может быть достаточно сказано об основном принципе распаковки блоков для того, чтобы заявить, что фильтр 18 используется для удаления разбиения на блоки изображения I, вызванного квантификацией факторов преобразования DSP (то есть артефактов). Из общих принципов, фильтр 18 действует таким способом, что он изменяет, например, трехпиксельные строки на обеих сторонах краев реального блока B-edge, MB-edge. Шестипиксельные строки с обеих сторон края блока B-edge, MB-edge необходимы для того, чтобы определить мощность фильтра 18 (то есть общее количество строк и столбцов на 12 пикселей). Три смежных пиксельных строки М из шестипиксельных строк изменяются на обеих сторонах края блока B-edge, MB-edge. Кроме того, на каждой стороне три следующих пиксельных строки D используются как пиксели обнаружения. Они используются для того, чтобы обнаружить ошибки блокирования (разбиения на блоки).
Если есть намерение использовать бикубическую сверточную интерполяцию BIC при масштабировании 14.1 области PA, и в фильтре деблокирования заявленного деблокирования (распаковки блоков) 18, с которым имеют дело в WO публикации, упомянутой выше, измененного для основанной на блоках обработки, пиксели от области между границей (MB-edge) макроблочной области MB и области PA обработки требуются для того, чтобы обработать краевые области для области MB, согласно построковому расположению в памяти, описанному ниже на Фиг.6. Эти размещения строк памяти и принципы их формирования описаны более подробно ниже со ссылкой на Фиг.8a-8e. Необходимо отметить, что эта промежуточная область (MB-edge-PA-edge=PA1, PA2) также следует способу в соответствии с изобретением, потому что она находится в области PA1, PA2 блоков BP1-BP5, которые были уже, возможно по меньшей мере частично, обработаны или по меньшей мере уже закодированы на более ранней стадии.
Согласно вышеупомянутому описанию измененные пиксели деблокирования М требуются от промежуточной области (MB-edge - PA-edge), например, трехпиксельные строки, пикселям D, требуемым для детектора деблокирования, также требуются, например, трехпиксельные строки. Кроме того, возможные дополнительные пиксели A, требуемые преобразователем масштаба, могут все же потребоваться, в зависимости от, например, числа пикселей D, требуемых детектором деблокирования. В этом случае дополнительные пиксели, требуемые преобразователем масштаба, необходимы в количестве А=S-D=-1<0 →А=0 пиксельных строк. На другой стороне границы MB MB-edge (то есть в области B1-B3) M- и D-пиксели требуются, соответственно, как в промежуточной области MB-edge-PA-edge. Дополнительно, двухпиксельные строки пикселей S, внешних к области PA, требуемых преобразователем 14.1 масштаба, теперь требуются, области которых EA1, EA2 также находятся в области предыдущих блоков BP1-BP5.
В случае рассматриваемого фильтра 18 деблокирования никакие дополнительные пиксели A, требуемые преобразователем 14.1 масштаба, не нужны вообще со стороны области PA (=0). Это происходит потому, что фильтр 18 деблокирования, применяемый в уместном варианте воплощения, требует, в дополнение к изменяемой области (М=3 пикселя), три пикселя D детектора и два пикселя S масштабирования со стороны области PA для того, чтобы выполнить фактическое масштабирование. В этом случае пиксели, требуемые преобразователем 14.1 масштаба, на самом деле содержатся в D-строках/столбцах, формирующих области PA1, PA2, потому что также могут быть D-пиксели в позиции, требуемой первым S. Дополнительные пиксели A, требуемые преобразователем 14.1 масштаба, необходимы, например, в такой ситуации, в которой есть недостаточно много D-пикселей для того, чтобы упорядочить S пикселей на области стороны PA. В этом случае отсутствующие пиксели, требуемые преобразователем масштаба, будут этими A-пикселями.
Требования к строкам памяти будут объяснены графическим способом со ссылкой на Фиг.8a-8e. В них, S верхних/левых пикселей преобразователя масштаба относятся к верхним и левым пикселям PA-edge областей PA1 и PA2 Фиг.6. Соответственно, S нижних/правых пикселей преобразователя масштаба относятся к нижним и правым пикселям PA-edge областей PA1 и PA2 Фиг.6. Необходимо отметить, что в грубом чертеже на нижнем краю Фиг.6, иллюстрирующей требуемые строки памяти, S нижних/правых пикселей преобразователя масштаба не показаны по причинам ясности, но они могут быть включены в A- и D-пиксельные строки, показанные здесь, в зависимости, конечно, от используемого алгоритма обработки.
Фиг.8a показывает первый вариант воплощения расположения строк памяти в соответствии с изобретением. В рассматриваемом случае применен фильтр 18 деблокирования, в котором, в дополнение к изменяемым пикселям М, ни один пиксель D обнаружения не требуется. В таком случае число пикселей, требуемых преобразователем 14.1 масштаба, является числом пикселей S, требуемых преобразователем масштаба, то есть в этом случае 2+2. Таким образом, память строк теперь требует М+S+S пикселей.
Фиг.8b показывает второй вариант воплощения, показывающий требуемые строки памяти. Здесь число пикселей D обнаружения не 0, но несколько пикселей (=1). Число пикселей D обнаружения теперь, однако, меньше чем S (=2), то есть теперь D<S. В таком случае число дополнительных пикселей A, требуемых преобразователем 14.1 масштаба, становится A=S-D=2-1=1 пиксель. На общем уровне число дополнительных пикселей A, требуемых преобразователем масштаба, может быть выражено в форме A=max (0, S-D).
Фиг.8c показывает третий вариант воплощения расположения строк памяти в соответствии с изобретением. Здесь 2 наиболее удаленных пикселя D обнаружения, расположенные наиболее близко к краю PA-edge, принадлежащему областям PA1 и PA2, также доступны преобразователю масштаба, но число требуемых пикселей D обнаружения, однако, больше чем число S-пикселей. Поскольку теперь D>S, число пикселей тогда становится М+D+S.
Фиг.8d и 8e показывают четвертый и пятый варианты воплощения, касающиеся требуемых строк памяти. В них требуемая память была уже сжата, чтобы быть очень малой. В этом случае также D>S. Однако способ выбранного варианта осуществления зависит от того, какой из двух следующих случаев больше, то есть (М+S+S) или (М+D). В случае Фиг.8d, S+S больше чем D, так что одна дополнительная строка пикселей, требуемая преобразователем масштаба, осталась выше D-области, требуемая память является, таким образом, М+S+S. Эта дополнительная строка пикселей не является теперь обычной с пикселями, требуемыми для деблокирования (распаковки блоков).
Фиг.8e показывает еще один, пятый вариант воплощения, касающийся требуемой памяти. В этом случае, касаясь предыдущего, ситуация D>S+S теперь - допустимая. В результате размер строк памяти определяется исключительно фильтром 18 деблокирования. Требуемый объем памяти тогда становится М+D.
На общем уровне устройство 10.2 требует памяти 17.1, зарезервированной для дополнительных данных, составляющих приблизительно (М+max(S+S, D))×(ширина обрабатываемого кадра (I) изображения + высота области PA обработки). Кроме того, память 17.2 также требуется для последних кодированных макроблоков MB (N, M), в которых расположены области PA3 и PA4. Горизонтальный размер изображения (I) представляет дополнительные горизонтальные данные, начинающиеся с левого края изображения I, на правый край. Часть высоты PA представляет вертикальные дополнительные данные от самых дальних левых модульных блоков B4, B5 (N, M) макроблочной области.
В процессе обработки кадра I изображения, данные, сохраненные в строках памяти 17.1, могут быть предусмотрены как заменяющиеся. Данные заменяют в соответствии с движением от области PA, обрабатываемой в последовательности к следующей, или к замене от, например, одной макроблочной строки на другую. Когда обработка происходит, например, в области PA, определенной в центральной части кадра I изображения, можно предположить случай Фиг.6, тогда замена данных может быть предусмотрена как имеющая место, на самом деле, в середине строк памяти 17.1, соответствующих, в принципе, в горизонтальном направлении, местоположению области PA, обрабатываемой в горизонтальном направлении изображения I.
М-, D-, S-пиксельные строки EA1', PA1', которые находятся на нижнем краю нижней блочной строки B3, B4, принадлежащей обрабатываемой области PA, которые представлены упомянутым выше способом, сохраняются в памяти 17.1 строк из макроблочной строки, из которой обрабатываемая область PA формируется способом в соответствии с изобретением. В этом случае пиксельные строки S, A, D, М в памяти 17.1 строк начинаются с крайнего левого края кадра I изображения и продолжаются к самому левому краю обрабатываемой области PA или даже, более подробно, к краям обрабатываемой области PA, до вертикальной строки E пикселей, требуемой преобразователем масштаба, и показанной прерывистой линией. Эти данные начала кадра I изображения, которые сохранены в памяти 17.1 строк, требуются только на стадии, когда область обработки сформирована из блочных областей BND, лежащих ниже начала обрабатываемой представленной области PA. При обработке последовательных областей обработки на существующей макроблочной строке, например блочной области PA, например, являющейся предметом обработки в этот момент, данные, простирающиеся к точке E областей EA1', PA1', таким образом не требуются.
Двигаясь вперед от конечной точки E нижнего края, старые пиксельные строки S, A, D, М, которые определяют верхнюю часть обрабатываемой области PA и которые находятся в соединении с верхним краем области PA, могут быть предусмотрительно сохранены в памяти 17.1 строк. Они продолжаются так, как правый край изображения I. Таким образом, в горизонтальном направлении эти старые, дополнительные строки EA1, PA1, которые были сохранены в памяти 17.1 строк в связи с обработкой предварительно обработанной макроблочной строки, необходимы, таким образом, для обработки области PA и частично, конечно, также формирования ее. Дополнительно, память 17.1 строк продолжается данными верхней части области PA до правого края изображения I. Эти данные требуются при обработке областей (например, BNR) после области PA.
Соответственно, также необходимо принять во внимание вертикальную область, которая в этом случае обработки лежит около левого края обрабатываемой области PA, то есть область EA2, PA2, реального макроблока, которую считают в качестве обрабатываемой. Эти данные включают в себя короткую часть столбца пикселей, требуемого для способа по изобретению. Размером области EA2, PA2 является высота обрабатываемой области PA*высота пиксельных строк SADM = Высота MB*L. Вместе эти данные формируют дополнительный столбец данных, сформированный вертикальными столбцами пикселей SADM, которые требуются для того, чтобы формировать из подобласти PA2 блочную обрабатываемую область PA и чтобы принимать во внимание соответственно левую подобласть PA2 области PA в случае рассматриваемой обработки (=масштабирование и деблокирование). Таким образом, данные дополнительного столбца данных формируют из его части часть обрабатываемой области PA2 и также из окружающих его областей EA2.
Когда обработка выполняется на блочной области PA или по меньшей мере самое позднее после обработки соответствующей области PA, упомянутое выше обновление выполняется в памяти 17.1 строк на данных, сохраненных в ней. При заменах новые дополнительные строки от самого нижнего края точки обработанной блочной области PA, прежде всего, сохраняются в памяти 17.1 строк. Эти новые строки, которые могут быть предусмотрены как перемещаемые для формирования продолжения к области EA1', PA1', начинающейся с точки E, используются в обработке блочных областей BND на следующей строке, которая будет обработана способом в соответствии с изобретением.
Соответственно S, D, M пиксельные столбцы на правом краю обрабатываемой блочной области PA и реального макроблока также сохраняются в местоположении строк памяти, зарезервированном для вертикальных дополнительных столбцов данных EA2, PA2 способом в соответствии с изобретением. Эти новые дополнительные 'данные столбца', которые имеют размер MB-height*L, являются дополнительными данными, требуемыми от левого края следующей области (BNR), которые должны быть взяты для обработки для того, чтобы сформировать следующую область PA PA2 и чтобы обработать ее краевые части (следующая область PA для области EA2). Эти вышеупомянутые обновления могут быть выполнены, только поскольку область PA уже обработана до точки, в которой данные, необходимые для нее в строках памяти 17.1, больше не требуются.
Теперь следует более подробное описание компоновки цикла данных в памяти 17.1 строк. После того как было выполнено деблокирование в обработке соответствующего блока PA и масштабирование было выполнено до точки, в которой более высокие дополнительные строки EA1, PA1 больше не требуются в обработке соответствующей области PA, тогда область ниже этой, с высотой L, и область данных с шириной MB (L*L область более низкой части EA2 и PA2 и горизонтальной подобласти EA4, с размером (16-L-S)*L) могут быть перемещены в память 17.1, к местоположению EA1, PA1 памяти верхней части для ожидания обработки следующих строк блока (BND) в этой соответствующей точке. Перемещение должно быть сделано самое позднее на той стадии, когда область PA смасштабирована. То же самое должно быть сделано для EA4 области справа с вертикальной памятью левой боковой области, на стадии, на которой память левой боковой области EA2, PA2 больше не требуется (то есть после масштабирования блока PA).
Дополнительно, необходимо также отметить, что обрабатываемая область PA должна быть точно того же размера, что и макроблоки B1-B4, из которых она преимущественно состоит. Кроме того, необходимо отметить, что данные в памяти строк обрабатываются во время обработки только в случае M пикселей. Здесь, обработка относится точно только к изменению из-за деблокирования.
Темные и серые области в пределах макроблочной области PA (16x16), подлежащей обработке, или соответствующий модуль, который в этом случае сформирован из нескольких (поскольку для JPEG, например, четыре) 8x8 блоков B1-B4, изображают данные, требуемые от краевых областей каждого 8x8 блока B1-B4 для того, чтобы выполнить деблокирование, которое уже было предварительно выполнено на них. Перед началом масштабирования макроблочной области PA должна быть выполнена обработка деблокирования на краях 8x8 блочных областей B1-B4 в реальном макроблоке PA. Эти области начинаются немного справа от левого края реального макроблока PA и ниже верхнего края и также продолжаются немного вправо и вниз от макроблочной области PA, как может быть легко замечено из Фиг.6.
Темно-серые (пиксели обнаружения) и светло-серые (изменяемые пиксели) области этих 8×8 блочных областей изображают области в областях этой релевантной макроблочной области PA, на которой фильтрация деблокирования должна быть выполнена прежде, чем масштабирование может быть выполнено непосредственно на фактическом макроблоке PA. Здесь также на светло-серых изменяемых пикселях М являются измененными, пиксели D обнаружения сохраняются неизмененными.
Области, показанные как сетки кругов налево и выше от макроблочной обрабатываемой области PA, являются областями ранее обработанных макроблоков BP1-BP5 (то есть в той же самой строке и в предыдущей макроблочной строке). Они были деблокированы вместе с предварительно обработанными областями. Из этих областей области выше обрабатываемой области PA, перемещаются через строки памяти EA1, PA1 к этой новой макроблочной области PA и, соответственно, области слева от перемещенной обрабатываемой области PA, через дополнительные блоки памяти столбца EA2, PA2, к этой новой макроблочной области PA.
Необходимо отметить, что если обрабатываемый модуль не будет макроблоком PA, как в этом варианте воплощения, но вместо этого будет единственный блок B, тогда серые области в блочной области PA не будут в местоположениях центральных блочных краев блоков B1-B4, но только выше и слева.
Поскольку в изобретении область PA одного кадра I изображения, подлежащего обработке, определяется неожиданным способом, как будто это было 'смещенным' сравнением, например, к реальным кодированным блокам, поэтому создается потребность в специальных мерах, например, в областях больше всего на краях кадра I изображения (если они обрабатываются), так чтобы полная область изображения I могла быть обработана. Более определенно, эта потребность возникает, прежде всего, из того факта, что в первой строке изображения I и на левом краю, область обработки PA, определенная способом в соответствии с изобретением, является меньшей, потому что предыдущие данные (EA1, 2, PA1, 2) не существуют в этих областях. Соответственно, в последней строке и правом крае изображения I, несколько пикселей снизу и справа от обрабатываемого блока должны быть обработаны, иначе они остались бы необработанными. Об этих специальных областях могут заботиться, например, программным способом.
Способ в соответствии с изобретением не требует предварительной обработки блоков/макроблоков изображения. Как только блок был декодирован, например, из потока данных, он может быть немедленно обработан выбранным способом (например, улучшаться или масштабироваться) и сохранен для будущего использования. Таким образом, способ обработки в соответствии с изобретением является особенно подходящим для приложений, использующих потоки данных.
Требуемая память для способа является малой. Только несколько строк рабочей памяти 17.1 необходимы для предыдущих блоков (M) BPx и, конечно, малый объем памяти 17.2, 17.3 для данных обрабатываемого блока PA. Программный продукт 31', к которому изобретение также имеет отношение, может быть осуществлен, используя некоторый подходящий язык программирования, или так же как аппаратное осуществление. Программный продукт 31' включает в себя один или несколько программных кодов, которые будут выполняться посредством процессора, включая, по меньшей мере, одно средство 31.1 кода для того, чтобы выполнить способ в соответствии с изобретением в электронном устройстве 10.2. Средство 31.1 кода программного кода 31 сохраняется, например, на носителе данных. Носитель данных может быть, например, прикладной памятью/ DSP устройства 10.1, в которое интегрировано средство кода 31.1. Аппаратное осуществление также возможно.
В основанную на блоках обработку можно также включить, например, улучшение на основе пикселей (например, исправление гаммы), которое не требует дополнительной памяти.
Изобретение может быть применено в устройстве отображения с ограниченной мощностью обработки сигналов и/или ограниченной вместимостью памяти, типа, например, камер в телефонах или в переносных устройствах мультимедиа. Изобретение не требует информации или данных о кадрах изображения, которые являются предшествующими или последующими обрабатываемому кадру I изображения. В изобретении обрабатывают данные изображения 12.1 только одного кадра I изображения. Способ является также подходящим для приложения в системах с каналом передачи данных ограниченной пропускной способности. Способ может быть применен и в декодировании, и на стадии кодирования вместе с данными изображения, обрабатываемыми немедленно, например, одной или более операций, описанных выше.
Необходимо понимать, что вышеупомянутое описание и приложенные чертежи предназначены только для иллюстрации данного изобретения. Изобретение, таким образом, никоим образом не ограничено только раскрытыми или заявленными в формуле изобретения вариантами воплощения, но многие различные изменения и адаптации изобретения, которые являются возможными в пределах объема идеи изобретения, определенной в приложенной формуле изобретения, будут очевидны для специалиста в данной области техники.
название | год | авторы | номер документа |
---|---|---|---|
СПОСОБ И УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ ИЗОБРАЖЕНИЯ | 2006 |
|
RU2427976C2 |
ПРЕДСКАЗАТЕЛЬНОЕ КОДИРОВАНИЕ БЕЗ ПОТЕРЬ ДЛЯ ИЗОБРАЖЕНИЙ И ВИДЕО | 2005 |
|
RU2355127C2 |
СПОСОБ И УСТРОЙСТВО ВВОДА, ОБРАБОТКИ И ВЫВОДА ВИДЕОИЗОБРАЖЕНИЯ | 2014 |
|
RU2543929C1 |
СПОСОБ КОМПЕНСАЦИИ ДВИЖЕНИЯ В ЦИФРОВЫХ ДИНАМИЧЕСКИХ ВИДЕОИЗОБРАЖЕНИЯХ | 2013 |
|
RU2552139C1 |
СПОСОБ И УСТРОЙСТВО ДЛЯ ПАРАЛЛЕЛЬНОГО ОБЪЕДИНЕНИЯ ДАННЫХ СО СДВИГОМ ВПРАВО | 2002 |
|
RU2273044C2 |
УСТРОЙСТВО КОДИРОВАНИЯ ДВИЖУЩИХСЯ ИЗОБРАЖЕНИЙ И УСТРОЙСТВО ДЕКОДИРОВАНИЯ ДВИЖУЩИХСЯ ИЗОБРАЖЕНИЙ | 2011 |
|
RU2523071C1 |
УСТРОЙСТВО КОДИРОВАНИЯ ДВИЖУЩИХСЯ ИЗОБРАЖЕНИЙ И УСТРОЙСТВО ДЕКОДИРОВАНИЯ ДВИЖУЩИХСЯ ИЗОБРАЖЕНИЙ | 2020 |
|
RU2734871C1 |
УСТРОЙСТВО КОДИРОВАНИЯ ДВИЖУЩИХСЯ ИЗОБРАЖЕНИЙ И УСТРОЙСТВО ДЕКОДИРОВАНИЯ ДВИЖУЩИХСЯ ИЗОБРАЖЕНИЙ | 2018 |
|
RU2699049C1 |
УСТРОЙСТВО КОДИРОВАНИЯ ДВИЖУЩИХСЯ ИЗОБРАЖЕНИЙ И УСТРОЙСТВО ДЕКОДИРОВАНИЯ ДВИЖУЩИХСЯ ИЗОБРАЖЕНИЙ | 2019 |
|
RU2716032C1 |
СПОСОБ КОМПЕНСАЦИИ ДВИЖЕНИЯ В ЦИФРОВЫХ ДИНАМИЧЕСКИХ СТЕРЕОВИДЕОИЗОБРАЖЕНИЯХ | 2013 |
|
RU2550544C1 |
Изобретение относится к электронному устройству для обработки данных. Устройство включает средство обработки данных (13, 14, 16, 18) и память (17), для выполнения обработки данных изображения (12.1) на основе блоков. Данные изображения (12.1) закодированы в модульные блоки (В, MB), расположены предварительно установленным образом, из которых область обработки (РА) согласно параметрам настройки может быть сформирована из данных одного или более блоков (В, MB). Для обработки данные по области обработки (РА) размещены в памяти (17), так же предварительно установленным способом, как и данные по граничным областям (ЕА1, ЕА2, ЕА4) области обработки (РА) для того, чтобы обработать краевые области для области обработки (РА). Часть области обработки (РА1, РА2) располагается, чтобы быть сформированной из одного или более модульных блоков (МВР1-МВР3, ВР1-ВР5), которые были предварительно закодированы, и из области, которая была возможно уже по меньшей мере частично обработана. Кроме того, изобретение также касается способа и программного продукта (31). Использование изобретения позволяет уменьшить требуемую память для обработки изображения. 5 н. и 24 з.п. ф-лы, 12 ил.
1. Электронное устройство для выполнения обработки данных изображения на основе блоков, содержащее средство обработки данных и память, выполненное с возможностью кодирования данных изображения в модульные блоки, размещенные предварительно заданным образом, причем область обработки сформирована согласно параметрам настройки из данных одного или более блоков, для обработки которых данные по области обработки размещены в памяти, также как и предварительно заданным образом данные по областям, граничным области обработки, для обработки краевых областей области обработки, отличающееся тем, что часть области обработки расположена с возможностью формирования из одного или более модульных блоков, которые предварительно кодированы и, по меньшей мере, частично обработаны.
2. Электронное устройство по п.1, отличающееся тем, что кодирование данных изображения в модульные блоки является закодированием.
3. Электронное устройство по п.1, отличающееся тем, что кодирование данных изображения в модульные блоки является декодированием.
4. Электронное устройство по п.1, отличающееся тем, что упомянутые модульные блоки взяты из блочно-модульной строки, которая частично обработана и предварительно кодирована для обработки упомянутой области обработки.
5. Электронное устройство по п.4, отличающееся тем, что дополнительно упомянутые модульные блоки взяты из блочно-модульного столбца, который частично обработан и предварительно кодирован до обработки упомянутой области обработки.
6. Электронное устройство по любому из пп.1-5, отличающееся тем, что данные упомянутых модульных блоков, которые обработаны и предварительно кодированы, использованы для формирования отчасти области обработки и отчасти граничной области, и упомянутые данные содержат множество пиксельных строк S, A, D, М, зависящих от операций по обработке.
7. Электронное устройство по п.6, отличающееся тем, что оно имеет память для обработки кадра изображения, в объеме, приблизительно равном:
размер MB + размер вывода (M+max(S+S, В))·(ширина кадра изображения + высота области обработки), например, на области макроблочного размера, являющейся, по меньшей мере, распаковкой блоков и масштабированием.
8. Электронное устройство по п.6, отличающееся тем, что упомянутые данные изображения являются непрерывным потоком видеоизображения.
9. Электронное устройство по п.7, отличающееся тем, что упомянутые данные изображения являются непрерывным потоком видеоизображения.
10. Способ обработки данных изображения на основе блоков, включающий кодировку данных изображения в модульные блоки, расположенные заданным образом, формирование области обработки согласно параметрам настройки из данных одного или более модульных блоков, сбор данных по области обработки для обработки данных изображения и дополнительно сбор данных от областей, граничных области обработки, для обработки краевых областей области обработки, отличающийся тем, что часть области обработки формируют из одного или более модульных блоков, которые предварительно кодированы и, по меньшей мере, частично обработаны.
11. Способ по п.10, отличающийся тем, что кодирование данных изображения в модульные блоки осуществляют закодированием.
12. Способ по п.10, отличающийся тем, что кодирование данных изображения в модульные блоки осуществляют декодированием.
13. Способ по п.10, отличающийся тем, что упомянутые модульные блоки берут из блочно-модульной строки, которую частично обрабатывают и которую предварительно кодируют до обработки упомянутой области обработки.
14. Способ по п.13, отличающийся тем, что дополнительно упомянутые модульные блоки берут из блочно-модульного столбца, который частично обрабатывают и который предварительно кодируют до обработки упомянутой области обработки.
15. Способ по одному из пп.10, 13 и 14, отличающийся тем, что данные изображения упомянутых частично обработанных и предварительно кодированных модульных блоков формируют отчасти упомянутую область обработки и отчасти граничную область, и упомянутые данные включают в себя множество пиксельных строк S, A, D, М, зависящих от операций по обработке.
16. Способ по п.15, отличающийся тем, что осуществляют обработку кадра изображения, например, на области макроблочного размера, являющегося, по меньшей мере, распаковкой блоков и масштабированием, при этом память для обработки кадра изображения резервируют в объеме, приблизительно равном: размер МВ + размер вывода (M+max(S+S, В))·(ширина кадра изображения + высота области обработки).
17. Способ по п.15, отличающийся тем, что данные изображения являются непрерывным потоком видеоизображения.
18. Способ по п.16, отличающийся тем, что данные изображения являются непрерывным потоком видеоизображения.
19. Носитель, хранящий компьютерный код обработки данных изображения на основе блоков, содержащий программные коды, которые включают в себя код для кодирования данных изображения в модульные блоки, размещенные заданным образом, код для формирования области обработки согласно параметрам настройки из данных одного или более модульных блоков и код для сбора данных от областей, граничных области обработки, которые подлежат использованию при обработке краевых областей области обработки, отличающийся тем, что код программы включает в себя средство кода, посредством которого часть области обработки размещена с возможностью формирования из одного или более модульных блоков, которые предварительно кодированы и, по меньшей мере, частично обработаны.
20. Носитель по п.19, отличающийся тем, что код кодирования данных изображения в модульные блоки содержит код закодирования.
21. Носитель по п.19. отличающийся тем, что код кодирования данных изображения в модульные блоки содержит код декодирования.
22. Носитель по п.19, отличающийся тем, что дополнительно код программы содержит в себе средство кода, посредством которого упомянутые модульные блоки размещены с возможностью выбора из блочно-модульной строки, которая частично обработана и предварительно кодирована.
23. Носитель по пп.19 и 22, отличающийся тем, что дополнительно код программы содержит средство кода, посредством которого упомянутые модульные блоки размещены с возможностью выбора из блочно-модульного столбца, который частично обработан и предварительно кодирован.
24. Носитель по любому из пп.19, 22 и 23, отличающийся тем, что отчасти область обработки и отчасти граничная область сформирована из упомянутых частично обработанных и предварительно кодированных модульных блоков, и упомянутые данные содержат множество пиксельных строк S, A, D, М, зависящих от операций по обработке.
25. Носитель по п.24, отличающийся тем, что при обработке кадра изображения, например, на области макроблочного размера, по меньшей мере, являющейся распаковкой и масштабированием, средство кода из программного кода выполнено с возможностью резервирования памяти для обработки кадра изображения в объеме, приблизительно равном: размер MB + размер вывода(М+max(S+S,D))·(ширина кадра изображения + высота области обработки).
26. Носитель по п.24, отличающийся тем, что данные изображения являются непрерывным потоком видеоизображения.
27. Носитель по п.25, отличающийся тем, что данные изображения являются непрерывном потоком видеоизображения.
28. Применение способа обработки данных изображения на основе блоков по любому из пп.10-18 при масштабировании данных изображения.
29. Применение способа обработки данных изображения на основе блоков по любому из пп.10-18 при распаковке блоков данных изображения.
WO 01544114 А, 26.07.2001 | |||
US 6567556 B1, 20.05.2003 | |||
СПОСОБ НИЗКОШУМОВОГО КОДИРОВАНИЯ И ДЕКОДИРОВАНИЯ | 1997 |
|
RU2201654C2 |
УСТРОЙСТВО КОДИРОВАНИЯ-ДЕКОДИРОВАНИЯ ВИДЕОСИГНАЛА ИЗОБРАЖЕНИЙ | 1995 |
|
RU2090011C1 |
WO 03047262 А2, 05.06.2003. |
Авторы
Даты
2009-12-20—Публикация
2005-03-15—Подача