RU2402811C2 - Image processing using linear parametres of lighting apparatus and other image processng enhancements - Google Patents
Image processing using linear parametres of lighting apparatus and other image processng enhancements Download PDFInfo
- Publication number
- RU2402811C2 RU2402811C2 RU2007103160/08A RU2007103160A RU2402811C2 RU 2402811 C2 RU2402811 C2 RU 2402811C2 RU 2007103160/08 A RU2007103160/08 A RU 2007103160/08A RU 2007103160 A RU2007103160 A RU 2007103160A RU 2402811 C2 RU2402811 C2 RU 2402811C2
- Authority
- RU
- Russia
- Prior art keywords
- image information
- information
- processing
- image
- linear
- Prior art date
Links
Images
Landscapes
- Image Processing (AREA)
Abstract
Description
Перекрестная ссылка на родственные заявкиCross reference to related applications
Данная заявка является частичным продолжением находящейся одновременно на рассмотрении заявки на патент США серийный номер 10/902325 (Заявки '325), зарегистрированной 29 июля 2004 года и озаглавленной "Strategies for Processing Image Information Using a Color Information Data Structure", авторов изобретения Glenn F. Evans и Stephen J. Estrop. Заявка '325, в свою очередь, притязает на приоритет Предварительной заявки на патент США номер 60/492029 (Заявки '029), поданной 1 августа 2003 года. Заявки '325 и '029 полностью включены в настоящий документ по ссылке.This application is a partial continuation of U.S. Patent Application Serial Number 10/902325 ('325 Application), registered July 29, 2004 and entitled "Strategies for Processing Image Information Using a Color Information Data Structure" by Glenn F. Evans and Stephen J. Estrop. Application '325, in turn, claims the priority of Provisional application for US patent number 60/492029 (Application' 029), filed August 1, 2003. Applications '325 and' 029 are fully incorporated herein by reference.
Область техники, к которой относится изобретениеFIELD OF THE INVENTION
Предмет данной заявки связан со стратегиями обработки информации изображений, а в более конкретной реализации со стратегиями обработки информации видеоизображений с помощью конвейера видеообработки.The subject of this application is related to image information processing strategies, and in a more specific implementation, to video image information processing strategies using a video processing pipeline.
Уровень техникиState of the art
Примерные проблемы, связанные с обработкой видеоSample video processing issues
Используемую сегодня технологию обработки видео можно пояснить посредством отслеживания эволюции этой технологии с течением времени. Отдельные признаки добавлялись на различных стадиях эволюции, чтобы разрешать проблемы, с которыми отрасль сталкивалась в тот момент. Чтобы поддерживать совместимость и согласованность, новые технологии, возможно, сохранили часть этих признаков, даже если проблемы, для разрешения которых разрабатывались признаки, с тех пор отпали. Как результат современная технология может рассматриваться как накопление подобных появлявшихся последовательно признаков, отражающих систему предшествующих проблем, с которыми сталкивалась в различное время отрасль, соглашения между группами стандартизации, изменения технологических ограничений и возможности и т.д.The video processing technology used today can be explained by tracking the evolution of this technology over time. Separate attributes were added at various stages of evolution to solve the problems that the industry was facing at that moment. To maintain compatibility and consistency, new technologies may have retained some of these attributes, even if the problems for which the attributes were developed have since disappeared. As a result, modern technology can be considered as the accumulation of similar signs that appear successively, reflecting the system of previous problems that the industry faced at different times, agreements between standardization groups, changes in technological limitations and opportunities, etc.
Одно следствие вышеописанной природы технологии обработки видео заключается в том, что специалисты в данной области техники создали укоренившиеся стереотипы мышления, касающиеся определенных аспектов технологии обработки видео. Существуют устоявшиеся представления, касающиеся того, как следует интерпретировать видеоинформацию, и устоявшиеся представления, касающиеся того, как "корректно" обрабатывать эту видеоинформацию. Авторы данного изобретения считают, что многие из этих установившихся норм не являются обоснованными и должны быть пересмотрены.One consequence of the above-described nature of video processing technology is that those skilled in the art have created ingrained thinking stereotypes regarding certain aspects of video processing technology. There are well-established beliefs regarding how to interpret the video information, and well-established beliefs about how to "process" this video information correctly. The authors of this invention believe that many of these established norms are not reasonable and should be reviewed.
Главным из этих устоявшихся представлений является то, что видеоинформация, как правило, должна обрабатываться в форме, в которой она принимается из источника широковещательной передачи, носителя хранения (к примеру, DVD-диска) или другого носителя. Тем не менее, многие видеостандарты разрабатывались без учета того, что видеоинформация должна обрабатываться до отображения. Например, традиционные телевизионные приемники до сих пор не применяют функциональность сложной обработки; эти устройства просто принимают и отображают видеоинформацию. По сути, форма, в которой принимается видеоинформация, может не предоставлять возможности простой и эффективной обработки этой информации.The main one of these established notions is that video information should usually be processed in the form in which it is received from a broadcast source, storage medium (for example, a DVD-ROM) or other medium. Nevertheless, many video standards were developed without considering that video information should be processed before display. For example, traditional television sets still do not use sophisticated processing functionality; these devices simply receive and display video information. In fact, the form in which video information is received may not provide the possibility of simple and effective processing of this information.
Как результат прямое применение стандартных алгоритмов обработки ко многим общепринятым формам видеоинформации создает различные искажения изображения. Специалисты в данной области техники в некоторых случаях обращали внимание на эти искажения. Тем не менее, вместо исследования основных предпосылок используемых методик профессионалы зачастую прибегали к локальным исправлениям, чтобы устранять проблемы. Эти решения могут скрывать проблемы в определенных конкретных для варианта применения ситуациях, но не решают проблемы в общем.As a result, the direct application of standard processing algorithms to many generally accepted forms of video information creates various image distortions. Specialists in the art in some cases paid attention to these distortions. However, instead of exploring the basic premises of the techniques used, professionals often resorted to local fixes to fix problems. These solutions can hide problems in certain application-specific situations, but do not solve problems in general.
Например, видеоинформация часто принимается посредством конвейера видеообработки в форме, которая является нелинейной, чересстрочной, субдискретизированной по цветности, и выражается в определенном варианте связанного с яркостью цветового пространства (к примеру, информация Y'U'V). (Термин "нелинейная" означает здесь, что существует нелинейное отношение между входящим сигналом и результирующей выходной яркостью, генерируемой из этого сигнала; другие термины в предыдущем предложении полностью истолковываются ниже). Специалисты могут попытаться применить различные алгоритмы обработки линейного типа к этой информации, чтобы модифицировать ее заранее заданным способом, например посредством изменения размера видеоинформации, объединения видеоинформации с другой информацией (к примеру, создания составных изображений) и т.д. Авторы данного изобретения считают, что многие из этих алгоритмов не предоставляют оптимальные и даже корректные результаты при обработке видеоинформации такого характера. Работа только с чересстрочной, субдискретизированной по цветности информацией 4:2:2 или 4:2:0 (которая описана ниже) приводит к негативным результатам. Например, обработка информации в 4:2:2 или 4:2:0 может привести к распространению ошибок через различные стадии конвейера видеообработки.For example, video information is often received through a video processing pipeline in a form that is non-linear, interlaced, color-downsampled, and is expressed in a specific embodiment associated with the brightness of the color space (for example, Y'U'V information). (The term “non-linear” means here that there is a non-linear relationship between the input signal and the resulting output brightness generated from this signal; other terms in the previous sentence are fully construed below). Specialists may try to apply various linear-type processing algorithms to this information in order to modify it in a predetermined way, for example, by resizing video information, combining video information with other information (for example, creating composite images), etc. The authors of this invention believe that many of these algorithms do not provide optimal and even correct results when processing video information of this nature. Working only with interlaced, color-subsampled 4: 2: 2 or 4: 2: 0 information (which is described below) leads to negative results. For example, processing information in 4: 2: 2 or 4: 2: 0 can lead to the spread of errors through various stages of the video processing pipeline.
Изъяны обработанных результатов выражаются в различных помехах, которые могут быть очевидны (или нет) невооруженному глазу. Кроме того, специалисты в данной области техники, вероятно, замечали некачественные результаты, но не идентифицировали причины. В некоторых случаях это может быть обусловлено неспособностью специалистов полностью понимать сложную природу многих стандартов кодирования видео. В других случаях специалисты могут не знать о том, что они используют линейные алгоритмы для того, чтобы обрабатывать нелинейную информацию; фактически в некоторых случаях специалисты могут ошибочно полагать, что они имеют дело с линейной информацией. Помимо этого общий базис области техники видеообработки нацелен на генерирование информации изображений, а не обязательно промежуточную обработку и корректировку этой информации.Defects in the processed results are expressed in various hindrances, which may be obvious (or not) to the naked eye. In addition, those skilled in the art probably noticed poor results, but did not identify the causes. In some cases, this may be due to the inability of specialists to fully understand the complex nature of many video coding standards. In other cases, specialists may not be aware that they use linear algorithms in order to process non-linear information; in fact, in some cases, specialists may mistakenly believe that they are dealing with linear information. In addition, the general basis of the field of video processing technology is aimed at generating image information, and not necessarily intermediate processing and adjustment of this information.
Применение линейных алгоритмов к нелинейной информации - это только один пример вышеописанного укоренившегося стереотипа мышления в области техники обработки видео. Как описано ниже, стали стандартными многие другие методики, которые не генерируют оптимальных результатов, как, например, в случае сглаживания.The application of linear algorithms to non-linear information is just one example of the above-rooted ingrained thinking stereotype in the field of video processing technology. As described below, many other techniques that do not generate optimal results have become standard, such as in the case of smoothing.
Например, специалисты могут попытаться устранить помехи, вызываемые некоторыми алгоритмами квантования со сглаживанием, посредством добавления небольшой величины случайного шума в информацию входного изображения и последующего квантования результирующего изображения с шумами. Эти методики оценивают ошибку квантования посредством последующего вычисления разности между изображением с шумами и квантованным результатом. Это может иметь эффект устранения помех сглаживания, но ценой того, что выходное изображение имеет большее содержание шумов относительно величины случайного шума, добавленного в информацию исходного изображения.For example, those skilled in the art may try to eliminate the interference caused by some smoothing quantization algorithms by adding a small amount of random noise to the input image information and then quantizing the resulting image with noise. These techniques estimate the quantization error by subsequently calculating the difference between the noise image and the quantized result. This may have the effect of eliminating anti-aliasing noise, but at the cost of the output image having a higher noise content relative to the amount of random noise added to the original image information.
Существует множество других примеров устоявшихся понятий в области техники обработки видео, которые продолжают применяться благодаря привычке и знакомству без признания их существенных, но неочевидных недостатков. Общая идея усовершенствований, описанных в данном документе, включает в себя пересмотр этих негибких идей наряду с исполнением альтернативных решений.There are many other examples of established concepts in the field of video processing technology that continue to be used due to habit and acquaintance without recognizing their significant but unobvious flaws. The general idea of the enhancements described in this document includes a review of these inflexible ideas along with the implementation of alternative solutions.
Область техники обработки видео обладает богатой терминологией. И излагается краткое введение в определенные разделы области техники обработки видео для помощи читателям. Например, некоторые термины, уже использованные выше (линейный, чересстрочный, яркость, субдискретизированный по цветности и т.д.), определяются ниже. В качестве общего предмета терминологии термин "информация изображения" используется в данном документе, чтобы представлять широкий класс информации, которая может подготавливаться к просмотру в качестве любого типа визуального вывода, в том числе, но не только, информации видеоизображений.The field of video processing technology has rich terminology. And a brief introduction to specific sections of the video processing technique is outlined to assist readers. For example, some of the terms already used above (linear, interlaced, brightness, color downsampling, etc.) are defined below. As a general subject of terminology, the term “image information” is used herein to represent a wide class of information that can be prepared for viewing as any type of visual output, including, but not limited to, video image information.
Понятие текущего уровня техникиThe concept of the current level of technology
- Цветовое пространство и связанные вопросы- Color space and related issues
Цвета могут быть задаваемы с помощью трех компонентов. Поток изображений, который основан на передаче цветового содержимого с помощью дискретных цветовых компонент, упоминается как компонентный видеосигнал. Одна стандартная спецификация задает цвет с помощью красной, зеленой и голубой (RGB) компонент. Более формально, RGB-компоненты описывают пропорциональную интенсивность эталонных ламп, которые создают воспринимаемо эквивалентный цвет для данного спектра. В общем, цветовое пространство RGB может быть задано посредством цветовых значений, ассоциативно связанных с составными цвета и белой точкой. Белая точка означает цветность, ассоциативно связанную с опорным белым цветом.Colors can be set using three components. The image stream, which is based on the transmission of color content using discrete color components, is referred to as a component video signal. One standard specification defines color using the red, green, and cyan (RGB) components. More formally, the RGB components describe the proportional intensity of the reference lamps, which create a perceived equivalent color for a given spectrum. In general, an RGB color space can be defined by color values associated with color constituents and a white dot. The white dot means the color associated with the reference white color.
Электронные устройства, которые воспроизводят цветные изображения, дополняют трехцветный характер человеческого зрения посредством предоставления трех типов источников света. Три типа источников света генерируют различные спектральные характеристики, которые воспринимаются как различные цвета человеком. Например, электронно-лучевая трубка (ЭЛТ) предоставляет красный, зеленый и голубой люминофоры, чтобы создавать различные цвета, таким образом составляя определенный вариант цветового пространства RGB, описанного выше. Другие технологии не используют люминофоры, а иным способом воспроизводят цвет с помощью источников света, которые излучают, по меньшей мере, три вида света.Electronic devices that reproduce color images complement the tri-color nature of human vision by providing three types of light sources. Three types of light sources generate different spectral characteristics, which are perceived as different colors by a person. For example, a cathode ray tube (CRT) provides red, green, and cyan phosphors to create different colors, thus constituting a specific variation of the RGB color space described above. Other technologies do not use phosphors, but otherwise reproduce color using light sources that emit at least three types of light.
Тем не менее, модель кодирования RGB не является эффективным вариантом для передачи информации изображений и не полностью соответствует некоторым устаревшим стандартам. Следовательно, информация изображений, как правило, передается целевому устройству с помощью какой-либо модели кодирования, отличной от RGB. После приема информация изображений может быть внутренне преобразована дисплейным устройством в RGB-связанное цветовое пространство для представления. Как описывается далее в разделе "Вопросы, связанные с показателем гамма", данные каждой компоненты R, G и В могут быть выражены в отношении пре-гамма-скорректированной формы, упоминаемой как значения R', G' и В'.However, the RGB coding model is not an effective option for transmitting image information and does not fully comply with some outdated standards. Therefore, image information is typically transmitted to the target device using some kind of encoding model other than RGB. Upon receipt, the image information may be internally converted by the display device into an RGB-linked color space for presentation. As described further in the “Matters Related to the Gamma Index” section, the data of each component R, G, and B can be expressed in relation to the pre-gamma-corrected form, referred to as the values of R ′, G ′, and B ′.
(В общем, в соответствии с условными обозначениями апостроф означает нелинейную информацию в данном изобретении.)(In general, according to the conventions, an apostrophe means non-linear information in this invention.)
Общей тактикой в этом отношении является задание цвета посредством ссылки на связанную с яркостью компоненту (Y) и связанные с цветностью компоненты. Яркость, в общем, означает воспринимаемую интенсивность (освещенность) света. Яркость может быть выражена в пре-гамма-скорректированной форме (способом, описанным в разделе "Вопросы, связанные с показателем гамма"), чтобы получить ее нелинейный эквивалент, упоминаемый как "сигнал яркости" (Y'). Компоненты цветности задают цветовое содержимое информации изображений относительно сигнала яркости. Например, в цифровой области символ Cb соответствует n-битному целому масштабированному представлению разности B'-Y' (типично в диапазоне - 127…128 в 8-битных значениях), а символ Сr соответствует n-битному целому масштабированному представлению разности R'-Y'. Символ Рb означает аналоговый эквивалент Cb, a символ Рr означает аналоговый эквивалент Сr. Символы Рb и Рr также могут означать цифровую нормализованную форму Сb и Сr в номинальном диапазоне [-0,5…0,5]. Информация изображений компонент, задаваемая посредством СbСr и РbРr, может быть формально снабжена апострофом (к примеру, Cb'Cr' и Pb'Pr'), если они представляют нелинейную информацию. Тем не менее, поскольку Рb, Рr, Сb и Сr всегда означают нелинейные данные, обозначение с апострофом частот опускается для удобства и единообразия (к примеру, используется обозначение Y'PbPr вместо Y'Pb'Pr').A common tactic in this regard is to set the color by referencing the luminance-related component (Y) and the luminance-related components. Brightness generally means the perceived intensity (illumination) of light. Luminance can be expressed in a pre-gamma-corrected form (as described in the section “Questions Related to the Gamma Index”) to obtain its non-linear equivalent, referred to as the “luminance signal” (Y '). The color components define the color content of the image information regarding the luminance signal. For example, in the digital domain, the symbol Cb corresponds to an n-bit integer scaled representation of the difference B'-Y '(typically in the range 127 ... 128 in 8-bit values), and the symbol Cr corresponds to an n-bit integer scaled representation of the difference R'-Y '. The symbol Pb means the analogue equivalent of Cb, and the symbol Pr means the analogue equivalent of Cr. The symbols Pb and Pr can also mean a digital normalized form of Cb and Cr in the nominal range [-0.5 ... 0.5]. Information of component images specified by CbCr and PbPr can be formally provided with an apostrophe (for example, Cb'Cr 'and Pb'Pr') if they represent non-linear information. However, since Pb, Pr, Cr, and Cr always mean non-linear data, the notation with an apostrophe of frequencies is omitted for convenience and uniformity (for example, the notation Y'PbPr is used instead of Y'Pb'Pr ').
Цветовое содержимое также может передаваться как композитный видеосигнал (вместо вышеописанного компонентного видеосигнала). Композитные сигналы объединяют информацию яркости и цветности в одном сигнале. Например, в системе кодирования Y'UV U представляет масштабированную версию B-Y, а V представляет масштабированную версию R-Y. Эти компоненты сигнала яркости и цветности затем обрабатываются, чтобы предоставить один сигнал. Система кодирования Y'IQ задает другую систему композитного кодирования, сформированную посредством преобразования компонент U и V вышеописанным способом. Одна причина того, что в отрасли исторически продвигалось применение Y-связанных цветовых пространств (Y'CbCr, Y'PbPr, YUV, YIQ и т.д.), состоит в том, что уменьшение информации цветных изображений в этих цветовых пространствах может осуществляться проще в сравнении с информацией изображений, выражаемой в цветовом пространстве RGB. Эти цветовые пространства также являются обратно совместимыми с более старыми стандартами, разработанными для информации черно-белых изображений. Термин "связанная с сигналом яркости информация", в общем, означает любое цветовое пространство, которое имеет связанную с яркостью компоненту и связанные с цветностью компоненты, и включает в себя, по меньшей мере, все вышеупомянутые цветовые пространства.Color content can also be transmitted as a composite video signal (instead of the above component video signal). Composite signals combine luminance and color information into a single signal. For example, in the coding system, Y'UV U represents a scaled version of B-Y, and V represents a scaled version of R-Y. These luminance and chrominance signal components are then processed to provide a single signal. The Y'IQ coding system defines another composite coding system formed by converting the U and V components in the manner described above. One reason that the industry has historically promoted the use of Y-linked color spaces (Y'CbCr, Y'PbPr, YUV, YIQ, etc.) is that reducing color information in these color spaces can be made easier compared to image information expressed in RGB color space. These color spaces are also backward compatible with older standards designed for black and white image information. The term “luminance-related information” generally means any color space that has a luminance-related component and color-related components, and includes at least all of the aforementioned color spaces.
В общем, можно преобразовывать цветовое содержимое из одного цветового пространства в другое цветовое пространство с помощью одного или более матричных аффинных преобразований. Более формально, свойство метамерии дает возможность выражать один набор коэффициентов цветового пространства в отношении другого набора функций соответствия (при этом "метамерные возбуждения" означают два спектра, которые соответствуют одному набору коэффициентов цветового пространства, и, следовательно, считаются воспринимаемо идентичными, т.е. выглядят как один цвет).In general, it is possible to convert color content from one color space to another color space using one or more matrix affine transforms. More formally, the metamerism property makes it possible to express one set of color space coefficients with respect to another set of correspondence functions (in this case, “metamer excitations” mean two spectra that correspond to one set of color space coefficients, and, therefore, are considered to be perceivedly identical, i.e. look like one color).
- Вопросы, связанные с показателем гамма- Questions related to the gamma indicator
Электронно-лучевые трубки (ЭЛТ) не имеют функции преобразования линейной характеристики. Другими словами, отношение напряжения, применяемого к ЭЛТ, и результирующая яркость, генерируемая ЭЛТ, не задают линейной функции. Более конкретно, прогнозируемая теоретическая характеристика ЭЛТ имеет характеристику, пропорциональную степенному закону 5/2; т.е. для данного входного напряжения V результирующая яркость ЭЛТ L может быть вычислена как L=V2,5. Функция преобразования также упоминается как "функция гамма-характеристики", а экспонента сигнала напряжения упоминается как "гамма".Electron beam tubes (CRTs) do not have a linear characteristic conversion function. In other words, the ratio of the voltage applied to the CRT and the resulting brightness generated by the CRT do not define a linear function. More specifically, the predicted theoretical characteristic of a CRT has a characteristic proportional to a power law of 5/2; those. for a given input voltage V, the resulting CRT brightness L can be calculated as L = V 2.5 . The conversion function is also referred to as a “gamma function”, and the exponent of the voltage signal is referred to as “gamma”.
С другой стороны, когда информация видеоизображений захватывается камерой или генерируется системой трехмерной подготовки к просмотру, информация изображений выражается в линейном цветовом пространстве RGB, что означает, что существует линейное отношение между входящим сигналом и выходной яркостью. Чтобы разрешить несоответствие между линейностью камеры и нелинейностью дисплея, камеры традиционно выполняют предварительную корректировку сигнала, который они сгенерировали, посредством применения инверсии гаммы. Другими словами, функция преобразования камеры (иногда упоминаемая как кодирующая функция преобразования) - это приблизительно обратная функция характеристики яркости ЭЛТ. Результат применения кодирующей функции преобразования (или обратной гаммы) заключается в том, чтобы сгенерировать "гамма-скорректированную" информацию изображений, которая имеет нелинейную форму. Когда нелинейный сигнал передается посредством дисплейного устройства, генерируется близкая к линейной яркость. Кроме того, согласно вышеописанному обозначению, нелинейная (или предварительно скорректированная) информация изображений обозначается посредством добавления апострофа к компонентам, к примеру, R'G'B' или Y'CbCr (где апострофы для компонент Сb и Сr подразумеваются).On the other hand, when information of video images is captured by a camera or generated by a three-dimensional preparation system for viewing, image information is expressed in a linear RGB color space, which means that there is a linear relationship between the input signal and the output brightness. To resolve the mismatch between the linearity of the camera and the non-linearity of the display, cameras traditionally perform a preliminary adjustment of the signal that they generated by applying gamma inversion. In other words, the camera conversion function (sometimes referred to as the encoding conversion function) is approximately the inverse of the CRT brightness characteristic. The result of applying the transform coding function (or inverse gamma) is to generate gamma-corrected image information that is non-linear. When a non-linear signal is transmitted by the display device, near-linear brightness is generated. In addition, as described above, non-linear (or pre-adjusted) image information is indicated by adding an apostrophe to the components, for example, R'G'B 'or Y'CbCr (where apostrophes for the components Cb and Cr are implied).
Таким образом, стало общераспространенной и стандартной практикой сохранять информацию изображений в нелинейной (скорректированной) форме яркость-цветность. Чтобы сохранить совместимость, любой источник, генерирующий сигнал, который должен отображаться на ЭЛТ, также должен сначала применить обратную функцию к сигналу.Thus, it has become a common and standard practice to store image information in a non-linear (corrected) form of brightness-color. To maintain compatibility, any source that generates a signal that must be displayed on a CRT must also first apply the inverse function to the signal.
Особо отметим, что кодирование информации изображений с помощью функции преобразования, как правило, применяет специальную функцию аппроксимации к части низкого напряжения функции. Т.е. методики кодирования, как правило, предоставляют линейный сегмент в этой части, чтобы ослабить эффект шума в датчике формирования изображений. Этот сегмент упоминается как "линейный хвост", имеющий заданный "закругленный наклон". Этот сегмент повышает качество информации изображений, представляемых на фактических ЭЛТ, поскольку эти устройства имеют линейные характеристики яркости-напряжения около 0 вследствие физической структуры этих устройств.We emphasize that the encoding of image information using the conversion function, as a rule, applies a special approximation function to the low voltage part of the function. Those. coding techniques typically provide a linear segment in this part to attenuate the noise effect in the image forming sensor. This segment is referred to as a “linear tail” having a predetermined “rounded slope”. This segment improves the quality of the information in images displayed on actual CRTs because these devices have linear brightness-voltage characteristics of about 0 due to the physical structure of these devices.
- Дискретизация и синхронизация информации цветности относительно информации яркости- Discretization and synchronization of color information regarding luminance information
Человеческое зрение больше реагирует на изменения интенсивности света, чем на хроматические компоненты света. Системы кодирования используют преимущество этого, чтобы уменьшать объем информации цветности (СbСr), которая кодируется относительно объема информации яркости (Y'). Эта методика упоминается как субдискретизация цветности. Числовое обозначение, представляемое, как правило, как L:M:N, может быть использовано для того, чтобы выразить эту стратегию дискретизации, где L представляет опорный коэффициент дискретизации компонента яркости (V), а М и N означают дискретизацию цветности (к примеру, Сb и Сr соответственно) относительно дискретизации яркости (V). Например, обозначение 4:4:4 может обозначать данные Y'CbCr, в которых предусмотрена одна выборка цветности для каждой выборки яркости. Обозначение 4:2:2 может обозначать данные Y'CbCr, в которых предусмотрена одна выборка цветности для каждых двух выборок яркости (горизонтально). Обозначение 4:2:0 может обозначать данные Y'CbCr, в которых предусмотрена одна выборка цветности для каждого кластера "два-на-два" выборок яркости. Обозначение 4:1:1 может обозначать данные Y'CbCr, в которых предусмотрена одна выборка цветности для четырех выборок яркости (горизонтально).Human vision responds more to changes in light intensity than to the chromatic components of light. Coding systems take advantage of this to reduce the amount of chroma information (CbCr), which is encoded relative to the amount of luminance information (Y '). This technique is referred to as chroma subsampling. A numerical designation, usually represented as L: M: N, can be used to express this sampling strategy, where L represents the reference sampling coefficient of the luminance component (V), and M and N mean color sampling (for example, Cb and Cr, respectively) with respect to the discretization of brightness (V). For example, a 4: 4: 4 designation may denote Y'CbCr data in which one chroma sample is provided for each luma sample. A 4: 2: 2 designation can denote Y'CbCr data that provides one color sample for every two brightness samples (horizontal). A 4: 2: 0 designation may denote Y'CbCr data, in which one chroma sample is provided for each cluster of two-on-two brightness samples. A 4: 1: 1 designation can denote Y'CbCr data that provides one color sample for four brightness samples (horizontal).
В тех случаях, когда стратегия кодирования предусматривает больше информации яркости, чем информации цветности, декодер может восстановить "отсутствующую" информацию цветности посредством выполнения интерполяции на основе информации цветности, которая предоставляется. Обобщая, понижающая дискретизация означает любую методику, которая генерирует меньшее число выборок изображений в сравнении с первоначальным набором выборок изображений. Повышающая дискретизация означает любую методику, которая генерирует большее число выборок изображений в сравнении с первоначальным набором выборок изображений. Таким образом, вышеописанная интерполяция задает тип повышающей дискретизации.In cases where the encoding strategy provides more luminance information than chroma information, the decoder can recover the “missing” chroma information by performing interpolation based on the chroma information that is provided. Summarizing, downsampling means any technique that generates fewer image samples compared to the original set of image samples. Upsampling means any technique that generates a larger number of image samples compared to the original set of image samples. Thus, the above interpolation defines the type of upsampling.
Стратегии кодирования также задают способ, которым выборки цветности пространственно синхронизируются с выборками яркости. Стратегии кодирования различаются в этом отношении. Выборки цветности синхронизируются с выборками яркости таким образом, чтобы выборки цветности размещались непосредственно "над" выборками яркости. Это упоминается как пространственное совмещение. Другие стратегии размещают выборки цветности в пустотах между выборками в двухмерной решетке выборок цветности.Coding strategies also define the way in which chroma samples are spatially synchronized with luma samples. Coding strategies vary in this regard. The color samples are synchronized with the brightness samples so that the color samples are placed directly "above" the brightness samples. This is referred to as spatial alignment. Other strategies place color samples in voids between samples in a two-dimensional lattice of color samples.
- Вопросы, связанные с квантованием- Questions related to quantization
Квантование относится к методологии, посредством которой дискретные числовые значения назначаются амплитудам сигнала цветовых компонент (или черно-белой информации). В цифровой области числовые значения охватывают заранее заданный диапазон (гамму цветов) значений цветового пространства за заранее заданное число этапов. Часто используют, например, 255 этапов для описания каждого значения компоненты, так чтобы каждая компонента могла допускать значение от 0 до 255. Часто выражают каждое цветовое значения с помощью 8 бит.Quantization refers to a methodology by which discrete numerical values are assigned to signal amplitudes of color components (or black and white information). In the digital domain, numerical values encompass a predetermined range (color gamut) of color space values in a predetermined number of steps. Often 255 steps are used, for example, to describe each component value so that each component can tolerate a value from 0 to 255. Each color value is often expressed using 8 bits.
Преобразование из числа высокой точности к числу меньшей точности иногда может генерировать различные искажения изображения. Разработаны различные алгоритмы дисперсии ошибок, чтобы разрешать эту проблему, такие как алгоритм Флойда-Стайнберга. Алгоритмы дисперсии ошибок позволяют распределять ошибки, генерированные округлением при квантовании, на соседние пиксельные точки. Дополнительная исходная информация, касающаяся алгоритма Флойда-Стайнберга, представлена в подробном описании далее.Converting from a high precision number to a lower precision number can sometimes generate various image distortions. Various error dispersion algorithms have been developed to solve this problem, such as the Floyd-Steinberg algorithm. Error dispersion algorithms make it possible to distribute errors generated by rounding during quantization to neighboring pixel points. Additional background information regarding the Floyd-Steinberg algorithm is presented in the detailed description below.
- Вопросы, связанные со сравнением чересстрочного и построчного представления- Matters related to comparing interlaced and row-wise representations
Первоначально телевизионные приемники отображали только информацию черно-белых изображений в построчной развертке сверху вниз. Сегодня традиционные телевизионные сигналы развертываются в чересстрочном режиме. При чересстрочной развертке захватывается первое поле видеокадра, а затем через короткий промежуток времени - второе поле видеокадра (к примеру, через 1/50 или 1/60 секунды). Второе поле вертикально немного смещено относительно первого поля, так чтобы второе поле захватывало информацию в пустотах между строками развертки первого поля. Видеоинформация представляется посредством быстрого отображения первого и второго полей друг за другом, так чтобы видеоинформация в большинстве случаев воспринималась человеком как один непрерывный поток информации.Initially, television sets only displayed black and white information in progressive scan from top to bottom. Today, traditional television signals are interlaced. When interlaced, the first field of the video frame is captured, and then after a short period of time - the second field of the video frame (for example, after 1/50 or 1/60 of a second). The second field is vertically offset slightly from the first field so that the second field captures information in the voids between the scan lines of the first field. Video information is presented by quickly displaying the first and second fields one after another, so that in most cases video information is perceived by a person as one continuous stream of information.
Тем не менее, мониторы вычислительных машин и другое оборудование представления отображают информацию изображений построчно, а не чересстрочно. Таким образом, для того чтобы устройство представляло чересстрочную информацию на мониторе вычислительной машины, оно должно отображать прогрессивные кадры на скорости нечетного поля посредством интерполирования данных для противоположного поля (процесс упоминается как "расперемежение"). Например, чтобы отобразить нечетное поле, необходимо интерполировать "отсутствующие" данные для пространственной позиции между строками посредством анализа полей на другой стороне. Термин "построчный формат", в общем, относится ко всем форматам изображений с прогрессивной разверткой.However, computer monitors and other presentation equipment display image information line by line rather than interlaced. Thus, in order for the device to present interlaced information on a computer monitor, it must display progressive frames at the speed of an odd field by interpolating data for the opposite field (the process is referred to as “interleaving”). For example, to display an odd field, it is necessary to interpolate the “missing” data for the spatial position between the lines by analyzing the fields on the other side. The term "line-by-line format" generally refers to all progressive scan image formats.
Информация изображений (к примеру, от видеокамеры) типично сохраняется в чересстрочной форме, к примеру, когда первое поле сохранено отдельно (семантически) от второго поля. Если информация изображений должна быть просто отображена на телевизионном дисплее с чересстрочной разверткой, его чересстрочная информация Y'UV может передаваться непосредственно в ЭЛТ. ЭЛТ внутренне преобразует информацию в информацию R'G'B' и управляет выходными пушками с помощью этого сигнала.Image information (for example, from a video camera) is typically stored in interlaced form, for example, when the first field is stored separately (semantically) from the second field. If the image information needs to be simply displayed on an interlaced television display, its Y'UV interlaced information can be transmitted directly to the CRT. A CRT internally converts information into R'G'B 'information and controls the output guns with this signal.
Чересстрочная развертка является более выгодной, поскольку она удваивает фактическое вертикальное разрешение информации изображений. Тем не менее, чересстрочная развертка также приводит к искажениям изображения. Это обусловлено тем, что объекты могут перемещаться при 60 Гц, но при чересстрочном представлении только половина изображения показывается каждые 30 Гц. Результирующее искажение, генерируемое вследствие этого явления, иногда упоминается как "растяжка". Искажение изображения обнаруживается в значительной степени при отображении быстроменяющихся видеоизображений, когда кажется, что объекты распадаются на четные и нечетные строки.Interlacing is more advantageous because it doubles the actual vertical resolution of the image information. However, interlacing also leads to image distortion. This is due to the fact that objects can move at 60 Hz, but when interlaced, only half of the image is displayed every 30 Hz. The resulting distortion generated as a result of this phenomenon is sometimes referred to as “stretching”. Image distortion is detected to a large extent when displaying rapidly changing video images, when it seems that objects are breaking up into even and odd lines.
Дополнительную информацию, касающуюся каждой из вышеуказанных тем, можно найти во многих вступительных публикациях, к примеру, в широко известном материале "Digital Video and HDTV (Morgan Kaufmann Publishers, 2003)" автора Charles Poyton.Additional information regarding each of the above topics can be found in many introductory publications, for example, in the well-known material Digital Video and HDTV (Morgan Kaufmann Publishers, 2003) by Charles Poyton.
Сущность изобретенияSUMMARY OF THE INVENTION
Описываются стратегии обработки информации изображений в линейной форме, чтобы уменьшить количество искажений изображения (по сравнению с обработкой данных в нелинейной форме). Примерные типы операций обработки могут включать в себя масштабирование, создание композитных изображений, альфа-сопряжение, выделение краев и т.д. В более конкретной реализации описываются стратегии для обработки информации изображений, которая: а) является линейной; b) находится в цветовом пространстве RGB; с) имеет высокую точность (к примеру, обеспечиваемую посредством представления с плавающей запятой); d) является построчной и е) является полноканальной. Другие усовершенствования предоставляют стратегии для: а) обработки информации изображений в псевдолинейном пространстве, чтобы повысить скорость обработки; b) реализации улучшенной методики дисперсии ошибок; с) динамического вычисления и применения ядер фильтра; d) оптимизации генерирования конвейерного кода и е) реализации различных задач обработки с помощью новых методик пиксельного шейдера.Strategies for processing image information in a linear form are described in order to reduce the amount of image distortion (compared to processing data in a non-linear form). Exemplary types of processing operations may include scaling, composite image creation, alpha blending, edge selection, etc. In a more specific implementation, strategies are described for processing image information that is: a) linear; b) is in the RGB color space; c) has high accuracy (for example, provided through a floating point representation); d) is line-by-line and e) is full-channel. Other enhancements provide strategies for: a) processing image information in pseudo-linear space to increase processing speed; b) implementing an improved error dispersion technique; c) dynamic calculation and application of filter cores; d) optimizing the generation of pipelined code; and e) implementing various processing tasks using new pixel shader techniques.
Краткое описание чертежейBrief Description of the Drawings
Фиг.1 показывает примерный конвейер обработки изображений, включающий в себя обработку информации изображений в линейном формате.Figure 1 shows an example image processing pipeline including processing image information in a linear format.
Фиг.2 показывает примерную процедуру обработки информации изображений в линейном формате с помощью конвейера обработки изображений по фиг.1.FIG. 2 shows an example procedure for processing image information in a linear format using the image processing pipeline of FIG. 1.
Фиг.3 показывает выборку информации изображений 4:2:0 в качестве предмета обсуждения некоторых трудностей при обработке этой информации без внесения искажений в изображения.Figure 3 shows a selection of 4: 2: 0 image information as a subject of discussion of some difficulties in processing this information without introducing distortion into the images.
Фиг.4 показывает примерный модуль конвейера обработки изображений, который касается обработки информации изображений в псевдолинейном формате.4 shows an exemplary image processing pipeline module that relates to processing image information in a pseudo-linear format.
Фиг.5 показывает примерную процедуру обработки информации изображений в псевдолинейном формате с помощью модуля конвейера обработки изображений, показанного фиг.4.FIG. 5 shows an example procedure for processing image information in a pseudo-linear format using the image processing pipeline module shown in FIG. 4.
Фиг.6 и 7 совместно поясняют известные подходы к выполнению сглаживания и дисперсии ошибок.6 and 7 together explain well-known approaches to performing anti-aliasing and error dispersion.
Фиг.8 показывает примерную систему для предоставления сглаживания и дисперсии ошибок, которая дает отличные результаты для моделей, описанных в связи в фиг.6 и 7.FIG. 8 shows an exemplary system for providing error smoothing and dispersion that provides excellent results for the models described in connection with FIGS. 6 and 7.
Фиг.9 показывает примерную процедуру осуществления сглаживания и дисперсии ошибок с помощью системы на фиг.8.Fig.9 shows an exemplary procedure for smoothing and variance errors using the system of Fig.8.
Фиг.10 показывает примерную систему предоставления фильтрации при выполнении масштабирования, включающего в себя динамическое вычисление ядер фильтра.10 shows an exemplary filtering providing system when performing scaling, including dynamically computing filter cores.
Фиг.11 показывает примерную процедуру осуществления фильтрации с помощью системы на фиг.10.11 shows an exemplary filtering procedure using the system of FIG. 10.
Фиг.12 показывает примерный конвейер обработки изображений, который может содержать все описанные в данном документе усовершенствования.12 shows an example image processing pipeline that may include all of the enhancements described herein.
Фиг.13 показывает примерную систему генерирования эффективного кода, используемого для того, чтобы реализовать конвейер обработки изображений по фиг.12, к примеру, посредством исключения модулей кода, которые не требуются для конкретного приложения обработки изображений.FIG. 13 shows an example efficient code generating system used to implement the image processing pipeline of FIG. 12, for example, by eliminating code modules that are not required for a particular image processing application.
Фиг.14 показывает примерную процедуру применения системы оптимизации кода, показанной на фиг.13.Fig. 14 shows an exemplary procedure for applying the code optimization system shown in Fig. 13.
Фиг.15 показывает примерную систему для реализации конвейера обработки изображений по фиг.12 посредством использования графического процессора (GPU), содержащего функциональность пиксельного шейдера.FIG. 15 shows an example system for implementing the image processing pipeline of FIG. 12 by using a graphics processing unit (GPU) comprising pixel shader functionality.
Фиг.16 показывает известную структуру пиксельного шейдера.Fig. 16 shows a known pixel shader structure.
Фиг.17 показывает общие принципы, связанные с применением информации текстуры к полигонам в контексте типичных графических вариантов применения.17 shows the general principles associated with applying texture information to polygons in the context of typical graphical applications.
Фиг.18 показывает примерную реализацию 4-отводного фильтра, использующего пиксельный шейдер.FIG. 18 shows an exemplary implementation of a 4-tap filter using a pixel shader.
Фиг.19 показывает примерную процедуру, которая описывает работу фильтра по фиг.19.Fig.19 shows an exemplary procedure that describes the operation of the filter of Fig.19.
Фиг.20 показывает более общую реализацию аспектов конвейера обработки изображений по фиг.1 с помощью пиксельного шейдера.FIG. 20 shows a more general implementation of aspects of the image processing pipeline of FIG. 1 using a pixel shader.
Фиг.21 показывает примерное вычислительное окружение для реализации аспектов различных признаков, показанных на вышеописанных чертежах.21 shows an exemplary computing environment for implementing aspects of various features shown in the above-described drawings.
Одинаковые номера используются в данном описании и на чертежах, чтобы ссылаться на аналогичные компоненты или признаки. Номера последовательности 100 означают признаки, первоначально заложенные на фиг.1, номера последовательности 200 означают признаки, первоначально заложенные на фиг.2, номера последовательности 300 означают признаки, первоначально заложенные на фиг.3, и т.д.The same numbers are used throughout this specification and in the drawings to refer to like components or features. Sequence numbers 100 mean signs originally laid down in FIG. 1,
Подробное описание предпочтительного варианта осуществленияDetailed Description of a Preferred Embodiment
Последующее описание излагает различные стратегии усовершенствования конвейера обработки изображений. Стратегии предлагают новые способы обработки информации изображений на основе пересмотра укоренившихся представлений в данной области техники. Первый класс усовершенствований (описанный в разделе А) может абстрактно применяться ко всем конвейерам обработки изображений. Второй класс усовершенствований (описанный в разделе В) применяется в большей степени к определенным конкретным для технологии или конкретным для реализации вариантам применения конвейеров обработки изображений.The following description sets forth various strategies for improving the image processing pipeline. Strategies offer new ways of processing image information based on the revision of entrenched beliefs in the art. The first class of enhancements (described in Section A) can abstractly apply to all image processing pipelines. The second class of enhancements (described in Section B) applies more to certain technology-specific or implementation-specific applications for image processing pipelines.
Согласно одной примерной стратегии информация изображений, принимаемая посредством конвейера обработки изображений, преобразуется в линейную форму и затем обрабатывается в этой форме. В одной примерной реализации, например, принимаемая связанная с яркостью информация изображений (к примеру, Y'CbCr) преобразуется в линейную форму RGB и обрабатывается в этой форме. Примерные задачи обработки могут включать в себя расперемежение, изменение размера (масштабирование), составление композитных изображений, альфа-сопряжение, выделение краев, увеличение резкости и т.п. Обработка информации изображений в линейном пространстве (в отличие от нелинейного пространства) имеет явные преимущества, поскольку она, как правило, генерирует выходные результаты, имеющие меньше искажений изображения.According to one exemplary strategy, image information received by the image processing pipeline is converted to a linear form and then processed in that form. In one exemplary implementation, for example, received luminance-related image information (eg, Y'CbCr) is converted to a linear RGB shape and processed in that form. Exemplary processing tasks may include interleaving, resizing (scaling), composing composite images, alpha blending, selecting edges, sharpening, etc. Processing image information in linear space (as opposed to non-linear space) has clear advantages, since it usually generates output results that have less image distortion.
Согласно другой примерной стратегии информация изображений преобразуется в полноканальный (4:4:4) формат высокой точности и обрабатывается в этом формате, после чего выполняется квантование информации до меньшей точности. Информация более высокой точности может быть выражена в формате с плавающей запятой. Обработка полноканальной информации высокой точности является выгодной, поскольку она генерирует выходные результаты, имеющие меньше искажений изображений, и позволяет снижать падение разрешения цветности по мере того, как информация обрабатывается в конвейере.According to another exemplary strategy, the image information is converted to a full-channel (4: 4: 4) high-precision format and processed in this format, after which the information is quantized to a lower accuracy. Higher precision information can be expressed in floating point format. Processing high-precision full-channel information is advantageous because it generates output results that have less image distortion and can reduce the color resolution drop as the information is processed in the pipeline.
Согласно другой примерной стратегии специальные меры предусмотрены для обработки информации чересстрочных изображений 4:2:0. Эти специальные меры обеспечивают способы интегрирования операции повышающей дискретизации с операцией расперемежения. Эта стратегия обладает преимуществами по ряду причин. Например, эта стратегия обеспечивает, что информация 4:2:0 будет обработана корректно, к примеру, без генерирования так называемого искажения обработки "дефект цветности".According to another exemplary strategy, special measures are provided for processing 4: 2: 0 interlaced image information. These special measures provide ways to integrate the upsampling operation with the interleaving operation. This strategy has advantages for several reasons. For example, this strategy ensures that 4: 2: 0 information will be processed correctly, for example, without generating a so-called “color defect” processing distortion.
Согласно другой примерной стратегии специальные функции преобразования могут быть применены для преобразования информации в псевдолинейное пространство вместо теоретической корректировки линейного пространства. После этого следует выполнение обработки информации изображений в этом псевдолинейном пространстве с помощью алгоритмов линейного типа (без необходимости модифицировать эти алгоритмы, чтобы учитывать их применение к нелинейным сигналам). Эта стратегия обладает преимуществами, поскольку она влечет за собой математические операции, которые могут выполняться быстрее с помощью доступных аппаратных средств обработки. Эта стратегия также устраняет необходимость изменять алгоритмы обработки посредством включения механизмов коррекции ошибок в эти алгоритмы. Целью алгоритмов коррекции ошибок являлась минимизация негативных эффектов при использовании линейных алгоритмов для того, чтобы работать с нелинейными данными. Тем не менее, исполнение и применение этих механизмов коррекции ошибок зачастую становилось более сложным, чем исходные алгоритмы обработки.According to another exemplary strategy, special transformation functions can be applied to convert information into a pseudo-linear space instead of theoretically adjusting the linear space. This is followed by the processing of image information in this pseudo-linear space using linear-type algorithms (without the need to modify these algorithms to take into account their application to non-linear signals). This strategy has advantages because it entails mathematical operations that can be performed faster using available processing hardware. This strategy also eliminates the need to modify processing algorithms by including error correction mechanisms in these algorithms. The purpose of error correction algorithms was to minimize negative effects when using linear algorithms in order to work with non-linear data. However, the execution and application of these error correction mechanisms has often become more complex than the original processing algorithms.
Согласно другой примерной стратегии применяется уникальный алгоритм дисперсии ошибок. Для каждого пиксела в информации исходных изображений алгоритм квантует сумму, задаваемую посредством исходного изображения, информации о шуме и вектора ошибок. Это имеет результатом квантованное значение для этого конкретного пиксела. После этого алгоритм вычисляет вектор ошибок для последующего пиксела, который должен быть обработан, посредством вычисления разности между квантованным значением и исходным значением. Эта стратегия превосходит известные в данной области техники стратегии, которые, по сути, добавляют шум в информацию исходных изображений и затем квантуют информацию изображений с шумами. Эти известные методики далее вычисляют вектор ошибок со ссылкой на информацию изображений с шумами вместо информации исходных изображений. Таким образом, в отличие от стратегии, раскрытой в данном документе, известные методики ухудшают информацию исходных изображений пропорционально информации о шумах, добавляемых в нее. В качестве дополнительного усовершенствования стратегии, описанные в данном документе, используют генератор шумов, имеющий относительный период повторения и достаточно похожие на шумы псевдослучайные характеристики, так чтобы сам генератор шумов не создавал искажений в информации целевых изображений.According to another exemplary strategy, a unique error dispersion algorithm is used. For each pixel in the information of the source images, the algorithm quantizes the amount specified by the source image, the noise information, and the error vector. This results in a quantized value for this particular pixel. After that, the algorithm calculates the error vector for the next pixel to be processed by calculating the difference between the quantized value and the original value. This strategy is superior to the strategies known in the art, which essentially add noise to the source image information and then quantize the image information with noise. These known techniques further calculate an error vector with reference to image information with noise instead of the original image information. Thus, in contrast to the strategy disclosed in this document, known techniques degrade the information of the original images in proportion to the information about the noise added to it. As an additional improvement, the strategies described in this document use a noise generator having a relative repetition period and pseudorandom characteristics sufficiently similar to noise, so that the noise generator itself does not distort the information in the target images.
Согласно другой стратегии вариант фильтра Катмулла-Рома используется для того, чтобы выполнять операции масштабирования. Стратегия включает в себя вычисление числа ядер фильтра, требуемых для того, чтобы изменить размер информации изображений, и числа отводов, требуемых каждым ядром, и последующее предварительное вычисление ядер фильтра. Далее эти ядра фильтра применяются к информации изображений. Более конкретно, ядра могут быть циклически применены к строкам и столбцам информации изображений. Эта стратегия обладает преимуществами по ряду причин. Например, применение динамически рассчитываемых ядер фильтра уменьшает некоторые искажения изображений, известные в используемых вариантах применения. Предварительное вычисление ядер фильтра имеет преимущества, поскольку оно ускоряет фактическое применение фильтра. Разумное использование минимального набора циклически применяемых ядер имеет дополнительные преимущества в плане эффективности.According to another strategy, the Katmull-Rum filter option is used to perform scaling operations. The strategy includes calculating the number of filter cores required to resize image information and the number of taps required by each core, and then pre-calculating the filter cores. These filter cores are then applied to image information. More specifically, kernels can be cyclically applied to rows and columns of image information. This strategy has advantages for several reasons. For example, the use of dynamically calculated filter cores reduces some image distortion known in the used applications. Pre-computing filter cores has advantages as it speeds up the actual use of the filter. The wise use of a minimum set of cyclically applied cores has additional performance benefits.
Согласно другой стратегии описана функциональность генерирования кода для реализации конвейера обработки изображений. Функциональность принимает требования, которые задают то, какие типы операций предположительно должен выполнять конвейер, а затем выборочно ассемблирует модули кода из библиотеки таких модулей, чтобы реализовать эти функции. Функциональность не содержит модулей из библиотеки, которые не требуются. Эта стратегия обладает преимуществами по многим причинам. Например, она помогает генерировать код, который является более эффективным и, таким образом, потенциально выполняется быстрее.According to another strategy, code generation functionality for implementing an image processing pipeline is described. Functionality accepts requirements that specify what types of operations the pipeline is supposed to perform, and then selectively assemble code modules from a library of such modules in order to implement these functions. Functionality does not contain modules from the library that are not required. This strategy has advantages for many reasons. For example, it helps generate code that is more efficient and thus potentially runs faster.
Наконец, другая стратегия использует графический процессор (GPU) для того, чтобы реализовывать определенные аспекты конвейера обработки изображений или все функции в конвейере обработки изображений. Конкретные реализации применяют пиксельный шейдер (процессор цифровых сигналов (DSP) в GPU), чтобы осуществлять фильтрацию изображений. В одном случае одна или более единиц текстуры пиксельного шейдера могут быть назначены весам ядер фильтра, и одна или более других единиц текстуры пиксельного шейдера могут быть назначены другим дельта-смещенным версиям той же информации входных изображений (ассоциативно связанной с отводами ядра). Эта стратегия обладает преимуществами, поскольку она потенциально предоставляет большую скорость обработки и пропускную способность обработки в сравнении с реализацией в ЦП благодаря возможностям векторной обработки пиксельных шейдеров.Finally, another strategy uses a graphics processing unit (GPU) to implement certain aspects of the image processing pipeline or all functions in the image processing pipeline. Specific implementations use a pixel shader (digital signal processor (DSP) in the GPU) to filter images. In one case, one or more pixel shader texture units may be assigned to filter core weights, and one or more other pixel shader texture units may be assigned to other delta-shifted versions of the same input image information (associated with core taps). This strategy has advantages because it potentially provides greater processing speed and processing throughput compared to the implementation in the CPU due to the vector processing capabilities of pixel shaders.
Дополнительные признаки и сопутствующие преимущества стратегий излагаются в этом описании.Additional features and concomitant advantages of strategies are described in this description.
Что касается терминологии, термин "информация изображения" служит для того, чтобы содержать в себя все типы информации, которые могут быть потребляемы пользователем в любой визуальной форме. Информация изображений, может представлять информацию, выраженную в любом формате, например аналоговом формате, цифровом формате или любом сочетании аналогового и цифрового форматов. Информация изображений может представлять информацию статических изображений (к примеру, цифровые фотографии) и/или информацию движущихся изображений (к примеру, информацию видеоизображений). Дополнительные вариации допускаются при использовании термина "информация изображений".With regard to terminology, the term "image information" is used to include all types of information that can be consumed by the user in any visual form. The image information may represent information expressed in any format, for example, an analog format, a digital format, or any combination of analog and digital formats. The image information may represent still image information (e.g., digital photographs) and / or moving image information (e.g., video image information). Additional variations are allowed when using the term "image information".
Термин "конвейер обработки изображений" относится к любой функциональности для обработки информации изображений. Конвейер включает в себя, по меньшей мере, два функциональных компонента, которые работают с информацией изображений последовательным методом, т.е. один за другим.The term "image processing pipeline" refers to any functionality for processing image information. The conveyor includes at least two functional components that work with image information in a sequential manner, i.e. in sequence.
Термин "линеаризация" означает преобразование информации изображений из нелинейной предварительно скорректированной формы в линейную форму. Термин "нелинеаризация" означает операцию, обратную линеаризации.The term "linearization" means the conversion of image information from a non-linear pre-adjusted form to a linear form. The term "non-linearization" means the operation, the inverse of linearization.
Термин "связанная с яркостью информация изображений" означает информацию изображений, имеющую связанную с яркостью компоненту (к примеру, Y') и компоненты цветности. Термин "связанное с яркостью цветовое пространство" означает любой из нескольких стандартов для формирования связанной с яркостью информации изображений (к примеру, Y'CbCr и т.д.).The term “luminance-related image information” means image information having a luminance-related component (eg, Y ′) and color components. The term “luminance-related color space” means any of several standards for generating luminance-related image information (eg, Y'CbCr, etc.).
В целом, в отношении структурных аспектов описанной сущности любые из функций, изложенных в данном документе, могут быть реализованы с помощью программного обеспечения, микропрограммного обеспечения (к примеру, схемы с фиксированной логикой), ручной обработки или комбинации этих реализации. Термины "модуль", "функциональность" и "логика" при использовании в данном документе обычно представляют программное обеспечение, микропрограммное обеспечение или сочетание программного обеспечения и микропрограммного обеспечения. В случае реализации в программном обеспечении термины модуль, функциональность или логика представляют программный код, который выполняет заданные задачи при приведении в исполнение в процессорном устройстве или устройствах (к примеру, ЦП или множестве ЦП). Программный код может быть сохранен на одном или более стационарных или съемных машиночитаемых запоминающих устройств.In general, with respect to the structural aspects of the described entity, any of the functions described in this document can be implemented using software, firmware (for example, fixed logic circuits), manual processing, or a combination of these implementations. The terms “module,” “functionality,” and “logic,” as used herein, typically represent software, firmware, or a combination of software and firmware. If implemented in software, the terms module, functionality, or logic represent program code that performs specified tasks when executed on a processor device or devices (for example, a CPU or multiple CPUs). The program code may be stored on one or more fixed or removable computer-readable memory devices.
Что касается процедурных аспектов данной сущности, определенные операции описаны как составляющие отдельные этапы, выполняемые в определенном порядке. Эти реализации являются примерными и неограничивающими. Определенные этапы, описанные в данном документе, могут быть сгруппированы вместе и выполняться в одной операции, а определенные этапы могут выполняться в порядке, который отличается от порядка, используемого в примерах, изложенных в данном описании.Regarding the procedural aspects of this entity, certain operations are described as constituting separate steps, performed in a specific order. These implementations are exemplary and non-limiting. Certain steps described herein may be grouped together and performed in a single operation, and certain steps may be performed in an order that differs from the order used in the examples set forth herein.
Данное описание включает в себя следующее содержимое:This description includes the following contents:
А. Примерные общие усовершенствования конвейера видеообработкиA. Exemplary General Video Processing Pipeline Enhancements
A1. Обработка информации изображений в цветовом (линейном) пространстве RGBA1. Image processing in RGB color (linear) space
А2. Использование полноканальной информации изображений с плавающей запятой в конвейереA2. Using full-channel floating-point image information in a pipeline
A3. Специальные меры для информации изображений 4:2:0A3. Special measures for image information 4: 2: 0
А4. Обработка информации изображений в псевдолинейном пространствеA4. Processing image information in pseudo-linear space
А5. Усовершенствования алгоритмов дисперсии ошибокA5. Improvements to Error Dispersion Algorithms
А6. Динамическое вычисление ядер фильтраA6. Dynamic calculation of filter cores
В. Примерные связанные с реализацией усовершенствования в конвейере видеообработкиB. Exemplary Implementation-related Improvements in the Video Processing Pipeline
B1. Оптимальное генерирование кода конвейерной обработкиB1. Optimal Pipeline Generation
B2. Общие принципы использования GPU для выполнения обработки изображенийB2. General principles of using GPU for image processing
B3. Усовершенствования пиксельного шейдераB3. Pixel Shader Enhancements
С. Примерное вычислительное окружениеC. Exemplary computing environment
А. Примерные общие усовершенствования конвейера видеообработкиA. Exemplary General Video Processing Pipeline Enhancements
A1. Обработка информации изображений в цветовом пространстве RGB (линейном)A1. Image processing in RGB (linear) color space
Фиг.1 показывает примерный конвейер 100 обработки изображений для обработки информации изображений (к примеру, видеоинформации). В качестве общего представления самая верхняя строка модулей принимает информацию изображений от любого из различных источников (камеры, сканера, диска, носителя хранения, цифровой сети и т.д.) и затем преобразует информацию изображений в форму для обработки. Крупный модуль в середине чертежа представляет эту обработку, которая приводит к обработанной информации изображений. Самая нижняя строка модулей преобразует обработанную информацию изображений в ту форму, которая подходит для вывода узлу назначения (к примеру, телевизионному приемнику, монитору вычислительной машины, носителю хранения, цифровой сети и т.д.).FIG. 1 shows an example image processing pipeline 100 for processing image information (e.g., video information). As a general representation, the topmost line of modules receives image information from any of various sources (camera, scanner, disk, storage medium, digital network, etc.) and then converts the image information into a processing form. A large module in the middle of the drawing represents this processing, which leads to processed image information. The bottom line of modules converts the processed image information into the form that is suitable for output to the destination node (for example, a television receiver, computer monitor, storage medium, digital network, etc.).
Предусмотрено несколько уникальных и преимущественных аспектов для конвейера 100 обработки изображений, идентифицированных в отдельных подразделах данного изобретения. Этот подраздел останавливается на обработке информации изображений в линейной форме. Другие усовершенствования вытекают из дополнительной обработки информации изображений в чересстрочной (расперемеженной) форме в рамках цветового пространства RGB. В отличие от этого типичный подход в данной области техники заключается в том, чтобы выполнять обработку чересстрочной Y'UV-информации 4:4:4 или 4:2:2. Как признается авторами данного изобретения, обработка информации изображений в нелинейном пространстве приводит к различным искажениям изображения. Подход, осуществляемый в конвейере 100 по фиг.1, разрешает эти проблемы.Several unique and advantageous aspects are provided for the image processing conveyor 100 identified in separate subsections of the present invention. This subsection focuses on processing image information in a linear fashion. Other improvements result from additional processing of image information in interlaced (interleaved) form within the RGB color space. In contrast, a typical approach in the art is to process interlaced Y'UV information of 4: 4: 4 or 4: 2: 2. As recognized by the authors of this invention, the processing of image information in non-linear space leads to various image distortions. The approach taken in the conveyor 100 of FIG. 1 solves these problems.
Каждый из модулей, показанных на фиг.1, описывается по очереди.Each of the modules shown in FIG. 1 is described in turn.
Что касается верхней строки модулей, модуль 102 отмены сглаживания преобразует принимаемую информацию изображений Y'CbCr, имеющую первую точность, в информацию изображений, имеющую вторую точность, при этом вторая точность выше первой точности. Модуль 102 выполняет эту задачу посредством выполнения обработки отмены сглаживания. Т.е. операция сглаживания (не показана) могла использоваться для того, чтобы квантовать информацию входных изображений, которая поступает в конвейер 100, до первой точности. Модуль 102 эффективно применяет инверсию этих операций квантования, чтобы получить вторую, более высокую, точность.Regarding the top row of modules, anti-aliasing module 102 converts received Y'CbCr image information having a first accuracy into image information having a second accuracy, with the second accuracy being higher than the first accuracy. Module 102 performs this task by performing anti-aliasing processing. Those. a smoothing operation (not shown) could be used to quantize the input image information that arrives at the pipeline 100 to the first precision. Module 102 effectively applies the inverse of these quantization operations to obtain a second, higher accuracy.
Модуль 104 повышающей дискретизации преобразует информацию входных изображений, имеющих первое число выборок, в информацию выходных изображений, имеющую второе число выборок, при этом второе число выборок больше первого числа выборок. В типичном варианте применения информация изображений принималась конвейером в форме, в которой больше выборок информации яркости (Y') в сравнении с информацией цветности (Сb или Сr); это обусловлено тем, что глаз более чувствителен к информации яркости, что дает возможным уменьшать объем информации цветности относительно информации яркости без заметного ухудшения качества. Модуль 104 повышающей дискретизации типично работает, чтобы увеличивать число выборок цветности, так чтобы выборки цветности были в равенстве с выборками яркости. Например, модуль 104 повышающей дискретизации может преобразовать информацию изображений Y'CbCr 4:2:0 или 4:2:2 в информацию изображений Y'PbPr 4:4:4. Операция повышающей дискретизации, выполняемая модулем 104, увеличивает число выборок посредством интерполяции существующих выборок (тем самым эффективно выполняя операцию масштабирования). Эти методики интерполяции зачастую конкретно учитывают то, как различные стандарты размещают информацию цветности относительно информации яркости, чтобы предоставлять точные результаты.The upsampling module 104 converts input image information having a first number of samples into output image information having a second number of samples, the second number of samples being greater than the first number of samples. In a typical application, the image information was received by the conveyor in a form in which there are more samples of luminance information (Y ') compared to the color information (Cb or Cr); this is because the eye is more sensitive to luminance information, which makes it possible to reduce the amount of color information with respect to luminance information without noticeable deterioration in quality. The upsampling module 104 typically operates to increase the number of color samples so that the color samples are equal to the brightness samples. For example, upsampling module 104 may convert Y'CbCr 4: 2: 0 or 4: 2: 2 image information into Y'PbPr 4: 4: 4 image information. The upsampling operation performed by module 104 increases the number of samples by interpolating existing samples (thereby effectively performing the scaling operation). These interpolation techniques often specifically take into account how different standards place color information regarding luminance information to provide accurate results.
Модуль 106 применяет матричное преобразование к информации изображений Y'CbCr 4:4:4, чтобы преобразовать ее в другое цветовое пространство, т.е. цветовое пространство R'G'B'.Module 106 applies the matrix transform to Y'CbCr 4: 4: 4 image information to convert it to another color space, i.e. color space R'G'B '.
Затем модуль 108 преобразует нелинейную информацию R'G'B' в линейную форму посредством применения к ней функции преобразования. Это налагает повторение того, что символы апострофа ('), ассоциативно связанные с информацией изображений R'G'B', указывают то, что она в нелинейной форме. Отсутствие апострофов (к примеру, RGB) обычно означает линейные данные (за исключением того, что также распространено удалять апострофы, если традиционно понятно, что упоминаемые сигналы представляют нелинейную информацию, как описано выше). Модельная функция преобразования, показанная на фиг.1 под модулем 108 на фиг.1, иллюстрирует общую форму функции преобразования, которая используется, которая также является общей формой собственной функции преобразования ЭЛТ (не показана). Эта модельная функция преобразования также указывает, что она может использовать линейный хвост рядом с частью V=0 своей кривой, чтобы учитывать специальные соображения, которые применяются в этой "закругленной" области.Module 108 then converts the non-linear information R'G'B 'into a linear form by applying a transform function to it. This imposes a repetition of the fact that the apostrophe characters (') associated with the image information R'G'B' indicate that it is in a non-linear form. The absence of apostrophes (for example, RGB) usually means linear data (except that it is also common to delete apostrophes, if it is traditionally understood that the signals mentioned represent non-linear information, as described above). The model transform function shown in FIG. 1 under module 108 in FIG. 1 illustrates the general form of the transform function that is used, which is also the general form of the CRT's own transform function (not shown). This model transform function also indicates that it can use a linear tail near the V = 0 part of its curve to take into account special considerations that apply in this rounded region.
Модуль 110 необязательно выполняет операцию расперемежения для информации изображений, чтобы преобразовывать их из чересстрочной формы в построчный формат. При выполнении этой задачи модуль 110 может управляться с помощью либо информации изображений RGB, либо исходной информации изображений Y'CbCr (например, для специального случая информации 4:2:0). Тем не менее, операции расперемежения предпочтительно должны выполняться в линейном пространстве RGB. Это обусловлено тем, что расперемежение обычно является формой обработки изображений (включающей в себя, например, интерполяцию существующих выборок). Следовательно, выполнение этой обработки в линейном пространстве дает более точные результаты.The module 110 optionally performs an interleaving operation for the image information in order to convert them from interlaced to a progressive format. In performing this task, the module 110 can be controlled using either the RGB image information or the original Y'CbCr image information (for example, for the special case of 4: 2: 0 information). However, the interleaving operations should preferably be performed in linear linear space RGB. This is because interleaving is usually a form of image processing (including, for example, interpolating existing samples). Therefore, performing this processing in linear space gives more accurate results.
Модуль 112 необязательно преобразует составные цвета линейной информации RGB, чтобы выразить информацию в другом цветовом пространстве. Это преобразование может содержать применение матричного преобразования к информации RGB, чтобы изменять ее составные цвета, чтобы соответствовать тем составным цветам, которые необходимы для обработки, выполняемой в компонентах нисходящего потока конвейера видеообработки. В одном примере модуль 112 может преобразовывать различные типы информации изображений в общее цветовое пространство, что облегчает смешение информации в последующей операции.Module 112 optionally converts the composite colors of linear RGB information to express information in a different color space. This transform may include applying a matrix transform to the RGB information to change its composite colors to match those composite colors that are necessary for processing performed in the downstream components of the video processing pipeline. In one example, module 112 may convert various types of image information into a common color space, which facilitates the mixing of information in a subsequent operation.
Модуль 114, в общем, представляет любой тип обработки информации изображений, имеющих преобразованное цветовое пространство. В этом аспекте обработка осуществляется для информации изображений, т.е. в этом конкретном примере: а) в линейной форме; b) в цветовом пространстве RGB; с) в форме 4:4:4 (полноканальной) и d) в построчном формате. Хотя предпочтительно, чтобы обработка осуществлялась в линейном цветовом пространстве, чтобы уменьшить искажения изображений, все аспекты, перечисленные в этом списке, не должны присутствовать в конвейере обработки изображений, чтобы давать преимущества.Module 114, in general, represents any type of information processing of images having a converted color space. In this aspect, processing is performed for image information, i.e. in this specific example: a) in a linear form; b) in the RGB color space; c) in 4: 4: 4 (full-channel) form; and d) in line-by-line format. Although it is preferable that the processing be carried out in a linear color space in order to reduce image distortion, all aspects listed in this list should not be present in the image processing pipeline to give advantages.
В любом случае модуль 114 может выполнять любой вид обработки информации изображений. По сути, обработка содержит любое преобразование информации изображений, к примеру, выходное изображение = некоторая функция (входное изображение), в том числе любой тип операции фильтра изображений. Репрезентативный и неограничивающий список этих операций обработки включает в себя: а) создание композитных изображений; b) альфа-сопряжение (к примеру, различные затухания и плавные исчезновения); с) выделение краев; d) увеличение резкости; е) изменение размера (масштабирование до больших или меньших размеров изображений); f) расперемежение (если оно еще не выполнено) и т.д. Создание композитных изображений влечет за собой смешение одного типа информации изображений с другим типом информации изображений. Например, модуль 114 может быть использован для того, чтобы объединять графику (к примеру, текстовую информацию) поверх информации видеоизображений, снимаемой с DVD-диска. Альфа-сопряжение влечет за собой плавное сопряжение цветов на основе альфа-коэффициента (который определяет степень, в которой один цвет сопрягается с другим). Например, операция сопряжения определяется следующим уравнением: Окончательный цвет = цвет источника × коэффициент сопряжения источника + цвет назначения × коэффициент сопряжения назначения. В этом уравнении цвет пиксела назначения представляет цвет пиксела в заранее существующей сцене, а цвет пиксела источника представляет новый цвет пиксела, который механизм сопряжения намеревается добавить в пиксел назначения. Коэффициенты сопряжения могут варьироваться от 0 до 1 и используются для того, чтобы управлять тем, какую долю цвета пикселов источника и назначения имеют в значении конечного цвета. Повторимся, что предоставлены просто репрезентативные примеры большого числа потенциальных вариантов применения обработки. В общем, многие из вышеописанных вариантов применения видеообработки могут применять аффинное взвешивание к переходу между информацией изображений источника и назначения. В этих видах вариантов применения использование нелинейного взвешивания может приводить к тому, что общая яркость информации изображений уменьшается слишком быстро. Это всего один пример искажения изображения, который настоящее решение позволяет устранить или смягчить посредством обработки нелинейной информации изображений.In any case, module 114 may perform any type of image information processing. In fact, the processing contains any conversion of image information, for example, output image = some function (input image), including any type of image filter operation. A representative and non-limiting list of these processing operations includes: a) creation of composite images; b) alpha conjugation (for example, various attenuation and fading); c) selection of edges; d) sharpening; f) resizing (scaling to larger or smaller image sizes); f) de-allocation (if not already done), etc. Composite image creation entails mixing one type of image information with another type of image information. For example, module 114 may be used to combine graphics (e.g., textual information) on top of video information captured from a DVD disc. Alpha blending entails smooth blending of colors based on the alpha coefficient (which determines the degree to which one color mates with another). For example, a pairing operation is defined by the following equation: Final color = source color × source pairing coefficient + destination color × destination pairing coefficient. In this equation, the color of the destination pixel represents the color of the pixel in the pre-existing scene, and the color of the source pixel represents the new color of the pixel that the interface intends to add to the destination pixel. Conjugation coefficients can vary from 0 to 1 and are used to control how much of the color of the source and destination pixels in the final color value. Once again, representative examples of a large number of potential processing applications are provided. In general, many of the video processing applications described above can apply affine weighting to the transition between source and destination image information. In these types of applications, the use of nonlinear weighting can cause the overall brightness of the image information to decrease too quickly. This is just one example of image distortion that the present solution can eliminate or mitigate by processing non-linear image information.
Нижняя строка модулей на фиг.1, в общем, выполняет операции, обратные вышеописанным операциям в верхней строке. Т.е. после обработки в модуле 114 модуль 116 необязательно преобразует информацию изображений в другое цветовое пространство, например обратно в цветовое пространство RGB. Модуль 118 применяет необязательное повторное перемежение информации изображений, если оно должно быть сохранено или отображено в чересстрочной форме. Модуль 120 применяет функцию преобразования, чтобы снова преобразовать информацию изображений RGB в нелинейную форму (R'G'B') (если требуется). Модуль 122 изменяет цветовое пространство информации изображений R'G'B' обратно в форме, который отделяет компоненту яркости (Y') от компонентов цветности (к примеру, PbPr). Модуль 124 необязательно субдискретизирует информацию изображений Y'PbPr, чтобы уменьшить объем выборок цветности (PbPr) относительно объема выборок яркости (Y'). Т.е. этот модуль 124 может преобразовать информацию изображений Y'PbPr 4:4:4 (где предусмотрена выборка цветности на каждую выборку яркости) в информацию изображений Y'PbPr 4:2:2 или 4:2:0 (где предусмотрено меньше выборок цветности относительно выборок яркости). Наконец, модуль 126 применяет операцию квантования к информации изображений. Информация квантования имеет эффект преобразования информации изображений к меньшей точности, чтобы упростить эффективную передачу посредством сети, запоминающего устройства, дисплея и т.п. Операция квантования может быть объединена с операцией сглаживания, чтобы снизить искажения, которые в противном случае могли возникать вследствие ошибок округления, генерируемых посредством квантования. Как подробнее описано в следующем подразделе, операция сглаживания имеет эффект распространения этих ошибок на соседние пикселы по мере того, как обрабатывается информация изображений, тем самым смягчая эффекты искажений изображений.The bottom row of the modules in figure 1, in General, performs operations inverse to the above operations in the top row. Those. after processing in module 114, module 116 optionally converts the image information into another color space, for example, back into an RGB color space. Module 118 applies an optional re-interleaving of image information if it is to be stored or displayed in interlaced form. Module 120 employs a conversion function to again convert RGB image information to non-linear form (R'G'B ') (if required). Module 122 changes the color space of the image information R'G'B 'back in a form that separates the luminance component (Y') from the color components (e.g., PbPr). Module 124 optionally sub-samples the image information of Y'PbPr to reduce the size of the color samples (PbPr) relative to the size of the brightness samples (Y '). Those. this module 124 can convert Y'PbPr 4: 4: 4 image information (where chroma samples are provided for each brightness sample) to Y'PbPr 4: 2: 2 or 4: 2: 0 image information (where fewer chroma samples are provided relative to samples brightness). Finally, module 126 applies the quantization operation to image information. The quantization information has the effect of converting the image information to a lower accuracy in order to facilitate efficient transmission through a network, storage device, display, and the like. The quantization operation can be combined with a smoothing operation to reduce distortion that might otherwise occur due to rounding errors generated by quantization. As described in more detail in the next subsection, the smoothing operation has the effect of propagating these errors to neighboring pixels as image information is processed, thereby mitigating the effects of image distortion.
Фиг.2 показывает процедуру 200, которая обобщает вышеописанные операции в форме блок-схемы последовательности операций способа. Этап 202 включает в себя преобразование информации изображений в линейное цветовое пространство, такое как RGB. Информация также предпочтительно расперемежается в построчную форму и подвергается повышающей дискретизации до формата 4:4:4 (полноканального). Таким образом, этап 202 соответствует верхней строке модулей на фиг.1.2 shows a
Этап 204 влечет за собой осуществление любого вида (и комбинации) задач обработки информации изображений в линейной форме.Step 204 entails the implementation of any kind (and combination) of tasks for processing image information in a linear manner.
Этап 206 представляет преобразование линейной информации изображений в любой выходной формат, затребованный конкретным приложением. Это может повлечь за собой преобразование обработанной линейной информации изображений в нелинейное цветовое пространство, ее повторное перемежение, понижающую дискретизацию, квантование и т.д. Этап 206 соответствует нижней строке модулей на фиг.1.Step 206 represents the conversion of linear image information into any output format requested by a particular application. This may entail the conversion of the processed linear image information into a nonlinear color space, its repeated interleaving, downsampling, quantization, etc. Step 206 corresponds to the bottom row of the modules in FIG.
А2. Использование полноканальной информации изображений с плавающей запятой в конвейереA2. Using full-channel floating-point image information in a pipeline
Возвращаясь к фиг.1, конвейер 100 также предоставляет превосходные результаты для известных стратегий, поскольку он использует (а) полноканальную информацию изображений (т.е. 4:4:4), имеющую (b) относительно высокую эффективность обработки с (с) необязательно линейной семантикой. Более конкретно, как описано выше, конвейер 100 преобразует информацию изображений, которую он принимает, до большей точности, чем исходная форма. Конвейер 100 также преобразует информацию изображений в полноканальную форму (4:4:4) посредством увеличения объема выборок цветности в информации относительно выборок яркости. Затем выполняются различные задачи обработки с более точной полноканальной информацией изображений. После того как обработка выполнена, конвейер 100 может снова необязательно преобразовать обработанную информацию изображений в субдискретизированную форму меньшей точности.Returning to FIG. 1, the pipeline 100 also provides excellent results for known strategies since it uses (a) full-channel image information (i.e. 4: 4: 4) having (b) relatively high processing efficiency with (c) optionally linear semantics. More specifically, as described above, the conveyor 100 converts the image information that it receives to a greater accuracy than the original form. The conveyor 100 also converts the image information into full-channel (4: 4: 4) form by increasing the size of the color samples in the information regarding the brightness samples. Then various processing tasks are performed with more accurate full-channel image information. After the processing is completed, the pipeline 100 may again optionally convert the processed image information into a sub-sampled form of lower accuracy.
В общем, преобразование информации изображений в более точную и полноканальную форму эффективно усиливает компоненту сигнала относительно компоненты шумов информации, тем самым давая возможность обработке, которая выполняется с этой информацией, получать более точные результаты. В отличие от этого известные стратегии, которые не используют высокоточную или полноканальную информацию изображений в различных промежуточных соединениях конвейера, могут распространять ошибки по конвейеру и могут уменьшать разрешение информации изображений (посредством существенной утраты цветового содержимого). Фиг.1, в общем, иллюстрирует обработку высокоточной полноканальной информации изображений посредством информационного блока, обозначенного 128, который передает данные в модуль обработки 128 (хотя другие модули на этом чертеже также могут использовать преимущества обработки информации в высокоточной и полноканальной форме, например модуль 110 перемежения).In general, the conversion of image information into a more accurate and full-channel form effectively enhances the signal component with respect to the noise component of the information, thereby enabling the processing that is performed with this information to obtain more accurate results. In contrast, well-known strategies that do not use high-precision or full-channel image information in various intermediate pipeline connections can propagate errors along the pipeline and can reduce the resolution of image information (through significant loss of color content). Figure 1, in General, illustrates the processing of high-precision full-channel image information through an information block, designated 128, which transmits data to the processing module 128 (although other modules in this drawing can also take advantage of the processing of information in high-precision and full-channel form, for example, interleaver 110 )
Далее приводится более конкретный поясняющий пример. Рассмотрим преимущество работы с высокоточной линейной информацией изображений RGB в сравнении с информацией изображений Y'UV 4:2:0 или 4:2:2 обычной точности. Вспомним, что информация изображений 4:2:0 и 4:2:2 предоставляет половину и одну четвертую (соответственно) объема информации цветности относительно объема информации яркости. Типично информация изображений высокой четкости (HD) (в частности, 1920×1080i, 2,07 мегапикселов) масштабируется с понижением разрешения до 1280×720р (0,92 мегапикселов) или 720×480р (0,35 мегапикселов). Если конвейер выполняет операцию понижения масштаба в этом контексте к формату субдискретизации 4:2:0 (к примеру с 1920×1080 до 1280×720), то конвейер масштабирует с понижением 2,07 мегапикселов информации яркости и 0,52 мегапиксела информации цветности до 0,92 мегапикселов информации яркости и 0,23 мегапикселов информации цветности. Тем не менее, если конвейер выполняет повышающую дискретизацию до 4:4:4, затем преобразует в высокоточную RGB (к примеру, с плавающей запятой), после чего масштабирует с понижением и далее преобразует в YUV 4:4:4, то конвейер эффективно сохраняет 0,92 мегапиксела информации яркости и 0,52 мегапиксела информации цветности. Другими словами, использование высокоточной обработки в этом контексте дает возможность конвейеру сохранять практически всю исходную информацию цветности.The following is a more specific illustrative example. Let's consider the advantage of working with high-precision linear information of RGB images in comparison with Y'UV 4: 2: 0 or 4: 2: 2 image information of usual accuracy. Recall that 4: 2: 0 and 4: 2: 2 image information provides half and one fourth (respectively) the amount of color information relative to the amount of luminance information. Typically, the information of high-definition (HD) images (in particular, 1920 × 1080i, 2.07 megapixels) is scaled down to 1280 × 720p (0.92 megapixels) or 720 × 480p (0.35 megapixels). If the pipeline performs a downscaling operation in this context to a 4: 2: 0 downsampling format (for example, from 1920 × 1080 to 1280 × 720), the pipeline scales down 2.07 megapixels of luminance information and 0.52 megapixels of color information to 0 , 92 megapixels of luminance information and 0.23 megapixels of luminance information. Nevertheless, if the pipeline performs upsampling to 4: 4: 4, then converts to high-precision RGB (for example, with a floating point), then scales it down and then converts it to YUV 4: 4: 4, then the pipeline effectively saves 0.92 megapixels of luminance information and 0.52 megapixels of luminance information. In other words, the use of high-precision processing in this context enables the conveyor to save almost all the original color information.
Один способ, чтобы достичь высокоточной промежуточной информации изображений, заключается в том, чтобы использовать формат плавающей запятой для того, чтобы представлять информацию. Числа с плавающей запятой имеют компоненты мантиссы и компоненты экспоненты. Компонента экспоненты задает то, как должна быть смещена компонента мантиссы. С помощью этого формата информация с плавающей запятой может выражать значения от очень малых до очень высоких посредством соответствующего смещения представления информации (к примеру, посредством изменения компоненты экспоненты). Может быть использован любой тип представления с плавающей запятой, имеющий любое число бит, в том числе 16-битное представление с плавающей запятой, 32-битное представление с плавающей запятой и т.д. Особенно подходящей формой плавающей запятой для использования в конвейере 100 обработки изображений является так называемый формат плавающей запятой FP16, хотя могут быть использованы другие представления плавающей запятой.One way to achieve high-precision intermediate image information is to use the floating point format in order to represent the information. Floating point numbers have mantissa components and exponent components. The exponent component defines how the mantissa component should be offset. Using this format, floating point information can express values from very small to very high by correspondingly biasing the presentation of information (for example, by changing the component of the exponent). Any type of floating point representation having any number of bits can be used, including a 16-bit floating point representation, a 32-bit floating point representation, etc. A particularly suitable form of floating point for use in the image processing pipeline 100 is the so-called FP16 floating point format, although other floating point representations may be used.
A3. Специальные меры для информации изображений 4:2:0A3. Special measures for image information 4: 2: 0
В качестве обзора, как описано в разделе "Уровень техники", информация изображений 4:4:4 включает в себя четыре выборки Сb и Сr для каждых четырех выборок Y'. Информация изображений 4:2:2 включает в себя две выборки Сb и две выборки Сr для каждых четырех выборок Y'. Информация 4:2:0 включает в себя в два раза меньше выборок Сb и Сr на каждую строку развертки и в два раза меньше строк развертки Сb и Сr в сравнении с Y'. Другими словами, разрешение информации цветности составляет половину разрешения информации яркости в горизонтальном и вертикальном направлениях. Например, если полное разрешение изображения составляет 720×480, то информация цветности сохраняется только при 360×240. При 4:2:0 не только отсутствующие выборки должны быть интерполированы в каждой строке развертки, но и все строки развертки информации цветности должны быть интерполированы из строк развертки выше и ниже. Фиг.3 показывает пример чересстрочной информации изображений 4:2:0 MPEG2. Дополнительная информация, касающаяся обработки информации изображений 4:2:0, может быть получена в документе авторов Don Munsil и Stacey Spears, "The Chroma Up-sampling Error and the 4:2:0 Interlaced Chroma Problem", DVD Benchmark, апрель 2001 года (декабрь 2002 года, обновлено в январе 2003 года).As a review, as described in the Background section, 4: 4: 4 image information includes four samples of Cb and Cr for each of four samples of Y '. The 4: 2: 2 image information includes two samples Cb and two samples Cr for every four samples Y '. Information 4: 2: 0 includes two times less samples of Cb and Cr for each scan line and two times less scan lines of Cb and Cr in comparison with Y '. In other words, the resolution of the color information is half the resolution of the brightness information in the horizontal and vertical directions. For example, if the full resolution of the image is 720 × 480, then the color information is stored only at 360 × 240. At 4: 2: 0, not only missing samples should be interpolated in each scan line, but also all scan lines of color information should be interpolated from the scan lines above and below. Figure 3 shows an example of interlaced information of 4: 2: 0 MPEG2 images. Additional information regarding 4: 2: 0 image information processing can be obtained from Don Munsil and Stacey Spears, "The Chroma Up-sampling Error and the 4: 2: 0 Interlaced Chroma Problem", DVD Benchmark, April 2001 (December 2002, updated January 2003).
Недостаточный объем и позиционное выравнивание информации цветности в информации изображений 4:2:0 создают ряд сложностей при обработке этой информации. Вообще говоря, могут возникать проблемы, потому что одна стадия в конвейере 100 обработки требует анализа другой стадии в конвейере 100 обработки, чтобы корректно интерпретировать информацию изображений 4:2:0. Рассмотрим пример модуля 104 повышающей дискретизации и модуля 106 преобразования по фиг.1. Чтобы корректно интерпретировать информацию изображений 4:2:0, модуль 104 повышающей дискретизации оптимально требует знаний о том, как цветовая информация выражается в информации изображений, которая является информацией, которая предоставляется модулем 110 расперемежения. Но, поскольку модуль 110 расперемежения расположен ниже относительно модуля 104 повышающей дискретизации, это знание недоступно модулю 104 повышающей дискретизации. Если модули 104 и 106 обрабатывают информацию 4:2:0 без преимуществ анализа расперемежения, они могут генерировать ошибки в информации изображений, которые может быть трудно или невозможно исправить. Эта трудность, в конечном счете, вытекает из того факта, что строки развертки 4:2:0 не могут обрабатываться независимо друг от друга в анализе расперемежения (в отличие, например, от информации изображений 4:2:2).The insufficient volume and positional alignment of the color information in the 4: 2: 0 image information creates a number of difficulties in processing this information. Generally speaking, problems may arise because one stage in the processing pipeline 100 requires an analysis of another stage in the processing pipeline 100 in order to correctly interpret the 4: 2: 0 image information. Consider an example of upsampling module 104 and conversion module 106 of FIG. 1. In order to correctly interpret 4: 2: 0 image information, upsampling module 104 optimally requires knowledge of how color information is expressed in image information, which is information that is provided by interleaver 110. But, since the interleaver 110 is located lower with respect to the upsample module 104, this knowledge is not available to the upsample module 104. If modules 104 and 106 process 4: 2: 0 information without the benefits of interleave analysis, they can generate errors in image information that may be difficult or impossible to correct. This difficulty ultimately stems from the fact that 4: 2: 0 scan lines cannot be processed independently of one another in interleave analysis (as opposed to, for example, 4: 2: 2 image information).
Чтобы разрешить эту сложность, конвейер 100 по фиг.1 может включать специальные меры для обработки информации изображений 4:2:0. В качестве общей меры конвейер 100 может быть модифицирован таким образом, чтобы анализ, выполняемый на различных стадиях (и информация, доступная на различных стадиях), в большей степени совместно использовался с другими стадиями в конвейере вместо необходимости каждой стадии автоматически анализировать только ту информацию, которая предоставлена ей посредством предыдущей стадии.To resolve this complexity, the pipeline 100 of FIG. 1 may include special measures for processing 4: 2: 0 image information. As a general measure, the pipeline 100 can be modified so that the analysis performed at various stages (and the information available at various stages) is more commonly shared with other stages in the pipeline instead of the need for each stage to automatically analyze only the information that provided to her through the previous stage.
Что касается конкретно проблемы, вызываемой позицией модуля 110 расперемежения в конвейере 100, конвейер 100 может быть модифицирован таким образом, чтобы анализ расперемежения (выполняемый модулем 110) выполнялся ранее, к примеру, вместе с анализом повышающей дискретизации (выполняемый модулем 104). Фиг.1 иллюстрирует эту тактику посредством пунктирной линии 130. Альтернативно модуль 110 расперемежения может выполнять анализ расперемежения посредством также изучения исходной информации входных изображений, которая предоставлена в модуль 104 повышающей дискретизации. Т.е. модуль 110 расперемежения может выполнять анализ для вывода модуля 108 в сочетании с информацией исходных изображений, чтобы получить лучшее понимание того, как должно выполняться расперемежение информации изображений.With particular regard to the problem caused by the position of the interleaving unit 110 in the pipeline 100, the conveyor 100 may be modified so that the interleaving analysis (performed by the module 110) is performed earlier, for example, together with the upsampling analysis (performed by the module 104). FIG. 1 illustrates this tactic with a dashed line 130. Alternatively, the interleaver 110 may perform an interleave analysis by also examining the input source image information that is provided to the upsampler 104. Those. the interleaver 110 may perform an analysis to output the module 108 in combination with the source image information to gain a better understanding of how the interleaving of the image information should be performed.
Помимо этого могут быть разработаны меры по интеграции модулей, чтобы совместно использовать анализ, выполняемый отдельно различными модулями в конвейере 100, чтобы тем самым более эффективно разрешать недостаток информации цветности в информации изображений 4:2:0.In addition, module integration measures can be developed to share the analysis performed separately by the various modules in the pipeline 100, thereby thereby more effectively resolving the lack of color information in the 4: 2: 0 image information.
А4. Обработка информации изображений в псевдолинейном пространствеA4. Processing image information in pseudo-linear space
Предыдущие разделы разрешали цель разработки конвейера обработки изображений, который устраняет некоторые искажения изображения. Тем не менее, конвейеры обработки изображений также должны предоставлять выходные результаты эффективным способом. Конвейер обработки изображений генерирует результаты эффективным способом, когда он осуществляет ее с достаточной скоростью и с допустимым объемом ресурсов обработки. С этой целью данный раздел предлагает различные аппроксимации, которые могут быть применены к конвейеру 100, показанному на фиг.1, для того чтобы уменьшить сложность конвейера 100.The previous sections have resolved the goal of developing an image processing pipeline that eliminates some image distortion. However, image processing pipelines should also provide output results in an efficient way. The image processing pipeline generates results in an efficient way when it implements it with sufficient speed and with an acceptable amount of processing resources. To this end, this section offers various approximations that can be applied to the conveyor 100 shown in FIG. 1 in order to reduce the complexity of the conveyor 100.
Т.е. данный подраздел предлагает модификации в конвейер 100, показанный на фиг.1, так чтобы он предоставлял информацию изображений, которая является практически линейной, но не полностью линейной. Как результат эти модификации, считается, должны преобразовывать информацию изображений в псевдолинейном пространстве вместо теоретической корректировки линейного пространства. Преимущество заключается в том, что аппаратная реализация математических операций, требуемых функциями преобразования (в модулях 108 и 120), может быть значительно упрощена, приводя к более быстрой и более эффективной обработке информации изображений. Более конкретно, выбранные операции типично исполняют порядок величины быстрее, чем исходные сопутствующие функции (которые являются математически более точными). Негативное влияние обработки изображений в псевдолинейном пространстве минимально, поскольку информация псевдолинейных изображений является практически линейной. Таким образом, любой алгоритм линейного характера может быть применен к этой информации без модификации, чтобы предоставлять удовлетворительные выходные результаты для большинства приложений.Those. this subsection proposes modifications to the conveyor 100 shown in FIG. 1 so that it provides image information that is almost linear, but not completely linear. As a result of these modifications, it is believed that they should transform the image information in pseudo-linear space instead of the theoretical adjustment of linear space. The advantage is that the hardware implementation of the mathematical operations required by the conversion functions (in modules 108 and 120) can be greatly simplified, leading to faster and more efficient processing of image information. More specifically, the selected operations typically execute an order of magnitude faster than the original accompanying functions (which are mathematically more accurate). The negative influence of image processing in pseudo-linear space is minimal, since the information of pseudo-linear images is almost linear. Thus, any linear algorithm can be applied to this information without modification to provide satisfactory output for most applications.
Фиг.4 предоставляет дополнительную информацию, касающуюся вышеописанной аппроксимации. Более конкретно, фиг.4 представляет модификацию только определенных модулей конвейера 100 обработки фиг.1 и, следовательно, содержит только сокращенное обозначение полного конвейера 100 обработки, показанного на фиг.1.4 provides additional information regarding the above approximation. More specifically, FIG. 4 is a modification of only certain modules of the processing conveyor 100 of FIG. 1 and, therefore, contains only an abbreviation for the complete processing conveyor 100 shown in FIG.
Выдержка 400 конвейера, показанная на фиг.4, включает в себя модуль 402 функции преобразования, который заменяет модуль 108 функции преобразования, фиг.8. Вместо применения математически точного преобразования информации изображений, чтобы преобразовать ее в линейное пространство (как делает модуль 108), модуль 402 применяет функцию преобразования аппроксимации (g_approx(x)), которая преобразует информацию изображений в вышеописанное псевдолинейное пространство. Этот модуль прибегает к функции преобразования g_approx(х), поскольку она "проще", чем более точная функция преобразования, требуемая модулем 108, фиг.1.The
Модуль 404 представляет эквивалент модуля 114 обработки по фиг.1. Модуль 404 выполняет любое число задач обработки с псевдолинейной информацией изображений в псевдолинейном пространстве обработки.
Модули 406, 408 и 410 затем выполняют задачу преобразования информации обработанных изображений в формат, подходящий для вывода (к примеру, на дисплей, запоминающее устройство, сетевой целевой узел и т.д.). Модулю 406 назначается конкретная задача отвечать за устранение эффектов модуля 402 посредством применения инверсии его операции, т.е. g_approx'(x). Затем модуль 408 линеаризирует вывод модуля 406 посредством применения функции преобразования g_in(x); эта операция выполняется, поскольку следующая стадия 410 предназначена для того, чтобы принимать линейный ввод. Затем модуль 410 применяет обратную функцию преобразования (g_out'(x)), чтобы получить окончательную гамма-скорректированную информацию выходных изображений, чтобы подходить тому формату, который требуется. При фактической реализации модули 406, 408 и 410 могут быть интегрированы в одно преобразование, представляемое посредством F(x), выполняемое модулем 412.
Что важно, алгоритмы, которые применяются к псевдолинейному цветовому пространству модулем 404, являются такими же, как алгоритмы, которые применяются к корректному линейному цветовому пространству в модуле 114, фиг.1. Другими словами, стратегия обработки, представленная посредством фиг.4, не требует специальной подгонки самих алгоритмов обработки изображений. В отличие от этого подход, применяемый известными предыдущими стратегиями, заключается в том, чтобы выполнять обработку в том нелинейном пространстве, в котором принята информация изображений, и затем применять различные специальные или подходящие для данного варианта применения коэффициенты корректировки для алгоритмов, чтобы исправлять все искажения изображений. Тем не менее, эти корректировки зачастую были неточными и в любом случае типично сложными. Обобщая, предшествующие методики не применяют всеобъемлющего и общеприменимого подхода к преобразованию информации в псевдолинейную форму, после чего эта псевдолинейная форма удаляется вышеописанным способом.Importantly, the algorithms that apply to the pseudo-linear color space of the
Оставшаяся часть описания в данном подразделе посвящена примерным аппроксимациям, которые могут быть использованы для того, чтобы реализовать вышеописанные модули на фиг.4. Для начала заметим, что функции преобразования, используемые для того, чтобы выполнять гамма-обработку, типично являются степенными функциями (к примеру, х0,45 или инверсия х1/0,45 ≈ х2,222) либо сочетанием нескольких функций. Степенные функции типично очень ресурсоемки при вычислениях на основе пикселов с использованием традиционных аппаратных средств.The remainder of the description in this subsection is devoted to approximate approximations that can be used to implement the above modules in FIG. To begin with, we note that the conversion functions used to perform gamma processing are typically power functions (for example, x 0.45 or inversion x 1 / 0.45 ≈ x 2.222 ) or a combination of several functions. Power functions are typically very resource intensive in pixel-based computing using traditional hardware.
Тем не менее, заметим, что х0,45 примерно равно квадратному корню х или, другими словами, х0,45 ≈ х0,50. Кроме того, х1/0,45 примерно равно х2 или, другими словами, х1/0,45 ≈ x·x. Существуют оптимизированные аппаратные средства для вычисления х, которые быстрее, чем операции, требуемые общей степенной функцией (зачастую на порядок величины). Эти аппаратные средства позволяют возводить х в квадрат очень быстро, и это просто операция умножения. Следовательно, эти аппроксимации могут существенно сократить вычислительные ресурсы, ассоциативно связанные с реализацией функций преобразования.However, note that x 0.45 is approximately equal to the square root of x or, in other words, x 0.45 ≈ x 0.50 . In addition, x 1 / 0.45 is approximately equal to x 2 or, in other words, x 1 / 0.45 ≈ x · x. There are optimized hardware for computing x, which is faster than the operations required by a common power function (often an order of magnitude). This hardware allows you to square x very quickly, and it's just a multiplication operation. Therefore, these approximations can significantly reduce the computational resources associated with the implementation of transformation functions.
Более формально, функция g_approx(х), выполняемая посредством модуля 402, может принимать форму x2·sign(x), a обратная функция преобразования, выполняемая посредством модуля 406, может принимать форму (abs(x))·sign(x). (Особо отметим, что функции преобразования и обратные функции преобразования могут применять сегмент линейного хвоста, примерно равный нулю.)More formally, the function g_approx (x) performed by the
Вышеуказанный подход может быть обобщен для различных входных и выходных гамм, представляемых посредством функций g_in(x) и g_out(x) с помощью следующей примерной последовательности операций:The above approach can be generalized to various input and output scales represented by the functions g_in (x) and g_out (x) using the following exemplary sequence of operations:
1) Применение обратной линейной аппроксимации g_approx (x)=x2=x·x к информации изображений. Модуль 402 может выполнить этот этап.1) Application of the inverse linear approximation g_approx (x) = x 2 = x · x to the image information.
2) Обработка данных в псевдолинейном пространстве. Модуль 404 может выполнить этот этап.2) Data processing in pseudo-linear space.
3) Применение линейной аппроксимации g_approx'(x). Модуль 406 может выполнить эту операцию.3) Application of the linear approximation g_approx '(x). Module 406 may perform this operation.
4) Применение функции преобразования g_in(x), чтобы линеаризовать вывод модуля 406. Модуль 408 может выполнить эту операцию.4) Applying the conversion function g_in (x) to linearize the output of module 406.
5) Применение функции преобразования g_out'(x) к выводу модуля 408, чтобы сгенерировать информацию в требуемом пространстве g_out.5) Applying the conversion function g_out '(x) to the output of
Этапы (3)-(5) могут быть объединены в одну функцию F(x), т.е.: F(x)=g_out'(g_in(g_approx'(x))).Steps (3) - (5) can be combined into one function F (x), i.e.: F (x) = g_out '(g_in (g_approx' (x))).
Если конвейер преобразует из гаммы 2,222 в гамму 2,4, то функция F(x) может быть выражена как:If the conveyor converts from gamma 2.222 to gamma 2.4, then the function F (x) can be expressed as:
F(x)-(((x0,5)l/0,45)l/2,6)=x0,426.F (x) - (((x 0.5 ) l / 0.45 ) l / 2.6 ) = x 0.426 .
Ресурсы в вышеуказанном алгоритме включают только очень "несложный" диалог, требуемый функцией g_approx(х), после чего осуществляется обработка информации в псевдолинейном пространстве, затем следует потенциально ресурсоемкий диалог, требуемый функцией F(x). Но, поскольку уравнение F(x) просто требует умножения экспонент, затраты на эту функцию не больше, чем на исходную обратную функцию. Следовательно, решение, показанное на фиг.4, имеет эффект потенциального уменьшения затрат полного цикла линеаризации/нелинеаризации примерно наполовину. Как указано выше, это решение обладает преимуществами в том, что он требует специальной настройки алгоритмов, выполняемых модулем 404.The resources in the above algorithm include only the very “uncomplicated” dialog required by the g_approx (x) function, after which the information is processed in pseudo-linear space, then the potentially resource-intensive dialog required by the F (x) function follows. But, since the equation F (x) simply requires the multiplication of exponentials, the cost of this function is no more than the original inverse function. Therefore, the solution shown in FIG. 4 has the effect of potentially halving the costs of a full linearization / non-linearization cycle by about half. As indicated above, this solution has advantages in that it requires special tuning of the algorithms executed by the 404 module.
Фиг.5 показывает процедуру 500, которая обобщает вышеописанные операции, и является эквивалентом процедуры 200 линеаризации, показанной на фиг.2. Этап 502 влечет за собой преобразование информации входных изображений в псевдолинейное пространство. Этап 504 влечет за собой выполнение обработки информации изображений в псевдолинейном пространстве с помощью модуля 404. Также этап 506 влечет за собой преобразование обработанной информации в соответствующее нелинейное цветовое пространство для вывода.FIG. 5 shows a
А5. Усовершенствования алгоритмов дисперсии ошибокA5. Improvements to Error Dispersion Algorithms
Квантование высокоточной информации изображений в формат более низкой точности может приводить к ошибкам, поскольку аппроксимации, требуемые квантованием, могут приводить к искажениям изображения, если не обрабатываются корректно. Различные алгоритмы дисперсии ошибок служат для того, чтобы рассеять ошибки, вызываемые квантованием, и тем самым минимизировать искажения изображений. Эта дисперсия ошибок является формой сглаживания.The quantization of high-precision image information into a lower-precision format can lead to errors, since the approximations required by quantization can lead to image distortions if they are not processed correctly. Various error dispersion algorithms serve to disperse the errors caused by quantization, and thereby minimize image distortion. This variance of errors is a form of smoothing.
Фиг.6 показывает известный вариант применения алгоритма Флойда-Стайнберга, чтобы рассеивать ошибки, вызываемые квантованием. Рассмотрим точку Х в изображении, которая представляет пиксел (или обобщая, элемент изображения) в изображении. Квантование этого элемента изображения Х генерирует разность ошибок, вычисляемую как разность между высокоточным представлением элемента изображения и значением, в которое оно квантуется. Алгоритм Флойда-Стайнберга делит разность на различные компоненты и затем распределяет эти компоненты по элементам изображения, которые располагаются рядом с элементом Х (и которые еще не обработаны посредством алгоритма). Когда обработка переходит к этому соседнему элементу изображения, компоненты ошибок, ранее рассеянные на этот элемент изображения, добавляются к нему, и затем этот элемент обрабатывается вышеописанным способом, к примеру, посредством его квантования, вычисления еще одной разности ошибок и рассеяния этой ошибки на соседние элементы изображения. Обработка всего изображения может продолжаться различными способами, например, слева направо и снизу вверх.6 shows a known application of the Floyd-Steinberg algorithm to disperse errors caused by quantization. Consider the point X in the image, which represents a pixel (or, more generally, an image element) in the image. The quantization of this image element X generates an error difference, calculated as the difference between the high-precision representation of the image element and the value into which it is quantized. The Floyd-Steinberg algorithm divides the difference into various components and then distributes these components into image elements that are located next to element X (and which have not yet been processed by the algorithm). When the processing moves to this neighboring image element, the error components previously scattered by this image element are added to it, and then this element is processed in the manner described above, for example, by quantizing it, calculating another error difference and scattering this error into neighboring elements Images. Processing the entire image can continue in various ways, for example, from left to right and from bottom to top.
Алгоритм Флойда-Стайнберга назначает различные веса компонентам ошибок, которые он рассеивает на соседние элементы изображения. Фиг.6 показывает веса 7, 1, 5 и 3, назначенные элементам изображения, которые размещаются рядом с элементом Х (по часовой стрелке). Более точно, коэффициенты взвешивания, примененные к компонентам ошибок, - это 7/16, 1/16, 5/15 и 3/16, где знаменатель 16 отражает сумму весов, назначенных соседним элементам изображения.The Floyd-Steinberg algorithm assigns different weights to the error components, which it scatters to adjacent pixels. 6 shows the
Тем не менее, алгоритмы дисперсии ошибок, такие как Флойд-Стайнберг, иногда генерируют изображения назначения, имеющие различные искажения изображения. Эти искажения изображения могут проявляться в визуально различимых орнаментах, которые особенно заметны при определенном содержимом изображения. Известные стратегии разрешают эту проблемы посредством добавления случайного шума к исходному изображению, чтобы затемнять орнаменты, вызываемые алгоритмами дисперсии ошибок. Но это устранение само по себе может иметь различные недостатки. Во-первых, известные стратегии добавляют шум к исходному изображению и затем квантуют исходное изображение с шумами в качестве базиса (способом, более подробно описываемым ниже). Хотя эта методика имеет эффект скрытия искажений изображения, вызываемых алгоритмом дисперсии ошибок, она также ухудшает качество окончательного изображения назначения. Т.е. шум в изображении назначения увеличивается в пропорции к шуму, добавляемому в исходное изображение. Во-вторых, известные стратегии могут добавлять шум с помощью генераторов шумов, имеющих относительно короткий период повтора. Следовательно, генераторы шумов могут генерировать собственные искажения изображений орнаментов, которые могут быть визуально отличимыми в изображении назначения (возможно, наряду с некоторыми признаками искажений дисперсии ошибок, которые генератор шумов предназначен скрывать).However, error dispersion algorithms such as Floyd-Steinberg sometimes generate destination images having different image distortions. These image distortions can manifest themselves in visually distinguishable ornaments, which are especially noticeable with certain image content. Known strategies solve this problem by adding random noise to the original image to obscure the patterns caused by error dispersion algorithms. But this elimination in itself can have various disadvantages. First, well-known strategies add noise to the original image and then quantize the original image with noise as a basis (in a manner described in more detail below). Although this technique has the effect of masking image distortions caused by the error dispersion algorithm, it also degrades the quality of the final destination image. Those. the noise in the destination image increases in proportion to the noise added to the original image. Secondly, well-known strategies can add noise using noise generators having a relatively short repetition period. Therefore, noise generators can generate intrinsic distortions of ornamental images, which can be visually distinguishable in the destination image (perhaps, along with some signs of error dispersion distortions that the noise generator is designed to hide).
Фиг.7 показывает процедуру 700, которая более точно поясняет первую из вышеуказанных проблем. Цель процедуры 700 состоит в том, чтобы квантовать информацию исходных изображений ("Исходную"), чтобы сгенерировать информацию изображений назначения ("Конечную") с помощью алгоритма распределения ошибок. Этап 702 влечет за собой генерирование информации изображений "Временная" посредством добавления информации шумов к информации исходных изображений для элемента изображения i (к примеру, пиксела). Этап 704 влечет за собой генерирование информации конечных изображений посредством квантования суммы, заданной информацией временных изображений и информацией изображений Error_Term(i). Error_Term представляет компонент ошибок, добавленный к элементу изображения i на основе предыдущего квантования ранее обработанного элемента или элементов изображения. Этап 706 влечет за собой задание следующего компонента Error_Term (который должен быть применен к будущему элементу изображения, который должен быть обработан) как таким образом рассчитанную информацию конечных изображений минус информацию временных изображений. Применение алгоритма, по сути, имеет чистый эффект квантования изображения с шумами с вытекающими вышеизложенными отрицательными сторонами.7 shows a
Фиг.8 показывает систему 800, которая разрешает вышеотмеченные проблемы предшествующего уровня техники. Модуль 802 сглаживания преобразует информацию 804 исходных изображений в информацию 806 изображений назначения с помощью алгоритма дисперсии ошибок. Алгоритм дисперсии ошибок содержит вышеописанный алгоритм Флойда-Стайнберга, но не ограничен этим алгоритмом. Генератор 808 шумов вставляет произвольный шум в процесс квантования, чтобы помочь скрыть некоторые из искажений изображения, генерируемых алгоритмом дисперсии ошибок.FIG. 8 shows a
Система 800 отличается от известных стратегий, по меньшей мере, в двух отношениях. Во-первых, система 800, по сути, добавляет информацию шумов в процесс квантования, а не информацию 804 исходных изображений. Другими словами, информация 804 исходных изображений сохраняет базис, из которого измеряются векторы ошибок, вместо (в предшествующих методиках) исходного изображения плюс информации шумов. Таким образом, увеличение объема шума в системе 800 не обязательно имеет эффект постепенного добавления шумов в информацию 806 изображений назначения для глаза. Это обусловлено тем, что векторы ошибок, которые распространяются на соседние элементы изображений, сохраняют показатель отклонения информации 806 изображений назначения относительно информации исходных изображений 804, и, таким образом, алгоритм дисперсии ошибок постоянно пытается скорректировать эффекты случайных шумов, добавляемых в процесс квантования.
Фиг.9 показывает процедуру 900, которая поясняет вышеупомянутую обработку. Этап 902 влечет за собой генерирование информации конечных изображений для элемента изображения i посредством квантования суммы информации исходных изображений, информации шумов и вектора ошибок для элемента изображения i. Этап 904 влечет за собой вычисление вектора ошибок, который должен быть рассеян на соседний элемент (или элементы) изображения, посредством вычисления разности между информацией конечных изображений и информацией исходных изображений для элемента изображения i.9 shows a
Далее приводится более конкретный поясняющий пример. Допустим, что задача состоит в том, чтобы квантовать элемент изображения, имеющий значение 23,3, до ближайшего целого. Допустим (в известной стратегии, показанной на фиг.7), что +0,4 объема информации шумов добавлено к значению, делая его равным 23,7. Значение конечного изображения для этого элемента изображения должно быть 24, и вектор ошибок, который распространяется, должен быть -0,3 (разность между значением конечного выходного изображения и значением изображения с шумами 23,7). В усовершенствованной стратегии, фиг.9, наоборот, вектор ошибок, который распространяется, должен быть равен -0,7 (разность между значением конечного выходного изображения и значением исходного изображения).The following is a more specific illustrative example. Suppose that the task is to quantize an image element having a value of 23.3 to the nearest integer. Assume (in the well-known strategy shown in Fig. 7) that +0.4 of the amount of noise information is added to the value, making it equal to 23.7. The final image value for this image element must be 24, and the error vector that propagates must be -0.3 (the difference between the final output image value and the image value with noise 23.7). In the improved strategy of FIG. 9, in contrast, the error vector that propagates should be equal to −0.7 (the difference between the value of the final output image and the value of the original image).
Более формальное описание вышеуказанной методики излагается ниже на основе применения алгоритма дисперсии ошибок Флойда-Стайнберга. Для каждого пиксела в изображении задача алгоритма заключается в том, чтобы квантовать высокоточное значение V и сохранить его в пиксельную позицию Р(х, у) матрицы пикселов Р, где Р(х, у) имеет меньшую точность, чем V. Векторы ошибок, генерируемые алгоритмом, сохраняются в высокоточной матрице пикселов Е, имеющей такой же размер, что и матрица пикселов Р. Вектор ошибок для пиксела Р(х, у) сохраняется в соответствующем размещении в Е(х, у). Функция round() в алгоритме округляет высокоточное число до ближайшего низкоточного числа. Функция random() в алгоритме возвращает случайное высокоточное число в диапазоне {-0,5…0,5}. Временные значения Desired и Error являются высокоточными значениями. Фактические коэффициенты распространения ошибок берутся из алгоритма распространения ошибок Флойда-Стайнберга.A more formal description of the above methodology is described below based on the application of the Floyd-Steinberg error dispersion algorithm. For each pixel in the image, the task of the algorithm is to quantize the high-precision value of V and store it in the pixel position P (x, y) of the matrix of pixels P, where P (x, y) has less accuracy than V. Error vectors generated algorithm, are stored in a high-precision matrix of pixels E having the same size as the matrix of pixels P. The error vector for the pixel P (x, y) is stored in the corresponding location in E (x, y). The round () function in the algorithm rounds a high-precision number to the nearest low-current number. The random () function in the algorithm returns a random high-precision number in the range {-0.5 ... 0.5}. Temporary Desired and Error values are high-precision values. Actual error propagation coefficients are taken from the Floyd-Steinberg error propagation algorithm.
Алгоритм 1: Усовершенствованная дисперсия ошибокAlgorithm 1: Advanced Error Dispersion
For each pixel х, у:For each pixel x, y:
Desired=V+E(x, у)Desired = V + E (x, y)
Р(х, y)=round (Desired+random())P (x, y) = round (Desired + random ())
Error=Desired-P(x, у)Error = Desired-P (x, y)
E(x+1, y)=Error·7/16E (x + 1, y) = Error7 / 16
E(x-1, y+1)=Error·l/16E (x-1, y + 1) = Error · l / 16
E(x, y+1)=Error·5/16E (x, y + 1) = Error5 / 16
E(x+1, y+1)=Error·3/16E (x + 1, y + 1) = Error3 / 16
EndEnd
В качестве второго усовершенствования генератор 808 шумов использует шаблон относительно долгого повтора в отличие от известных подходов. Фраза "относительно долгий" может быть интерпретирована в относительных сроках посредством подтверждения того, что генератор 808 шумов не повторяет свои числа обработки всего кадра информации изображений или, по меньшей мере, не повторяет себя до степени, которая приводит к заметным искажениям в информации 806 изображений назначения. Один конкретный генератор случайных чисел, который соответствует этому требованию, - это так называемый генератор случайных шумов R250.As a second enhancement, the
А6. Динамическое вычисление ядер фильтраA6. Dynamic calculation of filter cores
Фильтры масштабирования могут быть использованы в различных соединениях конвейера 100, показанного на фиг.1, когда размер информации изображения изменяется с исходного размера до размера назначения. Например, обработка, выполняемая в модуле 114, может повлечь за собой масштабирование информации изображений вверх или вниз в зависимости от варианта применения и/или в зависимости от управляющих сигналов, вводимых пользователем. Масштабирование также может выполняться в других соединениях конвейера 100, например в модулях 104 и 124 дискретизации.Scaling filters can be used in various connections of the pipeline 100 shown in FIG. 1 when the size of the image information changes from the original size to the destination size. For example, the processing performed in module 114 may entail scaling of the image information up or down depending on the application and / or depending on the control signals input by the user. Scaling may also be performed in other connections of the conveyor 100, for example, in sampling units 104 and 124.
Ряд алгоритмов фильтрации может быть использован совместно с алгоритмами масштабирования. Один конкретный известный тип фильтра - это так называемый фильтр Катмулла-Рома. Применение этого типа фильтра к задаче изменения размера информации изображений приводит к некоторому увеличению резкости краев информации изображений.A number of filtering algorithms can be used in conjunction with scaling algorithms. One particular known type of filter is the so-called Kathmullah-Roma filter. Application of this type of filter to the task of changing the size of image information leads to some increase in the sharpness of the edges of the image information.
Данный подраздел описывает фильтр, используемый для масштабирования (такой как фильтр типа Катмулла-Рома, но не только этот тип фильтра), который может быть вычислен и применен на попиксельной основе к информации изображений. Это может быть концептуализировано как динамическое вычисление и применение отдельного фильтра для каждого пиксела и информации изображений. Каждый фильтр может включать в себя одно или более ядер, и каждое ядро может иметь один или более отводов. Ядро задает веса, которые применяются пикселам в информации изображений. Отводы задают выборки информации изображений, для которых выполняется ядро. Невозможность вычислять и применять ядра фильтра, таким образом, может приводить к различным искажениям в изображении назначения, таким как картины биений.This subsection describes a filter used for scaling (such as a Katmull-Rum filter, but not just this type of filter), which can be calculated and applied on a pixel by pixel basis to image information. This can be conceptualized as dynamic calculation and applying a separate filter for each pixel and image information. Each filter may include one or more cores, and each core may have one or more taps. The kernel sets the weights that are applied to the pixels in the image information. Bends define samples of image information for which the kernel is executed. Failure to compute and apply filter cores in this way can lead to various distortions in the destination image, such as beat patterns.
Тем не менее, вычисление отдельных ядер фильтра для каждого пиксела может быть чрезмерно затратным в отношении времени, требуемого для того, чтобы вычислять ядра. Это может препятствовать представлению информации изображений в реальном времени на некоторых аппаратных средствах. Чтобы разрешить эту проблему, данный подраздел задает различные стратегии динамического вычисления фазовых ядер фильтра ко всем строкам или столбцам информации входных изображений и последующего применения этих ядер. В качестве обзора стратегии влекут за собой вычисление числа ядер, требуемых строке (или столбцу) информации исходных изображений, вычисление числа отводов, требуемых ядрами, и вычисление и сохранение требуемого числа ядер в матрице. После этих этапов следует применение ядер фильтра, сохраненных в матрице, к информации изображений.However, calculating the individual filter cores for each pixel can be unnecessarily costly in terms of the time required to compute the cores. This may prevent real-time image information from being displayed on some hardware. To solve this problem, this subsection defines various strategies for dynamically calculating phase filter cores for all rows or columns of input image information and subsequent application of these cores. As a review of the strategies, they entail calculating the number of cores required by the row (or column) of information in the source images, calculating the number of taps required by the cores, and computing and storing the required number of cores in the matrix. After these steps, the filter cores stored in the matrix are applied to the image information.
Алгоритм является эффективным, поскольку ядра вычисляются до применения. Кроме того, достигается экономия вычислительных ресурсов, поскольку в определенных случаях относительно небольшое число вычисленных ядер может быть циклически применено к строке или столбцу гораздо большего размера в информации изображений. Помимо этого те же ядра, примененные к конкретной строке или столбцу, могут быть применены к другим строкам или столбцам (соответственно) в информации изображений. Другими словами, в зависимости от требований по изменению размера конкретного варианта применения необязательно вычислять отдельный фильтр для каждого отдельного пиксела в информации изображений.The algorithm is efficient because kernels are computed before application. In addition, savings in computing resources are achieved, since in certain cases a relatively small number of calculated cores can be cyclically applied to a much larger row or column in the image information. In addition, the same kernels applied to a particular row or column can be applied to other rows or columns (respectively) in the image information. In other words, depending on the size requirements of a particular application, it is not necessary to calculate a separate filter for each individual pixel in the image information.
Фиг.10 показывает общее представление системы 1000 для реализации модуля 1002 фильтрации вышеописанного исполнения. Модуль 1002 фильтрации включает в себя модуль 1004 динамического предварительного вычисления ядер. Назначение этого модуля 1004 заключается в том, чтобы сначала вычислять число ядер, требуемых для конкретной операции масштабирования, и число отводов, требуемых для ядер. Число ядер и отводов зависит от способа, которым изменяется размер информации изображений (нижеописанным методом). Затем модуль 1004 предварительного вычисления осуществляет предварительное вычисление требуемого числа ядер и сохраняет ядра в модуле 1006 хранения. Далее модуль 1008 применения ядер применяет ядра в модуле 1006 хранения ядер к информации изображений, чтобы добиться требуемого режима фильтрации. Как упоминалось выше, вычисление ядер до их применения помогает выполнять процесс фильтрации быстрее. Более того, сложность вычисления фильтров существенно снижается для тех операций масштабирования, которые требуют предварительного вычисления только нескольких ядер.FIG. 10 shows an overview of a
Правая часть фиг.10 показывает то, как ядра 1010 могут быть итеративно применены к конкретной строке 1012 информации 1014 изображений. Ядра 1010 применяются последовательно и циклично (где в одном примерном случае каждое ядро применяется к одному выходному пикселу). Например, если имеется небольшое число ядер для относительно длинной строки информации изображений, то эти ядра применяются один за другим и повторяются многократно, пока строка изображения обрабатывается. Т.е. предварительно сохраненные ядра формируют список; они применяются одно за другим к строке, и, когда последнее ядро встречается в списке, обработка продолжается посредством циклического возврата и повторного извлечения с начала списка. Итеративный характер методики варианта применений представлен посредством цикла 1016, показанного на фиг.10. Ядра 1010 могут быть применены к другим строкам аналогичным образом. Кроме того, аналогичная обработка может быть повторена в отношении ядер, которые применяются к столбцам информации 1014 изображений.The right side of FIG. 10 shows how
Примерный алгоритм, который может быть использован модулем 1004 для того, чтобы вычислять число ядер и отводов, прилагается ниже. Модуль 1004 применяет алгоритм отдельно к масштабированию в размерностях х и у информации 1014 изображений. Таким образом, хотя алгоритм задан, чтобы масштабировать в размерности х, алгоритм также применяем к размерности у, к примеру, посредством изменения ссылок с ширины на высоту и т.д. В размерности х ScaleRatio, используемый в алгоритме, задает соотношение ширины исходного изображения с шириной требуемого конечного (целевого) изображения. Функция ceiling, используемая в алгоритме, округляет действительное число до следующего большего целого. Функция gcd в алгоритме вычисляет наибольший общий знаменатель двух целых чисел.An example algorithm that can be used by
Алгоритм 2: Вычисление числа ядер и отводовAlgorithm 2: Calculation of the number of cores and taps
ScaleRatio=SourceWidth/DestinationWidthScaleRatio = SourceWidth / DestinationWidth
if ScaleRatio<1,0if ScaleRatio <1.0
ScaleRatio=1,0ScaleRatio = 1.0
Taps=ceiling(ScaleRatio·4)Taps = ceiling (ScaleRatio4)
if Taps is oddif Taps is odd
Taps=Taps+1Taps = Taps + 1
Kernels=DestinationWidth/gcd(SourceWidth, DestinationWidth)Kernels = DestinationWidth / gcd (SourceWidth, DestinationWidth)
В качестве примера рассмотрим вертикальное масштабирование информации исходных изображений, имеющей вес в 720 пикселов, до информации изображений назначения, имеющей вес в 480 пикселов. Применение вышеуказанного алгоритма к этому сценарию дает:As an example, consider vertically scaling information of source images having a weight of 720 pixels to information of destination images having a weight of 480 pixels. Applying the above algorithm to this scenario yields:
ScaleRatio=720/480=1,5ScaleRatio = 720/480 = 1.5
Taps=ceiling(ScaleRatio·4)=6Taps = ceiling (ScaleRatio4) = 6
Kernels=480/gcd(720, 480)=480/240=2Kernels = 480 / gcd (720, 480) = 480/240 = 2
Таким образом, модуль 1004 должен предварительно вычислять и предварительно выделять 2 ядра по 6 отводов каждое. Операция изменения масштаба выполняется в чередующемся попеременном режиме между двумя ядрами по мере того, как перемещается по строке пикселов.Thus,
В качестве еще одного примера рассмотрим вертикальное масштабирование информации исходных изображений, имеющей вес в 721 пикселов, до информации изображений назначения, имеющей вес в 480 пикселов. Применение вышеуказанного алгоритма к этому сценарию дает:As another example, consider vertical scaling of source image information having a weight of 721 pixels to destination image information having a weight of 480 pixels. Applying the above algorithm to this scenario yields:
ScaleRatio=721/480=1,5021ScaleRatio = 721/480 = 1.5021
Taps=ceiling(ScaleRatio·4)=7Taps = ceiling (ScaleRatio4) = 7
Число отводов четное, поэтому добавляем один и получаем 8The number of taps is even, so add one and get 8
Kernels=480/gcd(721, 480)=480/1=480Kernels = 480 / gcd (721, 480) = 480/1 = 480
Таким образом, модуль 1004 должен предварительно вычислять и предварительно выделять 480 ядер по 8 отводов каждое. Операция изменения размера использует уникальное ядро для каждого из 480 выходных пикселов. Тем не менее, по-прежнему достигается существенная экономия, поскольку один набор из 480 ядер может быть использован в каждом вертикальном столбце пикселов. Кроме того, в реальных случаях на практике соотношение размеров назначения и источника стремится к тому, чтобы быть достаточно простым соотношением, что делает результирующее число необходимых ядер регулируемым. Также могут налагаться специальные ограничения, которые не позволяют пользователям вводить запросы на изменение размера, которые требуют особенно большого числа ядер фильтра (к примеру, при превышении заранее заданного порога).Thus, the
Фиг.11 показывает процедуру 1100, которая обобщает вышеописанные операции. Этап 1102 влечет за собой определение числа ядер (и отводов на ядро), требуемых для того, чтобы добиться необходимого изменения размера изображения в горизонтальной и вертикальной размерностях. Модуль 1004 предварительного вычисления может выполнить эту задачу с помощью алгоритма, предоставленного выше. Этап 1104 влечет за собой выделение пространства в модуле 1006 хранения ядер, чтобы сохранять число ядер, вычисленное на этапе 1004. Этап 1106 влечет за собой фактическое предварительное вычисление и сохранение ядер. Далее, этап 1108 влечет за собой применение предварительно вычисленных ядер, сохраненных в модуле 1006 хранения, к информации изображений. Вариант применения продолжается посредством циклического последовательного прохождения через ядра при обработке всех данных строк или столбцов.11 shows a
В. Примерные связанные с реализацией усовершенствования в конвейере видеообработкиB. Exemplary Implementation-related Improvements in the Video Processing Pipeline
B1. Оптимальное генерирование кода конвейерной обработкиB1. Optimal Pipeline Generation
Следующий раздел предоставляет ряд реализации конвейера 100 видеообработки по фиг.1 более специфичного для технологии характера в сравнении с разделом А. Начнем с того, что фиг.12 показывает высокоуровневое общее представление конвейера 1200 обработки изображений, который выступит в качестве основы для пояснения усовершенствований данного раздела.The next section provides a number of implementations of the video processing pipeline 100 of FIG. 1 for a more technology-specific nature compared to section A. To begin with, FIG. 12 shows a high-level overview of the
Конвейер 1200, показанный на фиг.12, включает в себя стадии обработки, заданные посредством входной стадии 1202, стадии 1204 обработки и выходной стадии 1206. Что касается входной стадии 1202, входной источник 1208 представляет любой источник информации изображений. Источник 1208 в целом может содержать новую захваченную информацию изображений (к примеру, созданную посредством камеры или сканера) или ранее захваченную информацию изображения, которая представляется входной стадии 1202 посредством определенного канала (к примеру, принимается с диска, по IP-сети и т.д.). В первом случае функциональность 1210 обработки захвата может выполнять любой вид предварительной обработки информации изображений, принимаемой из источника 1208. Во втором случае функциональность 1212 декодера выполняет любой вид потокового извлечения и распаковки изображений, чтобы сгенерировать данные изображений. В общем, эта обработка может включать в себя отделение информации изображений от аудиоинформации в принимаемой информации, распаковку информации и т.д. Что касается стадии 1204 обработки, функциональность 1214 обработки выполняет любой вид обработки с результирующей информацией изображений, например смешивание нескольких потоков информации изображений вместе в композитный сигнал. Что касается выходной стадии, функциональность 1216 выходной обработки представляет любой вид обработки, выполняемой с информацией обработанных изображений при подготовке к выводу на выходное устройство 1218. Выходное устройство 1218 может представлять телевизионный приемник, монитор вычислительной машины и т.д. Выходные устройства также могут представлять устройства хранения. Дополнительно выходное устройство (или выходная функциональность 1216) может предоставлять функциональность сжатия и форматирования (например, мультиплексоры), которые подготавливают информацию для сохранения на устройстве, распространения по сети.The
В общем, операции обработки, изложенные на фиг.1, могут быть распространены по стадиям (1202, 1204, 1206) любым методом. Например, стадия 1204 обработки, как правило, реализует модуль 114 обработки, показанный на фиг.1. Каждая из стадий (1202, 1204, 1206) физически может быть реализована как отдельное устройство для выполнения назначенных задач или несколько устройств, соединенных последовательным или параллельным способом. Функции могут быть реализованы посредством любого сочетания программного обеспечения и аппаратных средств.In general, the processing operations set forth in FIG. 1 can be distributed in stages (1202, 1204, 1206) by any method. For example, processing step 1204 typically implements the processing module 114 shown in FIG. Each of the stages (1202, 1204, 1206) can be physically implemented as a separate device for performing assigned tasks or several devices connected in a serial or parallel way. Functions can be implemented through any combination of software and hardware.
Фиг.13 показывает примерную систему 1300 для конфигурирования конвейера 1200 обработки изображений, показанного на фиг.12. Более конкретно, примерная система 1300 может содержать функциональность для автоматического генерирования вычислительного кода, чтобы реализовать конвейер 1200 таким образом, чтобы он выполнял любую комбинацию операций обработки изображений, показанных на фиг.1.FIG. 13 shows an
Чтобы функционировать вышеописанным образом, система 1300 включает в себя конфигурационный модуль 1302. Конфигурационный модуль 1302 принимает информацию 1304 требований к конвейеру, которая задает требования, которым должен удовлетворять сконфигурированный конвейер. Информация 1304 требований может иметь несколько компонентов. Компонент 1306 входных требований задает характеристики информации изображений, которую, как ожидается, должен принимать конвейер. Компонент 1306 входных требований может задавать один тип информации изображений, который может быть обработан, или может задавать набор из нескольких разрешенных типов информации изображений, которая может быть обработана. Один способ удобного задания нескольких характеристик разрешенной входной информации заключается в том, чтобы задать используемые стандарты видеокодирования, которые могут подразумевать полную совокупность признаков, которыми обладает информация изображений, такие как разрешенные цветовые пространства, схемы субдискретизации цветности, функции гамма-преобразования и т.д. Например, ITU-R Recommendation ВТ.601 - это международный стандарт, который задает студийное цифровое кодирование информации изображений. Этот стандарт использует кодирование Y'CbCr информации изображений. ITU-R Recommendation ВТ.709 - это международный стандарт, который задает студийное кодирование видеоинформации высокой четкости. Содержимое высокой четкости (HD) представляет видеосодержимое, которое выше, чем стандартная четкость (SD), типично 1920×1080, 1280×720 и т.п. Это всего два из множества стандартов видеокодирования, которые может обрабатывать конвейер обработки изображений.In order to function as described above, the
Компонент 1308 выходных требований задает характеристики информации изображений, которую, как ожидается, должен выводить конвейер. Т.е. компонент 1308 выходных требований может задавать один вид информации изображений, который может быть сгенерирован, чтобы соответствовать конкретному выходному устройству, или может задавать набор из нескольких разрешенных видов информации изображений, которая может быть сгенерирована, чтобы соответствовать различным типам выходных устройств. Помимо этого один способ удобного задания нескольких характеристик разрешенной выходной информации заключается в том, чтобы задать используемые стандарты видеокодирования.The
Промежуточный компонент 1310 требований обработки задает характер задач обработки, которые должен выполнять конвейер для информации выходных изображений. Может быть задано любое число задач обработки, в том числе, но не только, изменение размера (масштабирование), составление композитных изображений, альфа-сопряжение, выделение краев и т.д.The
В общем, оператор может вручную выбирать требования 1304 к конвейеру. Альтернативно одно или более требований 1304 могут быть автоматически выведены из среды, в которой должен использоваться конвейер.In general, an operator can manually select
Учитывая входные требования 1304 к конвейеру, конфигурационный модуль 1302 выполняет задачу использования статического анализа для того, чтобы взаимодействовать с библиотекой модулей 1312 кода, чтобы компоновать собственную совокупность модулей кода, которая соответствует требованиям 1304 к конвейеру. Один способ осуществления этого заключается в том, чтобы сгенерировать основное уравнение, которое преобразует любой тип входной информации к любому типу выходной информации, включая любой тип промежуточной обработки. Это основное уравнение включает в себя ряд компонентов. Компоненты ассоциативно связаны с соответствующими модулями кода, сохраненными в библиотеке 1312. В этой реализации конфигурационный модуль 1302 выполняет задачу компилирования собственной совокупности модулей кода посредством исключения всех компонентов, которые не требуются с точки зрения входных требований 1304 к конвейеру. Это имеет результатом выбор конкретных модулей кода из библиотеки 1312 и пропускание остальных модулей.Given the
Результатом обработки, выполняемой конфигурационным модулем 1302, является оптимизированный конвейерный код 1314, который затем может быть применен для того, чтобы обрабатывать информацию изображений. Этот код 1314 модернизирован, чтобы выполнять только те функции, которые требуются от него. Как результат конвейерная сборка на основе этого кода имеет потенциал более быстрого выполнения своих операций, чем, скажем, объемная универсальная программа, которая имеет различные связанные подпрограммы для обработки множества отдельных задач, которые могут никогда не быть использованными в конкретном приложении.The result of the processing performed by the
В качестве одного примера допустим, что задача видеоконвейера в конкретном варианте применения заключается в том, чтобы преобразовать чересстрочную информацию изображений Y'CbCr 4:2:2 в промежуточное линейное построчное цветовое пространство RGB 4:4:4, выполняя создание составных изображений в цветовом пространстве RGB и затем выводя результирующую обработанную информацию телевизионному приемнику. Эта последовательность операций включает в себя определенные операции (к примеру, повышающую дискретизацию, преобразование трансфер-матрицы, применение функции преобразования, создание составных изображений и т.п.), но не другие операции. Следовательно, конфигурационный модуль 1302 должен генерировать только код, необходимый для того, чтобы выполнять вычисления, которые требуются, и ничего более.As one example, let’s say that the task of the video conveyor in a particular application is to convert the interlaced information of Y'CbCr 4: 2: 2 images to an intermediate linear line-by-line RGB 4: 4: 4 color space by creating composite images in the color space RGB and then outputting the resulting processed information to the television receiver. This sequence of operations includes certain operations (for example, upsampling, transforming the transfer matrix, applying the transform function, creating composite images, etc.), but not other operations. Therefore, the
Выше описана конфигурационная операция в контексте включения или исключения модулей. Тем не менее, расширенная конфигурационная функциональность может выполнять другие операции оптимизации, такие как объединение выбранных модулей кода конкретным эффективным методом, удаление избыточного кода, который является общим для выбранных модулей кода, и т.д.The configuration operation is described above in the context of the inclusion or exclusion of modules. However, the advanced configuration functionality may perform other optimization operations, such as combining selected code modules with a specific effective method, removing redundant code that is common to selected code modules, etc.
Предусмотрен ряд способов для того, чтобы реализовать конфигурационный модуль 1302. Один способ реализации этой функциональности заключается в том, чтобы использовать ресурсы существующих конфигурационных средств (например, традиционного компилятора C++), которые уже обладают определенной возможностью анализировать исходный код и удалять избыточный код, и применять эту функциональность к текущей задаче оптимизации конвейерного кода посредством указания и выбора соответствующих модулей.A number of methods are provided in order to implement
Фиг.14 показывает процедуру 1400, которая обобщает вышеописанное описание в форме блок-схемы последовательности операций способа. Этап 1402 влечет за собой ввод требований к конвейеру видео. Этап 1404 влечет за собой определение оптимального кода, который удовлетворяет входным требованиям. Этап 1406 влечет за собой вывод и выполнение оптимального кода.FIG. 14 shows a
В2. Общие принципы использования GPU для выполнения обработки изображенийIN 2. General principles of using GPU for image processing
Фиг.15 показывает общее представление системы 1500, которая может быть использована для того, чтобы реализовать аспекты конвейера изображений, показанного на фиг.12 (и, более абстрактно, операций видеообработки 100, проиллюстрированных на фиг.1). Система 1500 может представлять вычислительную машину (например, персональную вычислительную машину), содержащую один или более ЦП. Система 1500 назначает определенные задачи обработки изображений (или все задачи обработки изображений), показанные на фиг.1, функциональности графического модуля. Функциональность графической обработки может содержать один или более графических процессоров (упоминаемых в данной области техники как GPU). В общем, фиг.15 включает в себя пунктирную линию, чтобы разграничивать функции, выполняемые ЦП системы 1500, от функций, которые могут выполняться графическим модулем системы 1500 (хотя это разделение является просто примерным, другие назначения ЦП/GPU возможны).FIG. 15 shows an overview of a
В качестве исходных данных, GPU - это, в общем, устройство обработки, аналогичное ЦП, но, как правило, с меньшими возможностями выполнять решения на ветвлении. Системы типично используют GPU для того, чтобы выполнять информационно насыщенные задачи подготовки к просмотру, которые выполняются периодически, например подготовку к просмотру информации с помощью трехмерного конвейера обработки (включающего в себя вертексные шейдеры, пиксельные шейдеры и т.д.). Таким образом, главной сферой использования GPU является технология проведения игр и имитационное моделирование, которая использует GPU для того, чтобы подготавливать к просмотру различные сцены, символы, спецэффекты и т.д. Назначение периодических или информационно насыщенных задач GPU освобождает системный ЦП для того, чтобы выполнять другие высокоуровневые задачи управления, и тем самым повышает производительность такой системы. В этом случае вместо генерирования информации для проведения игр система 1500 использует функциональность графического модуля для того, чтобы изменять принимаемую информацию изображений (к примеру, видеоинформацию) до вывода на любой вид выходного устройства. Например, один вариант применения системы 1500 заключается в том, чтобы принимать видеоинформацию с DVD, создавать составные изображений из видеоинформации в графической функциональности (к примеру, посредством объединения текстовых надписей на видеоинформации) и затем выводить результирующий сигнал телевизионному приемнику.As initial data, a GPU is, in general, a processing device similar to a CPU, but, as a rule, with less ability to execute branch decisions. Systems typically use a GPU in order to perform information-rich preparation tasks for viewing, which are performed periodically, for example, preparing to view information using a three-dimensional processing pipeline (including vertex shaders, pixel shaders, etc.). Thus, the main area of GPU use is gaming technology and simulation, which uses the GPU to prepare various scenes, characters, special effects, etc. for viewing. The assignment of periodic or information-intensive GPU tasks frees up the system CPU in order to perform other high-level control tasks, and thereby increases the performance of such a system. In this case, instead of generating information for playing games, the
С помощью вышеуказанного общего представления каждый из примерных компонентов описывается ниже поочередно. Следующий раздел (В3) предоставляет более конкретную информацию, касающуюся того, как функциональность графического модуля может быть использована для того, чтобы реализовывать аспекты конвейера 100, показанного на фиг.1.Using the above general presentation, each of the exemplary components is described below alternately. The following section (B3) provides more specific information regarding how the functionality of the graphics module can be used to implement aspects of the pipeline 100 shown in FIG. 1.
Начнем с того, что система 1500 получает видеоинформацию из любого из ряда источников. Например, система 1500 может получать видеоинформацию из сети 1502 (такой как удаленный источник, подключенный к Интернету), любого типа базы данных 1504, любого типа машиночитаемого дискового носителя 1506 (такого как оптический диск, DVD и т.д.) или какого-либо другого источника 1508. В любом случае принимаемая информация может содержать сочетание информации изображений и аудиоинформации. Блок 1510 демультиплексора отделяет аудиоинформацию от информации изображений. Функциональность 1512 аудиообработки обрабатывает аудиоинформацию.To begin with, the 1500 system receives video information from any of a number of sources. For example,
Декодер 1514 изображений обрабатывает информацию изображений. Декодер 1514 изображений может преобразовывать сжатую информацию изображений из принимаемого формата в какой-либо другой формат и т.п. Вывод декодера 1514 изображений может включать в себя так называемую информацию идеальных изображений, а также информацию субпотоков изображений. Информация идеальных изображений составляет основной поток изображений, который должен быть подготовлен к просмотру на дисплейном устройстве. Информация субпотоков изображений может составлять любую дополнительную информацию, ассоциативно связанную с информацией идеальных изображений, например информацию кодированных титров между кадрами, все виды информации наложения графических элементов (например, различные элементы управления графического редактирования), различные виды субизображений, представляемых DVD-проигрывателями, и т.д. (В другой реализации определенные аспекты видеодекодера могут назначаться функциональности графического модуля.)The
В одной примерной реализации модуль 1516 рендерера видеомикширования (VMR) играет центральную роль в обработке полученной таким образом информации изображений. В качестве обзора, VMR-модуль 1516 взаимодействует с графическим интерфейсом 1518 и драйвером 1520 дисплея, который, в свою очередь, управляет графическим модулем 1522. Это взаимодействие может повлечь за собой исследование возможностей графического модуля 1522. Это взаимодействие также влечет за собой координирование обработки информации изображений посредством графического интерфейса 1518, драйвера 1520 дисплея и графического модуля 1522. В одной реализации графический интерфейс 1318 может быть реализован с помощью функциональности DirectDraw, предоставляемой посредством Microsoft® Corporation DirectX. DirectDraw выступает в этом контексте в качестве средства обмена сообщения для информационного соединения VMR-модуля 1516 с графическим модулем 1522. Графический модуль 1522 сам может составлять фиксированный модуль в вычислительной машине или аналогичном устройстве или может составлять съемный блок, такой как графическая плата. (В общем, в большинстве случаев назначаемые приложения, упомянутые в первом разделе данной заявки, предоставляют сведения, касающиеся примерных структур данных, которые VMR-модуль 1516 может использовать для того, чтобы взаимодействовать с графическим модулем 1522. Поскольку это взаимодействие не является важным для настоящей заявки, сведения об этом взаимодействии не повторяются в этом документе.)In one exemplary implementation, the video mixing renderer (VMR)
Графический модуль 1522 включает в себя один или более графических процессоров (GPU) 1524. Как упоминалось выше, система может назначать любую комбинацию операций обработки, показанных на фиг.1, GPU 1524. GPU 1524 выполняет эти задачи с помощью пиксельного шейдера 1526. Пиксельный шейдер означает функциональность, которая позволяет выполнять различные типы операций с информацией изображений на попиксельной основе. Подраздел В3 предоставляет дополнительную информацию, касающуюся архитектуры типичного пиксельного шейдера, а также то, как эта технология может быть использована для того, чтобы выполнять операции, показанные на фиг.1.The
GPU 1524 может взаимодействовать с локальным запоминающим устройством 1528, ассоциативно связанным с графическим модулем 1522. Это локальное запоминающее устройство 1528 может обслуживать любое число связанных с хранением задач. Например, это запоминающее устройство 1528 может сохранять конечную поверхность изображения, которая затем переадресуется выходному устройству 1530 (такому как дисплейный монитор, телевизионный приемник, устройство хранения, сетевое назначение и т.д.).The
В3. Усовершенствования пиксельного шейдераIN 3. Pixel Shader Enhancements
В качестве исходных данных, фиг.16 показывает архитектуру пиксельного шейдера 1600, который, как правило, используется в конвейерах трехмерной обработки. Каждый пиксел в типичном варианте применения пиксельного шейдера может быть представлен посредством вектора из четырех значений с плавающей запятой, к примеру, RGBA (красное, зеленое, голубое, альфа), где каждое значение соответствует отдельному каналу. Архитектура пиксельного шейдера 1600 включает в себя последовательность регистров ввода/вывода (1602, 1604, 1606, 1608) и арифметическое логическое устройство (АЛУ) 1610 для выполнения операций с входными данными. Более конкретно, эти регистры включают в себя цветовые регистры 1602. Эти регистры 1602 направляют итеративные вертексные цветовые данные от вертексного шейдера (не показан) к пиксельному шейдеру 1600. Постоянные регистры 1604 предоставляют заданные пользователями константы пиксельному шейдеру 1600. Выходные/временные регистры 1606 предоставляют временное хранение промежуточных вычислений. В этом наборе регистров регистр r0 также принимает вывод пиксельного шейдера 1600. Текстурные регистры 1608 предоставляют текстурные данные АЛУ 1610 пиксельного шейдера. АЛУ 1610 пиксельного шейдера выполняют инструкции арифметической и текстурной адресации на основе программы. Программа включает в себя совокупность инструкций, выбранных из набора разрешенных команд пиксельного шейдера.As raw data, FIG. 16 shows the architecture of a
Последующее описание специально посвящено использованию текстурных регистров 1608 (далее упоминаемых в общем как "блоки"), чтобы предоставлять информацию изображений и веса фильтров АЛУ 1610 пиксельного шейдера. Следовательно, предоставляется дополнительная вводная информация, касающаяся понятия текстур, в контексте фиг.17.The following description is specifically devoted to the use of texture registers 1608 (hereinafter referred to generally as “blocks”) to provide image information and filter weights of the
Говоря примерно, в игровых приложениях текстура задает изображение, которое вставляется на полигональные поверхности, задающие символы, сцены и т.д. Фиг.17 показывает работу 1700 приложения текстурирования, в котором текстура 1702 применяется к полигону 1704. Полигон 1704 состоит из двух треугольных непроизводных элементов, скомпонованных так, чтобы формировать прямоугольник. Полигон 1704 включает в себя четыре вершины V1, V2, V3 и V4. Каждая вершина включает в себя координаты текстуры. Координаты текстуры задаются относительно традиционной системы координат U и V. В этой системе координат координата U, в общем, соответствует оси X, а координата V, в общем, соответствует оси Y. Значения по оси U зафиксированы, чтобы варьироваться в диапазоне от 0,0 до 1,0, и значения по оси V зафиксированы, чтобы варьироваться в диапазоне от 0,0 до 1,0.Speaking approximately, in gaming applications, a texture defines an image that is inserted onto polygonal surfaces that define characters, scenes, etc. 17 shows a texturing application operation 1700 in which texture 1702 is applied to polygon 1704. Polygon 1704 consists of two triangular non-derivative elements arranged to form a rectangle. Polygon 1704 includes four peaks V1, V2, V3 and V4. Each vertex includes texture coordinates. The texture coordinates are relative to the traditional coordinate system U and V. In this coordinate system, the U coordinate generally corresponds to the X axis, and the V coordinate generally corresponds to the Y axis. Values along the U axis are fixed to vary in the range from 0.0 to 1.0, and the values along the V axis are fixed to vary in the range from 0.0 to 1.0.
Координаты текстуры, ассоциативно связанные с вершинами, задают то, как текстура 1702 должна быть помещена на полигон 1704. В примерном случае, фиг.17, вершина V1 имеет координаты текстуры 0,0, 0,0, что соответствует верхнему левому углу текстуры 1702. Вершина V2 имеет координаты текстуры 1,0, 0,0, что соответствует верхнему правому углу поверхности 1702. Вершина V3 имеет координаты текстуры 0,0, 0,5, что соответствует центру левого края текстуры 1702. А вершина V4 имеет координаты текстуры 1,0, 0,5, что соответствует центру правого края текстуры 1702. Следовательно, когда текстура 1702 отображается на полигоне 1704 в соответствии с координатами текстуры, только верхняя половина текстуры 1702 применяется к полигону 1704. Результат применения текстуры 1702 к полигону 1704 показан в текстурированной поверхности 1706.The texture coordinates associated with the vertices specify how texture 1702 should be placed on polygon 1704. In the example case of FIG. 17, vertex V1 has texture coordinates 0,0, 0,0, which corresponds to the upper left corner of texture 1702. Vertex V2 has texture coordinates 1,0, 0,0, which corresponds to the upper right corner of the surface 1702. Vertex V3 has texture coordinates 0,0, 0,5, which corresponds to the center of the left edge of texture 1702. And vertex V4 has texture coordinates 1, 0, 0.5, which corresponds to the center of the right edge of the texture 1702. Therefore, when texture 1702 is displayed at the range 1704 in accordance with the texture coordinates, only the upper half of the texture applied to a polygon 1702 1704 1702 The result of applying texture to the polygon 1704 is shown in a textured surface 1706.
Конвейеры трехмерной обработки типично обеспечивают возможность ряда специальных операций обработки текстуры, разработанных в контексте генерирования информации для проведения игр. Одна специальная операция упоминается как режим завертывания. В режиме завертывания конвейер трехмерной обработки повторяет текстуры несколько раз, к примеру, в одном случае для того, чтобы сгенерировать строку или матрицу текстур, которые имеют одно содержимое. Режим зеркального отображения также дублирует соседнюю структуру, но транспонирует (отражает) текстуру как зеркало.Three-dimensional processing pipelines typically provide a number of special texture processing operations designed in the context of generating game information. One special operation is referred to as a wrapping mode. In wrapping mode, the 3D processing pipeline repeats textures several times, for example, in one case in order to generate a row or matrix of textures that have the same content. The mirroring mode also duplicates the neighboring structure, but transposes (reflects) the texture like a mirror.
Дополнительная информация, касающаяся общих вопросов, связанных с любыми пиксельными шейдерами, может быть найдена в ряде платных публикаций, таких как Wolfgang F. Engel, "Direct3D ShaderX: Vertex and Pixel Shader Tips and Tricks", Wordware Publishing, Inc., 2002 г.Additional information regarding general issues related to any pixel shader can be found in a number of paid publications, such as Wolfgang F. Engel, "Direct3D ShaderX: Vertex and Pixel Shader Tips and Tricks," Wordware Publishing, Inc., 2002.
Используя вышеприведенное введение, оставшееся описание излагает примерные новые методики использования пиксельного шейдера для того, чтобы реализовывать аспекты конвейера обработки изображений, показанного на фиг.1.Using the foregoing introduction, the rest of the description sets forth exemplary new techniques for using the pixel shader in order to implement aspects of the image processing pipeline shown in FIG.
Начнем с того, что фиг.18 показывает примерный вариант применения 1800 пиксельного шейдера 1526 (фиг.15), чтобы реализовать фильтр обработки изображений, имеющий ядро с четырьмя отводами. Поскольку тип обработки, показанный на фиг.18, также является основополагающим для многих других операций, выполняемых конвейером 100, фиг.1, принципы, изложенные в отношении фиг.18, применяются к другим типам обработки, которые могут выполняться пиксельным шейдером 1526. Случай с ядром фильтра с четырьмя отводами, разумеется, является просто иллюстративным. Последующие примеры поясняют, как эта модель может быть распространена на другие структуры фильтров.To begin with, FIG. 18 shows an exemplary application of the 1800 pixel shader 1526 (FIG. 15) to implement an image processing filter having a four-tap core. Since the type of processing shown in FIG. 18 is also fundamental to many other operations performed by the pipeline 100, FIG. 1, the principles set forth in relation to FIG. 18 apply to other types of processing that may be performed by the
В общем, ЦП 1524 может быть сконфигурирован, чтобы сканировать одно или более входных изображений, извлекать пиксельные значения из каждого, применять вычисление на основе ввода и выводить один пиксел. Эта операция может быть выражена следующим образом: вывод(x, у)=функция(ввод1 (x, у), ввод2(x, у),…, вводр(х, у), константы матрицы[m]). Другими словами, это общее выражение означает, что результат (вывод(х, у)) математически зависит от некоторой функции входных сигналов (ввод1(х, у), ввод2(х, у),…, вводр(х, у)) и, необязательно, различных заданных констант (матричные константы[m]).In general, the
В конкретном контексте обработки изображений с помощью фильтров пиксельный шейдер 1526 требует ввода одного или более входных изображений вместе с ассоциативно связанными весами фильтров, которые должны быть применены к изображениям. Более формально, фильтр, который генерирует вывод (Out[x]), ассоциативно связанный с выходным пикселом, может быть задан следующим образом:In the specific context of image processing using filters, the
Out[x]=sum(in[x-taps/2+i]·kernel[i], i=0… taps-1).Out [x] = sum (in [x-taps / 2 + i] · kernel [i], i = 0 ... taps-1).
Другими словами, вывод для пиксела (Out[x]) представляет взвешенное суммирование различных входных членов. Ядро представляет информацию взвешивания, которое должно быть применено к входным членам. Различные входные члены, в свою очередь, могут представлять смещенные версии той же выборки информации входных изображений.In other words, the output for the pixel (Out [x]) represents a weighted summation of the various input terms. The kernel represents the weighting information that should be applied to the input members. Different input members, in turn, can represent biased versions of the same sample of input image information.
Фиг.18 показывает то, как пиксельный шейдер 1526 может реализовывать вышеприведенное уравнение. Проиллюстрированный пример 1800 с четырьмя отводами показывает последовательность текстурных блоков 1802, которые предоставляют ввод в АЛУ 1804 пиксельного шейдера. Показанный подход должен назначить веса фильтрации первому текстурному блоку и назначить четыре различные дельта-смещенные версии одной информации изображений следующим четырем текстурным блокам (представляющим четыре отвода ядра). АЛУ 1804 пиксельного шейдера считывает информацию, сохраненную в текстурных блоках (в одной операции считывания) и предоставляет один вывод для конкретного пиксела (в одной операции записи). Эта процедура повторяется много раз, чтобы сгенерировать полное изображение. Данный подход задает одномерный сверточный фильтр с базовым окном отводов фильтра, равным taps.FIG. 18 shows how a
Работа примера 1800, показанного на фиг.18, более формально может быть выражена следующим образом. Примерное используемое одномерное ядро имеет пикселы шириной w и веса ядра w[-1], w[0], w[2] и w[3]. Текстура весов вычисляется посредством расчета четырех весов ядра фильтра для каждого пиксела. Одномерное ядро также включает в себя четыре ввода, заданных как in[-1], in[0], in[1] и in[2]. Символ Δ задается как 1/w. С учетом вышеизложенного следующая информация назначается текстурным блокам 1-5:The operation of example 1800 shown in FIG. 18 can be more formally expressed as follows. The approximate used one-dimensional core has pixels w wide and core weights w [-1], w [0], w [2] and w [3]. The texture of the weights is calculated by calculating the four weights of the filter core for each pixel. The one-dimensional kernel also includes four inputs defined as in [-1], in [0], in [1] and in [2]. The symbol Δ is specified as 1 / w. Based on the foregoing, the following information is assigned to texture units 1-5:
Текстура 1: "текстура весов" с координатами 0,…, 1;Texture 1: "texture of scales" with coordinates 0, ..., 1;
Текстура 2: in[-1], входное изображение с координатами (0,…, 1)+(-1)·Δ (т.е. от 0-Δ до 1-Δ);Texture 2: in [-1], input image with coordinates (0, ..., 1) + (- 1) · Δ (ie from 0-Δ to 1-Δ);
Текстура 3: in[0], входное изображение с координатами (0,…, 1)+(0)·Δ;Texture 3: in [0], input image with coordinates (0, ..., 1) + (0) · Δ;
Текстура 4: in[1], входное изображение с координатами (0,…, 1)+(1)·Δ;Texture 4: in [1], input image with coordinates (0, ..., 1) + (1) · Δ;
Текстура 5: in[2], входное изображение с координатами (0,…, 1)+(2)·Δ дельта (т.е. 0+2·Δ до 1+2·Δ).Texture 5: in [2], input image with coordinates (0, ..., 1) + (2) · Δ delta (ie 0 + 2 · Δ to 1 + 2 · Δ).
Если tn представляет пиксел, извлеченный из текстурного блока n, то вычисления, выполняемые АЛУ 1804 пиксельного шейдера, могут быть выражены посредством следующей программы:If tn represents a pixel extracted from texture unit n, then the calculations performed by the
Алгоритм 3: Реализация фильтра с помощью пиксельного шейдераAlgorithm 3: Implementing a filter using a pixel shader
Let w[0]=t1.redLet w [0] = t1.red
Let w[l]=t1.greenLet w [l] = t1.green
Let w[2]=t1.blueLet w [2] = t1.blue
Let w[3]=t1.alphaLet w [3] = t1.alpha
Out.rgba=t2.rgba·w[0]+t3.rgba·w[1]+t4.rgba·w[2]+t5.rgba·w[3]Out.rgba = t2.rgba · w [0] + t3.rgba · w [1] + t4.rgba · w [2] + t5.rgba · w [3]
Другими словами, матрице w сначала назначаются значения информации взвешивания, которые сохранены в первом текстурном блоке (t1). Затем выходной результат (Out.rgba) формируется посредством модификации информации смещенных изображений в текстурных блоках t2-t5 на веса w. Суффиксы, присоединенные к информации регистров, задают канальную информацию. Следовательно, вывод Out.rgba представляет вектор из четырех значений с плавающей запятой, сохраненных в каналах зеленого, красного, синего и альфа. Можно видеть, что вышеприведенный алгоритм требует, к примеру, taps+1 входных текстурных блоков, поскольку один блок назначается для хранения информации взвешивания.In other words, the matrix w is first assigned weighting information values that are stored in the first texture block (t1). Then, the output result (Out.rgba) is generated by modifying the information of the offset images in the texture blocks t2-t5 by the weight w. Suffixes attached to register information specify channel information. Therefore, the output of Out.rgba represents a vector of four floating point values stored in the green, red, blue, and alpha channels. You can see that the above algorithm requires, for example, taps + 1 input texture units, since one unit is assigned to store weighting information.
В общем, если информация входных изображений выражена в RGB-формате, то текстурные блоки могут хранить одинаковые величины компонент красного, зеленого и голубого. Тем не менее, если пиксельный шейдер применяется для обработки связанной с яркостью информации изображений (такой как YUV), то текстурные блоки могут хранить больше информации яркости относительно информации цветности (U, V). Эта мера использует преимущество того факта, что человеческий глаз более чувствителен к информации яркости, чем к информации цветности, поэтому необязательно сохранять и обрабатывать столько же информации цветности, сколько и информации яркости, чтобы добиться приемлемых выходных результатов.In general, if the input image information is expressed in RGB format, then texture units can store the same values of the red, green, and blue components. However, if a pixel shader is used to process luminance-related image information (such as YUV), then texture units can store more luminance information regarding color information (U, V). This measure takes advantage of the fact that the human eye is more sensitive to luminance information than to chroma information, so it is not necessary to store and process as much chroma information as luminance information in order to achieve acceptable output results.
Допускается ряд вариаций и оптимизаций вышеописанного подхода.A number of variations and optimizations of the above approach are allowed.
Согласно одному варианту вышеописанный режим завертывания может быть использован для того, чтобы обрабатывать любую текстуру как бесконечный элемент информации изображений. В этом режиме один подход заключается в том, чтобы задать координаты входной текстуры взвешивания от 0 до 1,0/gcd(ширина источника, ширина назначения) вместо 0,…, 1. При применении этой текстуры блок предварительной выборки текстур автоматически "завернется" к следующей копии информации взвешивания, сохраненной в текстуре. Эта мера дает возможность проектировщику уменьшить требования по хранению ядра и при этом обеспечивать, чтобы информация применялась с дублированием при необходимости.According to one embodiment, the above-described wrapping mode can be used to process any texture as an endless element of image information. In this mode, one approach is to set the coordinates of the input weighting texture from 0 to 1.0 / gcd (source width, destination width) instead of 0, ..., 1. When applying this texture, the texture prefetch unit will automatically “wrap” to the next copy of the weighing information stored in the texture. This measure enables the designer to reduce kernel storage requirements while ensuring that information is used with duplication if necessary.
Согласно другому варианту ядро может иметь более четырех отводов.In another embodiment, the core may have more than four taps.
Чтобы разрешить эту ситуацию, реализация может разбить наборы информации взвешивания ядра на группы по четыре значения и назначить каждое дополнительной входной текстуре взвешивания.To resolve this situation, an implementation can break down the kernel weighting information sets into groups of four values and assign each an additional input weighting texture.
Рассмотрим случай, когда предусмотрено шесть отводов. В этом случае реализация может использовать две текстуры взвешивания (первая текстура с четырьмя значениями, и вторая текстура с оставшимися двумя значениями, оставляя два сегмента неиспользуемыми). Эта реализация также требует шести текстур входных изображений. Таким образом, чтобы реализовать эту структуру, GPU из восьми текстур может быть использован для того, чтобы выполнять фильтрацию с помощью шести отводов за один проход.Consider the case where six taps are provided. In this case, the implementation can use two weighting textures (the first texture with four values, and the second texture with the remaining two values, leaving the two segments unused). This implementation also requires six input image textures. Thus, to implement this structure, an eight-texture GPU can be used to filter with six taps in a single pass.
Согласно другому варианту число отводов может превышать число текстурных блоков. Отметим, что вычисление информации выходных изображений представляет суммирование членов taps. Следовательно, большее число отводов может быть вычислено посредством разбиения вычисления суммирования на несколько проходов обработки. Например, если ядро фильтра имеет 12 отводов, то одна реализация может вычислить Out[x]=sum(in[x+i]·w [i], i=0…11) как:In another embodiment, the number of taps may exceed the number of texture units. Note that the calculation of the output image information is a summation of the taps members. Therefore, a larger number of taps can be calculated by splitting the summation calculation into several processing passes. For example, if the filter core has 12 taps, then one implementation can calculate Out [x] = sum (in [x + i] · w [i], i = 0 ... 11) as:
Sum1[x]=sum(in[x+i]·w [i], i=0…3)Sum1 [x] = sum (in [x + i] · w [i], i = 0 ... 3)
Sum2 [x]=sum(in[x+i]·w [i], i=4…8)Sum2 [x] = sum (in [x + i] · w [i], i = 4 ... 8)
Sum3[x]=sum(in[x+i]·w [i], i=9…11)Sum3 [x] = sum (in [x + i] · w [i], i = 9 ... 11)
Эта реализация затем может объединить результаты с помощью конечного прохода:This implementation can then combine the results using a final pass:
Out[x]=sum1[x]+sum2[x]+sum3[x] (три считывания, одна запись)Out [x] = sum1 [x] + sum2 [x] + sum3 [x] (three reads, one record)
Другая возможная реализация может сформировать агрегированный результат Out[x] посредством следующего ряда операций:Another possible implementation may generate an aggregated result Out [x] through the following series of operations:
Out[x]=sum1[x] (запись)Out [x] = sum1 [x] (write)
Out[x]=out[x]+sum2[x] (считывание, считывание, запись)Out [x] = out [x] + sum2 [x] (read, read, write)
Out [x]=out [x]+sum3[x] (считывание, считывание, запись)Out [x] = out [x] + sum3 [x] (read, read, write)
Второй подход требует значительно меньше памяти, чем первый подход, но также требует в два раза больше обращений к памяти по сравнению с первым подходом (к примеру, четырех считываний и трех записей). Этот признак второй стратегии может делать ее неприемлемой, поскольку циклы считывания-изменения-записи в GPU очень затратны или даже запрещены.The second approach requires significantly less memory than the first approach, but also requires twice as many memory accesses as compared with the first approach (for example, four reads and three records). This feature of the second strategy may make it unacceptable, because the read-modify-write cycles in the GPU are very expensive or even forbidden.
Согласно другому варианту реализация может предоставлять специальный режим ("критический пиксел"), который интерпретирует все пикселы вне заданной информации изображений как черные (или какое-либо другое значение по умолчанию). Эта мера может быть применена для того, чтобы автоматически скрыть краевые условия в информации, которая должна быть отображена.In another embodiment, the implementation may provide a special mode (“critical pixel”) that interprets all pixels outside the specified image information as black (or some other default value). This measure can be applied in order to automatically hide boundary conditions in the information that should be displayed.
Согласно другому варианту реализация может применить вышеупомянутый режим зеркального отображения при обработке информации изображений. Этот режим отражает информацию изображений горизонтально или вертикально при обращении к информации изображений вне границ информации изображений.According to another embodiment, the implementation may apply the aforementioned mirroring mode when processing image information. This mode reflects image information horizontally or vertically when accessing image information outside the boundaries of image information.
Фиг.19 показывает процедуру 1900, которая обобщает многие из вышеописанных признаков. Этап 1902 влечет за собой назначение различной входной информации различным входным блокам пиксельного шейдера. Эта информация может содержать информацию изображений и информацию взвешивания, применяемую к различным текстурным блокам, константы, применяемые к различным блокам констант, и т.п. Этап 1904 влечет за собой вычисление выходной информации изображений на попиксельной основе, базируясь на программных инструкциях, предоставляемых в АЛУ 1804 пиксельного шейдера. Этап 1906 определяет, требуются ли дополнительные проходы. Если да, процедура 1900 повторяет одну или более из операций, показанных на фиг.19, один или несколько раз. Этап 1908 дает окончательный выходной результат.FIG. 19 shows a
Напоследок, фиг.20 показывает вариант применения пиксельного шейдера 1526, который выполняет некоторые из операций, представленных в контексте фиг.1. Фиг.20 конкретно посвящена одному примерному варианту осуществления, в котором конвейер принимает информацию изображений YUV 4:2:2, выполняет ее повышающую дискретизацию, преобразует в линейную RGB-форму и выполняет масштабирование результирующей линейной информации. Обработка, показанная на фиг.20, основана на понятиях, разработанных выше относительно фиг.18 и 19.Finally, FIG. 20 shows an embodiment of a
Отметим, что информация изображений 4:2:0, выраженная в гибридном плоском формате (таком как NV12), может интерпретироваться как содержащая плоскость яркости и плоскость цветности. Следовательно, можно параллельно выполнять определенные операции с этой информацией.Note that 4: 2: 0 image information expressed in a hybrid flat format (such as NV12) can be interpreted as containing a brightness plane and a color plane. Therefore, certain operations with this information can be performed in parallel.
Один подход заключается в том, чтобы разделить текстурные блоки на две группы, одну группу для использования при интерполяции компоненты цветности. Операция повышающей дискретизации активирует операцию масштабирующего укрупнения, которая может быть использована для того, чтобы генерировать информацию цветности 4:4:4. Затем пиксельный шейдер 1526 может использовать компоненту яркости и интерполированную компоненту цветности для того, чтобы вычислять на попиксельной основе соответствующую информацию R'G'B' с помощью трансфер-матрицы. Далее пиксельный шейдер 1526 может применять функцию преобразования для того, чтобы линеаризовать информацию изображений. После этого пиксельный шейдер 1526 может быть использован для того, чтобы выполнять дополнительное масштабирование в RGB-пространстве с помощью второй группы текстурных блоков.One approach is to divide the texture units into two groups, one group for use in the interpolation of the color component. The upsampling operation activates the scaling enlargement operation, which can be used to generate 4: 4: 4 color information. Then, the
Более формально, далее приводится примерная последовательность этапов, которая может быть использована для того, чтобы преобразовать информацию изображений вышеописанным способом.More formally, the following is an exemplary sequence of steps that can be used to convert image information in the manner described above.
1) Установка текстур 1-5 вышеописанным методом (показанным на фиг.18), чтобы выполнять первую операцию масштабирования.1) Setting the textures 1-5 by the above method (shown in FIG. 18) in order to perform the first scaling operation.
2) Использование вышеописанной операции масштабирования для того, чтобы вычислить информацию СbСr при скорости дискретизации, в два раза большей, чем для информации яркости.2) Using the above-described scaling operation in order to calculate the СbСr information at a sampling rate twice as large as for the brightness information.
3) Загрузка матрицы преобразования цветового пространства из Y'CbCr в R'G'B' в массив из 16 ограничений в качестве матрицы М.3) Loading the matrix for converting the color space from Y'CbCr to R'G'B 'into an array of 16 constraints as a matrix M.
4) Вычисление информации R'G'B' следующим образом:4) Calculation of R'G'B 'information as follows:
Вычисление R'=dotProd4(М[0], aY'CbCr)Calculation R '= dotProd4 (M [0], aY'CbCr)
Вычисление G'=dotProd4(М[1], aY'CbCr)Calculation G '= dotProd4 (M [1], aY'CbCr)
Вычисление В'=dotProd4(М[2], aY'CbCr)Calculation B '= dotProd4 (M [2], aY'CbCr)
Вычисление A=dotProd4(М[3], aY'CbCr)Calculation A = dotProd4 (M [3], aY'CbCr)
5) Вычисление RGB из R'G'B' с помощью функции преобразования.5) Compute RGB from R'G'B 'using the conversion function.
6) Выполнение второй операции масштабирования посредством вычисления масштабированных линейных RGB-данных с помощью вышеизложенных алгоритмов (со ссылкой на фиг.18), но для текстур 6-12.6) Performing a second scaling operation by computing scaled linear RGB data using the above algorithms (with reference to FIG. 18), but for textures 6-12.
7) После того как выполнено горизонтальное масштабирование, применение вертикального масштабирования к RGB-информации.7) After the horizontal scaling is done, apply the vertical scaling to the RGB information.
Фиг.20 показывает процедуру 2000, которая описывает вышеописанный алгоритм в форме блок-схемы последовательности операций способа. Этап 2002 влечет за собой назначение информации соответствующим текстурным блокам (к примеру, первому набору текстурных блоков). Этап 2004 влечет за собой использование первого набора текстурных блоков, чтобы выполнить повышающую дискретизацию информации цветности. Этап 2006 влечет за собой загрузку ограничений для использования при выполнении преобразования цветового пространства в пиксельном шейдере 1526. Этап 2008 влечет за собой использование ограничений для того, чтобы преобразовать информацию изображений в нелинейную форму R'G'B'. Этап 2010 влечет за собой преобразование информации R'G'B' в линейную форму RGB. Помимо этого этап 2012 влечет за собой масштабирование RGB-информации.20 shows a procedure 2000 that describes the above algorithm in the form of a flowchart of a method.
С. Примерное вычислительное окружениеC. Exemplary computing environment
В одной примерной реализации различные аспекты обработки, показанные на предыдущих чертежах, могут выполняться посредством вычислительного оборудования. В этом случае фиг.21 предоставляет информацию, касающуюся примерного вычислительного окружения 2100, которое может быть использовано для того, чтобы реализовывать аспекты обработки, показанные на предшествующих чертежах. Например, вычислительная машина может быть использована для того, чтобы реализовать часть или весь конвейер 100 обработки изображений, показанный на фиг.1.In one exemplary implementation, various processing aspects shown in the previous drawings may be performed by computing equipment. In this case, FIG. 21 provides information regarding an
Вычислительное окружение 2100 включает в себя вычислительную машину 2102 общего назначения и дисплейное устройство 2104. Тем не менее, вычислительное окружение 2100 может включать в себя другие виды вычислительного оборудования. Например, хотя не показано, вычислительное окружение 2100 может включать в себя карманные или дорожные устройства, телевизионные абонентские приставки, игровые консоли, функциональность обработки, интегрированную в устройства обработки/представления видео (к примеру, телевизионные приемники, цифровые видеомагнитофоны и т.д.), мейнфреймы и т.д. Дополнительно фиг.21 показывает элементы вычислительного окружения 2100, сгруппированные так, чтобы упростить пояснение. Тем не менее, вычислительное окружение 2100 может использовать конфигурацию распределенной обработки. В распределенном вычислительном окружении вычислительные ресурсы могут быть физически распределены по окружению.
Примерная вычислительная машина 2102 включает в себя один или более процессоров 2106, системное запоминающее устройство 2108 и шину 2110. Шина 2110 соединяет различные системные компоненты. Например, шина 2110 соединяет процессор 2106 с системным запоминающим устройством 2108. Шина 2110 может быть реализована с помощью любого типа структуры шины или сочетания структур шины, включая шину памяти или контроллер памяти, периферийную шину, ускоренный графический порт и процессорную или локальную шину, использующую любую из множества архитектур шины. Вычислительная машина 2102 также может соединяться с одним или более устройств GPU (не показаны) вышеописанным способом.An
Вычислительная машина 2102 также может включать в себя множество машиночитаемых носителей, в том числе множество типов энергозависимых и энергонезависимых носителей, каждый из которых может быть съемным или стационарным. Например, системное запоминающее устройство 2108 включает в себя машиночитаемый носитель в форме энергозависимого запоминающего устройства, такого как оперативное запоминающее устройство (ОЗУ) 2112, и энергонезависимого запоминающего устройства, такого как постоянное запоминающее устройство (ПЗУ) 2114. ПЗУ 2114 включает в себя систему ввода-вывода (BIOS) 2116, которая содержит базовые процедуры, которые помогают передавать информацию между элементами вычислительной машины 2102, например, в ходе загрузки. ОЗУ 2112 типично содержит модули данных и/или программ в форме, к которой может быть быстро осуществлен доступ процессором 2106.
Другие виды вычислительных носителей хранения включают в себя накопитель 2118 на жестких дисках для считывания и записи на стационарный энергозависимый магнитный носитель, накопитель 2120 на магнитных дисках для считывания или записи на съемный энергонезависимый магнитный диск 2122 (к примеру, гибкий диск) и накопитель 2124 на оптических дисках для считывания или записи на съемный энергонезависимый оптический диск 2126, такой как CD-ROM, DVD-ROM или другой оптический носитель. Накопитель 2118 на жестких дисках, накопитель 2120 на магнитных дисках и накопитель 2124 на оптических дисках соединены с системной шиной 2110 посредством одного или более интерфейсов 2128 носителей данных. Альтернативно накопитель 2118 на жестких дисках, накопитель 2120 на магнитных дисках и накопитель 2124 на оптических дисках могут быть соединены с системной шиной 2110 посредством SCSI-интерфейса (не показан) или другого механизма соединения. Хотя не показано, вычислительная машина 2102 может включать в себя другие типы машиночитаемых носителей, такие как кассеты магнитной ленты или другие магнитные устройства хранения, карты флэш-памяти, CD-ROM, универсальные цифровые диски (DVD) или другие оптические устройства хранения, электрически стираемое программируемое постоянное запоминающее устройство (ЭСППЗУ) и т.д.Other types of computing storage media include a
В общем, вышеуказанные машиночитаемые носители предоставляют энергонезависимое хранение машиночитаемых инструкций, программных модулей и других данных для использования вычислительной машиной 2102. Например, читаемые носители могут сохранять операционную систему 2130, прикладные модули 2132, другие программные модули 2134 и программные данные 2136.In general, the above computer-readable media provides non-volatile storage of computer-readable instructions, program modules, and other data for use by computing
Вычислительное окружение 2100 может включать в себя множество устройств ввода. Например, вычислительное окружение 2100 включает в себя клавиатуру 2138 и указательное устройство 2140 (к примеру, мышь) для ввода команд и информации в вычислительную машину 2102. Вычислительное окружение 2100 может включать в себя другие устройства ввода (не проиллюстрированы), такие как микрофон, джойстик, игровой планшет, спутниковая антенна, последовательный порт, сканер, устройства считывания карт, цифровые или видеокамеры и т.д. Интерфейсы 2142 ввода/вывода соединяют устройства ввода с процессором 2106. Обобщая, устройства ввода могут быть соединены с вычислительной машиной 2102 посредством любого вида интерфейса и структур шины, такого как параллельный порт, последовательный порт, игровой порт, порт универсальной последовательной шины (USB) и т.д.
Вычислительное окружение 2100 также включает в себя дисплейное устройство 2104. Видеоадаптер 2144 соединяет дисплейное устройство 2104 с шиной 2110. Помимо дисплейного устройства 2104 вычислительное окружение 2100 может включать в себя другие периферийные устройства вывода, такие как динамики (не показан), принтер (не показан) и т.д.
Вычислительная машина 2102 работает в сетевом окружении, используя логические соединения с одной или более удаленными вычислительными машинами, такими как удаленное вычислительное устройство 2146. Удаленное вычислительное устройство 2146 может содержать любой тип вычислительного оборудования, в том числе персональную вычислительную машину общего назначения, портативную вычислительную машину, сервер, игровую консоль, сетевое устройство расширения и т.п. Удаленное вычислительное устройство 2146 может включать в себя все из признаков, описанных выше относительно персональной вычислительной машины 2102, или какой-либо их поднабор.
Любой тип сети 2148 может быть использован для того, чтобы соединять вычислительную машину 2102 с удаленным вычислительным устройством 2146, например, ГВС, ЛВС и т.д. Вычислительная машина 2102 соединяется с сетью 2148 посредством сетевого интерфейса 2150, который может использовать широкополосное подключение, модемное подключение, DSL-подключение или другую стратегию подключения. Хотя не проиллюстрировано, вычислительное окружение 2100 может предоставлять функциональность беспроводной связи для соединения вычислительной машины 2102 с удаленным вычислительным устройством 2146 (к примеру, посредством модулированных радиосигналов, модулированных инфракрасных сигналов и т.д.).Any type of
В заключение, в данной заявке ряд примеров представлен в альтернативе (к примеру, случай А или случай В). Помимо этого данная заявка содержит в себе случаи, которые объединяют альтернативы в одной реализации (к примеру, случай А и случай В), даже если эта заявка может не упоминать эти объединенные случаи в явном виде в каждом примере.In conclusion, in this application a number of examples are presented in the alternative (for example, case A or case B). In addition, this application contains cases that combine alternatives in one implementation (for example, case A and case B), even if this application may not explicitly mention these combined cases in each example.
Более того, ряд признаков описан в данном документе посредством первоначальной идентификации примерных проблем, которые эти признаки могут разрешать. Эта манера пояснения не является принятием того, чтобы другие признавали или формулировали проблемы способом, заданным в данном документе. Признание и формулирование проблем, имеющихся в области техники видеообработки, должно пониматься как часть настоящего изобретения.Moreover, a number of symptoms are described herein by initially identifying exemplary problems that these symptoms can solve. This manner of explanation is not an acceptance of others recognizing or formulating problems in the manner specified in this document. Recognition and formulation of problems in the field of video processing technology should be understood as part of the present invention.
Хотя изобретение было описано на языке, характерном для структурных признаков и/или методологических действий, необходимо понимать, что изобретение, определенное в прилагаемой формуле изобретения, не обязательно ограничено описанными характерными признаками или действиями. Точнее, характерные признаки и действия раскрываются как примерные формы реализации заявленного изобретения.Although the invention has been described in a language characteristic of structural features and / or methodological actions, it should be understood that the invention defined in the appended claims is not necessarily limited to the described characteristic features or actions. More precisely, characteristic features and actions are disclosed as exemplary forms of implementation of the claimed invention.
Claims (20)
принимают информацию изображений в чересстрочной нелинейной форме;
преобразуют информацию изображений в линейную форму посредством применения функции преобразования к информации изображений;
преобразуют информацию изображений в построчную форму посредством расперемежения информации изображений;
выполняют обработку информации изображений в построчной линейной форме и выполняют по меньшей мере одну операцию масштабирования, при этом
операция масштабирования влечет за собой предварительное вычисление ряда ядер фильтра и последующее применение заранее вычисленных ядер фильтра для того, чтобы обработать информацию изображений.1. A method of processing image information in a linear form, the method comprising the steps of:
receive image information in interlaced nonlinear form;
converting image information into a linear form by applying a conversion function to image information;
converting image information into line-by-line form by interleaving image information;
performing image information processing in a linear linear form and performing at least one scaling operation, wherein
the scaling operation entails the preliminary calculation of a number of filter cores and the subsequent application of pre-calculated filter cores in order to process image information.
вводят требования шаблона обработки изображений и
ассемблируют модули кода из библиотеки модулей кода, которые могут быть использованы для того, чтобы реализовать требования, при этом модули кода, которые не требуются, не используются в оптимизированном коде.18. The method according to 17, in which the optimized code is generated through the steps in which:
introduce image processing template requirements and
assembling code modules from a library of code modules that can be used to implement requirements, while code modules that are not required are not used in optimized code.
средства для приема информации изображений в чересстрочной нелинейной форме;
средства для преобразования информации изображений в линейную форму посредством применения функции преобразования к информации изображений;
средства для преобразования информации изображений в построчную форму посредством расперемежения информации изображений;
средства выполнения обработки информации изображений в построчной линейной форме и
средства выполнения по меньшей мере одной операции масштабирования, при этом
операция масштабирования влечет за собой предварительное вычисление ряда ядер фильтра и последующее применение заранее вычисленных ядер фильтра для того, чтобы обработать информацию изображений.19. An image processing conveyor comprising:
means for receiving image information in interlaced nonlinear form;
means for converting image information into a linear form by applying a conversion function to image information;
means for converting image information into line-by-line form by interleaving image information;
means for processing image information in a linear linear form; and
means for performing at least one scaling operation, wherein
the scaling operation entails the preliminary calculation of a number of filter cores and the subsequent application of pre-calculated filter cores in order to process image information.
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/902,325 | 2004-07-29 | ||
US10/902,325 US7643675B2 (en) | 2003-08-01 | 2004-07-29 | Strategies for processing image information using a color information data structure |
PCT/US2004/024707 WO2005013087A2 (en) | 2003-08-01 | 2004-07-30 | Strategies for processing image information using a color information data structure |
USPCT/US2004/024707 | 2004-07-30 | ||
US10/987,378 | 2004-11-12 |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2007103160A RU2007103160A (en) | 2008-08-10 |
RU2402811C2 true RU2402811C2 (en) | 2010-10-27 |
Family
ID=38131604
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2007103160/08A RU2402811C2 (en) | 2004-07-29 | 2005-07-28 | Image processing using linear parametres of lighting apparatus and other image processng enhancements |
Country Status (3)
Country | Link |
---|---|
CN (1) | CN101977329B (en) |
MX (1) | MX2007000369A (en) |
RU (1) | RU2402811C2 (en) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2581553C2 (en) * | 2011-06-28 | 2016-04-20 | Самсунг Электроникс Ко., Лтд. | Method for encoding video using bias control according to pixel classification and device therefor, video decoding method and device therefor |
RU171906U1 (en) * | 2017-01-23 | 2017-06-20 | федеральное государственное бюджетное образовательное учреждение высшего образования "Ижевский государственный технический университет имени М.Т. Калашникова" | DEVICE FOR MODELING THE PARAMETERS OF COMPOSITE MATERIALS |
RU2679239C1 (en) * | 2015-02-13 | 2019-02-06 | Телефонактиеболагет Лм Эрикссон (Пабл) | Preprocessing and encoding pixels |
RU2697627C1 (en) * | 2018-08-01 | 2019-08-15 | Самсунг Электроникс Ко., Лтд. | Method of correcting illumination of an object on an image in a sequence of images and a user's computing device which implements said method |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2512135B1 (en) | 2007-04-12 | 2015-03-18 | Thomson Licensing | Tiling in video encoding and decoding |
US9036714B2 (en) | 2009-01-26 | 2015-05-19 | Thomson Licensing | Frame packing for video coding |
CN105744284B (en) | 2009-02-19 | 2019-04-19 | 交互数字麦迪逊专利控股公司 | Use the device of 3D video format |
WO2011094019A1 (en) | 2010-01-29 | 2011-08-04 | Thomson Licensing | Block-based interleaving |
CN103119943B (en) * | 2011-06-03 | 2017-03-08 | 太阳专利托管公司 | Method for encoding images and picture decoding method |
WO2016087242A1 (en) * | 2014-12-03 | 2016-06-09 | Koninklijke Philips N.V. | Device and method for signal compensation in medical x-ray images |
JP6320440B2 (en) | 2015-08-04 | 2018-05-09 | ドルビー ラボラトリーズ ライセンシング コーポレイション | Signal reconstruction for high dynamic range signals |
CN114078081B (en) * | 2020-08-10 | 2024-08-02 | 合肥君正科技有限公司 | Hardware implementation method of affine transformation in NV12 format |
CN113592700A (en) * | 2021-08-02 | 2021-11-02 | 北京沃东天骏信息技术有限公司 | Rendering method and device of pipeline, electronic equipment and computer readable medium |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5526051A (en) * | 1993-10-27 | 1996-06-11 | Texas Instruments Incorporated | Digital television system |
US6370198B1 (en) * | 1997-04-07 | 2002-04-09 | Kinya Washino | Wide-band multi-format audio/video production system with frame-rate conversion |
-
2005
- 2005-07-28 RU RU2007103160/08A patent/RU2402811C2/en active
- 2005-07-28 MX MX2007000369A patent/MX2007000369A/en active IP Right Grant
- 2005-07-28 CN CN2010105182489A patent/CN101977329B/en active Active
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2581553C2 (en) * | 2011-06-28 | 2016-04-20 | Самсунг Электроникс Ко., Лтд. | Method for encoding video using bias control according to pixel classification and device therefor, video decoding method and device therefor |
US9426483B2 (en) | 2011-06-28 | 2016-08-23 | Samsung Electronics Co., Ltd. | Video encoding method using offset adjustments according to pixel classification and apparatus therefor, video decoding method and apparatus therefor |
US9426482B2 (en) | 2011-06-28 | 2016-08-23 | Samsung Electronics Co., Ltd. | Video encoding method using offset adjustments according to pixel classification and apparatus therefor, video decoding method and apparatus therefor |
US9438921B2 (en) | 2011-06-28 | 2016-09-06 | Samsung Electronics Co., Ltd. | Video encoding method using offset adjustments according to pixel classification and apparatus therefor, video decoding method and apparatus therefor |
US9438922B2 (en) | 2011-06-28 | 2016-09-06 | Samsung Electronics Co., Ltd. | Video encoding method using offset adjustments according to pixel classification and apparatus therefor, video decoding method and apparatus therefor |
US9462288B2 (en) | 2011-06-28 | 2016-10-04 | Samsung Electronics Co., Ltd. | Video encoding method using offset adjustments according to pixel classification and apparatus therefor, video decoding method and apparatus therefor |
US10542273B2 (en) | 2011-06-28 | 2020-01-21 | Samsung Electronics Co., Ltd. | Video encoding method using offset adjustments according to pixel classification and apparatus therefor, video decoding method and apparatus therefor |
RU2632139C1 (en) * | 2011-06-28 | 2017-10-02 | Самсунг Электроникс Ко., Лтд. | Method of video coding using offset regulations according to pixel classification and device for this, method and device of video decoding for this |
US10038911B2 (en) | 2011-06-28 | 2018-07-31 | Samsung Electronics Co., Ltd. | Video encoding method using offset adjustments according to pixel classification and apparatus therefor, video decoding method and apparatus therefor |
RU2679239C1 (en) * | 2015-02-13 | 2019-02-06 | Телефонактиеболагет Лм Эрикссон (Пабл) | Preprocessing and encoding pixels |
US10397536B2 (en) | 2015-02-13 | 2019-08-27 | Telefonaktiebolaget Lm Ericsson (Publ) | Pixel pre-processing and encoding |
RU171906U1 (en) * | 2017-01-23 | 2017-06-20 | федеральное государственное бюджетное образовательное учреждение высшего образования "Ижевский государственный технический университет имени М.Т. Калашникова" | DEVICE FOR MODELING THE PARAMETERS OF COMPOSITE MATERIALS |
RU2697627C1 (en) * | 2018-08-01 | 2019-08-15 | Самсунг Электроникс Ко., Лтд. | Method of correcting illumination of an object on an image in a sequence of images and a user's computing device which implements said method |
US11238302B2 (en) | 2018-08-01 | 2022-02-01 | Samsung Electronics Co., Ltd. | Method and an apparatus for performing object illumination manipulation on an image |
Also Published As
Publication number | Publication date |
---|---|
RU2007103160A (en) | 2008-08-10 |
CN101977329B (en) | 2012-10-03 |
CN101977329A (en) | 2011-02-16 |
MX2007000369A (en) | 2007-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2402811C2 (en) | Image processing using linear parametres of lighting apparatus and other image processng enhancements | |
KR101213824B1 (en) | Image processing using linear light values and other image processing improvements | |
US7158668B2 (en) | Image processing using linear light values and other image processing improvements | |
US11184628B2 (en) | Texture decompression techniques | |
US8570441B2 (en) | One pass video processing and composition for high-definition video | |
US7075993B2 (en) | Correction system and method for enhancing digital video | |
EP3204919B1 (en) | Hybrid block based compression | |
Roch et al. | Interactive local tone mapping operator with the support of graphics hardware | |
EP2169616A2 (en) | Video scaling techniques | |
Weber | Avid DNx GX-A High-Quality, Flexible RGB (A) Codec at Commodity Bitrates, Combining SMPTE ST 2019-1 (VC-3) and SMPTE RDD 50 (DNxUncompressed) |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PC41 | Official registration of the transfer of exclusive right |
Effective date: 20150526 |