BRPI0511474B1 - Method for processing image information in a linear form ?? - Google Patents

Method for processing image information in a linear form ?? Download PDF

Info

Publication number
BRPI0511474B1
BRPI0511474B1 BRPI0511474-8A BRPI0511474A BRPI0511474B1 BR PI0511474 B1 BRPI0511474 B1 BR PI0511474B1 BR PI0511474 A BRPI0511474 A BR PI0511474A BR PI0511474 B1 BRPI0511474 B1 BR PI0511474B1
Authority
BR
Brazil
Prior art keywords
image information
information
processing
image
linear
Prior art date
Application number
BRPI0511474-8A
Other languages
English (en)
Inventor
J. Munsil Donald
F. Evans Glenn
L. Spears Stacey
Original Assignee
Microsoft Technology Licensing, Llc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/902,325 external-priority patent/US7643675B2/en
Priority claimed from US10/987,378 external-priority patent/US7158668B2/en
Application filed by Microsoft Technology Licensing, Llc filed Critical Microsoft Technology Licensing, Llc
Publication of BRPI0511474A publication Critical patent/BRPI0511474A/pt
Publication of BRPI0511474B1 publication Critical patent/BRPI0511474B1/pt

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/14Picture signal circuitry for video frequency region
    • H04N5/21Circuitry for suppressing or minimising disturbance, e.g. moiré or halo
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N1/00Scanning, transmission or reproduction of documents or the like, e.g. facsimile transmission; Details thereof
    • H04N1/46Colour picture communication systems
    • H04N1/64Systems for the transmission or the storage of the colour picture signal; Details therefor, e.g. coding or decoding means therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/49Partial evaluation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/005General purpose rendering architectures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/40Scaling of whole images or parts thereof, e.g. expanding or contracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/80Geometric correction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/222Studio circuitry; Studio devices; Studio equipment
    • H04N5/262Studio circuits, e.g. for mixing, switching-over, change of character of image, other special effects ; Cameras specially adapted for the electronic generation of special effects
    • H04N5/265Mixing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/01Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level
    • H04N7/0117Conversion of standards, e.g. involving analogue television standards or digital television standards processed at pixel level involving conversion of the spatial resolution of the incoming video signal
    • H04N7/012Conversion between an interlaced and a progressive signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/64Circuits for processing colour signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/64Circuits for processing colour signals
    • H04N9/646Circuits for processing colour signals for image enhancement, e.g. vertical detail restoration, cross-colour elimination, contour correction, chrominance trapping filters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N9/00Details of colour television systems
    • H04N9/64Circuits for processing colour signals
    • H04N9/68Circuits for processing colour signals for controlling the amplitude of colour signals, e.g. automatic chroma control circuits
    • H04N9/69Circuits for processing colour signals for controlling the amplitude of colour signals, e.g. automatic chroma control circuits for modifying the colour signals by gamma correction

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Processing (AREA)
  • Facsimile Image Signal Circuits (AREA)
  • Color Image Communication Systems (AREA)
  • Color Television Systems (AREA)
  • Television Systems (AREA)

Abstract

processamento de imagem utilizando valores de luz linear e outros aperfeiçoamentos de processamento de imagem. são descritas estratégias para processar informação de imagem em uma forma linear para reduzir a quantidade de artefatos (em comparação com o processamento dos dados na forma não-linear).tipos exemplares de operações de processamento podem incluir: dimensionamento, composição, combinação-alfa, detecção de borda, e assim por diante. em uma implementação mais especifica, estratégias são descritas para processar informação de imagem (114) que é: a) linear; b) no espaço de cor rgb; c) de alta precisão (por exemplo, provida mediante representação de ponto flutuante); d) progressiva; e e) de canal completo. outros aperfeiçoamentos proporcionam estratégias para: a) processar informação de imagem em um espaço pseudo-linear para aperfeiçoar a velocidade de processamento; b) implementar uma técnica de dispersão de erro aperfeiçoada; c)dinamicamente calcular e aplicar núcleos de filtro; d) produzir código de canalização de uma maneira ótima; e e) implementar diversas tarefas de processamento utilizando técnicas inovadoras de sombreamento de pixel.

Description

Relatório Descritivo da Patente de Invenção para "MÉTODO PARA PROCESSAR INFORMAÇÃO DE IMAGEM EM UMA FORMA LINEAR”.
REFERÊNCIA A PEDIDOS CO-PENDENTES
[001] Esse pedido é uma continuação-em-parte do Pedido Nâo-provisório US Co-pendente 10/902.325 (o Pedido ‘325}, depositado em 29 de julho de 2004, intitulado “Strategies for Processing Image Information Using a Color Information Data Structure”, citando como inventores: Glenn F. Evans e Stephen J. Estrop. O Pedido ‘325, por sua vez, reivindica o benefício do Pedido Provisório US 60/492.029 (o Pedido Ό29), depositado em 1o de agosto de 2003. Os Pedidos ‘325 e '029 são integral mente incorporados aqui como referência.
CAMPO TÉCNICO
[002] Essa matéria diz respeito às estratégias para processar informação de imagem e, em uma implementação mais específica, às estratégias para processar informação de imagem de vídeo utilizando uma canalização de processamento de vídeo.
ANTECEDENTES da |NyENCÃQ
Problemas Exemplares nas Técnicas de Processamento de Vídeo [003] A tecnologia de processamento de vídeo atualmente em uso é mais bem-entendida mediante observação da evolução de tal tecnologia através dos anos. Recursos foram adicionados em diversos estágios na evolução para resolver problemas enfrentados pela indústria naqueles tempos. Para manter compatibilidade e consistência, a tecnologia mais recente pode ter mantido alguns desses recursos, embora os problemas para os quais os recursos foram projetados para resolver tenham desaparecido desde então. Como resultado, a tecnologia atual pode ser vista como uma acumulação de tais recursos de base histórica, refletindo uma série de problemas anteriores enfrentados pela indústria em momentos diferentes, compromissos entre gru- pos de padrões, mudando limitações e oportunidades de base tecnológica, e assim por diante.
[004] Uma conseqüência da natureza descrita acima da tecnologia de processamento de vídeo é que aqueles trabalhando no campo desenvolveram opiniões firmadas com relação a certos aspectos da tecnologia de processamento de vídeo. Há idéias fixas com relação a como interpretar certa informação de vídeo e idéias fixas com relação a como “corretamente” processar tal informação de vídeo. Como considerado pelos presentes inventores, muitas dessas idéias enraizadas não são bem fundamentadas e precisam ser reconsideradas.
[005] A principal entre as idéias fixas é que informação de vídeo geralmente deve ser processada na forma em que é recebida, seja a partir de uma fonte de transmissão, de um meio físico de armazenamento (por exemplo, um disco DVD), ou outra fonte. Contudo, muitos padrões de vídeo não foram projetados com a expectativa de que a informação de vídeo seria processada antes da exibição. Por exemplo, televisões convencionais não acomodam funcionalidade de processamento complexo; esses dispositivos simplesmente recebem e exibem informação de vídeo. Como tal, a forma na qual a informação de vídeo é recebida pode não acomodar prontamente o processamento eficiente de tal informação.
[006] Como resultado, a aplicação direta de algoritmos de processamento padrão em muitas formas aceitas de informação de vídeo produz diversos artefatos. Aqueles versados na técnica assinalaram esses artefatos em algumas ocasiões. Contudo, mais propriamente do que questionar as premissas básicas das técnicas sendo empregadas, esses profissionais freqüentemente recorreram a remendos locais para remediar os problemas. Essas soluções podem mascarar os problemas em certas situações de aplicação específica, mas não resolvem os problemas em geral.
[007] Por exemplo, informação de vídeo freqüentemente é recebida por uma canalização de processamento de vídeo em uma forma que é não-linear, entrelaçada, croma subamostrada, e expressa em alguma variante de um espaço de cor relacionado à luma (por exemplo, informação Y’U’V’). (O termo “não-linear” significa que há uma relação não-linear entre um sinal que chega e o brilho de saída resultante produzido a partir desse sinal; outros termos na frase precedente serão explicados integralmente abaixo). Profissionais podem tentar aplicar diversos algoritmos de processamento do tipo linear a essa informação para modificá-la de uma maneira prescrita, tal como mediante redimensionamento da informação de vídeo, combinação da informação de vídeo com outra informação (por exemplo, composição), e assim por diante. Como considerado pelos presentes inventores, muitos desses algoritmos não proporcionam resultados ótimos ou até mesmo corretos ao processar informação de vídeo não-linear dessa natureza. Trabalhar apenas com informação entrelaçada de croma subamostrada 4:2:2 ou 4:2:0 (a ser definida abaixo) compõe esses resultados insatisfatórios. Por exemplo, processar informação em 4:2:2 ou 4:2:0 pode resultar na propagação de erros através de diferentes estágios da canalização de processamento de vídeo.
[008] As deficiências nos resultados processados são manifestadas em diversos artefatos, que podem ou não ser evidentes a olho nu. Outra vez, aqueles versados na técnica podem ter percebido os resultados insuficientes, mas não ter identificado suas causas. Em alguns casos, isso pode ser devido à falha por parte dos profissionais em entender completamente a natureza complexa de muitos padrões de codificação de vídeo. Em outros casos, os profissionais podem não ter conhecimento de que eles estão utilizando algoritmos lineares para processar informação não-linear; na realidade, em alguns casos os profissionais podem acreditar incorretamente que estavam lidando com informação linear. Além disso, o foco geral na técnica de processamento de vídeo tem sido voltado para a produção de informação de imagem, não necessariamente o processamento intermediário e correção de tal informação.
[009] A aplicação de algoritmos do tipo linear à informação não-linear é apenas um exemplo da opinião firmada descrita acima na técnica de processamento de vídeo. Como será descrito abaixo, muitas outras técnicas se tornaram estabelecidas as quais não produzem resultados ótimos, tal como no caso de pontilhamento. Por exemplo, os profissionais podem tentar remediar os artefatos causados por alguns algoritmos de pontilhamento-quantificação mediante adição de uma pequena quantidade de ruído aleatório para introduzir informação de imagem e então quantificar a imagem ruidosa resultante. Essas técnicas avaliam o erro de quantificação mediante computação então da diferença entre a imagem ruidosa e o resultado quantificado. Isso pode ter o efeito de curar os artefatos de pontilhamento, porém ao custo de tornar a imagem de saída mais ruidosa em proporção à quantidade de ruído aleatório acrescentado à informação de imagem original.
[0010] Há muitas outras instâncias de idéias consolidadas na técnica de processamento de vídeo que continuam a ser aplicadas, devido ao hábito e familiaridade, sem reconhecimento de seus empecilhos significativos, porém sutis. O tema geral dos aperfeiçoamentos aqui descritos envolve a reconsideração dessas idéias rígidas, acoplada ao modelo de soluções alternativas.
[0011] O campo de processamento de vídeo é rico em terminologia. Conseqüentemente, como uma questão preliminar, uma breve introdução de certos tópicos no campo de processamento de vídeo será apresentada abaixo para auxiliar o leitor. Por exemplo, vários dos termos usados acima, de passagem (linear, entrelaçado, luma, croma subamostrado, etc.), são definidos abaixo. Como uma questão geral de terminologia, o termo “informação de imagem” será usado ao longo desse documento para representar uma ampla classe de informação que pode ser renderizada como qualquer tipo de saída visual, incluindo, mas não limitada à informação de vídeo animado.
Conceitos Práticos •Espaço de Cor e Considerações Relacionadas [0012] As cores podem ser especificadas utilizando-se três componentes. Um fluxo de imagem que se baseia na transmissão de conteúdo de cor utilizando componentes discretos de cor é referido como vídeo de componentes. Uma especificação comum define cor utilizando componentes vermelhos, verdes e azuis (RGB). Mais expressamente, os componentes RGB descrevem as intensidades proporcionais das lâmpadas de referência que criam uma cor perceptualmente equivalente a um determinado espectro. Em geral, um espaço de cor RGB pode ser especificado pelos valores cromáticos associados às suas cores primárias e ao seu ponto branco. O ponto branco se refere à cromaticidade associada a uma cor branca de referência.
[0013] Aparelhos eletrônicos que reproduzem imagens em cores complementam a natureza tricromática da visão humana mediante provisão de três tipos de fontes de luz. Os três tipos de fontes de luz produzem diferentes respostas espectrais que são percebidas como diferentes cores por um observador humano. Por exemplo, um tubo de raios catódicos (CRT) proporciona fósforos: vermelho, verde e azul para criar diferentes cores, desse modo complementando alguma variante do espaço de cor RGB discutido acima. Outras tecnologias não utilizam fósforos, mas de outro modo reproduzem a cor utilizando fontes de luz que emitem pelo menos três tipos de luz.
[0014] Contudo, o modelo de codificação RGB não é uma opção eficiente para a transmissão de informação de imagem, e não se adapta bem a alguns padrões mais antigos. Conseqüentemente, informa- ção de imagem é comumente transmitida para um aparelho alvo utilizando algum modelo de codificação diferente do RGB. Mediante recebimento, a informação de imagem pode ser internamente transformada por um aparelho de vídeo em um espaço de cor relacionado ao RGB para apresentação. Como será descrito abaixo sob o cabeçalho “considerações sobre gama”, cada um dos dados de componentes R, G ou B pode ser expresso em termos de sua forma pré-gama corrigida, referida como valores R’, G’ e B’. (Geralmente, por convenção, a plica denota informação não-linear nessa revelação).
[0015] Uma tática comum a esse respeito é a definir a cor mediante referência a um componente relacionado à luminância (Y) e componentes relacionados à croma. Luminância geralmente se refere à intensidade percebida (brilho) da luz. Luminância pode ser expressa em uma forma pré-gama-corrigida (da forma descrita abaixo sob “considerações sobre gama”) para produzir sua contraparte não-linear, referida como “luma” (Y’). Os componentes de croma definem o conteúdo de cor da informação de imagem em relação à luma. Por exemplo, no domínio digital, o símbolo “Cb” corresponde a uma representação dimensionada de número inteiro de n bits da diferença B’-Y’ (tipicamente a partir da faixa de -127...128 em valores de 8 bits), e o símbolo “Cr” corresponde a uma representação dimensionada de número inteiro de n bits da diferença R’-Y’. O símbolo “Pr” se refere a uma contraparte análoga de Cb, e o símbolo “Pr” se refere à contraparte análoga de Cr. Os símbolos Pb e Pr também se referem à forma digital normalizada de Cb ou Cr com uma faixa nominal [-0,5...0,5]. A informação de imagem de componentes definida por CbCr e PbPr pode ser expressamente acompanhada de plicas (por exemplo, Cb’Cr’ e Pb’Pr’) uma vez que elas representam informação não-linear. Contudo, uma vez que Pb, Pr, Cb, ou Cr sempre se referem aos dados não-lineares, a notação com plica freqüentemente é abandonada por uma questão de conveniência e convenção (por exemplo, a notação Y’PbPr é usada em vez de Y’Pb’Pr’).
[0016] Conteúdo de cor também pode ser comunicado como vídeo composto (mais propriamente do que o vídeo de componentes descrito acima). Sinais compostos combinam informação de luma e croma em um sinal. Por exemplo, no sistema de codificação Y’UV, U representa uma versão dimensionada de B-Y e V representa uma versão dimensionada de R-Y. Esses componentes de luma e croma são então processados para prover um único sinal. O sistema de codificação Y’IQ define um outro sistema de codificação composto formado mediante transformação dos componentes: U e V, de uma maneira prescrita. Uma razão pela qual a indústria historicamente tem promovido o uso de espaços de cor relacionados a Y (Y’CbCr, Y’PbPr, YUV, YIQ, etc.) é porque reduzir a informação de imagem de cor nesses espaços de cor pode ser realizado mais facilmente em comparação com a informação de imagem expressa no espaço de cor RGB. Esses espaços de cor também são retroativamente compatíveis com padrões mais antigos desenvolvidos para informação de imagem em preto e branco. O termo “informação relacionada à luma” geralmente se refere a qualquer espaço de cor que tem um componente relacionado ao brilho e componentes relacionados à croma, e abrange pelo menos todos os espaços de cor mencionados acima.
[0017] É geralmente possível transformar conteúdo de cor a partir de um espaço de cor para um outro espaço de cor utilizando uma ou mais transformações afins de matriz. Mais expressamente, a propriedade de metamerismo torna possível expressar um conjunto de coeficientes de espaço de cor em termos de um outro conjunto de funções coincidentes (onde “metâmeros” se refere a dois espectros que ma-peiam para o mesmo conjunto de coeficientes de espaço de cor e, portanto, parecem ser perceptualmente idênticos - isto é, que parecem a mesma cor). •Considerações sobre Gama [0018] Tubos de raios catódicos (CRTs) não têm uma função de transferência de resposta linear. Em outras palavras, a relação de voltagem aplicada a um CRT e a luminância resultante produzida pelo CRT não definem uma função linear. Mais especificamente, a resposta teórica prevista de um CRT tem uma resposta proporcional à regra de potência 5/2; isto é, para uma determinada voltagem de entrada “V”, a luminância “L” resultante do CRT pode ser computada como L = V2 5. A função de transferência também é referida aqui como uma “função de resposta gama”, e o expoente do sinal de voltagem é referido como “gama”.
[0019] Por outro lado, quando informação de imagem é capturada por uma câmera e gerada por um sistema de renderização 3-D, a informação de imagem é expressa em um espaço de cor RGB linear, significando que há uma relação linear entre o sinal que chega e o brilho de saída. Para resolver a disparidade entre a linearidade da câmera e a não-linearidade do vídeo, as câmeras convencionalmente pré-compensam o sinal que elas produziram mediante aplicação do inverso do gama. Em outras palavras, a função de transferência da câmera (algumas vezes referida como função de transferência de codificação) é aproximadamente a função inversa da resposta de luminância CRT. O resultado da aplicação da função de transferência de codificação (ou o gama inverso) é a de produzir informação de imagem “gama-corrigida” que é de forma não-linear. Quando o sinal não-linear é passado através do dispositivo de vídeo, uma luminância aproximadamente linear é produzida. Uma vez mais, de acordo com a notação descrita acima, informação de imagem não-linear (ou pré-compensada) é denotada mediante colocação de plica em seus componentes, por exemplo, R’G’B’ ou Y’CbCr (onde as plicas nos componentes Cb e Cr são inferidas).
[0020] Desse modo se tornou lugar comum, e padrão, armazenar e transmitir informação de imagem em sua forma não-linear de luma-croma (compensada). Para manter a compatibilidade, qualquer fonte produzindo um sinal a ser exibido em um CRT também deve, em primeiro lugar, aplicar a função inversa ao sinal.
[0021] Como uma consideração especial, codificação de informação de imagem utilizando uma função de transferência comumente aplica uma função de aproximação especial para a porção de baixa voltagem da função. Isto é, técnicas de codificação comumente proporcionam um segmento linear nessa porção para reduzir os efeitos de ruído no sensor de geração de imagem. Esse segmento é referido como um “final linear”, tendo uma “inclinação de ponta” definida. Esse segmento aperfeiçoa a qualidade da informação de imagem apresentada nos CRTs atuais, uma vez que esses dispositivos têm respostas de luminância-voltagem lineares próximo a zero devido à construção física desses dispositivos. •Amostragem e Alinhamento de Informação Croma em Relação à Informação Luma [0022] A visão humana é mais responsiva às mudanças em intensidade de luz do que aos componentes cromáticos da luz. Sistemas de codificação tiram proveito desse fato para reduzir a quantidade de informação croma (CbCr) que é codificada em relação à quantidade de informação luma (Y’). Essa técnica é referida como subamostragem de croma. Uma notação numérica representada geralmente como L:M:N pode ser usada para expressar essa estratégia de amostragem, onde “L” representa o fator de referência de amostragem do componente luma (Y’), e “M” e “N” se referem à amostragem de croma (por exemplo, Cb e Cr, respectivamente) em relação à amostragem de luma (Y’). Por exemplo, a notação 4:4:4 pode denotar dados Y’CbCr nos quais há uma amostra de croma para cada amostra de luma. A notação 4:2:2 pode denotar dados Y’CbCr nos quais há uma amostra de croma para cada duas amostras de luma (horizontalmente). A notação 4:2:0 pode denotar dados Y’CbCr nos quais há uma amostra de croma para cada agrupamento de dois-por-dois de amostras de luma. A notação 4:1:1 pode denotar dados Y’CbCr nos quais há uma amostra de croma para cada quatro amostras de luma (horizontalmente).
[0023] Nessas circunstâncias onde a estratégia de codificação provê mais informação de luma do que informação de croma, um de-codificador pode reconstruir a informação de croma “ausente” mediante realização de interpolação baseada na informação de croma que é fornecida. Mais geralmente, amostragem descendente se refere a qualquer técnica que produz um número menor de amostras de imagem em comparação com um conjunto inicial de amostras de imagem. Amostragem ascendente se refere a qualquer técnica que produz mais amostras de imagem em comparação com o conjunto inicial de amostras de imagem. Desse modo, a interpolação descrita acima define um tipo de amostragem ascendente.
[0024] Estratégias de codificação também especificam a forma em que as amostras de croma são espacialmente “alinhadas” com as amostras de luma correspondentes. Estratégias de codificação diferem a esse respeito. Algumas alinham as amostras de croma com as amostras de luma, de tal modo que as amostras de croma são diretamente posicionadas “sobre” as amostras de luma. Isso é referido como co-localização. Outras estratégias posicionam as amostra de croma em espaços intersticiais dentro do arranjo bidimensional de amostras de luma. •Considerações de Quantificação [0025] Quantificação se refere à metodologia através da qual os valores numéricos discretos são atribuídos às amplitudes de sinal de componentes de cor (ou informação em preto e branco). No domínio digital, os valores numéricos cobrem uma faixa prescrita (gama) de valores de espaço de cor em um número prescrito de etapas. É comum, por exemplo, utilizar 255 etapas para descrever cada valor de componente, de tal modo que cada componente pode assumir um valor de 0 a 255. É comum expressar cada valor de cor utilizando 8 bits.
[0026] Conversão a partir de um número de alta precisão para um número de precisão inferior algumas vezes pode produzir diversos artefatos. Diversos algoritmos de dispersão de erro foram concebidos para resolver esse problema, tal como o algoritmo Floyd-Steinberg. Algoritmos de dispersão de erro podem distribuir os erros produzidos pelos efeitos de arredondamento da quantificação para locais de pixels vizinhos. Além disso, informação anterior com relação ao algoritmo Floyd-Steinberg é apresentada no corpo da Descrição Detalhada a seguir. •Considerações de Representação Entrelaçada versus Progressiva [0027] Originalmente, as televisões somente exibiam informação de imagem em preto e branco na forma de varredura progressiva de cima para baixo. Atualmente, sinais de televisão convencional são varridos na forma entrelaçada. No entrelaçamento, um primeiro campo de um quadro de vídeo é capturado, seguido, logo após, de um segundo campo do quadro de vídeo (por exemplo, 1/50 ou 1/60 segundos após). O segundo campo é verticalmente deslocado em relação ao primeiro campo em um pequeno valor, de tal modo que o segundo campo captura informação nos espaços intersticiais entre as linhas de varredura do primeiro campo. A informação de vídeo é apresentada mediante exibição do primeiro e segundo campos em rápida sucessão de modo que a informação de vídeo é geralmente percebida pelo observador humano como um fluxo único, contíguo, de informação.
[0028] Contudo, monitores de computador e outros equipamentos de apresentação exibem a informação de imagem de forma progressiva, não-entrelaçada. Desse modo, para um aparelho apresentar informação entrelaçada em um monitor de computador, ele deve exibir quadros progressivos na taxa de campos entrelaçados mediante inter-polação dos dados para o campo oposto (um processo referido como “desentrelaçamento”). Por exemplo, para exibir um campo entrelaçado, ele deve interpolar os dados “ausentes” para o local espacial entre as linhas mediante exame dos campos em qualquer dos lados. O termo “formato progressivo” se refere geralmente a qualquer formato de imagem não-entrelaçada.
[0029] Informação de imagem (por exemplo, a partir de uma câmera de vídeo) é armazenada tipicamente em uma forma entrelaçada, por exemplo, onde o primeiro campo é armazenado separadamente (semanticamente) do segundo campo. Se informação de imagem deve ser simplesmente exibida em um vídeo de TV entrelaçada, sua informação entrelaçada Y’UV pode ser passada diretamente para o CRT. O CRT virtualmente converte a informação Y’UV em informação R’G’B’ e aciona os canhões de saída utilizando esse sinal.
[0030] Entrelaçamento é vantajoso porque dobra a resolução vertical efetiva da informação de imagem. Contudo, entrelaçamento também pode introduzir artefatos. Isso porque os objetos podem se deslocar a 60 Hz, mas, na apresentação entrelaçada, somente metade da informação é mostrada a cada 30 Hz. O artefato resultante produzido por esse fenômeno é algumas vezes referido como “feathering”. O artefato se manifesta particularmente na exibição em vídeo de muita animação, onde os objetos parecem se separar em linhas pares e ímpares.
[0031] Informação adicional com relação a cada um dos tópicos mencionados acima pode ser encontrada em alguns textos introdutó- rios, tal como o bem cotado Digital Video and HDTV {Editores Morgan Kaufmanrt, 2003) de Charles Poyton, SUMÁRIO DA INVENÇÃO
[0032] São descritas estratégias para processar informação de imagem em uma forma linear para reduzir a quantidade de artefatos {em comparação com o processamento de dados em uma forma não-linear). Tipos exemplares de operações de processamento podem incluir: dimensionamento, composição, combinação-alfa, detecção de borda, e assim por diante. Em uma implementação mais específica, são descritas estratégias para processar informação de imagem que é: a) linear; b) no espaço de cor RGB; c) elevada precisão (por exemplo, provida mediante representação de ponto flutuante); d) progressiva; e e) canal completo. Outros aperfeiçoamentos proporcionam estratégias para: a) processar informação de imagem em um espaço pseudo-linear para aperfeiçoar a velocidade de processamento; b) implementar uma técnica de dispersão de erro aperfeiçoada; c) dinamicamente calcular e aplicar núcleos de filtro; d) produzir código de canalização em uma forma ótima; e e) implementar várias tarefas de processamento utilizando técnicas inovadoras de sombreamento de pixel. DESCRIÇÃO RESUMIDA DOS DESENHOS
[0033] A Figura 1 mostra uma canalização de processamento de imagem exemplar envolvendo o processamento de informação de imagem em um formato linear [0034] A Figura 2 mostra um procedimento exemplar para processar informação de imagem em um formato linear utilizando a canalização de processamento de imagem da Figura 1, [0035] A Figura 3 ilustra uma amostra de informação de imagem 4:2:0 como um veículo para discutir alguns dos desafios no processamento dessa informação sem artefatos incursos.
[0036] A Figura 4 mostra uma porção exemplar de uma canaliza- ção de processamento de imagem que acomoda o processamento de informação de imagem em uma forma pseudo-linear.
[0037] A Figura 5 mostra um procedimento exemplar para processar informação de imagem em uma forma pseudo-linear utilizando a porção de canalização de processamento de imagem mostrada na Figura 4.
[0038] As Figuras 6 e 7 explicam juntas as abordagens conhecidas para realizar pontilhamento e dispersão de erro.
[0039] A Figura 8 mostra um sistema exemplar para prover pontilhamento e dispersão de erro que produz resultados superiores para os modelos descritos em conexão com as Figuras 6 e 7.
[0040] A Figura 9 mostra um procedimento exemplar para realizar pontilhamento e dispersão de erro utilizando o sistema da Figura 8.
[0041] A Figura 10 mostra um sistema exemplar para prover filtra-ção ao realizar dimensionamento, envolvendo o cálculo dinâmico dos núcleos de filtro.
[0042] A Figura 11 mostra um procedimento exemplar para realizar filtração utilizando o sistema da Figura 10.
[0043] A Figura 12 mostra uma canalização de um processamento de imagem exemplar que pode incorporar quaisquer dos aperfeiçoamentos descritos aqui.
[0044] A Figura 13 mostra um sistema exemplar para produzir código eficiente utilizado para implementar a canalização de processamento de imagem da Figura 12, por exemplo, mediante eliminação dos módulos de código que não são requeridos para uma aplicação de processamento de imagem, específica.
[0045] A Figura 14 mostra um procedimento exemplar para aplicar o sistema de otimização de código na Figura 13.
[0046] A Figura 15 mostra um sistema exemplar para implementar a canalização de processamento de imagem da Figura 12 mediante uso de uma unidade de processamento gráfico (GPU) contendo funcionalidade de sombreamento de pixel.
[0047] A Figura 16 mostra um modelo de sombreador de pixel conhecido.
[0048] A Figura 17 mostra princípios gerais relacionados à aplicação de informação de textura aos polígonos no contexto de aplicações gráficas típicas, [0049] A Figura 18 mostra uma implementação exemplar de um filtro de 4-derívações utilizando um sombreador de pixel.
[0050] A Figura 19 mostra um procedimento exemplar que explica a operação do filtro da Figura 19.
[0051 ] A Figura 20 mostra uma implementação mais geral dos aspectos da canalização do processamento de imagem da Figura 1 utilizando um sombreador de pixel.
[0052] A Figura 21 mostra um ambiente de computador exemplar para implementar aspectos de diversas características mostradas nas figuras precedentes.
[0053] Os mesmos números são usados ao longo da revelação e figuras para referência aos componentes e características semelhantes. Os números da série 100 se referem às características original-mente encontradas na Figura 1, os números da série 200 se referem às características originalmente encontradas na Figura 2, os números da série 300 se referem às características originalmente encontradas na Figura 3, e assim por diante, DESCRICÃO DETALHADA DAS MODALIDADES PREFERIDAS
[0054] A descrição a seguir expõe diversas estratégias para aperfeiçoar uma canalização de processamento de imagem. As estratégias propõem novas formas de processar informação de imagem com base em uma reconsideração dos conceitos firmados na técnica. Uma primeira classe de aperfeiçoamentos (descrita na Seção A) pode se apli- car de forma abstrata a qualquer canalização de processamento de imagem. Uma segunda classe de aperfeiçoamentos (descritos na Seção B) se aplica mais especificamente a certas aplicações de tecnologia específica ou de implementação específica das canalizações de processamento de imagem.
[0055] De acordo com uma estratégia exemplar, informação de imagem recebida por uma canalização de processamento de imagem é convertida em uma forma linear e então processada naquela forma. Em uma implementação exemplar, por exemplo, informação de imagem recebida relacionada à luma (por exemplo, YObCr) é convertida em uma forma RGB linear e processada nessa forma. As tarefas de processamento exemplares podem incluir desentrelaçamento, redimensionamento (ajuste da escala), composição, combinação-alfa, detecção de borda, aguçamento, e assim por diante. Processar a informação de imagem no espaço linear (ao contrário do espaço não-linear) tem vantagens acentuadas, uma vez que geralmente produz resultados de saída com artefatos reduzidos.
[0056] De acordo com uma outra estratégia exemplar, a informação de imagem é convertida em um formato de canal completo (4:4:4) e de alta precisão e processada nesse formato, seguido da quantificação subseqüente da informação para uma precisão inferior. A informação de precisão superior pode ser expressa no formato de pontos flutuantes. Processar a informação de canal completo e de alta precisão é vantajoso porque ela produz resultados de saída com artefatos reduzidos, e pode reduzir a degradação da resolução croma à medida que a informação é processada na canalização.
[0057] De acordo com uma outra estratégia exemplar, provisões especiais são providas para processar informação de imagem entrelaçada 4:2:0. Essas provisões especiais proporcionam formas de integrar uma operação de amostragem ascendente com a operação de desentrelaçamento. Essa estratégia é benéfica por um número de razões. Por exemplo, essa estratégia garante melhor que a informação 4:2:0 será processada corretamente, por exemplo, sem produzir o artefato de processamento assim chamado “falha de croma”.
[0058] De acordo com uma outra estratégia exemplar, funções especiais de transferência podem ser aplicadas para converter a informação de imagem em espaço pseudo-linear, mais propriamente do que teoricamente corrigir o espaço linear. Isso é seguido da realização de processamento na informação de imagem nesse espaço pseudo-linear utilizando algoritmos do tipo linear (sem se ter que modificar esses algoritmos para considerar a aplicação dos mesmos aos sinais não-lineares). Essa estratégia é vantajosa porque envolve operações matemáticas que podem ser realizadas mais rapidamente utilizando o hardware de processamento disponível. Essa estratégia também elimina a necessidade de se alterar os algoritmos de processamento de imagem mediante incorporação de mecanismos de correção de erro nesses algoritmos. O objetivo dos mecanismos de correção de erro era o de minimizar os efeitos negativos de se utilizar algoritmos lineares para operar em dados não-lineares. Contudo, o modelo e aplicação desses mecanismos de erro freqüentemente se tornaram mais complexos do que os algoritmos de processamento, originais.
[0059] De acordo com uma outra estratégia exemplar, um algoritmo de dispersão de erro único é aplicado. Para cada pixel na informação de imagem original, o algoritmo quantifica uma soma definida por uma imagem original, informação de ruído, e um termo de erro. Isso produz um valor quantificado para aquele pixel específico. O algoritmo então computa um termo de erro para um pixel subseqüente a ser processado mediante computação da diferença entre o valor quantificado e o valor original. Essa estratégia é superior às estratégias conhecidas na técnica que essencialmente acrescentam ruído à informação de imagem original, e quantificam a informação de imagem ruidosa; essas técnicas conhecidas então computam o termo de erro com referência à informação de imagem ruidosa, mais propriamente do que a informação de imagem original. Desse modo, ao contrário da estratégia aqui revelada, as técnicas conhecidas degradam a informação de imagem original em proporção à informação de ruído adicionada à mesma. Como um outro aperfeiçoamento, as estratégias aqui descritas utilizam um gerador de ruído tendo um período de repetição suficientemente longo e características pseudo-aleatórias suficientemente “semelhantes a ruído” de modo que o próprio gerador de ruído não produz artefatos na informação de imagem de destino.
[0060] De acordo com uma outra estratégia, uma variação de um filtro Catmull-Rom é utilizada para realizar operações de dimensiona-mento. A estratégia envolve calcular o número de núcleos de filtro exigidos para redimensionar a informação de imagem e o número de derivações exigidas por cada núcleo, e então pré-calcular os núcleos de filtro. Esses núcleos de filtro são então aplicados à informação de imagem. Mais especificamente, os núcleos podem ser aplicados ciclicamente às fileiras e colunas da informação de imagem. Essa estratégia é vantajosa por algumas razões. Por exemplo, o uso de núcleos de filtro dinamicamente computados reduz alguns dos artefatos encontrados em aplicações conhecidas. O pré-cálculo dos núcleos de filtro é vantajoso porque acelera a aplicação efetiva do filtro. O uso criterioso de um conjunto mínimo de núcleos ciclicamente aplicados tem vantagens adicionais relacionadas à eficiência.
[0061] De acordo com uma outra estratégia, a funcionalidade é descrita para gerar código para implementar a canalização de processamento de imagem. A funcionalidade recebe exigências que especificam quais tipos de operação a canalização supostamente deve realizar e, então, monta seletivamente os módulos de código a partir de uma biblioteca de tais módulos para implementar essas funções. A funcionalidade não incorpora os módulos a partir da biblioteca, que não são exigidos. Essa estratégia é vantajosa por muitas razões; por exemplo, ela ajuda a produzir código que é mais eficiente, e desse modo o qual potencialmente funciona mais rapidamente.
[0062] Finalmente, uma outra estratégia utiliza uma unidade de processamento gráfico (GPU) para implementar certos aspectos da canalização de processamento de imagem ou todas as funções na canalização de processamento de imagem. Implementações específicas aplicam um sombreador de pixel (um processador de sinal digital (DSP) dentro da GPU) para realizar filtração de imagem. Em um caso, uma ou mais unidades de textura do sombreador de pixel pode ser atribuída aos pesos dos núcleos de filtro, e uma ou mais outras unidades de textura podem ser atribuídas às diferentes versões delta mudadas da mesma informação de imagem de entrada (associado às derivações do núcleo). Essa estratégia é vantajosa porque ela potencialmente proporciona maior velocidade de processamento e capacidade de processamento em comparação com uma implementação de CPU, devido às capacidades de processamento de vetor dos sombreadores de pixel.
[0063] Características adicionais e vantagens inerentes das estratégias serão apresentadas nessa descrição.
[0064] Em relação à terminologia, o termo “informação de imagem” se destina a abranger qualquer tipo de informação que possa ser consumida por um usuário em uma forma visual. A informação de imagem pode representar informação expressa em qualquer formato, tal como formato analógico, formato digital, ou uma combinação de formatos analógicos e digitais. A informação de imagem pode representar informação de imagem estática (por exemplo, fotografias digitais) e/ou informação móvel (por exemplo, informação de vídeo animado). Varia- ções ainda adicionais são consideradas pelo uso do termo informação de imagem.
[0065] O termo “canalização de processamento de imagem” se refere a qualquer funcionalidade para processar informação de imagem. Uma canalização inclui pelo menos dois componentes funcionais que operam em informação de imagem na forma em série, isto é, uma após a outra.
[0066] O termo “ünearização” se refere à conversão de informação de imagem a partir de sua forma não-linear pré-compensada para uma forma linear. O termo “não-linearização” se refere à operação inversa de linearização.
[0067] O termo “informação de imagem relacionada à luma” se refere à informação de imagem que tem um componente relacionado ao brilho (por exemplo, Y’) e componentes croma. O termo “espaço de cor relacionado à luma” se refere a qualquer um de vários padrões para formar informação de imagem relacionada à luma (por exemplo, YObCr, etc.).
[0068] Geral mente, em relação aos aspectos estruturais da matéria descrita, qualquer uma das funções aqui apresentadas pode ser implementada utilizando software, firmware (por exemplo, conjunto de circuitos lógicos fixos), processamento manual, ou uma combinação dessas implementações. Os termos: “módulo”, “funcionalidade”, e “lógico”; como aqui usados, representam geralmente software, firmware, ou uma combinação de software e firmware. No caso de uma implementação de software, o termo módulo, funcionalidade ou lógica representa código de programa que realiza tarefas específicas quando executadas em um dispositivo ou dispositivos de processamento (por exemplo, CPU ou CPUs). O código de programa pode ser armazenado em um ou mais dispositivos de memória legíveis por computador fixos e/ou removíveis.
[0069] Em relação aos aspectos processuais dessa matéria, certas operações são descritas como constituindo etapas distintas realizadas em certa ordem. Tais implementações são exemplares e não-limitadoras. Certas etapas aqui descritas podem ser agrupadas e realizadas em uma única alteração, e certas etapas podem ser realizadas de modo a diferir da ordem empregada nos exemplos apresentados nessa revelação.
[0070] Essa revelação inclui os seguintes conteúdos: A. Aperfeiçoamentos Gerais Exemplares para uma Canalização de Processamento de Vídeo A.1. Processamento de Informação de Imagem em Espaço de Cor RGB (Linear) A.2. Uso de Informação de Imagem de Canal Completo de Ponto Flutuante dentro da Canalização A.3. Provisões Especiais para Informação de Imagem 4:2:0 A.4. Processamento de Informação de Imagem no Espaço Pseudo-Linear A.5. Aperfeiçoamentos em Algoritmos de Dispersão de Erro A. 6. Cálculo Dinâmico de Núcleos de Filtro B. Aperfeiçoamentos Exemplares Relacionados à Implementação para a Canalização de Processamento de Vídeo B.1. Geração Ótima de Código de Processamento de Canalização B.2. Uso Geral de GPU para Realizar Processamento de Imagem B. 3. Aperfeiçoamentos Relacionados a Sombreador de Pixel C. Ambiente Exemplar de Computação A. Aperfeiçoamentos Gerais Exemplares em uma Canalização de Processamento de Vídeo Α.1. Processamento de Imagem no Espaço de Cor RGB (Linear) [0071] A Figura 1 mostra uma canalização 100 de processamento de imagem exemplar para processar informação de imagem (por exemplo, informação de vídeo)- Como visão geral, a fileira mais alta dos módulos recebe informação de imagem a partir de qualquer uma das diversas fontes (uma câmera, scanner, disco, mídia de armazenamento, rede digital, e assim por diante) e então converte a informação de imagem em uma forma para processamento. O módulo grande no meio da figura representa tal processamento, o qual produz informação de imagem processada. A fileira mais baixa dos módulos converte a informação de imagem processada em qualquer forma que seja apropriada para saída para um local de destino (por exemplo, uma televisão, monitor de computador, mídia de armazenamento, rede digital, e assim por diante).
[0072] Há vários aspectos únicos e vantajosos para a canalização 100 de processamento de imagem, identificados em sub-seções separadas dessa revelação, Essa sub-seção focalizará o processamento de informação de imagem em uma forma linear. Outros aperfeiçoamentos resultam do processamento adicional da informação de imagem em uma forma progressiva (desentrelaçada) dentro do espaço de cor RGB. Ao contrário, uma abordagem típica na técnica é a de realizar o processamento de informação Y’UV entrelaçada 4:4:4 ou 4:2:2, Como considerado pela presente invenção, o processamento de informação de imagem em espaços de cor nâo-lineares produz diversos artefatos. A abordagem incorporada na canalização 100 da Figura 1 supera esses problemas.
[0073] Cada um dos módulos mostrados na Figura 1 será descrito em turnos.
[0074] Em relação à fileira superior dos módulos, um módulo des-ponti lha mento 102 converte a informação de imagem recebida YObCr tendo uma primeira precisão em informação de imagem tendo uma segunda precisão, em que a segunda precisão é superior à primeira precisão. O módulo 102 realiza essa tarefa mediante execução de um processamento do tipo despontilhamento. Isto é, uma operação ponti-Ihamento (não mostrada) pode ter sido usada para quantificar a informação de imagem de entrada que é alimentada à canalização 100 na primeira precisão. O módulo 102 efetivamente aplica o inverso dessas operações de quantificação para produzir a segunda precisão mais alta.
[0075] O módulo de amostragem ascendente 104 transforma informação de imagem de entrada tendo um primeiro número de amostras em informação de imagem de saída tendo um segundo número de amostras, onde o segundo número de amostras é maior do que o primeiro número de amostras. Em uma aplicação típica, a informação de imagem foi recebida pela canalização em uma forma na qual há mais amostras de informação luma (Y’) em comparação com a informação croma (Cb ou Cr); isso porque o olho é mais sensível à informação luma, tornando possível reduzir a quantidade de informação croma em relação à informação luma sem sofrer degradação perceptível. O módulo de amostragem ascendente 104 trabalha tipicamente para aumentar o número de amostras croma de modo que as amostras croma estão no mesmo nível que as amostras luma. Por exemplo, o módulo de amostragem ascendente 104 pode converter imagem Y’CbCr 4:2:0 ou 4:2:2 em informação Y’PbPr 4:4:4. A operação de amostragem ascendente realizada pelo módulo 104 aumenta o número de amostras mediante interpolação das amostras existentes (desse modo realizando efetivamente uma operação de dimensionamento). Tais técnicas de interpolação freqüentemente devem considerar especificamente como os padrões diferentes posicionam a informação croma em relação à informação luma para prover resultados precisos.
[0076] O módulo 106 aplica uma transformação de matriz à informação de imagem YObCr 4:4:4 para transformar a mesma em um outro espaço de cor, isto é, o espaço de cor R’G’B’.
[0077] O módulo 108 então transforma a informação de imagem R’G’B’ não-linear em uma forma linear mediante aplicação de uma função de transferência à mesma. Deve se repetir que os símbolos com plica (‘) associados à informação de imagem R’G’B’ indicam que a mesma está na forma não-linear; a ausência das plicas (por exemplo, RGB) normalmente denota dados lineares (exceto que também é comum remover as plicas onde for convencionalmente entendido que os sinais sendo referidos representam informação não-linear, como descrito acima). A função de transferência de modelo mostrada na Figura 1 abaixo do módulo 108 na Figura 1 ilustra o formato geral da função de transferência que é empregada, o qual também é o formato geral da função de transferência inerente do CRT (não mostrado). Essa função de transferência de modelo também indica que ela pode empregar um final linear próximo da porção V = 0 de sua curva levando em conta as considerações especiais que se aplicam naquela região de “ponta”.
[0078] O módulo 110 opcionalmente realiza uma operação de de-sentrelaçamento na informação de imagem para converter a mesma a partir de uma forma entrelaçada para um formato progressivo. Ao realizar essa tarefa, o módulo 110 pode ser guiado utilizando quer seja a informação de imagem RGB, ou a informação de imagem YObCr original (para o caso especial, por exemplo, de informação 4:2:0). Contudo, as operações de desentrelaçamento devem ser realizadas preferivelmente no espaço RGB linear. Isso porque o desentrelaçamento é na realidade uma forma de processamento de imagem (envolvendo, por exemplo, interpolação de amostras existentes); portanto, realizar esse processamento no espaço linear produzirá resultados mais exatos.
[0079] O módulo 112 opcionalmente transforma as cores primárias da informação RGB linear para expressar a informação em um outro espaço de cor. Essa conversão pode compreender aplicar uma transformação de matriz à informação RGB para mudar suas cores primárias para corresponder a quaisquer que sejam as cores primárias desejadas para processamento realizado em componentes a jusante na canalização de processamento de vídeo. Em um exemplo, o módulo 112 pode converter diversos tipos diferentes de informação de imagem em um espaço de cor comum, o que facilita misturar essa informação em conjunto em uma operação posterior.
[0080] O módulo 114 geralmente representa qualquer tipo de processamento da informação de imagem tendo o espaço de cor transformado. Nesse ponto, o processamento atua sobre a informação de imagem isto é, nesse exemplo específico: a) na forma linear; b) no espaço de cor RGB; c) na forma 4:4:4 (canal completo); e d) na forma progressiva. Embora seja preferido que o processamento ocorra em um espaço de cor linear para reduzir artefatos, todos os aspectos inu-merados nessa lista não precisam estar presentes para que a canalização de processamento de imagem proporcione vantagens.
[0081] De qualquer modo, o módulo 114 pode realizar qualquer tipo de processamento da informação de imagem. Basicamente o processamento abrange qualquer transformação da informação de imagem, por exemplo, imagem de saída = Alguma Função (imagem de entrada), incluindo qualquer tipo de operação de filtração de imagem. Uma lista representativa e não-limitadora de tais operações de processamento inclui: a) composição; b) combinação alfa (por exemplo, diversos desvanecimentos e decomposições); c) detecção de borda; d) aguçamento; e) redimensionamento (ajuste da escala para tamanhos de imagem maiores ou menores); f) desentrelaçamento (se ainda não tiver sido realizado), e assim por diante. Composição envolve misturar um tipo de informação de imagem com um outro tipo de informação de imagem. Por exemplo, o módulo 114 pode ser empregado para combinar gráficos (por exemplo, informação de texto) no topo da informação de imagem de vídeo extraída de um disco DVD. Combinação-alfa envolve combinar cores em conjunto com base em um fator alfa (o qual determina o grau em que uma cor combina com uma outra cor). Por exemplo, a operação de combinar é governada pela seguinte equação: cor final = cor de origem * fator de combinação de origem + cor de destino * fator de combinação de destino. Nessa equação, a cor de pixel de destino representa a cor do pixel na cena preexistente, e a cor de pixel de origem representa a nova cor de pixel que o mecanismo de combinar pretende adicionar ao pixel de destino. Os fatores de combinação variam de 0 a 1 e são usados para controlar quanta contribuição as cores de pixel de origem e de destino têm no valor de cor final. Repetindo, esses são exemplos meramente representativos de um grande número de potenciais aplicações de processamento. Geralmente, muitas das aplicações de processamento de vídeo descritas acima aplicam uma ponderação afim para mudar entre informação de imagem de origem e informação de imagem alvo. Nesses tipos de aplicações, o uso de ponderação não-linear pode fazer com que o brilho total da informação de imagem diminua muito rapidamente. Isso é simplesmente um exemplo de um artefato o qual a presente solução poderia eliminar ou reduzir em virtude de seu processamento de informação de imagem linear.
[0082] A fileira inferior dos módulos na Figura 1 geralmente inverte as operações descritas acima na fileira superior. Isto é, após processamento no módulo 114, o módulo 116 opcionalmente converte a informação de imagem em um outro espaço de cor, tal como de volta ao espaço de cor RGB. O módulo 118 aplica um re-entrelaçamento opcional da informação de imagem se ela precisar ser armazenada ou exi- bida em uma forma entrelaçada. O módulo 120 aplica uma função de transferência para outra vez transformar a informação de imagem RGB em uma forma não-linear (R’G’B’) (se apropriado). O módulo 122 muda o espaço de cor da informação de imagem R’G’B’ de volta para um formato que separa sua componente luma (Y’) de seus componentes croma (por exemplo, PdPr). O módulo 124 opcionalmente subamostra a informação de imagem Y’PbPr para reduzir a quantidade de amostras croma (PbPr) em relação à quantidade das amostras luma (Y’). Isto é, esse módulo 124 pode transformar informação de imagem Y’PbPr 4:4:4 (onde há uma amostra croma para cada amostra luma) em informação de imagem Y’PbPr 4:2:2 ou 4:2:0 (onde há um número menor de amostras croma em relação às amostras luma). Finalmente, o módulo 126 aplica uma operação de quantificação à informação de imagem. A operação de quantificação tem o efeito de converter a informação de imagem em uma precisão inferior para facilitar transferência eficiente através de uma rede, armazenamento, display, e assim por diante. A operação de quantificação pode ser acoplada a uma operação de pontilhamento para reduzir artefatos que de outro modo poderíam ser causados pelos erros de arredondamento produzidos pela quantificação. Como será explicado em detalhe adicional em uma sub-seção posterior, a operação de pontilhamento tem o efeito de espalhar esses erros para pixels vizinhos quando a informação de imagem está sendo processada, portanto aliviando os efeitos dos artefatos.
[0083] A Figura 2 mostra um procedimento 200 que resume as operações descritas acima na forma de fluxograma. A etapa 202 envolve converter a informação de imagem de entrada em um espaço de cor linear, tal como RGB. A informação também é preferivelmente de-sentrelaçada para a forma progressiva, e amostrada ascendentemente para o formato 4:4:4 (canal completo). A etapa 202 desse modo cor- responde à fileira superior dos módulos na Figura 1.
[0084] A etapa 204 requer a realização de qualquer tipo (e combinação) de tarefas de processamento na informação de imagem em sua forma linear [0085] A etapa 206 representa converter a informação de imagem linear processada em qualquer que seja o formato de saída demandado por uma aplicação específica. Isso pode envolver converter a informação de imagem linear processada em um espaço de cor não-linear, re-entrelaçando a mesma, amostrando descendentemente a mesma, quantificando a mesma e assim por diante. A etapa 206 corresponde à fileira inferior dos módulos na Figura 1. A.2. Uso de Informação de Imagem de Canal Completo de Ponto Flutuante dentro da Canalização [0086] Retornando à Figura 1, a canalização 100 também provê resultados superiores para estratégias conhecidas porque a mesma utiliza (a) informação de imagem de canal completo (isto é, 4:4:4) tendo (b) processamento relativamente elevado com (c) semânticas opcionalmente lineares. Mais espedficamente, como descrito acima, a canalização 100 converte a informação de imagem que ela recebe em uma precisão superior do que sua forma original. A canalização 100 também converte a informação de imagem na forma de canal completo (4:4:4) mediante aumento da quantidade de amostras croma na informação em relação às amostras luma. Diversas tarefas de processamento são então realizadas na informação de imagem de canal completo e de alta precisão. Após o processamento ter sido realizado, a canalização 100 pode opcional mente converter a informação de imagem processada em uma forma suba mostrada de precisão inferior uma vez mais.
[0087] Geral mente, a conversão de informação de imagem em uma forma de canal completo e de alta precisão efetivamente amplia o componente de sinal da informação em relação ao componente de ruído da informação, desse modo habilitando o processamento que é realizado nessa informação para produzir resultados mais exatos. Como contraste, estratégias conhecidas que falham em utilizar informação de imagem de canal completo e/ou de alta precisão em várias conjunturas intermediárias na canalização podem propagar erros ao longo da canalização e podem reduzir a resolução da informação de imagem (pelo fato de essencialmente perder conteúdo de cor). A Figura 1 denota geralmente o processamento de informação de imagem de alta precisão e de canal completo por intermédio do bloco de informação rotulado 128 que alimenta para dentro do módulo de processamento 128 (embora outros módulos nessa figura também possam se beneficiar do processamento de informação na forma de alta precisão e canal completo, tal como o módulo de desentrelaçamento 110).
[0088] Um exemplo tornará a discussão mais concreta. Considere a vantagem de trabalhar em informação de imagem RGB linear de alta precisão, em comparação com informação de imagem Y’UV 4:2:0 ou 4:2:2 de precisão normal. Lembre-se que informação de imagem 4:2:0 e 4:2:2 proporciona metade e um quarto (respectivamente) da quantidade de informação croma em relação à quantidade de informação luma. Tipicamente informação de imagem de alta definição (HD) (especificamente 1920x1080i, 2.07 mpixels) é dimensionada descendentemente para resoluções de 1280x720p (0.92 mpixels) ou 720x480p (0.35 mpixels). Se uma canalização realiza uma operação de dimensi-onamento descendente nesse contexto no formato de subamostragem 4:2:0 (por exemplo, 1920x1080 a 1280x720), então a canalização dimensiona descendentemente 2.07 mpixels de informação luma e 0.52 mpixels de informação croma para 0.92 mpixels de informação luma e 0.23 mpixels de informação croma. Contudo, se a canalização primeiramente amostra ascendentemente para 4:4:4, então converte para RGB de alta precisão (por exemplo, flutua), então dimensiona descendentemente, e então converte para 4:4:4 YUV, a canalização efetivamente reterá 0.92 mpixels de informação luma e 0.52 mpixels de informação croma. Em outras palavras, o uso de processamento de alta precisão nesse contexto permite que a canalização retenha quase toda a informação croma original.
[0089] Uma forma de se obter informação de imagem intermediária de alta precisão é a de utilizar formato de ponto flutuante para representar a informação. Números de pontos flutuantes têm componentes de mantissa e componentes de expoente. O componente de expoente define como o componente de mantissa deve ser mudado. Com esse formato, informação de ponto flutuante pode exprimir valores muito baixos até valores muito altos mediante mudança da representação da informação conformemente (por exemplo, mediante mudança do componente de expoente). Qualquer tipo de representação de ponto flutuante pode ser usado tendo qualquer número de bits, incluindo uma representação de ponto flutuante de 16 bits, uma representação de ponto flutuante de 32 bits, e assim por diante. Uma forma partícula rmente apta de ponto flutuante para uso na canalização de processamento de imagem 100 é o assim denominado formato de ponto flutuante FP16, embora outros tipos de representações de ponto flutuante possam ser usados. A.3. Provisões Especiais para Informação de Imagem 4:2:0 [0090] Para revisar, como explicado na seção Antecedentes, informação de imagem 4:4:4 inclui quatro amostras de Cb e Cr para cada quatro amostras de Y\ Informação de imagem 4:2:2 inclui duas amostras de Cb e duas amostras de Cr para cada quatro amostras de Y\ Informação de imagem 4:2:0 inclui metade das amostras de Cb e Cr em cada linha de varredura, e metade de tantas linhas de varredura de Cb e Cr quanto houver de Y1. Em outras palavras, a resolução para informação croma é metade daquela da informação luma em ambas as direções horizontal e vertical. Por exemplo, se a resolução de imagem completa é 720x480, então a informação croma é apenas armazenada em 360x240. Em 4:2:0, não apenas as amostras ausentes devem ser interpoladas em cada linha de varredura, mas linhas de varredura inteiras de informação croma devem ser interpoladas a partir das linhas de varredura acima e abaixo. A Figura 3 mostra um exemplo de informação de imagem 4:2:0 entrelaçada MPEG2. Informação adicional com relação ao processamento de informação de imagem 4:2:0 pode ser encontrada em Don Munsil e Stacey Spears, “The Chroma Up-sampling Error and the 4:2:0 Interlaced Chroma Problem”, DVD Benchmark, Abril de 2001 (dezembro de 2002 atualizado em janeiro de 2003).
[0091] A escassez e alinhamento posicionai de informação croma na informação de imagem 4:2:0 introduz um número de desafios no processamento dessa informação. Em termos gerais, podem surgir problemas porque um estágio na canalização de processamento 100 exige a análise de um outro estágio na canalização de processamento 100 para interpretar corretamente a informação de imagem 4:2:0. Considere o exemplo do modo de amostragem ascendente 104 e módulo 106 de transformação de matriz da Figura 1. Para interpretar corretamente a informação de imagem 4:2:0, o módulo de amostragem ascendente 104 exige de forma ótima o conhecimento relacionado a como a informação de cor é expressa na informação de imagem, que é a informação que é provida pelo módulo de desentrelaçamento 110. Mas, uma vez que o modo de desentrelaçamento 110 está localizado a jusante em relação ao módulo de amostragem ascendente 104, esse conhecimento não está disponível para o módulo de amostragem ascendente 104. Se os módulos 104 e 106 processam a informação 4:2:0 sem as vantagens da análise de desentrelaçamento, eles podem produzir erros na informação de imagem os quais podem ser difíceis ou impossíveis de corrigir. Essa dificuldade finalmente provém do fato de que as linhas de varredura em 4:2:0 não podem ser tratadas independentemente entre si na análise de desentrelaçamento (ao contrário, por exemplo, da informação de imagem 4:2:2).
[0092] Para lidar com esse desafio, a canalização 100 da Figura 1 pode incorporar provisões especiais para manipular informação de imagem 4:2:0. Como uma provisão geral, a canalização 100 pode ser modificada de modo que análise realizada em diferentes estágios (e informação disponível em diferentes estágios) é compartilhada mais amplamente para outros estágios na canalização, mais propriamente do que exigindo que cada estágio analise atomisticamente apenas qualquer que seja a informação alimentada ao mesmo por um estágio precedente.
[0093] Com referência específica ao problema causado pela posição do módulo de desentrelaçamento 110 na canalização 100, a canalização 100 pode ser modificada de modo que análise de desentrelaçamento (realizada pelo módulo 110) é realizada mais cedo, por exemplo, em conjunto com a análise de amostragem ascendente (realizada pelo módulo 104). A Figura 1 ilustra essa tática por intermédio de linha tracejada 130. Alternativamente, o módulo de desentrelaçamento 110 pode realizar a análise de desentrelaçamento mediante também exame da informação de imagem introduzida original que foi alimentada ao módulo de amostragem ascendente 104. Isto é, o módulo de desentrelaçamento 110 pode realizar análise na saída do módulo 108 em combinação com a informação de imagem original para obter um melhor entendimento de como a informação de imagem deve ser desentrelaçada.
[0094] Ainda adicionalmente provisões de integração de módulo podem ser concebidas para partilhar a análise realizada separadamen- te por módulos individuais dentro da canalização 100, para desse modo tratar mais efetiva mente da escassez de informação croma na informação de imagem 4:2:0. A.4. Processando Informação de Imagem em Esoaco Fseudo-Linear [0095] As seções precedentes trataram do objetivo de projetar uma canalização de processamento de imagem que produz poucos artefatos. Contudo, canalizações de processamento de imagem também devem prover resultados de saída de uma maneira eficiente. Uma canalização de processamento de imagem produz resultados de uma maneira eficiente quando ela faz isso com velocidade suficiente e com um número aceitável de recursos de processamento. Com essa finalidade, essa sub-seção propõe diversas abordagens que podem ser aplicadas à canalização 100 mostrada na Figura 1 para reduzir a complexidade da canalização 100.
[0096] Isto é, essa sub-seção propõe modificações na canalização 100 mostrada na Figura 1 de modo que ela proporcione informação de imagem que é quase linear, mas não completamente linear. Como resultado, diz-se que essas transformações transformam a informação de imagem em um espaço "pseudo-linear”, mais propriamente do que um espaço linear teoricamente correto. A vantagem é que a implementação de hardware das operações matemáticas exigidas pelas funções de transferência (nos módulos 108 e 120) pode ser bastante simplificada, resultando em processamento muito mais rápido e mais eficiente da informação de imagem. Mais especificamente, as operações escolhidas executam tipicamente uma ordem de magnitude mais rápida do que suas funções de contraparte, originais (que são mais precisas matematicamente). O impacto negativo de processar imagem no espaço pseudo-linear é mínimo porque a informação de imagem pseudo-linear é quase linear. Desse modo, qualquer algoritmo de natureza linear pode ser aplicado a essa informação sem modificação para prover resul- tados de saída satisfatórios para a maioria das aplicações.
[0097] A Figura 4 provê mais informação relacionada à abordagem descrita acima. Mais especificamente, a Figura 4 representa uma modificação de somente certos módulos da canalização de processamento 100 da Figura 1 e, portanto, contém apenas uma ilustração abreviada da canalização 100 de processamento completo, mostrada na Figura 1.
[0098] O excerto de canalização 400 mostrado na Figura 4 inclui um módulo de função de transferência 402 que substitui o módulo de função de transferência 108 da Figura 8. Em vez de aplicar uma transformação matematicamente exata da informação de imagem para converter a mesma em espaço linear (como faz o módulo 108), o módulo 402 aplica uma função de transferência de aproximação (g_approx(x)) que converte a informação de imagem no espaço pseu-do-linear descrito acima. Esse módulo 402 recorre à função de transferência g_approx(x) porque ela é “mais barata” do que a função de transferência mais exata exigida pelo módulo 108 da Figura 1.
[0099] O módulo 404 representa a contraparte do módulo de processamento 114 da Figura 1. O módulo 404 realiza qualquer número de tarefas de processamento na informação de imagem pseudo-linear no espaço de processamento pseudo-linear.
[00100] Módulos 406, 408 e 410 realizam então a tarefa de converter a informação de imagem processada em um formato adequado para saída (por exemplo, para um display, dispositivo de armazenamento, local alvo de rede, e assim por diante). O módulo 406 é especificamente designado com a responsabilidade de remover os efeitos do módulo 402 mediante aplicação do inverso de sua operação, isto é, g_approx’(x). O módulo 408 então lineariza a saída do módulo 406 mediante aplicação de uma função de transferência g_in(x); essa operação é realizada porque o próximo estágio 410 é designado para aceitar entrada linear. Então, o módulo 410 aplica a função de transferência inversa (g_out’(x)) para produzir a informação de imagem de saída gama-corrigida para se ajustar a qualquer que seja o formato de saída exigido. Em uma implementação atual, os módulos 406, 408 e 410 podem ser integrados em uma única transformação, representada por F(x), realizada pelo módulo 412.
[00101] Essencialmente, os algoritmos que são aplicados no espaço de cor pseudo-linear pelo módulo 404 são os mesmos algoritmos que são aplicados ao espaço de cor linear “correto” no módulo 114 da Figura 1; em outras palavras, a estratégia de processamento representada pela Figura 4 não exige construção sob medida especial dos próprios algoritmos de processamento de imagem. Ao contrário, a abordagem seguida por estratégias anteriores conhecidas é a de realizar o processamento em qualquer que seja o espaço não-linear que a informação de imagem recebeu e então aplicar diversos fatores de correção de aplicação específica e ad hoc aos algoritmos para tentar consertar quaisquer artefatos. Contudo, esses fatores de correção fre-qüentemente eram imprecisos e, de qualquer modo, tipicamente complexos. Mais geralmente, as técnicas anteriores não aplicavam uma abordagem geralmente aplicável e abrangente para converter informação para a forma pseudo-linear, e então remover essa forma pseudo-linear da maneira descrita acima.
[00102] A discussão restante nessa sub-seção mostra abordagens exemplares que podem ser usadas para implementar os módulos descritos acima na Figura 4. Para começar, observar que as funções de transferência usadas para realizar processamento gama são tipicamente funções de potência (por exemplo, x°45 ou o inverso de χ1/0 45« x2222), ou uma combinação de várias funções. Funções de potência são tipicamente muito dispendiosas para serem computadas em uma base por pixel utilizando hardware disponível.
[00103] Contudo, observar que x0 45 é aproximadamente igual à raiz quadrada de x, ou em outras palavras, x0 45« x0 50. E x1/0 45é aproximadamente igual a x2, ou em outras palavras, χ1/0 45 « χ*χ. Hardware otimizado existe para calcular x1/2 que é mais rápido do que as operações exigidas por uma função de potência geral (freqüentemente por uma ordem de magnitude). E o hardware pode realizar o quadrado x2 muito rapidamente, uma vez que isso é simplesmente uma operação de multiplicar. Portanto, essas aproximações podem cortar acentua-damente os custos de processamento associados à implementação das funções de transferência.
[00104] Mais precisamente, a função g_approx(x) realizada pelo módulo 402 pode assumir a forma de x2*sign(x), e a função de transferência inversa realizada pelo módulo 406 pode assumir a forma de (abs(x))1/2*sign(x). (Observar que como uma consideração especial, as funções de transferência e as funções de transferência inversas podem aplicar um segmento final linear próximo de zero).
[00105] A abordagem acima pode ser generalizada para diferentes gamas de entrada e saída, representadas pelas funções g_in(x) e g_out(x), utilizando a seguinte série exemplar de operações: 1) Aplicar a aproximação linear inversa g_approx(x) = x2=x*x à informação de imagem. O módulo 402 pode realizar essa etapa. 2) Processar os dados no espaço pseudo-linear. O módulo 404 pode realizar essa etapa. 3) Aplicar a aproximação linear. O módulo 406 pode realizar essa operação. 4) Aplicar a função de transferência g_in(x) para linearizar a saída do módulo 406. O módulo 408 pode realizar essa operação. 5) Aplicar a função de transferência inversa g_out’(x) à saída do módulo 408 para produzir informação no espaço g_out deseja- do.
[00106] As etapas (3)-(5) podem ser fundidas em uma única função, F(x), isto é: F(x)=g_out’(g_in(g_approx!(x))).
Se a canalização converte entre um gama de 2.222 até um gama de 2.4, então a função F(x) pode ser expressa como: [00107] O custo dos algoritmos acima envolve uma conversão muito “barata” exigida pela função g_approx(x), seguido do processamento da informação no espaço pseudo-linear, seguido de uma conversão potenciaimente dispendiosa exigida pela função F(x). Porém, uma vez que a equação F(x) simplesmente demanda multiplicação de expoentes, o custo dessa função não é pior do que a função inversa original. Portanto, a solução mostrada na Figura 4 tem o efeito líquido de potencialmente reduzir o custo do ciclo completo de linearizaçâo/não-linearização em aproximadamente metade. E como declarado acima, essa solução é vantajosa no sentido de que ela não exige construção sob medida especial dos algoritmos executados pelo módulo 404.
[00108] A Figura 5 mostra um procedimento 500 que resume as operações descritas acima, e é uma contraparte do procedimento de linearizaçâo 200 mostrada na Figura 2. A etapa 502 requer a conversão da informação de imagem de entrada para o espaço pseudo-linear. A etapa 504 requer a realização do processamento na informação de imagem no espaço pseudo-linear utilizando o módulo 404. E a etapa 506 requer a conversão da informação processada em um espaço de cor não linear apropriado para saída. A.5. Aperfeiçoamentos em Algoritmos de Dispersão de Erro [00109] A quantificação de informação de imagem de alta precisão para um formato de precisão inferior pode introduzir erros, uma vez que as aproximações exigidas pela quantificação podem causar artefa- tos se não forem manejadas corretamente. Diversos algoritmos de dispersão de erro atuam para dispersar os erros causados pela quantificação e, portanto, minimizam os artefatos. Tal dispersão de erro é uma forma de pontilhamento.
[00110] A Figura 6 mostra a aplicação conhecida de um algoritmo Floyd-Steinberg para dispersar erros causados pela quantificação. Considere o ponto X em uma imagem, que representa um pixel (e mais geralmente, um elemento de imagem) na imagem. A quantificação do elemento de imagem X produzirá uma diferença de erro, computada como a diferença entre a representação se alta precisão do elemento de imagem e o valor para o qual ela é quantificada. O algoritmo Floyd-Steinberg divide essa diferença em componentes diferentes, e então distribui esses componentes para os elementos de imagem que são vizinhos ao elemento X (e que ainda não foram processadas pelo algoritmo). Quando o processamento avança para tal elemento de imagem vizinho, os componentes de erro dispersos nesse elemento de imagem serão adicionados aos mesmos, e esse elemento de imagem será então processado na forma descrita acima, por exemplo, mediante quantificação do mesmo, calculando-se uma outra diferença de erro, e dispersando esse erro para os elementos de imagem vizinhos. O processamento da imagem inteira pode prosseguir de diversas formas, tal como da esquerda para a direita e de baixo para cima.
[00111] O algoritmo Floyd-Steinberg atribui diferentes pesos aos componentes de erro que ele dispersa para elementos de imagem vizinhos. A Figura 6 mostra os pesos de 7, 1, 5 e 3 atribuídos aos elementos de imagem que são vizinhos ao elemento X (no sentido horário). Mais precisamente, os fatores de ponderação aplicados aos componentes de erro são 7/16, 1/16, 5/15 e 3/16, onde o denominador de “16” reflete o total dos pesos atribuídos aos elementos de imagem vi- zinhos.
[00112] Contudo, algoritmos de dispersão de erro, tal como Floyd-Steinberg, algumas vezes produzem uma imagem de destino tendo vários artefatos. Tais artefatos podem se manifestar em padrões visualmente perceptíveis que são particularmente notáveis com certo conteúdo de imagem. Estratégias conhecidas trataram desse problema mediante adição de ruído aleatório à imagem original para ofuscar os padrões causados pelos algoritmos de dispersão de erro. Porém, essa solução pode ter, ela própria, diversas deficiências. Em primeiro lugar, técnicas conhecidas acrescentam o ruído à imagem original e, então, quantificam a imagem original ruidosa como a linha de base (da forma descrita mais cuidadosamente abaixo). Embora essa técnica não tenha o efeito de obscurecer os artefatos causados pelo algoritmo de dispersão de erro, ela também degrada a imagem de destino final. Isto é, o ruído na imagem de destino aumenta em proporção ao ruído acrescentado à imagem original. Em segundo lugar, estratégias conhecidas podem acrescentar ruído utilizando geradores de ruído tendo um período de repetição relativamente curto. Portanto, os geradores de ruído podem produzir seus próprios artefatos de tipo padrão que podem ser visualmente perceptíveis na imagem de destino (junto com, possivelmente, algum vestígio dos artefatos de dispersão de erro para os quais o gerador de ruído foi projetado para mascarar).
[00113] A Figura 7 mostra um procedimento 700 que explica mais especificamente o primeiro dos problemas identificados acima. O objetivo do procedimento 700 é o de quantificar informação de imagem original (“Original”) para produzir informação de imagem de destino (“Final”) utilizando um algoritmo de distribuição de erro. A etapa 702 requer a produção de informação de imagem “Temp” mediante adição da informação de ruído à informação de imagem original para um elemento de imagem i (por exemplo, um pixel). A etapa 704 requer a pro- dução da informação de imagem final mediante quantificação de uma soma definida pela informação de imagem Temp e a informação de imagem “Error Term(i)”. O Error_Term representa o componente de erro adicionado ao elemento de imagem i com base em uma quantificação anterior de um elemento ou elementos de imagem processado anteriormente. A etapa 706 requer a definição do próximo componente Error_Term (a ser aplicado a um elemento de imagem futuro a ser processado) e a informação de imagem Final dessa forma computada menos a informação de imagem Temp. Aplicação do algoritmo tem o efeito líquido de essencialmente quantificar uma imagem ruidosa, com os empecilhos conseqüentes apresentados acima.
[00114] A Figura 8 mostra um sistema 800 que supera os problemas observados acima na técnica. Um módulo de pontilhamento 802 transforma a informação de imagem original 804 em informação de imagem de destino 806 utilizando um algoritmo de dispersão de erro. O algoritmo de dispersão de erro compreende o algoritmo Floyd-Steinberg discutido acima, mas não é limitado a esse algoritmo. Um gerador de ruído 808 insere ruído aleatório no processo de quantificação para ajudar a obscurecer alguns dos artefatos produzidos pelo algoritmo de dispersão de erro.
[00115] O sistema 800 difere das estratégias conhecidas em pelo menos dois aspectos. Em primeiro lugar, o sistema 800 acrescenta essencialmente a informação de ruído ao processo de quantificação, não a informação de imagem original 804. Em outras palavras, a informação de imagem original 804 permanece a linha de base a partir da qual os termos de erro são medidos, mais propriamente do que, em técnicas anteriores, a imagem original acrescida da informação de ruído. Desse modo, aumentar a quantidade de ruído no sistema 800 necessariamente não terá o efeito de tornar progressivamente a informação de imagem de destino 806 mais ruidosa ao olho; isso porque os termos de erro que são propagados para elementos de imagem vizinhos retêm uma medida do desvio da informação de imagem de destino 806 com relação à informação de imagem original 804, e desse modo o algoritmo de dispersão de erro está continuamente tentando corrigir os efeitos do ruído aleatório adicionado ao processo de quantificação.
[00116] A Figura 9 mostra um procedimento 900 que explica o processamento acima. A etapa 902 envolve produzir informação de imagem final para um elemento de imagem i mediante quantificação de uma soma da informação de imagem original, a informação de ruído, e o termo de erro para o elemento de imagem i. A etapa 904 requer a computação do termo de erro a ser disperso para um elemento de imagem vizinho (ou elementos) mediante computação da diferença entre a informação de imagem final e a informação de imagem original para o elemento de imagem i.
[00117] Um exemplo tornará a discussão mais concreta. Suponha que a tarefa seja de quantificar um elemento de imagem tendo o valor 23.3 para o número inteiro mais próximo. Suponha, na estratégia conhecida mostrado na Figura 7, que a quantidade +0.4 de informação de ruído seja adicionada ao valor, tornando o mesmo 23.7. O valor de imagem final para esse elemento de imagem seria 24, e o termo de erro que é propagado seria de -0.3 (a diferença entre o valor de imagem de saída final e o valor de imagem ruidosa, 23.7). Na estratégia aperfeiçoada da Figura 9, como contraste, o termo de erro que é propagado seria de -0.7 (a diferença entre o valor de imagem de saída final e o valor de imagem original).
[00118] Uma descrição mais formal da técnica acima é apresentada abaixo, com base em uma aplicação do algoritmo de dispersão de erro Floyd-Steinberg. Para cada pixel em uma imagem, a tarefa do algoritmo é a de quantificar um valor V de alta precisão e armazenar o mes- mo em uma posição de pixel P(x, y) de um arranjo de pixel P, onde P(xt y) tem precisão inferior a V. Termos de erro produzidos pelo algoritmo são armazenados em um arranjo E de erro de alta precisão tendo o mesmo tamanho que o arranjo de pixel P. O termo de erro para um pixel P(x, y) é armazenado em um local correspondente em E(x, y). A função “roundO" no algoritmo arredonda um número de alta precisão para o número de baixa precisão mais próximo. A função “randomQ” no algoritmo retorna um número de alta precisão aleatória na faixa {- 0.5..0.5}. Os valores temporários “Desejados” e “Erro” são valores de alta precisão. Os atuais coeficientes de propagação de erro são provenientes do algoritmo de propagação de erro Floyd-Steinberg. Algoritmo 1: Dispersão Aperfeiçoada de Erro Para cada pixel x, y: Desejado = V + E(x, y) P(x, y) = arredondado(Desejado + aleatórioQ) Erro = Desejado - P(x, y) E(x+1, y) = Erro* 7/16 E(x-1, y+1) = Erro * 1/16 E(x, y+1 ) = Erro * 5/16 E(x+1, y+1) = Erro *3/16 Fim [00119] Como um segundo aperfeiçoamento, o gerador de ruído 808 emprega um padrão de repetição rei ativa mente longo, ao contrário das abordagens conhecidas. A frase: “rei ativa mente longo” pode ser interpretada em termos relativos mediante determinação de que o gerador de ruído 808 não repita seus números ao processar um quadro inteiro de informação de imagem, ou pelo menos não repita ele próprio até o ponto em que ele produz artefatos perceptíveis na informação de imagem de destino 806. Um gerador de número aleatório especifico que atenderá a essa exigência é o gerador de ruído aleatório assim denominado R250. A.6. Cálculo Dinâmico dos Núcleos de Filtro [00120] Os filtros de dimensionamento podem ser usados em diversas conjunturas na canalização 100 mostrada na Figura 1 quando a informação de imagem é redimensionada a partir de um tamanho original para um tamanho de destino. Por exemplo, o processamento realizado no módulo 114 pode envolver o dimensionamento da informação de imagem seja ascendente ou descendentemente, dependendo da aplicação e/ou dependendo dos sinais de controles introduzidos por um usuário. O dimensionamento também pode ser realizado em outras conjunturas na canalização 100, tal como nos módulos de amostragem 104 e 124.
[00121] Alguns algoritmos de filtração podem ser utilizados em conjunto com os algoritmos de dimensionamento. Um tipo conhecido específico de filtro é o filtro assim chamado Catmull-Rom. Aplicação desse tipo de filtro para a tarefa de redimensionar a informação de imagem resultará no aguçamento das bordas na informação de imagem até certo ponto.
[00122] Essa sub-seção descreve um filtro utilizado para dimensionamento (tal como o filtro do tipo Catmull-Rom, mas não limitado a esse tipo de filtro) que pode ser computado e aplicado em uma base pixel por pixel à informação de imagem. Isso pode ser conceptualizado como a computação dinâmica e aplicação de um filtro separado para cada pixel na informação de imagem. Cada filtro pode incluir um ou mais núcleos, e cada núcleo pode ter uma ou mais derivações. O núcleo define pesos que são aplicados aos pixels na informação de imagem. As derivações definem amostras de informação de imagem sobre as quais o núcleo atua. Falha em calcular e aplicar os núcleos de filtro dessa maneira pode resultar em diversos artefatos na imagem de destino, tal como padrões de batimento.
[00123] Contudo, o cálculo de núcleos de filtro separados para cada pixel pode ser proibitivamente caro em termos da quantidade de tempo envolvido para computar os núcleos. Isso podería impedir apresentação em tempo real da informação de imagem em algum hardware. Para resolver esse problema, essa subseção define estratégias eficientes para computar dinamicamente núcleos de fase de filtro para fileiras ou colunas inteiras de informação de imagem de entrada, e então aplicando tais núcleos. Como visão geral, as estratégias envolvem calcular o número de núcleos exigido para uma fileira (ou coluna) da informação de imagem original, calcular o número de derivações exigidas pelos núcleos, alocar um arranjo de armazenamento para armazenar os núcleos, e calcular e armazenar o número exigido de núcleos no arranjo. Essas etapas são seguidas mediante aplicação dos núcleos de filtro armazenados no arranjo à informação de imagem.
[00124] O algoritmo é eficiente porque os núcleos são calculados antecipadamente à aplicação dos mesmos. Além disso, economias computacionais são obtidas porque, em certos casos, um número relativamente pequeno de núcleos calculados pode ser ciclicamente aplicado a uma fileira ou coluna muito maior da informação de imagem. E os mesmos núcleos aplicados a uma fileira ou coluna específica podem ser aplicados a outras fileiras e colunas (respectivamente) na informação de imagem. Em outras palavras, dependendo das exigências de redimensionamento de uma aplicação específica, não é necessário computar um filtro separado para cada pixel único na informação de imagem.
[00125] A Figura 10 mostra uma visão geral de um sistema 1000 para implementar um módulo de filtro 1002 do modelo descrito acima. O módulo de filtro 1002 inclui um módulo 1004 de pré-cálculo de núcleo dinâmico. A finalidade desse módulo 1004 é de em primeiro lugar computar o número de núcleos exigidos para uma operação de dimen- sionamento específico e o número de derivações exigidas para os núcleos. O número de núcleos e derivações dependerá da forma em que a informação de imagem está sendo redimensionada (na forma descrita abaixo). Então o módulo de pré-cálculo 1004 pré-calcula o número desejado de núcleos e armazena os núcleos em um módulo de armazenamento 1006. Um módulo 100 de aplicação de núcleo aplica então os núcleos no módulo 1006 de armazenamento de núcleo à informação de imagem para obter o comportamento de filtração desejado. Como mencionado acima, cálculo dos núcleos antecipadamente à aplicação dos mesmos ajuda a fazer com que o processo de filtração seja realizado mais rapidamente. Além disso, a complexidade do cálculo de filtro é reduzida bastante para aquelas operações de dimensi-onamento que exigem apenas o pré-cálculo de uns poucos núcleos.
[00126] A porção direita da Figura 10 mostra como os núcleos 1010 podem ser aplicados iterativamente a uma fileira específica 1012 de informação de imagem 1014. Os núcleos 1010 são aplicados em série e de forma cíclica (onde, em um caso exemplar, cada núcleo é aplicado a um pixel de saída). Por exemplo, se houver um pequeno número de núcleos para uma fileira relativamente longa de informação de imagem, então esses núcleos são aplicados em sucessão e repetidos diversas vezes à medida que a fileira de informação de imagem é processada. Isto é, os núcleos pré-armazenados formam uma lista; eles são aplicados um após o outro à fileira, e quando o último núcleo é encontrado na lista, o processamento continua mediante retorno automático e outra vez retirando a partir do topo da lista. O comportamento iterativo da técnica de aplicação é representado pelo laço 1016 mostrado na Figura 10. Os núcleos 1010 podem ser aplicados a outras fileiras de uma maneira similar. Além disso, processamento similar pode ser repetido com relação aos núcleos que se aplicam às colunas da informação de imagem 1014.
[00127] Um algoritmo exemplar que pode ser usado pelo módulo 1004 para calcular o número de núcleos e derivações é apresentado abaixo. O módulo 1004 aplica o algoritmo separadamente para dimen-síonamento nas dimensões x e y da informação de imagem 1014. Desse modo, embora o algoritmo seja definido em escala na dimensão xT o algoritmo também é aplicável à dimensão y, por exemplo, mediante mudança de referências à largura, altura, e assim por diante. Na dimensão x, a “Proporção de Escala” usada no algoritmo define a proporção da largura original da imagem para a largura desejada final (alvo) da imagem. A função "teto” usada no algoritmo arredonda um número real para o próximo número inteiro superior. A função “gcd” no algoritmo calcula o maior denominador comum de dois números inteiros.
Algoritmo 2: Cálculo do Número de Núcleos e Derivações Proporção de Escala = Largura de Fonte/Largura de Destino se Proporção de Escala <1.0 Proporção de Escala = 1.0 Derivações = teto(Relação de Escala * 4) se Derivações forem ímpares Derivações = Derivações + 1 Núcleos = Largura de Destino/gcd(Largura de Fonte, Largura de Destino) [00128] Como um exemplo, considere o dimensionamento vertical da informação de imagem de origem tendo uma altura de 720 pixels para informação de imagem de destino tendo uma altura de 480 pixels. Aplicação do algoritmo acima a esse cenário produz: Proporção de Escala = 720/480 = 1.5 Derivações = teto (Proporção de Escala * 4)= 6 Núcleos = 480/gcd(720, 480) = 480/240 = 2 [00129] Desse modo, o módulo 1004 precisa pré-calcular e pré-alocar 2 núcleos cada um de 6 derivações. A operação de redimensionamento alternará na forma em pingue-pongue entre os dois núcleos à medida que se desloca ao longo de uma fileira de pixels.
[00130] Como um outro exemplo, considere o dimensionamento vertical da informação de imagem de origem tendo uma altura de 721 pixels para uma informação de imagem de destino tendo uma altura de 480 pixels. Aplicação do algoritmo acima a esse cenário produz: Proporção de Escala = 721/480 = 1.5021 Derivações = teto(Proporção de Escala * 4)= 7 Derivações são ímpares, de modo que adicionamos um, o que produz 8 Núcleos = 480/gcd(721,480) = 480/1 = 480 [00131] Desse modo, o módulo 1004 precisa pré-calcular e pré-alocar 480 núcleos cada um de 8 derivações. A operação de redimensionamento utilizará um único núcleo para cada um dos 480 pixels de saída. Contudo, economias significativas ainda serão realizadas devido ao fato do mesmo conjunto de 480 núcleos poder ser usado em cada coluna vertical de pixels. Além disso, em casos práticos no mundo real, a proporção entre os tamanhos de destino e origem tende a ser uma proporção razoavelmente simples, tornando o número resultante de núcleos exigido um número gerenciável. Limitações especiais também podem ser impostas que impedirão que os usuários introduzam solicitações de redimensionamento que demandem um número particularmente grande de núcleos de filtro (por exemplo, superior a um limite prescrito).
[00132] A Figura 11 mostra um procedimento 1100 que resume as operações descritas acima. A etapa 1102 envolve determinar o número de núcleos (e derivações por núcleo) exigidos para se obter um redimensionamento desejado de uma imagem nas dimensões horizon- tais e/ou verticais. O módulo de pré-cálculo 1004 pode realizar essa tarefa utitizando o algoritmo provido acima. A etapa 1104 envolve alocar espaço no módulo 1006 de armazenamento de núcleo para armazenar o número de núcleos calculados na etapa 1004, A etapa 1106 envolve efetivamente pré-calcular e armazenar os núcleos. E a etapa 1108 envolve aplicar os núcleos pré-calculados armazenados no módulo de armazenamento 1006 à informação de imagem. A aplicação prossegue mediante a ação de seqüenciar ciclicamente através dos núcleos enquanto processando qualquer fileira ou coluna determinada. B, Aperfeiçoamentos Exemplares Relacionados à Implementação para a Canalização de Processamento de Vídeo B.1. Geração Ótima de Código de Processamento de Canalização [00133] A seção a seguir provê um número de implementações para a canalização 100 de processamento de vídeo da Figura 1 de uma natureza de tecnologia mais específica em comparação com a Seção A. Para começar, a Figura 12 mostra uma visão geral de alto nível de uma canalização 1200 de processamento de imagem que servirá como uma base para a discussão dos aperfeiçoamentos dessa seção.
[00134] A canalização 1200 mostrada na Figura 12 inclui estágios de processamento definidos por um estágio de entrada 1202, estágio de processamento 1204 e um estágio de saída 1206. Em relação ao estágio de entrada 1202, fonte de entrada 1208 representa qualquer fonte de informação de imagem. A fonte 1208 pode compreender geralmente informação de imagem recentemente capturada (por exemplo, criada por uma câmera ou scanner), ou informação de imagem previamente capturada que é apresentada ao estágio de entrada 1202 por intermédio de algum canal (por exemplo, recebido a partir de um disco, através de uma rede IP, etc.). No caso mencionado anterior-mente, a funcionalidade 1210 de processamento de captura pode realizar qualquer tipo de processamento preliminar na informação de ima- gem recebida a partir da fonte 1208. No caso mencionado por último, a funcionalidade 1212 do decodificador realiza qualquer tipo de extração e descompactação de informação baseada em fluxo para produzir dados de imagem. Geralmente, tal processamento pode incluir separar informação de imagem a partir de informação de áudio na informação recebida, descompactar a informação, e assim por diante. Em relação ao estágio de processamento 1204, a funcionalidade de processamento 1214 realiza qualquer tipo de processamento na informação de imagem resultante, tal como misturar múltiplos fluxos de informação de imagem em um sinal composto. Em relação ao estágio de saída, a funcionalidade 1216 de processamento de saída representa qualquer tipo de processamento realizado na informação de imagem processada em preparação para sua saída para um dispositivo de saída 1218. O dispositivo de saída 1218 pode representar uma televisão, um monitor de computador, e assim por diante. Dispositivos de saída também podem representar dispositivos de armazenamento. Adicionalmente, um “dispositivo” de saída (ou funcionalidade de saída 1216) pode prover funcionalidade de compactação e formatação (tal como multiplexa-dores) que preparam a informação para armazenamento em um dispositivo, ou para distribuição através de uma rede.
[00135] Geralmente, as operações de processamento apresentadas na Figura 1 podem ser distribuídas através dos estágios (1202, 1204, 1206) de qualquer maneira. Por exemplo, o estágio de processamento 1204 geralmente implementa o módulo de processamento 114 mostrado na Figura 1. Cada um dos estágios (1202, 1204, 1206) pode ser fisicamente implementado como um único aparelho para realizar as tarefas atribuídas, ou múltiplos aparelhos acoplados juntos de forma paralela ou em série. As funções podem ser implementadas mediante qualquer combinação de software ou hardware.
[00136] A Figura 13 mostra um sistema exemplar 1300 para confi- gurar a canalização 1200 de processamento de imagem mostrada na Figura 12. Mais especificamente, o sistema exemplar 1300 pode compreender funcionalidade para automaticamente gerar código de computador para implementar a canalização 1200 de tal modo que a mesma realize qualquer combinação de operações de processamento de imagem mostradas na Figura 1.
[00137] Para funcionar da forma descrita acima, o sistema 1300 inclui um módulo de configuração 1302. O módulo de configuração 1302 recebe informação 1304 de exigência de canalização que define as exigências que uma canalização configurada deve satisfazer. A informação de exigência 1304 pode ter múltiplos componentes. Um componente 1306 de exigência de entrada define as características de informação de imagem que a canalização deve receber. O componente de exigência de entrada 1306 pode definir um tipo singular de informação de imagem que pode ser processada, ou pode definir um conjunto de vários tipos permissíveis de informação de imagem que podem ser processados. Uma forma de convenientemente satisfazer às múltiplas características da informação de entrada permissível é de especificar o padrão(ões) de codificação de vídeo sendo usados, os quais podem inferir uma multidão inteira de características que a informação de imagem possui, tal como espaços de cor permissíveis, esquemas de subamostragem croma, funções de transferência gama, e assim por diante. Por exemplo, ITU-R Recommendation BT.601 é um padrão internacional que define codificação digital de áudio de informação de imagem. Esse padrão utiliza uma codificação YObCr de informação de imagem. ITU-R Recommendation BT.709 é um padrão internacional que define codificação de áudio de informação de vídeo de alta definição. Conteúdo de alta definição (HD) representa conteúdo de vídeo que é superior à definição padrão (SD), tipicamente 1920 x 1080, 1280 x 720, e assim por diante. Esses são apenas dois dos muitos padrões de codificação de vídeo que uma canalização de processamento de imagem pode processar.
[00138] Um componente 1308 de exigências de saída define as características de informação de imagem que a canalização deve produzir. Isto é, o componente 1308 de exigência de saída pode definir um tipo singular de informação de imagem que pode ser gerado para se ajustar a um dispositivo de saída específico, ou pode definir um conjunto de diversos tipos permissíveis de informação de imagem que podem ser gerados para servir a diferentes tipos de dispositivos de saída. Outra vez, uma forma de convenientemente especificar múltiplas características da informação de saída permissível é a de especificar o padrão(ões) de codificação de vídeo sendo usado.
[00139] Um componente 1310 de exigências de processamento intermediário define a natureza das tarefas de processamento que a canalização deve realizar na informação de imagem de saída. Qualquer número de tarefas de processamento pode ser especificado, incluindo, mas não limitados a, redimensionamento (ajuste da escala), composição, alfa-combinação, detecção de borda, e assim por diante.
[00140] Em geral, um operador humano pode manualmente selecionar as exigências de canalização 1304. Alternativamente, uma ou mais exigências 1304 podem ser automaticamente deduzidas a partir do ambiente no qual a canalização deve ser empregada.
[00141] Dadas as exigências 1304 de canalização de entrada, o módulo de configuração 1302 realiza a tarefa de utilizar análise estática para interagir com uma biblioteca de módulos 1312 de código para montar uma agregação sob medida de módulos de código que satisfaçam às exigências de canalização 1304. Uma forma de fazer isso é a de gerar uma equação mestre que mapeia qualquer tipo de informação de entrada para qualquer tipo de informação de saída envolvendo qualquer tipo de processamento intermediário. Essa equação mestre incluirá o número de componentes. Os componentes são associados aos módulos de código respectivos armazenados na biblioteca 1312. Nessa implementação, o módulo de configuração 1312 realiza a tarefa de compilar uma agregação sob medida de módulos de código mediante eliminação de todos os componentes que não são necessários devido às exigências 1304 de canalização de entrada. Isso tem o efeito de escolher certos módulos de código que formam a biblioteca 1312 e omitindo outros módulos.
[00142] O resultado do processamento realizado pelo módulo de configuração 1302 é o código 1314 de canalização, otimizado, o qual pode então ser aplicado para processar a informação de imagem. Esse código 1314 é direcionado para realizar apenas as funções que são exigidas dele. Como resultado, uma canalização construída com base nesse código tem o potencial de executar suas operações de uma maneira mais rápida do que, digamos, um programa grande abrangente que tem diversas sub-rotinas vinculadas para lidar com muitas tarefas diferentes que podem nunca ser empregadas em uma aplicação específica.
[00143] Para citar apenas um exemplo, suponha que a tarefa da canalização de vídeo em uma aplicação específica seja a de converter informação de imagem Y’CbCr 4:2:2 entrelaçada em um espaço de cor RGB 4:4:4 progressivo linear intermediário, realizando composição no espaço de cor RGB, e então dar saída à informação processada resultante para um aparelho de televisão. Essa série de operações invoca algumas operações (por exemplo, amostragem ascendente, conversão de matriz de transferência, aplicação de função de transferência, composição, e assim por diante), mas nenhuma outra operação. Conse-qüentemente, o módulo de configuração 1302 produziría apenas o código necessário para realizar as computações que são exigidas, e nada mais.
[00144] A operação de configuração foi descrita acima no contexto da inclusão ou omissão dos módulos. Contudo, funcionalidade de configuração mais avançada pode realizar outras operações de otimização, tal como combinar os módulos de código selecionados de uma maneira particularmente eficiente, eliminando código redundante que é comum aos módulos de código selecionados, e assim por diante.
[00145] Há algumas formas de implementar o módulo de configuração 1302. Uma forma de implementar essa funcionalidade é a de alavancar ferramentas de configuração existentes (por exemplo, um compilador C++ convencional) o qual já possui alguma capacidade de analisar código de origem e eliminar código redundante, e aplicar tal funcionalidade à tarefa à mão de otimizar o código de canalização mediante escolha dos módulos apropriados.
[00146] A Figura 14 mostra um procedimento 1400 que resume a discussão acima na forma de fluxograma. A etapa 1402 requer introduzir as exigências de canalização de vídeo. A etapa 1404 requer determinar o código ótimo que satisfaz às exigências de entrada. A etapa 1406 requer dar saída e executar o código ótimo. B.2. Uso Geral de GPU para Realizar Processamento de Imagem [00147] A Figura 15 mostra uma visão geral de um sistema exemplar 1500 que pode ser usado para implementar aspectos da canalização de imagem mostrada na Figura 12 (e, de forma mais abstrata, as operações de processamento de vídeo 100 ilustradas na Figura 1). O sistema 1500 pode representar um computador (tal como um computador pessoal) contendo uma ou mais CPU. O sistema 1500 aloca certas tarefas de processamento de imagem (ou todas as tarefas de processamento de imagem) mostradas na Figura 1 à funcionalidade de módulo gráfico. A funcionalidade de processamento gráfico pode compreender uma ou mais unidades de processamento gráfico (referidas na técnica como GPUs). Geral mente, a Figura 15 inclui uma linha tra- cejada para demarcar funções que podem ser realizadas pela CPU do sistema 1500 a partir das funções que podem ser realizadas pela funcionalidade de módulo gráfico do sistema 1500 (embora essa demarcação seja apenas exemplar; outras alocações de CPU/GPU são possíveis).
[00148] Como antecedente, uma GPU é geralmente um dispositivo de processamento como a CPU, mas geralmente com menos capacidade de realizar decisões do tipo ramificação. Os sistemas usam tipicamente as GPUs para realizar tarefas de renderização de informação intensiva que são realizadas repetitivamente, tal como a renderização de informação utilizando uma canalização de processamento tridimensional (envolvendo sombreadores de vértice, sombreadores de pixel, e assim por diante). Um suporte principal do uso da GPU é, portanto, tecnologia de jogos e simulação, que utiliza as GPU para renderizar diversas cenas, caracteres, efeitos especiais e assim por diante. Alocar tarefas repetitivas e de informação intensiva a GPU libera uma CPU do sistema para realizar outras tarefas administrativas de importante finalidade, e desse modo aperfeiçoa o desempenho de tal sistema. No presente caso, mais propriamente do que a geração de informação de jogos, o sistema 1500 emprega a funcionalidade de módulo gráfico para modificar a informação de imagem recebida (por exemplo, informação de vídeo) antes de dar saída para qualquer tipo de dispositivo de saída. Por exemplo, uma aplicação do sistema 1500 é a de receber informação de vídeo a partir de um DVD, realizar composição na informação de vídeo dentro da funcionalidade gráfica (por exemplo, mediante combinação de título texto na informação de vídeo), e então dar saída ao sinal resultante para uma unidade de televisão.
[00149] Com a visão geral mencionada acima, cada um dos componentes exemplares da Figura 15 será descrito abaixo em turnos. Uma última subseção (B.3) proporcionará informação mais específica com relação a como a funcionalidade de módulo gráfico pode ser empregada para implementar aspectos da canalização 100 mostrada na Figura 1.
[00150] Para começar, o sistema 1500 aceita informação de imagem a partir de qualquer uma de várias fontes. Por exemplo, o sistema 1500 pode aceitar informação de imagem a partir de uma rede 1502 (tal como uma fonte remota acoplada à Internet), qualquer tipo de banco de dados 1404, qualquer tipo de mídia 1506 de disco legível por computador (tal como um disco ótico, DVD, etc.), ou alguma outra fonte 1508. Em tal caso, a informação recebida pode conter uma combinação de informação de imagem e informação de áudio. Uma unidade de demultiplexação 1510 separa a informação de áudio da informação de imagem. A funcionalidade 1512 de processamento de áudio processa a informação de áudio.
[00151] Um decodificador de imagem 1514 processa a informação de imagem. O decodificador de imagem 1514 pode converter a informação de imagem compactada a partir de seu formato recebido em algum outro formato, e assim por diante. A saída do decodificador de imagem 1514 pode inclui a assim chamada informação de imagem pura assim como informação de subfluxo de imagem. A informação de imagem pura constitui o fluxo de imagem principal a ser renderizado no dispositivo de exibição. A informação de subfluxo de imagem pode constituir qualquer informação suplementar associada à informação de imagem pura, tal como informação de legenda adjacente, qualquer tipo de informação de cobertura gráfica (tal como diversos controles de edição gráfica), diversos tipos de subimagens representadas por tocadores de DVD, e assim por diante. (Em uma outra implementação, certos aspectos do decodificador de vídeo podem ser alocados para a funcionalidade de módulo gráfico).
[00152] Em uma implementação exemplar, um módulo 1516 rende- rizador de mixagem de vídeo (VMR) realiza uma função central no processamento da informação de imagem desse modo recebida. Como visão geral, o módulo VMR 1516 interage com uma interface gráfica 1518 e um acionador de display 1520, o qual, por sua vez, controla um módulo gráfico 1522. Essa interação pode envolver sondar as capacidades do módulo gráfico 1522. Essa interação envolve também coordenar o processamento da informação de imagem por intermédio da interface gráfica 1518, acionador de display 1520, e módulo gráfico 1522. Em uma implementação, a interface gráfica 1318 pode ser implementada utilizando a funcionalidade DirectDraw provida pelo DirectX da Microsoft® Corporation. DirectDraw serve nesse contexto como um conduto de troca de mensagens para acoplar comunicativa-mente o módulo VMR 1516 ao módulo gráfico 1522. O módulo gráfico 1522 pode ele próprio constituir um módulo fixo dentro de um computador ou dispositivo semelhante, ou pode constituir uma unidade destacável, tal como um cartão gráfico. (Geralmente, as aplicações co-mumente atribuídas mencionadas na primeira seção dessa revelação proporcionam detalhes com relação às estruturas exemplares de dados que o módulo VMR 1516 pode utilizar para interagir com o módulo gráfico 1522; uma vez que essa interação não é o foco da presente revelação, os detalhes de tal interação não são aqui repetidos).
[00153] O próprio módulo gráfico 1522 inclui uma ou mais unidades de processamento gráfico (GPU) 1524. Como mencionado acima, o sistema pode alocar qualquer combinação de operações de processamento mostradas na Figura 1 à GPU 1524. A GPU 1524 realiza essas tarefas utilizando um sombreador de pixel 1526. Um sombreador de pixel se refere à funcionalidade que pode realizar diversos tipos de operações na informação de imagem em uma base de pixel por pixel. A subseção B.3 provê informação adicional com relação à arquitetura de um sombreador de pixel típico, e como tal tecnologia pode ser em- pregada para realizar as operações mostradas na Figura 1.
[00154] A GPU 1524 pode interagir com uma memória local 1528, associada ao módulo gráfico 1522. Essa memória local 1528 pode servir para qualquer propósito relacionado a armazenamento. Por exemplo, essa memória 1528 pode armazenar uma superfície de imagem final que é então enviada a um dispositivo de saída 1530 (tal como um monitor de display, uma unidade de televisão, um dispositivo de armazenamento, um alvo de rede, e assim por diante). B.3. Aperfeiçoamentos Relacionados ao Sombreador de Pixel [00155] Como antecedente, a Figura 16 mostra uma arquitetura conhecida para um sombreador de pixel 1600 que é comumente usado em canalizações de processamento 3D. Cad pixel em uma aplicação de sombreador de pixel típica pode ser representado por um vetor de quatro valores de pontos de flutuação, por exemplo, RGBA (vermelho, verde, azul, alfa), onde cada valor corresponde a um canal separado. A arquitetura de sombreador de pixel 1600 inclui uma série de registra d ores de entrada/saída (1602, 1604, 1606, 1608), e uma unidade lógica aritmética (ALU) 1610 para realizar operações nos dados de entrada. Mais especifica mente, os registradores incluem registradores de cor 1602. Esses registradores 1602 fazem fluir os dados de cor de vértice, repetidos, a partir de um sombreador de vértice (não mostrado) para o sombreador de pixel 1600. Os registradores de saí-da/tem porá rios 1606 proporcionam armazenamento temporário para cálculos intermediários. Dentro desse conjunto de registradores, o re-gistrador rO também recebe uma saída do sombreador de pixel 1600. Os registradores de textura 1608 proporcionam dados de textura ao sombreador de pixel ALU 1610. O sombreador de pixel ALU 1610 executa instruções de endereçamento de textura e aritméticas com base em um programa. O programa inclui um grupo de instruções selecionadas a partir de um conjunto de comandos permissíveis de sombrea- dor de pixel.
[00156] A discussão a seguir focalizará especificamente o uso dos registradores de textura 1608 (em seguida referido mais genericamente como “unidades”) para alimentar informação de imagem e pesos de filtro ao sombreador de pixel ALU 1610. Portanto, informação introdutória adicional será provida com relação ao conceito de texturas no contexto da Figura 17.
[00157] Mencionado vagamente, em aplicações de jogos, uma textura define uma imagem que é “colada” sobre superfícies poligonais definindo caracteres, cenas, e assim por diante. A Figura 17 mostra uma operação 1700 de aplicação de textura na qual uma textura 1712 é aplicada a um polímero 1704. O polímero 1704 é compreendido de dois triângulos primitivos montados para formar um retângulo. O polímero 1704 inclui quatro vértices, V1, V2, V3 e V4. Cada vértice inclui coordenadas de textura. As coordenadas de textura são especificadas com relação a um sistema de referência U e V convencional. Nesse sistema de referência, a coordenada U corresponde geralmente a um eixo X, e a coordenada V corresponde geralmente a um eixo Y. Valores no eixo U são compreendidos em uma faixa de 0,0 a 1,0, e valores no eixo V são de modo semelhante compreendidos em uma faixa a partir de 0,0 a 1,0.
[00158] As coordenadas de textura associadas aos vértices especificam como a textura 1702 deve ser colocada no polígono 704. No caso exemplar da Figura 17, o vértice V1 tem coordenadas de textura de 0,0; 0,0; que corresponde ao canto esquerdo superior da textura 1702. O vértice V2 tem coordenadas de textura 1,0; 0,0; que corresponde ao canto direito superior da superfície 1702. O vértice V3 tem coordenadas de textura 0,3; 0,5; que corresponde ao meio da borda esquerda da textura 1702. E o vértice V4 tem coordenadas de textura 1,0; 0,5; que corresponde ao meio da borda direita da textura 1702. Conse- qüentemente, quando a textura 1702 é mapeada para o polímero 1704 de acordo com as coordenadas de textura, somente a metade superior da textura 1702 será aplicada ao polímero 1704. O resultado da aplicação da textura 1702 ao polímero 1704 é mostrado na superfície tex-turizada 1706.
[00159] Canalizações de processamento 3D permitem tipicamente um número de operações de processamento de textura especiais, desenvolvidas no contexto da geração de informação de jogos. Uma operação especial é referida como um modo de retorno. No modo de retorno, a canalização de processamento 3D repetirá uma textura um número de vezes, por exemplo, em um caso, para produzir uma fileira ou matriz de texturas que têm o mesmo conteúdo. Um modo de espelho também duplica uma textura adjacente, mas reflete a textura da mesma forma que um espelho.
[00160] Informação adicional com relação a quaisquer tópicos de sombreador de pixel de uma natureza geral pode ser encontrada em alguns textos comercialmente disponíveis tais como Wolfgang F. En-gel, Direct3D ShaderX: Vertex and Pixel Shader Tips and Tricks, Wordware Publishing, Inc., 2002.
[00161] Com a introdução acima, a discussão restante apresenta técnicas inovadoras exemplares para utilizar um sombreador de pixel para implementar aspectos da canalização de processamento de imagem mostrada na Figura 1.
[00162] Para começar, a Figura 18 mostra uma aplicação exemplar 1800 do sombreador de pixel 1526 (da Figura 15) para implementar um filtro de processamento de imagem tendo um núcleo com quatro derivações. Uma vez que o tipo de processamento mostrado na Figura 18 também é fundamental para muitas outras operações realizadas pela canalização 100 da Figura 1, os princípios apresentados com relação à Figura 18 se aplicam aos outros tipos de processamento que podem ser realizados pelo sombreador de pixel 1526. O caso de um núcleo de filtro de quatro derivações é, evidentemente, apenas ilustrativo; exemplos posteriores explicam como esse modelo pode ser expandido para diferentes modelos de filtro.
[00163] Geralmente, a GPU 1524 pode ser configurada para varrer através de uma ou mais imagens de entrada, extrair os valores de pixel a partir de cada uma delas, aplicar uma computação com base nas entradas, e dar saída a um único pixel. Essa operação pode ser expressa como: saída(x, y) = função(entradai(x, y), entrada2(x, y), ...entradap(x, y), constantes de arranjo[m]). Em outras palavras, essa expressão geral diz que o resultado (saída(x, y)) depende matematicamente de alguma função de diversos sinais de entrada (entrdai(x, y), entrada2(x, y), ...entradap(x, y)), e, opcionalmente, diversas constantes definidas (constantes de arranjo[m]).
[00164] No contexto específico de processamento de imagem utilizando filtros, o sombreador de pixel 1526 requer a entrada de uma ou mais imagens de entrada, junto com pesos de filtro associados a serem aplicados às imagens. Mais expressamente, um filtro que gera uma saída (Saída[x]) associada ao pixel de saída pode ser definido como a seguir: Saída[x]=soma(em[x-derivações/2+i]*núcleo[i], i=0 ... derivações-1).
[00165] Em outras palavras, a saída de um pixel (saída[x]) representa a soma ponderada de diferentes termos de entrada. O núcleo representa informação de ponderação a ser aplicada aos termos de entrada. Os diferentes termos de entrada, por sua vez, podem representar versões mudadas do mesmo excerto da informação de imagem de entrada.
[00166] A Figura 18 mostra como o sombreador de pixel 1526 pode implementar a equação acima. O exemplo de quatro derivações 1800 mostrado apresenta uma série de unidades de textura 1802 que proporcionam entrada para um sombreador de pixel ALU 1804. A abordagem mostrada na mesma é para atribuir os pesos de filtro à primeira unidade de textura, e atribuir quatro diferentes versões delta mudadas da mesma informação de imagem para as próximas quatro unidades de textura (representando as quatro derivações do núcleo). O sombreador de pixel ALU 1804 lê a informação armazenada nas unidades de textura (em uma única operação de leitura), e provê uma única saída para um pixel específico (em uma única operação de gravação). Esse procedimento é repetido várias vezes para processar uma imagem inteira. Essa abordagem define um filtro de convolução 1-D com uma janela de suporte de derivações de filtro “Derivações”.
[00167] A operação do exemplo 1800 mostrado na Figura 18 pode ser expressa mais formalmente como a seguir. O núcleo 1-D exemplar em uso tem uma largura de pixels “w”, e pesos de núcleo de w[-1], w[0], w[2], e w[3]. A textura de peso é computada mediante computação dos quatro pesos do núcleo de filtro para cada pixel. O núcleo 1-D inclui também quatro entradas definidas como in[-1], in[0], in[1], e in[2]. O símbolo Δ é definido como 1/w. Isso determinado, a seguinte informação é alocada às unidades de textura 1-5: Textura 1: a “textura de peso”, com coordenadas de 0 ...1;
Textura 2: in[-1], imagem de entrada com coordenadas de (0, ...1) + (-1)* Δ (isto é, a partir de 0-Δ a 1-Δ);
Textura 3: in[0], imagem de entrada com coordenadas de (0 —1)+ (0)* Δ;
Textura 4: in[1], imagem de entrada com coordenadas de (0 ...1) + (1)* Δ; e Textura 5: in[2], imagem de entrada com coordenadas de (0 ...1) + (2)* Δ delta (isto é, de 0+2* Δ a 1+2* Δ).
[00168] Se tn representa o pixel extraído da unidade de textura “n”, então as computações realizadas pelo sombreador de pixel ALU 1804 podem ser expressas pelo seguinte programa: Algoritmo 3: Implementação de Filtro Utilizando um Sombreador de Pixel Admitamos que w[Q] = t1 .vermelho Admitamos que w[1] = t1,verde Admitamos que w[2] = tlazul Admitamos que w[3] = t1 .alfa Out.rgba = t2.rgba*w[G] + t3.rgba*w[1] + t4.rgba*w[2] + tS.rgba *w[3] [00169] Em outras palavras, ao arranjo w é primeiramente atribuído os valores da informação de ponderação que é armazenada na primeira unidade de textura (t1). Então o resultado de saída (Out.rgba) é formado mediante modificação da informação de imagem mudado contida nas unidades de textura t2-t5 pelos pesos w. Os sufixos anexados à informação de registrador definem informação de canal. Con-seqüentemente, a saída Outrgba representa um vetor de quatro variáveis armazenadas nos canais vermelho, verde, azul e alfa. Pode ser visto que o algoritmo acima exigirá “derivações” + 1 unidades de textura de entrada, por exemplo, porque uma unidade é alocada para armazenar informação de ponderação.
[00170] Geralmente, onde a informação de imagem de entrada é expressa no formato RGB, então, as unidades de textura podem armazenar quantidades iguais de componentes vermelho, verde e azul. Contudo, onde o sombreador de pixel é aplicado para processar informação de imagem luma-relacionada {tal como YUV), então as unidades de textura podem armazenar mais informação luma em relação à informação croma (U, V), Essa provisão tira vantagem do fato de que o olho humano é mais sensível à informação luma do que à informação croma, de modo que não é necessário armazenar e processar tanta informação croma em relação à informação luma para se obter resultados de saída, aceitáveis.
[00171] Algumas variações e otimizações da abordagem descrita acima são consideradas.
[00172] De acordo com uma variação, o modo de retorno descrito acima pode ser usado para tratar qualquer textura como um espaço infinito de informação de imagem. Utilizando esse modo, uma abordagem é a de definir as coordenadas da textura de ponderação de entrada a partir de 0 até 1.0 / gcd(SourceWidth, DestinationWidth), mais propriamente do que 0 ... 1. Ao aplicar essa textura, uma unidade de pré-extração de textura automaticamente “retornará” para a próxima cópia da informação de ponderação armazenada na textura. Essa provisão permite que um projetista reduza as exigências de armazenamento de um núcleo, ainda assim garantir que sua informação será aplicada duplicada onde quer que seja necessário.
[00173] De acordo com uma outra variação, o núcleo pode ter mais do que quatro variações. Para lidar com essa situação, uma implementação pode fracionar os conjuntos de informação de ponderação de núcleo em grupos de quatro valores e atribuir a cada um deles uma textura de “peso” de entrada adicional. Considere o caso onde há seis variações. Nesse caso, uma implementação pode utilizar duas texturas de ponderação (a primeira textura com quatro valores, e a segunda textura com os restantes dois valores, deixando duas fatias não usadas). Essa implementação também exige seis texturas de imagem de entrada. Desse modo, para implementar esse modelo, uma GPU de oito texturas pode ser usada para realizar filtração com seis derivações em uma única passagem.
[00174] De acordo com uma outra variação, o número de variações pode exceder o número de unidades de textura. Observar que a computação da informação de imagem de saída representa uma soma de termos “derivações”. Portanto, números maiores de derivações podem ser computados mediante fracionamento da computação da soma em múltiplas passagens de processamento. Por exemplo, se o núcleo de filtro tem 12 derivações, então uma implementação pode computar Saída[x] = soma(in[x+i]*w[i], i=0..11) como: Somai [x] = soma (in[x+i]*w[i], i = 0 ... 3) Soma2 [x] = soma (in[x+i]*w[i], i = 4 ... 8) Soma3 [x] = soma (in[x+i]*w[i], i = 9 ... 11) [00175] A implementação pode então combinar os resultados utilizando uma passagem final: Saída[x] = somai [x] + soma2[x] + soma3 [x] (três leituras, uma gravação) [00176] Uma outra possível implementação pode formar o resultado Saída[x] agregado por intermédio da seguinte série de operações: Saída[x] = somai [x] (gravação) Saída[x] = saída[x] + soma2[x] (leitura, leitura, gravação) Saída[x] = saída[x] + soma3[x] (leitura, leitura, gravação) [00177] A última das abordagens exige substancialmente menos memória do que abordagem anterior, mas também exige o dobro de acessos à memória em comparação com abordagem anterior (por exemplo, quatro leituras e três gravações). Essa característica da estratégia mencionada por último pode tornar a mesma impraticável, uma vez que os ciclos de ler-modificar-gravar nas GPUs são muito dispendiosos, ou possivelmente proibitivos.
[00178] De acordo com uma outra variação, uma implementação pode prover um modo especial (“exterminar pixel”) o qual trata todos os pixels fora da informação de imagem definida como preto (ou algum outro valor padrão). Essa provisão pode ser aplicada às condições de borda “ocultar” automaticamente em informação que não deve ser exibida.
[00179] De acordo com uma outra variação, uma implementação pode aplicar o modo de espelho mencionado acima no processamento de informação de imagem. Esse modo reflete a informação de imagem seja horizontal ou verticalmente ao fazer referência à informação de imagem fora dos limites da informação de imagem.
[00180] A Figura 19 mostra um procedimento 1900 que resume muitas das características descritas acima. A etapa 1902 requer atribuir diversas informações de entrada às várias unidades de entrada do sombreador de pixel. Tal informação pode compreender informação de imagem e informação de ponderação aplicada às várias unidades de textura, constantes aplicadas às várias unidades de constante, e assim por diante. A etapa 1904 requer o cálculo de informação de imagem de saída em uma base de pixel por pixel com base nas instruções de programação fornecidas ao sombreador de pixel ALU 1804. A etapa 1906 determina se passagens adicionais são exigidas. Se assim for, o procedimento 1900 repete uma ou mais das operações mostradas na Figura 19 uma ou mais vezes. A etapa 1908 produz o resultado de saída final.
[00181] Como um tópico final, a Figura 20 mostra uma aplicação do sombreador de pixel 1526 que realiza várias das operações introduzidas no contexto da Figura 1. A Figura 20 particularmente trata de uma aplicação exemplar na qual a canalização recebe informação de imagem YUV 4:2:4, amostra ascendentemente a mesma, converte a mesma à forma RGB linear, e realiza dimensionamento da informação linear resultante. O processamento mostrado na Figura 20 se baseia nos conceitos desenvolvidos acima com relação às Figuras 18 e 19.
[00182] Observar que a informação de imagem 4:2:0 expressa em um formato planar híbrido (tal como NV12) pode ser tratada como compreendendo um plano luma e um plano croma. É, portanto, possível realizar certas operações nessa informação em paralelo.
[00183] Uma abordagem é a de dividir as unidades de textura em dois grupos, um grupo para uso em interpolar o componente croma. Essa operação de amostragem ascendente invoca uma operação de ampliação de dimensionamento que pode ser usada para gerar informação croma 4:4:4. O sombreador de pixel 1526 pode então utilizar os componentes luma e croma interpolados para computar, em uma base de pixel por pixel, a informação R’G’B’ correspondente utilizando a matriz de transferência. A seguir o sombreador de pixel 1526 pode aplicar a função de transferência para linearizar a informação de imagem. Então, o sombreador de pixel 1526 pode ser usado para realizar dimensionamento adicional no espaço RGB utilizando o segundo grupo de unidades de textura.
[00184] Mais expressamente, o que se segue identifica uma se-qüência exemplar de etapas que podem ser usadas para transformar a informação de imagem da forma identificada acima. 1) Estabelecer texturas 1-5 da forma descrita acima (mostrada na Figura 18) para realizar a primeira operação de dimensionamento. 2) Utilizar a operação de dimensionamento descrito acima para computar informação CbCr no dobro da taxa de amostragem como a informação luma. 3) Carregar a matriz de conversão de espaço de cor Y’CbCr para R’G’B’ em um arranjo de 16 constantes como uma matriz M. 4) Computar a informação R’G’B’ da seguinte maneira: Computar R’ = dotProd4( M[0], aYObCr) Computar G’ = dotProd4( M[1], aYObCr) Computar B’ = dotProd4( M[2], aYObCr) Computar A = dotProd4( M[3], aYObCr) 5) Computar RGB a partir de R’G’B’ utilizando a função de transferência. 6) Realizar a segunda operação de dimensionamento mediante computação dos dados RGB lineares dimensionados utilizando os algoritmos apresentados acima (com referência à Figura 18), mas com as texturas 6-12. 7) Após a escala horizontal ser realizada, aplicar a escala vertical à informação RGB.
[00185] A Figura 20 mostra um procedimento 2000 que explica o algoritmo descrito acima na forma de fluxograma. A etapa 2002 envolve atribuir informação às unidades de textura apropriadas (por exemplo, um primeiro conjunto de unidades de textura). A etapa 2004 requer o uso do primeiro conjunto de unidades de textura para amostrar ascendentemente a informação croma. A etapa 2006 requer carregar constantes para uso na realização de conversão de espaço de cor no sombreador de pixel 1526. A etapa 2008 requer utilizar as constantes para converter a informação de imagem na forma R’G’B’ não-linear. A etapa 2010 requer converter a informação R’G’B’ para a forma RGB linear. E a etapa 2012 requer dimensionar a informação RGB. C. Ambiente de Computação Exemplar [00186] Em uma implementação exemplar, vários aspectos do processamento mostrado nas figuras precedentes podem ser realizados mediante equipamento de computação. Nesse caso, a Figura 21 provê informação com relação a um ambiente 2100 de computação exemplar que pode ser usado para implementar aspectos do processamento mostrado nas figuras precedentes. Por exemplo, um computador pode ser usado para implementar parte ou toda a canalização de processamento de imagem 100 mostrado na Figura 1.
[00187] O ambiente de computação 2100 inclui um computador 2102 do tipo de uso geral e um dispositivo de display 2104. Contudo, o ambiente de computação 2100 pode incluir outros tipos de equipamento de computação. Por exemplo, embora não mostrado, o ambiente de computação 2100 pode incluir dispositivos portáteis ou laptop, conversores de sinal de freqüência, consoles de jogos, funcionalidade de processamento integrada em dispositivos de processamen-to/apresentação de vídeo (por exemplo, televisões, DVRs, etc.), computadores de grande porte, e assim por diante. Adicionalmente, a Figura 21 mostra elementos do ambiente de computação 2100 agrupados para facilitar discussão. Contudo, o ambiente de computação 2100 pode empregar uma configuração de processamento distribuído. Em um ambiente de computação distribuída, recursos de computação podem ser fisicamente dispersos por todo o ambiente.
[00188] O computador exemplar 2102 inclui um ou mais processadores ou unidades de processamento 2106, uma memória de sistema 2108, e um barramento 2110. O barramento 2110 conecta juntos diversos componentes do sistema. Por exemplo, o barramento 2110 conecta o processador 2106 à memória de sistema 2108. O barramento 2110 pode ser implementado utilizando qualquer tipo de estrutura de barramento ou combinação de estruturas de barramento, incluindo um barramento de memória ou controlador de memória, um barramento periférico, uma porta gráfica acelerada, e um barramento local ou processador utilizando qualquer uma de uma variedade de arquiteturas de barramento. O computador 2102 pode também acoplar uma ou mais unidades GPU (não mostradas) da forma descrita acima.
[00189] O computador 2102 também pode incluir uma variedade de mídia legível por computador, incluindo uma pluralidade de tipos de mídia volátil e não-volátil, cada uma das quais pode ser removível ou não-removível. Por exemplo, a memória de sistema 2108 inclui mídia legível por computador na forma de memória volátil, tal como memória de acesso aleatório (RAM) 2112, e memória não-volátil, tal como memória de leitura (ROM) 2114. ROM 2114 inclui um sistema de entra-da/saída (BIOS) 2116 que contém as rotinas básicas que ajudam a transferir informação entre elementos dentro do computador 2102, tal como durante a inicialização. RAM 2112 contém módulos de programa e/ou dados em uma forma que pode ser rapidamente acessada pela unidade de processamento 2106.
[00190] Outros tipos de mídia de armazenamento de computador incluem uma unidade de disco rígido 2118 para ler a partir de e gravar em uma mídia magnética não-removível, não-volátil, uma unidade de disco magnético 2120 para ler a partir de e gravar em um disco magnético removível, não-volátil 2122 (por exemplo, um “disquete”), e uma unidade de disco ótico 2124 para ler a partir de e/ou gravar em um disco ótico removível, não-volátil 2126 tal como um CD-ROM, DVD-ROM, ou outra mídia ótica. A unidade de disco rígido 2118, a unidade de disco magnético 2120, e a unidade de disco ótico 2124 são individualmente conectadas ao barramento de sistema 2110 mediante uma ou mais interfaces de mídia de dados 2128. Alternativamente, a unidade de disco rígido 2118, unidade de disco magnético 2120, e unidade de disco ótico 2124 podem ser conectadas ao barramento de sistema 2110 mediante uma interface SCSI (não mostrada), ou outro mecanismo de acoplamento. Embora não seja mostrado, o computador 2102 pode incluir outros tipos de mídia legível por computador, tal como cassetes magnéticos ou outros dispositivos de armazenamento magnético, cartões de memória flash, CD-ROM, discos versáteis digitais (DVD) ou outro armazenamento ótico, memória de leitura progra-mável eletricamente apagável (EEPROM), etc.
[00191] Geralmente, a mídia legível por computador identificada acima proporciona armazenamento não volátil de instruções legíveis por computador, estruturas de dados, módulos de programa, e outros dados para uso pelo computador 2102. Por exemplo, a mídia pode armazenar o sistema operacional 2130, módulos de aplicação 2132, outros módulos de programa 2134, e dados de programa 2136.
[00192] O ambiente de computação 2100 pode incluir uma variedade de dispositivos de entrada. Por exemplo, o ambiente de computação 2100 inclui o teclado 2138 e um dispositivo indicador 2140 (por exemplo, um “mouse”) para introduzir comandos e informação no computador 2102. O ambiente de computação 2100 pode incluir outros dispositivos de entrada (não ilustrados), tal como um microfone, joystick, console de jogos, antena de prato de satélite, porta serial, scanner, dispositivos de leitura de cartão, câmera de vídeo ou digital, etc. Superfícies de entrada/saída 2142 acoplam os dispositivos de entrada à unidade de processamento 2106. Mais geralmente, os dispositivos de entrada podem ser acoplados ao computador 2102 através de qualquer tipo de interface a estruturas de barramento, tal como uma porta paralela, porta serial, porta de jogos, porta de barramento serial universal (USB), etc.
[00193] O ambiente de computação 2100 inclui também o dispositivo de vídeo 2104. Um adaptador de vídeo 2144 acopla o dispositivo de vídeo 2104 ao barramento 2110. Além do dispositivo de vídeo 2104, o ambiente de computação 2100 pode incluir outros dispositivos periféricos de saída, tais como alto-falantes (não mostrados), uma impressora (não mostrada), etc.
[00194] O computador 2102 opera em um ambiente de rede utilizando conexões lógicas para um ou mais computadores remotos, tal como um dispositivo de computação remota 2146. O dispositivo de computação remoto 2146 pode compreender qualquer tipo de equipamento de computação, incluindo um computador pessoal de uso geral, um computador portátil, um servidor, um console de jogos, um dispositivo de extensão de rede, e assim por diante. O dispositivo de computação remoto 2146 pode incluir todos os recursos discutidos acima com relação ao computador 2102, ou algum subconjunto dos mesmos.
[00195] Qualquer tipo de rede 2148 pode ser usado para acoplar o computador 2102 ao dispositivo de computação remoto 2146, tal como uma WAN, uma LAN, etc. O computador 2102 acopla a rede 2148 por intermédio da interface de rede 2150, a qual pode utilizar conectividade de banda larga, conectividade de modem, conectividade DSL, ou outra estratégia de conexão. Embora não seja ilustrado, o ambiente de computação 2100 pode prover funcionalidade de comunicação sem fio para conectar o computador 2102 ao dispositivo de computação remoto 2146 (por exemplo, por intermédio de sinais modulados de rádio, sinais modulados infravermelhos, etc.).
[00196] Concluindo, vários exemplos foram apresentados nessa revelação na alternativa (por exemplo, caso A ou caso B). Além disso, essa revelação abrange aqueles casos que combinam alternativas em uma única implementação (por exemplo, caso A e caso B), embora essa revelação possa não ter mencionado expressamente esses casos conjuntivos em cada instância.
[00197] Além disso, algumas características foram descritas aqui mediante primeiramente identificação de problemas exemplares aos quais essas características podem se referir. Essa forma de explicação não constitui uma admissão de que outros consideraram e/ou articularam os problemas da maneira aqui especificada. Apreciação e articulação dos problemas presentes na técnica de processamento de vídeo devem ser entendidas como parte da presente invenção.
[00198] Embora a invenção tenha sido descrita em linguagem específica para características estruturais e/ou ações metodológicas, deve ser entendido que a invenção definida nas reivindicações anexas não é necessariamente limitada às características ou ações específicas descritas. Mais propriamente, as características específicas e ações são reveladas como formas exemplares de implementar a invenção reivindicada.
REIVINDICAÇÕES

Claims (9)

1. Método para processar informação de imagem em uma forma linear compreendendo as etapas de: receber informação de imagem em uma forma não-linear entrelaçada; converter (108) a informação de imagem em uma forma linear mediante aplicação de uma função de transferência à informação de imagem; converter (110) a informação de imagem em uma forma progressiva mediante desentrelaçamento da informação de imagem; e realizar (114) o processamento na informação de imagem na forma linear progressiva, caracterizado pelo fato de que a etapa de realizar o processamento compreende realizar pelo menos uma operação de di-mensionamento na informação de imagem na forma linear progressiva, e em que a operação de dimensionamento envolve: pré-calcular um número de núcleos de filtro com base em uma dimensão de imagem original e uma dimensão de imagem final desejada, o núcleo de filtro definindo pesos que são aplicados aos pixels na informação de imagem; determinar quantas derivações cada núcleo deve ter com base na proporção da dimensão da imagem original com a dimensão da imagem final desejada, as derivações definindo amostras de informações de imagem que um núcleo atua sobre; e aplicar os núcleos de filtro pré-calculados e as derivações determinadas para processar as informações de imagem.
2. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que a a dimensão da imagem original é uma largura de imagem original ou uma altura de imagem original e a dimensão de imagem final desejada é uma largura de imagem final desejada ou uma altura de imagem final desejada.
3. Método, de acordo com a reivindicação 2, caracterizado pelo fato de que o número de núcleos é calculado de acordo com a seguinte equação: número de núcleos = dimensão de destino / gcd (dimensão de origem, dimensão de destino) onde dimensão de destino representa a largura/altura da imagem final desejada, dimensão de origem representa a largura/altura da imagem original, e a função gcd calcula o maior denominador comum de dois inteiros.
4. Método, de acordo com a reivindicação 3, caracterizado pelo fato de que o número de derivações é calculado de acordo com a seguinte equação: número de derivações = teto (relação de escala * 4) onde a relação de escala é a proporção da largura/altura da imagem original com a largura/altura da imagem final desejada e é definida como 1,0 quando a proporção é menor que 1,0 e a função teto arredonda um número real para o próximo inteiro mais alto.
5. Método, de acordo com a reivindicação 4, caracterizado pelo fato de que o número um é adicionado ao número calculado de derivações quando ele for ímpar.
6. Método, de acordo com qualquer uma das reivindicações 1 a 5, caracterizado pelo fato de que a aplicação dos núcleos de filtro envolve repetir ciclicamente uma série dos núcleos de filtro pré-calculados ao processar uma linha ou coluna da informação de imagem.
7. Método, de acordo com qualquer uma das reivindicações 1 a 6, caracterizado pelo fato de que a informação de imagem recebida está em um espaço de cor relacionado à luma.
8. Método, de acordo com a reivindicação 1, caracterizado pelo fato de que ainda compreende, antes de converter (108) a informação de imagem à forma linear, converter (106) a informação de imagem em um espaço de cor R’G’B’ não-linear mediante aplicação de uma matriz de conversão à informação de imagem.
9. Método, de acordo com a reivindicação 8, caracterizado pelo fato de que converter a informação de imagem em a forma linear compreende aplicar a função de transferência para converter a informação de imagem a partir do espaço de cor R’G’B’ para um espaço de cor RGB linear.
BRPI0511474-8A 2004-07-29 2005-07-28 Method for processing image information in a linear form ?? BRPI0511474B1 (pt)

Applications Claiming Priority (7)

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
USPCT/US04/24707 2004-07-30
PCT/US2004/024707 WO2005013087A2 (en) 2003-08-01 2004-07-30 Strategies for processing image information using a color information data structure
US10/987,378 US7158668B2 (en) 2003-08-01 2004-11-12 Image processing using linear light values and other image processing improvements
US10/987,378 2004-11-12
PCT/US2005/026761 WO2006015107A2 (en) 2004-07-29 2005-07-28 Image processing using linear light values and other image processing improvements

Publications (2)

Publication Number Publication Date
BRPI0511474A BRPI0511474A (pt) 2007-12-26
BRPI0511474B1 true BRPI0511474B1 (pt) 2017-11-21

Family

ID=37500256

Family Applications (1)

Application Number Title Priority Date Filing Date
BRPI0511474-8A BRPI0511474B1 (pt) 2004-07-29 2005-07-28 Method for processing image information in a linear form ??

Country Status (9)

Country Link
EP (4) EP1771812B1 (pt)
JP (1) JP4989470B2 (pt)
KR (1) KR101213824B1 (pt)
CN (1) CN1981294B (pt)
AT (1) ATE524923T1 (pt)
AU (2) AU2005269370B2 (pt)
BR (1) BRPI0511474B1 (pt)
CA (1) CA2569211C (pt)
WO (1) WO2006015107A2 (pt)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5012493B2 (ja) * 2007-02-20 2012-08-29 セイコーエプソン株式会社 映像出力装置、映像出力方法及び映像出力プログラム、映像処理システム、並びに映像処理装置、映像処理方法及び映像処理プログラム
US8843913B2 (en) 2007-06-05 2014-09-23 Intel Corporation Dynamic linking and loading of post-processing kernels
KR101032835B1 (ko) * 2010-07-21 2011-05-06 서울대학교산학협력단 백터 그래픽스 기술에 있어서 스캔라인 기반의 랜더링 방법 및 그에 따른 장치
CN102295061A (zh) * 2011-05-19 2011-12-28 上海海事大学 基于图像处理的船舶水尺自动检测方法
US9258517B2 (en) * 2012-12-31 2016-02-09 Magnum Semiconductor, Inc. Methods and apparatuses for adaptively filtering video signals
US9241128B2 (en) * 2013-02-14 2016-01-19 Warner Bros. Entertainment Inc. Video conversion technology
US9223551B1 (en) 2014-07-22 2015-12-29 Here Global B.V. Rendergraph compilation method and use thereof for low-latency execution
JP6381344B2 (ja) * 2014-07-31 2018-08-29 キヤノン株式会社 画像処理装置、画像処理方法及びプログラム
US9852536B2 (en) * 2014-08-05 2017-12-26 Qualcomm Incorporated High order filtering in a graphics processing unit
US9454841B2 (en) * 2014-08-05 2016-09-27 Qualcomm Incorporated High order filtering in a graphics processing unit
US10715772B2 (en) 2015-11-09 2020-07-14 Netflix, Inc. High dynamic range color conversion correction
US10080005B2 (en) 2015-11-09 2018-09-18 Netflix, Inc. High dynamic range color conversion correction
US10742986B2 (en) 2015-11-09 2020-08-11 Netflix, Inc. High dynamic range color conversion correction
US10679544B2 (en) * 2016-01-29 2020-06-09 Barco Nv Digital image processing chain and processing blocks and a display including the same

Family Cites Families (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4463372A (en) * 1982-03-24 1984-07-31 Ampex Corporation Spatial transformation system including key signal generator
JP3020544B2 (ja) * 1990-04-06 2000-03-15 株式会社日立製作所 画像信号の走査変換装置
US5235432A (en) * 1991-11-22 1993-08-10 Creedon Brendan G Video-to-facsimile signal converter
JPH0659908A (ja) * 1992-08-11 1994-03-04 Toshiba Corp プログラム実行装置
US5526051A (en) * 1993-10-27 1996-06-11 Texas Instruments Incorporated Digital television system
JP3381755B2 (ja) * 1994-10-11 2003-03-04 セイコーエプソン株式会社 画像の粒状性を減らすための改良された適応性のあるフィルタリングおよび閾値設定の方法及び装置
US5715073A (en) * 1995-02-03 1998-02-03 Eastman Kodak Company Processing by separate stages monochrome digital images to provide halftone color images
US6370198B1 (en) * 1997-04-07 2002-04-09 Kinya Washino Wide-band multi-format audio/video production system with frame-rate conversion
US6028677A (en) * 1997-09-16 2000-02-22 Hewlett-Packard Co. Method and apparatus for converting a gray level pixel image to a binary level pixel image
US6034733A (en) * 1998-07-29 2000-03-07 S3 Incorporated Timing and control for deinterlacing and enhancement of non-deterministically arriving interlaced video data
US20020145610A1 (en) * 1999-07-16 2002-10-10 Steve Barilovits Video processing engine overlay filter scaler
GB9918643D0 (en) * 1999-08-06 1999-10-13 Canon Kk Geometry pipeline for computer graphics
US6671068B1 (en) * 1999-09-30 2003-12-30 Sharp Laboratories Of America, Inc. Adaptive error diffusion with improved edge and sharpness perception
AUPQ377899A0 (en) * 1999-10-29 1999-11-25 Canon Kabushiki Kaisha Phase three kernel selection
JP2001204045A (ja) * 2000-01-24 2001-07-27 Mitsubishi Electric Corp 動き検出装置
US6940557B2 (en) * 2001-02-08 2005-09-06 Micronas Semiconductors, Inc. Adaptive interlace-to-progressive scan conversion algorithm
EP1402508A2 (en) * 2001-05-23 2004-03-31 Koninklijke Philips Electronics N.V. Dithering method and dithering device
US6788312B1 (en) * 2001-08-06 2004-09-07 Nvidia Corporation Method for improving quality in graphics pipelines through a frame's top and bottom field processing with conditional thresholding and weighting techniques
US7039909B2 (en) * 2001-09-29 2006-05-02 Intel Corporation Method and apparatus for performing compiler transformation of software code using fastforward regions and value specialization
JP2003153079A (ja) * 2001-11-08 2003-05-23 Sony Corp 画像処理装置と画像処理方法
JP2004023328A (ja) * 2002-06-14 2004-01-22 Matsushita Electric Ind Co Ltd 画像処理装置、画像処理方法、プログラム、および媒体

Also Published As

Publication number Publication date
CN1981294A (zh) 2007-06-13
EP2364028A3 (en) 2012-03-28
EP1771812A2 (en) 2007-04-11
JP4989470B2 (ja) 2012-08-01
CA2569211A1 (en) 2006-02-09
CN1981294B (zh) 2010-12-22
KR101213824B1 (ko) 2012-12-24
EP2365472A2 (en) 2011-09-14
JP2008508802A (ja) 2008-03-21
AU2005269370A1 (en) 2006-02-09
AU2010238551B2 (en) 2011-08-18
WO2006015107A2 (en) 2006-02-09
WO2006015107A3 (en) 2006-04-27
EP1771812A4 (en) 2007-11-21
EP2365472A3 (en) 2013-09-25
BRPI0511474A (pt) 2007-12-26
EP2364029A2 (en) 2011-09-07
ATE524923T1 (de) 2011-09-15
AU2005269370B2 (en) 2010-07-29
EP1771812B1 (en) 2011-09-14
EP2364028A2 (en) 2011-09-07
AU2010238551A1 (en) 2010-11-18
KR20070049113A (ko) 2007-05-10
CA2569211C (en) 2014-04-22
EP2364028B1 (en) 2014-11-26
EP2364029A3 (en) 2011-12-21

Similar Documents

Publication Publication Date Title
BRPI0511474B1 (pt) Method for processing image information in a linear form ??
US7158668B2 (en) Image processing using linear light values and other image processing improvements
US6985157B2 (en) Alpha correction to compensate for lack of gamma correction
RU2402811C2 (ru) Обработка изображений с помощью линейных параметров светоустановки и других усовершенствований обработки изображений
JP6174926B2 (ja) 画像復号装置及びその制御方法
JP2009282527A (ja) ピクセルデータを垂直にスケーリングするための方法および装置
US8279240B2 (en) Video scaling techniques
Roch et al. Interactive local tone mapping operator with the support of graphics hardware
CN115460461B (zh) 视频处理方法及装置、终端设备、计算机可读存储介质
KR20080063697A (ko) 밴드 인터리브 포맷으로부터 밴드 분할 포맷으로의 포맷변환 장치
US20210134024A1 (en) Color transforms using static shaders compiled at initialization
Van Rijsselbergen et al. GPU-driven recombination and transformation of YCoCg-R video samples

Legal Events

Date Code Title Description
B25A Requested transfer of rights approved

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC (US)

B07A Application suspended after technical examination (opinion) [chapter 7.1 patent gazette]
B09A Decision: intention to grant [chapter 9.1 patent gazette]
B16A Patent or certificate of addition of invention granted [chapter 16.1 patent gazette]