Processamento de Imagens no Plano Focal -...

Post on 02-Dec-2018

215 views 0 download

Transcript of Processamento de Imagens no Plano Focal -...

Processamento de Imagensno Plano Focal

UFRJ / COPPE / PEEJosé Gabriel R. C. GomesCPE786 – Notas de AulaCPE786 Notas de Aula

Planejamento das Aulasj- História dos Imageadores CMOS.

- Sistemas de Leitura CCD e CMOS.

- Fotodiodos.

- Modos de Aquisição.

- Algoritmos de Baixa Complexidade.

- Processamento de Sinais no Plano Focal.

- Compressão de Dados no Plano Focal.

- Análise de Erro.

- Projeto.

- Montagem de Sistemas Ópticos.

- Teste.

UFRJ / COPPE / PEE / CPE786 – Slide 2 – José Gabriel R. C. Gomes

Aula #01 – Desenvolvimento Histórico

1. Desenvolvimento Inicial

1960: Solid-state Imager1963: S. R. Morrison (endereçamento X-Y)1964: J. W. Horton (scanistor)1964: J. W. Horton (scanistor)1966: M. A. Schuster e G. Strull (foto-transistores, 50 x 50)1967: P. K. Weimer et al. (photoconductive film, TFT scanning)1968: P. J. W. Noble (foto-diodo + chave, praticamente PPS)

1970: CCD e Primeiras Câmeras1970: W S Boyle e G E Smith invenção do CCD (AT&T Bell Labs)1970: W. S. Boyle e G. E. Smith – invenção do CCD (AT&T Bell Labs)1973: Texas Instruments1978: Polaroid

UFRJ / COPPE / PEE / CPE786 – Slide 4 – José Gabriel R. C. Gomes

2. Desenvolvimento Recente

1980: Sony Mavica, 1981 (primeira câmera comercial, CCD)980 So y a a, 98 (p a â a o a , CC )1987: Início do desenvolvimento dos sensores CMOS APS1988: o início das DSCs (Fuji DS Series)1989: Silicon Retina; amplificadores dentro do pixel (C. Mead)

1990: Imageadores CMOS consolidados1993 – “Are CCDs Dinossaurs?” (Eric Fossum)1994: Casio QV 10 (240 x 320 com primeiro LCD)1994: Casio QV-10 (240 x 320, com primeiro LCD)1995: 3T – APS (Photogate)

3T – APS (Photodiode)Guerra do número de pixelsp

1997: 4T – APS (Pinned Photodiode)2000: sensores de imagem CMOS inteligentes

2000: Diversificação 2006: sistemas comerciais para visão computacional2008: 25 megapixels, CCD / CMOS

UFRJ / COPPE / PEE / CPE786 – Slide 5 – José Gabriel R. C. Gomes

3. Diversificaçãoç a) Variações de câmeras: - “Silver Halide”

El t ô i E táti Câ E táti A ló i- Eletrônica Estática - Câmera Estática Analógica- Câmera Estática Digital (DSC)

DSC: - Point & ShootDSC: Point & Shoot- Single Lens Reflex- Camera Back- Toy Camera- Cell Phone

b) Chips de visão:

- Processamento a nível de pixels – Carver Mead, Silicon Retina– Subthreshold, low power

- Processamento a nível de colunas- Processamento a nível de chip

UFRJ / COPPE / PEE / CPE786 – Slide 6 – José Gabriel R. C. Gomes

3. Diversificaçãoç

) A li õ c) Aplicações

- Imageamento em geralImageamento em geral

- Imprensa e uso em rede

- Visão por máquina

- Aplicações científicas

- Astronomia- Biomedicina

- Aplicações militares

UFRJ / COPPE / PEE / CPE786 – Slide 7 – José Gabriel R. C. Gomes

3. Diversificaçãoç d) Estrutura Básica (configuração) de DSCs:

- Parte óptica- Dispositivos de imageamento- Circuito analógicoCircuito analógico- Circuito digital- Controle do sistema

UFRJ / COPPE / PEE / CPE786 – Slide 8 – José Gabriel R. C. Gomes

4. Pixel Detector

Elemento de matriz em um ambiente numérico

Elemento de um monitor ou display Elemento de um monitor ou display

UFRJ / COPPE / PEE / CPE786 – Slide 9 – José Gabriel R. C. Gomes

5. Estímulos e Tendências Tamanho do Pixel

Razão sinal/ruído – faixa dinâmica

Potência Potência

Custo de fabricação - tecnologia

UFRJ / COPPE / PEE / CPE786 – Slide 10 – José Gabriel R. C. Gomes

6. Futuro dos CCDs

Tamanho do pixel já em 2.3 µm de lado, em um quadrado (2006)p j µ , q ( )

Resolução – 6 megapixels (mais do que 15 parece ser desnecessário)

Faixa dinâmica – deve aumentar

Pixel com dois foto-diodos, 2003

Compatibilidade

Câmeras estáticas de alta resolução e filmadoras de alta qualidadeç q

Leitura de sinais em paralelo

Baixa potência – baixas tensões de controle (driving voltages)

UFRJ / COPPE / PEE / CPE786 – Slide 11 – José Gabriel R. C. Gomes

7. Futuro dos Sensores de Imagem gCMOS

Redução das diferenças entre DSC e DVRedução das diferenças entre DSC e DV

Baixo consumo de energia e alto desempenho em modo de operação rápido

Sensores CMOS de alta resolução para filmes (8 MP, UDTV; 60 fps; 960 mW)

Flexibilidade de leitura – câmeras de modos múlitplos

Novos formatos – high-frame-rate imaging (5000 fps VGA)

3-D e imageamento com alta faixa dinâmica (HDR)g ( )

UFRJ / COPPE / PEE / CPE786 – Slide 12 – José Gabriel R. C. Gomes

Referências (Livros)( )

Junichi Nakamura (Editor), Image Sensors and Signal Processing for Digital Still Cameras, CRC Press, 2005.

J Oht S t CMOS I S d A li ti CRC P 2007 Jun Ohta, Smart CMOS Image Sensors and Applications, CRC Press, 2007.

Gerald C. Holst and Terrence S. Lomheim, CMOS/CCD Sensors and Camera Systems, JCD Publishing and SPIE Press, 2007.g ,

Orly Yadid-Pecht and Ralph Etienne-Cummings (Editors), CMOS Imagers: from Phototransduction to Image Processing, Kluwer Academic Publishers, 2004.

Carver Mead. Analog VLSI and Neural Systems. Addison-Wesley, Reading, MA, USA, 1989.

UFRJ / COPPE / PEE / CPE786 – Slide 13 – José Gabriel R. C. Gomes

Referências (Artigos)( g ) W. S. Boyle and G. E. Smith. Charge-Coupled Semiconductor Devices. Bell System Tech. J., vol. 49, pp. 587–593, 1970.

S. Morrison. A new type of photosensitive junction device. Solid-State Electronics, vol. 5, pp. 485–494, 1963 (abstract) S. Morrison. A new type of photosensitive junction device. Solid State Electronics, vol. 5, pp. 485 494, 1963 (abstract)

J. W. Horton, R. V. Mazza, and H. Dym. The scanistor — A solid-state image scanner. Proc. IEEE, vol. 52, no. 12, pp. 1513–1528, December 1964.

M. A. Schuster and G. Strull. A monolithic mosaic of photon sensors for solid-state imaging applications. IEEE Trans. Electron Devices, vol. ED-13, no 12, pp. 907–912, December 1966.

P. K. Weimer, G. Sadasiv, J. E. Meyer Jr., L. Meray-Horvath, and W. S. Pike. A self-scanned solid-state image sensor. Proc. IEEE, vol. 55, no. 9, pp. 1591–1602,September 1967.IEEE, vol. 55, no. 9, pp. 1591 1602,September 1967.

P. J. Noble. Self-scanned silicon image detector arrays. IEEE Trans. Electron Devices, vol. ED-15, no. 4, pp. 202–209, April 1968.

G.P. Weckler. Operation of p-n Junction Photodetectors in a Photon Flux Integration Mode. IEEE J. Solid-State Circuits, vol. SC-2, no. 3, pp. 65–73, September 1967.

R.H. Dyck and G.P. Weckler. Integrated arrays of silicon photodetectors for image sensing. IEEE Trans. Electron Devices, vol. ED-15, no. 4, pp. 196–201, April1968.vol. ED 15, no. 4, pp. 196 201, April1968.

W.F. List. Solid-state imaging — Methods of approach. IEEE Trans. Electron Devices, vol. ED-15, no. 4, pp. 256–261,April 1968.

UFRJ / COPPE / PEE / CPE786 – Slide 14 – José Gabriel R. C. Gomes

Próxima Aula

Sistema de Leitura CCD

Ler Capítulo 1 livro Nakamura

Ler Capítulo 1 livro Ohta

Ler List 1968 e Boyle 1970 Ler List, 1968 e Boyle, 1970

UFRJ / COPPE / PEE / CPE786 – Slide 15 – José Gabriel R. C. Gomes

Aula #02 – Leitura de Dados em Sensores CCD

1. CCDs Capacitor “MIS”

Transferência de carga entre áreas de armazenamento

– Coleção de cargaT f ê i d– Transferência de carga

– Conversão de carga para voltagem

Tensão positiva aplicada ao gate cria região sem carga positiva Tensão positiva aplicada ao gate cria região sem carga positiva

Fóton absorvido: par elétron-lacuna

Elétrons são acumulados

Quantidade de carga negativa acumulada proporcional a:

– VG

– Espessura do óxido– Área do eletrodo

UFRJ / COPPE / PEE / CPE786 – Slide 17 – José Gabriel R. C. Gomes

Área do eletrodo

2. Transferência de Cargag

Número total de elétrons acumulados = capacidade do poço

UFRJ / COPPE / PEE / CPE786 – Slide 18 – José Gabriel R. C. Gomes

Número total de elétrons acumulados capacidade do poço

2. TC em CCDs com Três Fases

Três fases: tempo necesário para deslocar a carga um pixel = 6 períodos

Área disponível para o poço: 33% do pixel

UFRJ / COPPE / PEE / CPE786 – Slide 19 – José Gabriel R. C. Gomes

2. TC em CCDs com Três Fases

Altenativas:

- Quatro fases: área do poço é 50% do pixel (8 períodos)D F d ó id iá l (4 í d ) ( H l t & L h i 52)

UFRJ / COPPE / PEE / CPE786 – Slide 20 – José Gabriel R. C. Gomes

- Duas Fases: espessura de óxido variável (4 períodos) (ver Holst & Lomheim, p. 52)

3. BCCD (Buried-Channel CCD)( ) Valence-band pinning

Tornou-se padrão em CCDs, com eficiência de transferência de carga superior a 99.9999%

UFRJ / COPPE / PEE / CPE786 – Slide 21 – José Gabriel R. C. Gomes

4. Arquiteturas para a Matriz de Pixelsq p

Frame-Transfer CCD (FTCCD) Frame-Transfer CCD (FTCCD)

Interline-Transfer CCD (ITCCD)

Frame Interline Transfer CCD (FITCCD)

Fujifilm Super CCD (PIACCD)

UFRJ / COPPE / PEE / CPE786 – Slide 22 – José Gabriel R. C. Gomes

Frame-Transfer CCD (FTCCD)( )

Frame-Transfer CCD (FTCCD)

- Observações científicas / astronômicas- Sub-arraysy- Shielding- Estrutura simples- Pixel pequeno

h h f l k- Smear versus high-frequency clock- Resposta azul ruim

Obs.: shuttering ; no shielding – full frame transfer CCD

UFRJ / COPPE / PEE / CPE786 – Slide 23 – José Gabriel R. C. Gomes

Interline Transfer CCD (ITCCD)( ) Usado em aplicações de DSC e filmadores

Foto-diodo + gate de transferência

d ã d d bl Redução de smear ; mas ainda tem problemas:

- raios de luz inclinados (vazamento)

- difusão de elétrons foto-gerados

Fill-factor baixo – em torno de 20%

UFRJ / COPPE / PEE / CPE786 – Slide 24 – José Gabriel R. C. Gomes

Frame Interline Transfer CCD (FITCCD)

Alta proteção contra smear

Sistemas de câmera de mais alto custo

Transmissões de TV

UFRJ / COPPE / PEE / CPE786 – Slide 25 – José Gabriel R. C. Gomes

Fujifilm Super CCD (PIACCD)j p ( )

Matriz CCD com pixels “entrelaçados”

UFRJ / COPPE / PEE / CPE786 – Slide 26 – José Gabriel R. C. Gomes

4.1. Operaçãop ç

Scan progressivo versus scan “entrelaçado”

Time Delay and Integration (TDI)

UFRJ / COPPE / PEE / CPE786 – Slide 27 – José Gabriel R. C. Gomes

5. Conversão de Carga (Saída)g ( )

E t t d íd Estrutura de saída:

Ganho de conversão:

A = Gq/C (por exemplo, 80 uV/elétron)VSIGNAL = VRESET – VOUT = neGq/C

UFRJ / COPPE / PEE / CPE786 – Slide 28 – José Gabriel R. C. Gomes

Correlated Double Samplingp g Problema: incerteza quanto à quantidade de carga existente no “capacitor” (terminal n+ do

di d ) l ó tdiodo) logo após o reset.

UFRJ / COPPE / PEE / CPE786 – Slide 29 – José Gabriel R. C. Gomes

6. Estruturas Avançadasç a) Anti-Bloom Drain

- Substrato p – não é possível suprimir simultaneamente a corrente de difusão e a correntefoto-gerada.

E t t- Estrutura em poço p

- redução de efeitos indesejados, mas com resposta espectral diferente.- substrato n – vertical overflow drainsubstrato n vertical overflow drain

- Anti-bloom versus anti-smear

UFRJ / COPPE / PEE / CPE786 – Slide 30 – José Gabriel R. C. Gomes

- Pixels de baixo ruído

Low-Light-Level Detection DevicesgCharge-Injection Devices Intensified CCD (ICCD) (10-3 lux)

- Tubo de imageamento = intensificador de imagemF d MCP ( i h l l ) l (l (FFTCCD FTCCD))- Fotocatodo > MCP (microchannel plate) > tela ou (lente+(FFTCCD ou FTCCD))

Electron Bombarded CCD (EBCCD)- Fotocatodo e tubo a vácuoFotocatodo e tubo a vácuo- Degradação do CCD com o tempo; pode ser usada MCP

Electron Multiplying CCD (EMCCD)- ionização de impacto; registrador de multiplicação- FFTCCD (maximização de responsividade)

Ch I j ti D i (CID) ( t t l i ) Charge-Injection Devices (CID) (outra tecnologia)- Dois capacitores acoplados compartilhando ROWSELECT e COLSELECT- Carga foto-gerada com menos bloom e com menos smear- Pulso COLSELECT > corrente de deslocamento > saída ROWSELECT

UFRJ / COPPE / PEE / CPE786 – Slide 31 – José Gabriel R. C. Gomes

Pulso COLSELECT > corrente de deslocamento > saída ROWSELECT

Buried Photodiode

Vista em seção transversal de um pixel avançado ITCCD

UFRJ / COPPE / PEE / CPE786 – Slide 32 – José Gabriel R. C. Gomes

Próxima Aula

Sistemas de Leitura CMOS

Ler Capítulo 4 Nakamura (CCDs)

UFRJ / COPPE / PEE / CPE786 – Slide 33 – José Gabriel R. C. Gomes

Aulas #03 e #04 – Leitura de Dados em Sensores CMOS

1. Introdução aos Sensores CMOSç

Redução de potência e funcionalidade “on-chip”ç p p

Originalmente:

- Fotodiodo com corrente de escuro elevada

- Ruído de leitura elevado

Final dos anos 90:

- Técnicas trazidas das tecnologias CCDg

- Chartge-transfer gate

d h d d- Pinned photodiode

- Microlente

UFRJ / COPPE / PEE / CPE786 – Slide 35 – José Gabriel R. C. Gomes

1.1. Diferenças entre Sensores de çImagem CMOS e CCD

Smear raramente é observado em CMOS (APS)

Processos e instalações já existentes

Flexibilidade de leitura

Menor tensão de alimentação Menor tensão de alimentação

Integração com circuitos de controle e outros sistemas

UFRJ / COPPE / PEE / CPE786 – Slide 36 – José Gabriel R. C. Gomes

2. Arquitetura Básicaq

UFRJ / COPPE / PEE / CPE786 – Slide 37 – José Gabriel R. C. Gomes

3. Tecnologia de Pixels CMOS/APSg /

Carga foto-gerada

Scan de linha e scan de coluna

Fixed-Pattern Noise (FPN)

Offsset do amplificador- Offsset do amplificador

- Variação da tensão de threshold (VT) do transistor MRD

Métodos Básicos: 3T, 4T, 2.5T

UFRJ / COPPE / PEE / CPE786 – Slide 38 – José Gabriel R. C. Gomes

PPS e APS

UFRJ / COPPE / PEE / CPE786 – Slide 39 – José Gabriel R. C. Gomes

3.1. Fixed-Pattern Noise e Supressão de pFPN (APS-3T)

UFRJ / COPPE / PEE / CPE786 – Slide 40 – José Gabriel R. C. Gomes

3.2. Pixel com Foto-diodo de Junção J çp-n (APS-3T)

UFRJ / COPPE / PEE / CPE786 – Slide 41 – José Gabriel R. C. Gomes

PW / NSUB (APS-3T) / ( )

UFRJ / COPPE / PEE / CPE786 – Slide 42 – José Gabriel R. C. Gomes

Próxima Aula

í Ler Capítulo 5 Livro Nakamura (CMOS)

UFRJ / COPPE / PEE / CPE786 – Slide 43 – José Gabriel R. C. Gomes

3.3. Pixels de Fotodiodo “Preso” (Pinned Photodiode Pixel) (4T)

UFRJ / COPPE / PEE / CPE786 – Slide 44 – José Gabriel R. C. Gomes

CDS na Célula 4T

UFRJ / COPPE / PEE / CPE786 – Slide 45 – José Gabriel R. C. Gomes

3.4. Outros Pixels Relevantes

Boosting

Pixel Logarítmico

2.5T etc.

UFRJ / COPPE / PEE / CPE786 – Slide 46 – José Gabriel R. C. Gomes

Boostingg

UFRJ / COPPE / PEE / CPE786 – Slide 47 – José Gabriel R. C. Gomes

Pixel Logarítmicog

UFRJ / COPPE / PEE / CPE786 – Slide 48 – José Gabriel R. C. Gomes

Multiplexação de Foto-diodos (2.5T)p ç ( )

UFRJ / COPPE / PEE / CPE786 – Slide 49 – José Gabriel R. C. Gomes

Próxima Aula

é Simular célula 3T

UFRJ / COPPE / PEE / CPE786 – Slide 50 – José Gabriel R. C. Gomes

A l #05Aula #05Modos de Leitura (Read Out)Modos de Leitura (Read-Out) em Sensores de Imagem CMOSem Sensores de Imagem CMOS

Fotodiodo

Capacitância de junção: 5 fFp j ç

Corrente foto gerada: 5 pA Corrente foto-gerada: 5 pA

Luxímetros

UFRJ / COPPE / PEE / CPE786 – Slide 52 – José Gabriel R. C. Gomes

Modo de Tensão 3T

UFRJ / COPPE / PEE / CPE786 – Slide 53 – José Gabriel R. C. Gomes

Modo de Tensão 3T Alternativo

UFRJ / COPPE / PEE / CPE786 – Slide 54 – José Gabriel R. C. Gomes

Modo de Tensão 4T

UFRJ / COPPE / PEE / CPE786 – Slide 55 – José Gabriel R. C. Gomes

Modo de Tensão Logarítmicog

L b d Lembrando:

UFRJ / COPPE / PEE / CPE786 – Slide 56 – José Gabriel R. C. Gomes

Modo de Corrente com CDS

UFRJ / COPPE / PEE / CPE786 – Slide 57 – José Gabriel R. C. Gomes

Modo de Corrente Subthreshold

L b d Lembrando:

UFRJ / COPPE / PEE / CPE786 – Slide 58 – José Gabriel R. C. Gomes

Differential Data Sampling (DDS)p g ( )

UFRJ / COPPE / PEE / CPE786 – Slide 59 – José Gabriel R. C. Gomes

A l #06Aula #06Processamento de ImagensProcessamento de Imagens –Conceitos e Algoritmos BásicosConceitos e Algoritmos Básicos

Circuitos Analógicos para g pProcessamento em Modo de Corrente

Winner-takes-allValor absoluto Valor absoluto

Inversor de correnteE i l Exponencial

QuadradoP d t I t Produto Interno

Current conveyord Comparador

Conversores lineares I-V e V-I

UFRJ / COPPE / PEE / CPE786 – Slide 61 – José Gabriel R. C. Gomes

Winner-Takes-All

Andreou, 1991

UFRJ / COPPE / PEE / CPE786 – Slide 62 – José Gabriel R. C. Gomes

Valor Absoluto

Mehta, 2006

UFRJ / COPPE / PEE / CPE786 – Slide 63 – José Gabriel R. C. Gomes

Inversor de Corrente

Bult, 1987

UFRJ / COPPE / PEE / CPE786 – Slide 64 – José Gabriel R. C. Gomes

Exponencial e Quadradop Q

Madrenas, 1996 e Bult, 1987

UFRJ / COPPE / PEE / CPE786 – Slide 65 – José Gabriel R. C. Gomes

Exponencial - Exemplop p

UFRJ / COPPE / PEE / CPE786 – Slide 66 – José Gabriel R. C. Gomes

Produto Interno com Espelhos de pCorrente

UFRJ / COPPE / PEE / CPE786 – Slide 67 – José Gabriel R. C. Gomes

Current Conveyory

Linãn, 2002 e Ferri, 2003 Obs : substituir “Y” por “X” no esquemático

UFRJ / COPPE / PEE / CPE786 – Slide 68 – José Gabriel R. C. Gomes

Obs.: substituir Y por X no esquemático

Produto Interno e Comparadorp

UFRJ / COPPE / PEE / CPE786 – Slide 69 – José Gabriel R. C. Gomes

Conversores Lineares V-I e I-V

Bult, 1987

UFRJ / COPPE / PEE / CPE786 – Slide 70 – José Gabriel R. C. Gomes

Referências A. G. Andreou et al., Current-mode subthreshold MOS circuit for analog VLSI neural systems, IEEE Trans. Neural Networks,

vol 2 no 2 pp 205-213 Março 1991vol. 2, no. 2, pp. 205-213, Março 1991.

S. Mehta e R. Etienne-Cummings, A simplified normal optical flow measurement CMOS camera, IEEE Trans. Circuits and Systems I, vol. 53, no. 6, pp. 1223-1234, Junho 2006.

K. Bult e H. Waalinga, A class of analog CMOS circuits based on the square-law characteristics of an MOS transistor in saturation, IEEE J. Solid-State Circuits, vol. SC-22, no. 3, pp. 357-365, Junho 1987.

J. Madrenas et al., A CMOS analog circuit for Gaussian functions, IEEE Trans. Circuits and Systems II, vol. 43, no. 1, pp. 70-74 Janeiro 199674, Janeiro 1996.

G. Ferri e N. C. Guerrini, Low-voltage low—power CMOS current conveyors, Kluwer Academic Publishers, 2003.

G. Linãn, Diseño de Chips Programables de Señal Mixta con Bajo Consumo de Potencia para Sistemas de Vision em Tiempo , p g j p pReal, Universidade de Sevilha, Junho 2002.

H. L. Haas et al., Analog inner product operations for image compression in 0.35 um CMOS, Springer Analog Integrated Circuits and Signal Processing, vol. 57, no. 3, pp. 141-150, Novembro 2008.

UFRJ / COPPE / PEE / CPE786 – Slide 71 – José Gabriel R. C. Gomes

A l #07Aula #07Processamento de ImagensProcessamento de Imagens –Conceitos e Algoritmos Básicos IIConceitos e Algoritmos Básicos II

Mais Alguns Circuitos Analógicos para g g pProcessamento em Modo de Corrente

P d t I t U T i t Si Produto Interno com Um Transistor por Sinapse

R i Q d d Raiz Quadrada

T Hi bóli Tangente Hiperbólica

Circuitos para Leitura de Resultados

UFRJ / COPPE / PEE / CPE786 – Slide 73 – José Gabriel R. C. Gomes

Produto Interno 1T por Sinapsep p

UFRJ / COPPE / PEE / CPE786 – Slide 74 – José Gabriel R. C. Gomes

Produto Interno 1T por Sinapsep p

UFRJ / COPPE / PEE / CPE786 – Slide 75 – José Gabriel R. C. Gomes

Raiz QuadradaQ

UFRJ / COPPE / PEE / CPE786 – Slide 76 – José Gabriel R. C. Gomes

Circuitos para Saída (Leitura de p (Resultados)

UFRJ / COPPE / PEE / CPE786 – Slide 77 – José Gabriel R. C. Gomes

Sigmóide (Tangente Hiperbólica)g ( g p )

UFRJ / COPPE / PEE / CPE786 – Slide 78 – José Gabriel R. C. Gomes

Tangente Hiperbólica em Modo de g pCorrente

UFRJ / COPPE / PEE / CPE786 – Slide 79 – José Gabriel R. C. Gomes

Exemplo de Algoritmo de Baixa p gComplexidade

DPCM DPCM

T f d Li Transformada Linear

V l Ab l t Valor Absoluto

ã l Quantização Vetorial

UFRJ / COPPE / PEE / CPE786 – Slide 80 – José Gabriel R. C. Gomes

Imagem Dividida em Blocosg

UFRJ / COPPE / PEE / CPE786 – Slide 81 – José Gabriel R. C. Gomes

DPCM

UFRJ / COPPE / PEE / CPE786 – Slide 82 – José Gabriel R. C. Gomes

Transformação Linearç

UFRJ / COPPE / PEE / CPE786 – Slide 83 – José Gabriel R. C. Gomes

Transformação Linearç

UFRJ / COPPE / PEE / CPE786 – Slide 84 – José Gabriel R. C. Gomes

Quantização VetorialQ ç

UFRJ / COPPE / PEE / CPE786 – Slide 85 – José Gabriel R. C. Gomes

Quantização VetorialQ ç

UFRJ / COPPE / PEE / CPE786 – Slide 86 – José Gabriel R. C. Gomes

Quantização VetorialQ ç

UFRJ / COPPE / PEE / CPE786 – Slide 87 – José Gabriel R. C. Gomes

Aulas #08 e #09 DPCMAulas #08 e #09 – DPCM

Motivação (Imagens)ç ( g )

UFRJ / COPPE / PEE / CPE786 – Slide 89 – José Gabriel R. C. Gomes

Motivação (Histogramas)ç ( g )

- Obs.: 480513 pixels considerados

UFRJ / COPPE / PEE / CPE786 – Slide 90 – José Gabriel R. C. Gomes

Projetoj% [1] Projeto SQ

clear all; load DPCM SQTrainSet;clear all; load DPCM_SQTrainSet; X = D(1:100:end); clear D; clear M;S = sign(X); X = abs(X); rand('state',0); randn('state',0);K=8; C = sort(rand(1,K))/10;L 100L = 100;for k=1:L, k

p = zeros(1,K);Cnovo = zeros(1,K);D(k) = 0;for n=1:size(X,2),

d = abs(X(n)-C);i = min(find(d == min(d)));p(i) = p(i)+1;Cnovo(i) = Cnovo(i)+X(n);Cnovo(i) Cnovo(i)+X(n);D(k) = D(k)+(min(d))^2;

end;C = Cnovo./p;D(k) = D(k)/size(X,2);

end;end;D0 = var(X);semilogx(10*log10(D0./D)); hold on; semilogx(10*log10(D0./D),'k.'); grid on;xlabel('Iteracao'); ylabel('SQNR (dB)');Cbkp=C;

UFRJ / COPPE / PEE / CPE786 – Slide 91 – José Gabriel R. C. Gomes

Projetoj

% Arredondamento:

C=Cbkp;Tbkp = ([C 0]+[0 C])/2; T = [0.02 0.04 0.08 0.13 0.19 0.28 0.40]; p = zeros(1,K); C = zeros(1,K);for n=1:size(X,2),

i = sum(X(n) > T) + 1;p(i) = p(i)+1;C(i) = C(i)+X(n);

end;C = C /p; C = round(C*200)/200;

UFRJ / COPPE / PEE / CPE786 – Slide 92 – José Gabriel R. C. Gomes

C = C./p; C = round(C*200)/200;

Aplicaçãop ç

% [2] Aplicacao

V = ImageToMatrix('lena');M = sum(V,1)/16; figure; imshow((reshape(M,128,128))'); MHat = zeros(1 1+length(M)); D = zeros(size(M)); p = zeros(1 8);MHat = zeros(1,1+length(M)); D = zeros(size(M)); p = zeros(1,8);for n=1:length(M),

D(n) = M(n) - MHat(n); X = abs(D(n)); Y = sign(D(n));i = sum(X > T) + 1;MHat(n+1) = MHat(n)+C(i)*Y;( ) ( ) ( )p(i) = p(i)+1;

end;MHat=MHat(2:length(MHat));

/clear D; p = p./sum(p); H = sum(-p.*log2(p)); D = mean((M - MHat).^2); [H 10*log10(D0/D)]figure; imshow((reshape(MHat,128,128))');

UFRJ / COPPE / PEE / CPE786 – Slide 93 – José Gabriel R. C. Gomes

DPCM – Implementaçãop ç

UFRJ / COPPE / PEE / CPE786 – Slide 94 – José Gabriel R. C. Gomes

UFRJ / COPPE / PEE / CPE786 – Slide 95 – José Gabriel R. C. Gomes

Implementação com Alguns Errosp ç g

% [3] Implementacao com Alguns Erros

MHat = zeros(1,1+length(M)); MHat2 = zeros(1,1+length(M)); D = zeros(size(M)); p = zeros(1,8);prandn('state',0); eC = 0.001*randn(size(C));for n=1:length(M),

D(n) = M(n) - MHat(n); X = abs(D(n)); Y = sign(D(n));i = sum(X > T) + 1;

( 1) ( ) ( (i) (i))*MHat(n+1) = MHat(n)+(C(i)+eC(i))*Y;MHat2(n+1) = MHat2(n)+C(i)*Y;p(i) = p(i)+1;

end;MHat=MHat(2:length(MHat));MHat=MHat(2:length(MHat));MHat2=MHat2(2:length(MHat2));clear D; p = p./sum(p); H = sum(-p.*log2(p)); D = mean((M - MuHat).^2); [H 10*log10(D0/D)]figure; imshow((reshape(MHat2,128,128))'); g pfigure; plot(MHat); hold on; plot(MHat2,'r-');

UFRJ / COPPE / PEE / CPE786 – Slide 96 – José Gabriel R. C. Gomes

Implementação com Alguns Errosp ç g

UFRJ / COPPE / PEE / CPE786 – Slide 97 – José Gabriel R. C. Gomes

Correção de Erros em DPCMç

% [4] Correcao de Erros em DPCM

2figure; plot(MHat); hold on; plot(MHat2-(1:length(MHat2))/length(MHat2)*1.4,'g-');

figure; imshow((reshape(MHat2-(1:length(MHat2))/length(MHat2)*1.4,128,128))');

UFRJ / COPPE / PEE / CPE786 – Slide 98 – José Gabriel R. C. Gomes

Exercício

ExemploCompletoDPCM.m

UFRJ / COPPE / PEE / CPE786 – Slide 99 – José Gabriel R. C. Gomes

Aula #10 – Quantizador Vetorial: Conceitos Básicos

1. Codificador

Dados de entrada (fonte):

UFRJ / COPPE / PEE / CPE786 – Slide 101 – José Gabriel R. C. Gomes

2. Decodificador

Dicionário:

UFRJ / COPPE / PEE / CPE786 – Slide 102 – José Gabriel R. C. Gomes

3. VQQ

UFRJ / COPPE / PEE / CPE786 – Slide 103 – José Gabriel R. C. Gomes

4. Problema (Projeto do VQ)( j Q)

Dado X, encontrar Y tal que D = Dmin, q min

Exemplo (MATLAB):

M = 2N = 20N 20K = 4

UFRJ / COPPE / PEE / CPE786 – Slide 104 – José Gabriel R. C. Gomes

4. Problema (Código MATLAB)( g )

>> close all; clear all;

>> randn('state',0); rand('state',0); M = 2; N = 20; K = 4; G = 4; e = 0.05;

>> C = rand(M,G); X = []; L = N/G;

>> for g = 1:G, X = [X repmat(C(:,g),1,L)+e*randn(M,L)]; end;

l t(X(1 ) X(2 ) 'k ') id >> plot(X(1,:),X(2,:),'k.'); grid on;

>> hold on; plot(C(1,:),C(2,:),'c.');

>> Y = [ 0 7 0 75 0 8 0 85 ; 0 5 0 4 0 45 0 35];>> Y = [ 0.7 0.75 0.8 0.85 ; 0.5 0.4 0.45 0.35];

>> plot(Y(1,:),Y(2,:),'r.');

>> xlabel('x_{1}'); ylabel('x_{2}');

>> axis([0.2 1.2 -0.1 0.9])

UFRJ / COPPE / PEE / CPE786 – Slide 105 – José Gabriel R. C. Gomes

5. Considerações Básicasç

5.1. Condição da Partição (Codificador)

Fixando Y, calcular divisão de X em K sub-conjuntos

5.2. Condição do Centróide (Decodificador)ç

Fixando divisão de X, calcular Y,

UFRJ / COPPE / PEE / CPE786 – Slide 106 – José Gabriel R. C. Gomes

5.1. Condição da Partiçãoç ç

>> voronoi(Y(1,:),Y(2,:),'r-');

UFRJ / COPPE / PEE / CPE786 – Slide 107 – José Gabriel R. C. Gomes

5.1. Condição da Partição Considerando que y1, y2, ..., yK são conhecidos (dados):

ç ç

Particao otima:

Neste caso: Neste caso:

UFRJ / COPPE / PEE / CPE786 – Slide 108 – José Gabriel R. C. Gomes

5.1. Condição da Partiçãoç ç

UFRJ / COPPE / PEE / CPE786 – Slide 109 – José Gabriel R. C. Gomes

5.1. Condição da Partiçãoç ç

>> X

X =

Columns 1 through 13

0.9285 0.9564 0.8928 1.0096 0.9665 0.5975 0.5774 0.6000 0.6602 0.6021 0.9060 0.9270 0.85670.1479 0.2455 0.2907 0.2293 0.2399 0.5223 0.5951 0.4917 0.4889 0.4444 0.6953 0.8433 0.8050

Columns 14 through 20

0.9540 0.8193 0.4365 0.4972 0.5210 0.5160 0.45550.6824 0.7907 0.0530 0.0541 0.0519 -0.0416 0.0107

>> D = 0;>> for n=1:20, d = sum((repmat(X(:,n),1,size(Y,2)) - Y).^2,1); k(n) = min(find(d==min(d))); D = D + min(d); end;>> D = D/20

D =

0.0899

>> k

k =

4 4 4 4 4 1 1 1 1 1 3 1 1 3 1 2 2 2 2 2

UFRJ / COPPE / PEE / CPE786 – Slide 110 – José Gabriel R. C. Gomes

5.2. Condição do Centróideç

UFRJ / COPPE / PEE / CPE786 – Slide 111 – José Gabriel R. C. Gomes

5.2. Condição do Centróideç

UFRJ / COPPE / PEE / CPE786 – Slide 112 – José Gabriel R. C. Gomes

5.2. Condição do Centróideç>> k

k =

4 4 4 4 4 1 1 1 1 1 3 1 1 3 1 2 2 2 2 2

>> p = zeros(K,1); Y = zeros(size(Y)); for n=1:20, Y(:,k(n)) = Y(:,k(n)) + X(:,n); p(k(n)) = p(k(n)) + 1; end;>> p

p =

85255

>> for j=1:K, Y(:,j) = Y(:,j)/p(j); end;>> Y

Y =

0.7050 0.4852 0.9300 0.95080.6227 0.0256 0.6888 0.2306

>> plot(Y(1,:),Y(2,:),'g.');>> D = 0; for n=1:20, D = D + sum((X(:,n)-Y(:,k(n))).^2);end;end;>> D = D/20

D =

0.0178

UFRJ / COPPE / PEE / CPE786 – Slide 113 – José Gabriel R. C. Gomes

Projeto de VQ Ilustrativoj Q

UFRJ / COPPE / PEE / CPE786 – Slide 114 – José Gabriel R. C. Gomes

Projeto de VQ Ilustrativoj Q

UFRJ / COPPE / PEE / CPE786 – Slide 115 – José Gabriel R. C. Gomes

Projeto de VQ Ilustrativoj Q

load DadosX.mat; L=20; K=16; M=mean(X,2); Y=repmat(M,1,K); randn('state',1); Y=Y+0.001*randn(size(Y));for l=1:L, l

D(l)=0; p=zeros(1,K); Ynovo=zeros(size(Y));for n 1 si e(X 2)for n=1:size(X,2);

d = sum((repmat(X(:,n),1,size(Y,2))-Y).^2,1);k = min(find(d==min(d)));

D(l) = D(l)+min(d);Ynovo(:,k) = Ynovo(:,k) + X(:,n); p(k) = p(k) + 1;

end;Y=Ynovo./repmat(p,size(Y,1),1);

end;plot(D,'k.'); plot(D, k. ); figure; plot(X(1,:),X(2,:),'k.'); hold on;voronoi(Y(1,:),Y(2,:)); axis([-0.01 0.08 -0.01 0.08]);

UFRJ / COPPE / PEE / CPE786 – Slide 116 – José Gabriel R. C. Gomes

Aula #11 – Quantizador Vetorial com Restrição de Entropia

1. Codificador de Fonte Discreta (VLC)( )

ã Função

UFRJ / COPPE / PEE / CPE786 – Slide 118 – José Gabriel R. C. Gomes

2. Decodificador de Fonte Discreta

ã Função

UFRJ / COPPE / PEE / CPE786 – Slide 119 – José Gabriel R. C. Gomes

3. ECVQQ

UFRJ / COPPE / PEE / CPE786 – Slide 120 – José Gabriel R. C. Gomes

4. Entropiap

O VLC é parametrizado pelo vetor .

UFRJ / COPPE / PEE / CPE786 – Slide 121 – José Gabriel R. C. Gomes

4. Entropia e VLC – Exemplop p>> p = [1/2 1/4 1/8 1/8]

p p =

0.5000 0.2500 0.1250 0.1250

>> -sum(p.*log2(p))

ans =

1.7500

>> l = HuffLen(p)

l =

1 2 3 31 2 3 3

>> gamma = HuffCode(l)

gamma =

0 0 01 0 01 1 01 1 11 1 1

UFRJ / COPPE / PEE / CPE786 – Slide 122 – José Gabriel R. C. Gomes

5. Problema (Projeto do ECVQ)( j Q)

Minimizar D considerando se uma restrição (valor Minimizar D, considerando-se uma restrição (valor máximo aceitável) em H, ou vice-versa. Isso equivale a minimizar a função custo:a minimizar a função custo:

Problema: dados X e λ, encontrar Y tal que J = Jmin.

Exemplo (MATLAB): Slides #5 e #6 da aula passada.

UFRJ / COPPE / PEE / CPE786 – Slide 123 – José Gabriel R. C. Gomes

6. Considerações Básicasç

6.1. Condição da Partição (Codificador)

Fixando Y, calcular divisão de X em K sub-conjuntos

6.2. Condição do Centróide (Decodificador)ç

Fixando divisão de X, calcular Y,

UFRJ / COPPE / PEE / CPE786 – Slide 124 – José Gabriel R. C. Gomes

6.1. Condição da Partição Considerando que y1, y2, ..., yK são dados, seja j(x,yk):

ç ç

Partição ótima (sem demonstração aqui):

Neste caso: Neste caso:

UFRJ / COPPE / PEE / CPE786 – Slide 125 – José Gabriel R. C. Gomes

6.1. Condição da Partição (MATLAB) Na primeira iteração, não sabemos valores de lk.

ç ç ( )

>> X

X =

Columns 1 through 12

0.9285 0.9564 0.8928 1.0096 0.9665 0.5975 0.5774 0.6000 0.6602 0.6021 0.9060 0.92700.1479 0.2455 0.2907 0.2293 0.2399 0.5223 0.5951 0.4917 0.4889 0.4444 0.6953 0.8433

Columns 13 through 20

0.8567 0.9540 0.8193 0.4365 0.4972 0.5210 0.5160 0.45550.8050 0.6824 0.7907 0.0530 0.0541 0.0519 -0.0416 0.0107

>> L

L =

2 2 2 2

>> lambda = 0.05;>> J = 0;>> for n=1:20, j = sum((repmat(X(:,n),1,size(Y,2)) - Y).^2,1) + lambda*L; k(n) = min(find(j==min(j))); J = J + min(j); end;>> J = J/20

J =

0.1899

>> k

k =

4 4 4 4 4 1 1 1 1 1 3 1 1 3 1 2 2 2 2 2

UFRJ / COPPE / PEE / CPE786 – Slide 126 – José Gabriel R. C. Gomes

6.2. Condição do Centróideç

É a mesma do Slide 5.2 da aula passada:

UFRJ / COPPE / PEE / CPE786 – Slide 127 – José Gabriel R. C. Gomes

6.2. Condição do Centróide (MATLAB)ç ( )

>> k

k =

4 4 4 4 4 1 1 1 1 1 3 1 1 3 1 2 2 2 2 2

>> p = zeros(K,1); Y = zeros(size(Y)); for n=1:20, Y(:,k(n)) = Y(:,k(n)) + X(:,n); p(k(n)) = p(k(n)) + 1; end;>> p

p =

85255

>> for j=1:K, Y(:,j) = Y(:,j)/p(j); end;>> Y

Y =

0.7050 0.4852 0.9300 0.95080.6227 0.0256 0.6888 0.2306

>> plot(Y(1,:),Y(2,:),'g.');>> D = 0; for n=1:20, D = D + sum((X(:,n)-Y(:,k(n))).^2);end;end;>> D = D/20

D =

0.0178

UFRJ / COPPE / PEE / CPE786 – Slide 128 – José Gabriel R. C. Gomes

6.2. E logo após a avaliação de p:g p ç p

>> p = p/sum(p)

p =

0 40000.40000.25000.10000 25000.2500

>> L = HuffLen(p)

L =

1233

UFRJ / COPPE / PEE / CPE786 – Slide 129 – José Gabriel R. C. Gomes

6.3. Exemplo ECVQp Q

UFRJ / COPPE / PEE / CPE786 – Slide 130 – José Gabriel R. C. Gomes

6.3. Exemplo ECVQp Qclear all; close all; S = 0.01; BKJ = [];

for s = 1:400,

lambda = S*(s-1);randn('state',0); rand('state',0); M = 2; N = 800; K = 8; e = 0.5;X = randn(M,N);Y = 0.5*randn(M,K);l = log2(K)*ones(1,size(Y,2));gF = 200; BK = zeros(F,4);

for i=1:F,% PartitionJ = 0; for n=1:N, j = sum((repmat(X(:,n),1,size(Y,2)) - Y).^2,1) + lambda*l;

k(n) = min(find(j==min(j))); J = J + min(j); end; J = J/N;k(n) = min(find(j==min(j))); J = J + min(j); end; J = J/N;% Centroidp = zeros(K,1); Y = zeros(size(Y)); for n=1:N, Y(:,k(n)) = Y(:,k(n)) + X(:,n);

p(k(n)) = p(k(n)) + 1; end;for j=1:K, if p(j)~=0, Y(:,j) = Y(:,j)/p(j); end; end;% Cost Evaluation 0 f 1 (( ( ) ( k( ))) ^2) d /D = 0; for n=1:N, D = D + sum((X(:,n)-Y(:,k(n))).^2); end; D = D/N;Y = Y(:,find(p~=0)); p = p(find(p~=0));p = p/sum(p); H = -sum(p.*log2(p)); BK(i,:) = [D H D+lambda*H J];% Codeword Length Updatel = HuffLen(p)';

end;;

BKJ = [BKJ ; [lambda D H D+lambda*H size(Y,2)]]; [s lambda D H D+lambda*H size(Y,2)]

end;

plot(BKJ(: 3) BKJ(: 2) 'k '); grid on; xlabel('H (bits per vector)'); ylabel('D (MSE)');plot(BKJ(:,3),BKJ(:,2), k. ); grid on; xlabel( H (bits per vector) ); ylabel( D (MSE) );

UFRJ / COPPE / PEE / CPE786 – Slide 131 – José Gabriel R. C. Gomes

Referências

P. A. Chou, T. Lookabaugh, and R. M. Gray. Entropy-constrained vector quantization. IEEE Trans. Acoustics, Speech and Signal Processing, vol. 37, no. 1, pp. 31-42, January 1989.

A G h d R M G V t Q ti ti d Si l C i Kl B t 1992 A. Gersho and R. M. Gray. Vector Quantization and Signal Compression, Kluwer, Boston, 1992.

T. Kohonen. Self-Organizing Maps. Springer-Verlag, Berlin, Germany, 3rd Edition, 2001.

UFRJ / COPPE / PEE / CPE786 – Slide 132 – José Gabriel R. C. Gomes

Aula #12 – Transformação Linear

Transformação em Blocos 4 4ç

UFRJ / COPPE / PEE / CPE786 – Slide 134 – José Gabriel R. C. Gomes

Transformação em Blocos 4 4çH = [ 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 22 1 -1 -2 2 1 -1 -2 2 1 -1 -2 2 1 -1 -21 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 11 -2 2 -1 1 -2 2 -1 1 -2 2 -1 1 -2 2 -12 2 2 2 1 1 1 1 -1 -1 -1 -1 -2 -2 -2 -24 2 -2 -4 2 1 -1 -2 -2 -1 1 2 -4 -2 2 42 2 2 2 1 1 1 1 1 1 1 1 2 2 2 22 -2 -2 2 1 -1 -1 1 -1 1 1 -1 -2 2 2 -22 -4 4 -2 1 -2 2 -1 -1 2 -2 1 -2 4 -4 21 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 12 1 -1 -2 -2 -1 1 2 -2 -1 1 2 2 1 -1 -21 -1 -1 1 -1 1 1 -1 -1 1 1 -1 1 -1 -1 11 2 2 1 1 2 2 1 1 2 2 1 1 2 2 11 -2 2 -1 -1 2 -2 1 -1 2 -2 1 1 -2 2 -11 1 1 1 -2 -2 -2 -2 2 2 2 2 -1 -1 -1 -12 1 -1 -2 -4 -2 2 4 4 2 -2 -4 -2 -1 1 21 -1 -1 1 -2 2 2 -2 2 -2 -2 2 -1 1 1 -11 -2 2 -1 -2 4 -4 2 2 -4 4 -2 -1 2 -2 1 ];

H = [ 2 1 -1 -2 2 1 -1 -2 2 1 -1 -2 2 1 -1 -22 2 2 2 1 1 1 1 -1 -1 -1 -1 -2 -2 -2 -21 -1 -1 1 1 -1 -1 1 1 -1 -1 1 1 -1 -1 11 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1 ];1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ];

for k=1:size(H,1), H(k,:) = H(k,:)/norm(H(k,:)); end;H(1,:) = H(1,:)/10; H(2,:) = H(2,:)/10; H(3,:) = H(3,:)/3; H(4,:) = H(4,:)/3;

UFRJ / COPPE / PEE / CPE786 – Slide 135 – José Gabriel R. C. Gomes

Distribuição Laplacianaç p

UFRJ / COPPE / PEE / CPE786 – Slide 136 – José Gabriel R. C. Gomes

abs(p) – Distribuição Exponencial(p) ç p

UFRJ / COPPE / PEE / CPE786 – Slide 137 – José Gabriel R. C. Gomes

VQ ou ECVQ – Implementação Q Q p ç

UFRJ / COPPE / PEE / CPE786 – Slide 138 – José Gabriel R. C. Gomes

IVQ (Interpolative VQ)Q ( p Q)

UFRJ / COPPE / PEE / CPE786 – Slide 139 – José Gabriel R. C. Gomes

IVQ (Interpolative VQ)Q ( p Q)

UFRJ / COPPE / PEE / CPE786 – Slide 140 – José Gabriel R. C. Gomes

Implementação Completa (Blocos)p ç p ( )

UFRJ / COPPE / PEE / CPE786 – Slide 141 – José Gabriel R. C. Gomes

Implementação Completa (Circuito)p ç p ( )

UFRJ / COPPE / PEE / CPE786 – Slide 142 – José Gabriel R. C. Gomes

Implementação Completa (Resultados)p ç p ( )

UFRJ / COPPE / PEE / CPE786 – Slide 143 – José Gabriel R. C. Gomes

Referências

H. Malvar, A. Hallapuro, M. Karczewicz, and L. Kerofsky. Low-complexity transform and quantization with 16-bit arithmetic for H.26L. In Proc. IEEE Int. Conf. Image Processing, pages II.489-II.492, Rochester, NY, September 2002.

H. Malvar, A. Hallapuro, M. Karczewicz, and L. Kerofsky. Low-complexity transform and quantization in H.264/AVC. IEEE Transactions on Circuits and Systems for Video Technology, vol. 13, no. 7, pp. 598-603, July 2003.

A. Gersho. Optimal nonlinear interpolative vector quantization. IEEE Trans. Communications, vol. 38, no. 9, pp. 1285-1287, September 1990.

UFRJ / COPPE / PEE / CPE786 – Slide 144 – José Gabriel R. C. Gomes

Aula #13 DPCM IIAula #13 – DPCM II

Elementos

Descorrelação de Imagem

Transformada em Blocos

Decomposição em Sub-Bandas

Codificação Preditiva Codificação Preditiva

Codificação de Entropia

Arquitetura do Chip

UFRJ / COPPE / PEE / CPE786 – Slide 146 – José Gabriel R. C. Gomes

1. Codificação Preditivaç

Gradiente calculado sobre pixels vizinhos

CALIC / DARC

ALCM

CLARA CLARA

DPCM

MED / LOCO / JPEG-LS

MED Simplificado: W, depois N dependendo do resultado

UFRJ / COPPE / PEE / CPE786 – Slide 147 – José Gabriel R. C. Gomes

2. Codificação de Entropiaç p

Códigos de Golomb-Rice

São ótimos para inteiros com distribuição Laplaciana

UFRJ / COPPE / PEE / CPE786 – Slide 148 – José Gabriel R. C. Gomes

3. Arquitetura do Chipq p

Matriz 80 x 44

Processamento a nível de colunas (ver Figura 2 do artigo)

Diagrama de blocos do processador de coluna (ver Figura 3 do artigo)

Memória analógica

CDS

Circuito de prediçãop ç

Conversor A/D com rampa (128 ciclos)

Golomb-Rice

Lógica de leitura

UFRJ / COPPE / PEE / CPE786 – Slide 149 – José Gabriel R. C. Gomes

3.1. Circuito do Pixel

Pixel APS 3T com bias interno (M3) (ver Figura 4 do artigo)( ) ( g g )

34 um x 30 um

Seguidor de fonte (M2 e M3)

Chaves para leitura e escrita (M4 e M5)

Outro seguidor de fonte (M6 e Mb, sendo Mb externo)

Hard reset (M1)( )

Chave complementar do pixel (M7 e M8)

Capacitor de armazenamento

Fill factor: 18%

UFRJ / COPPE / PEE / CPE786 – Slide 150 – José Gabriel R. C. Gomes

3.2. Circuito de Prediçãoç

Circuito analógico (Figura 7 do artigo)g ( g g )

Seleção de entradas do conversor A/D

Valor do pixel e valor da predição (vizinho)

Banco de capacitores

Chave atravessada para linhas pares e ímpares

Chaveamento a, b, c, d (Figura 8 do artigo), , , ( g g )

Controle W/N

UFRJ / COPPE / PEE / CPE786 – Slide 151 – José Gabriel R. C. Gomes

3.3. CDS com Dois Transistores

Amplificador diferencial com dois transistores para reduzir FPN (Figura 10 do artigo)p p ( g g )

Duas tensões de reset diferentes

UFRJ / COPPE / PEE / CPE786 – Slide 152 – José Gabriel R. C. Gomes

3.4. Circuito de Codificação, Adaptativoç , p

Esquema completo: ver Figura 11 do artigoq p g g

Conversor A/D com rampa (onde é implementada a codificação diferencial)

Lógica de seleção do preditor

Codificador Golomb-Rice adaptativo (detalhado em outro artigo anterior, [17])

Até 21 bits de comprimento para 256 possíveis níveis

Lógica para leitura serial das palavras bináriasg p p

UFRJ / COPPE / PEE / CPE786 – Slide 153 – José Gabriel R. C. Gomes

3.5. Processador de Coluna

3252 um x 34.3 um (ver Figura 17 do artigo)( g g )

Contêm:

3.2. Circuito de Predição

3.3. CDS

3.4. Circuito de Codificação

UFRJ / COPPE / PEE / CPE786 – Slide 154 – José Gabriel R. C. Gomes

4. Resultados e Conclusões

Imagens residuais e reconstruídas quando o esquema adaptativo para seleção de vizinho é utilizado – ver Figura 24.

Compressão de imagens (sem perdas): taxas em torno de 5.5 bit/pixel (ver Tabelas III e IV)

Escolha adequada do parâmetro k

UFRJ / COPPE / PEE / CPE786 – Slide 155 – José Gabriel R. C. Gomes

Referências

W. León-Salas, S. Balkir, K. Sayood, N. Schemm, and M. Hoffman, A CMOS imager with focal plane compression using predictive coding, IEEE J. Solid-State Circuits, vol. 42, no. 11, pp. 2555-2572, November 2007.

UFRJ / COPPE / PEE / CPE786 – Slide 156 – José Gabriel R. C. Gomes

Aula #14 Múltipla ResoluçãoAula #14 – Múltipla Resolução

Elementos

Estrutura QTD (Quadtree Decomposition) e VQ hierárquico

Métodos associados a múltiplas escalas

QTD versus JPEG – ver Figura 8 (Artyomov2006)

Blocos 8 x 8 só para exemplificar Blocos 8 x 8 só para exemplificar

Na prática – tamanho de bloco inicial 2 x 2, indo até 4 x 4

UFRJ / COPPE / PEE / CPE786 – Slide 158 – José Gabriel R. C. Gomes

1. Arquiteturaq

É t d Fi 9 (A t 2006) É mostrada na Figura 9 (Artyomov2006):

1. APS Phtogate

2. Lógica de linha

3. Lógica de coluna

4. Processador (circuito computacional)

5 Clock5. Clock

Processamento simultâneo de duas linhas (Figura 10)

Operação snapshot

UFRJ / COPPE / PEE / CPE786 – Slide 159 – José Gabriel R. C. Gomes

2. Processador em Colunas

É mostrado na Figura 11 (Artyomov2006):g ( y )

1. S/H

2. WTA & LTA

3. Comparadores

4. Memória

5. Lógica de saída

Regras computacionais QTD

4 i t WTA/LTA él l di i d d t4-input WTA/LTA com células direcionadoras de corrente

00 – pixel não-usado; 01 bloco 1 x 1; 10 bloco 2 x 2; 11 bloco 4 x 4

UFRJ / COPPE / PEE / CPE786 – Slide 160 – José Gabriel R. C. Gomes

3. Regras Computacionais QTDg p Q

Figura 12 (Artyomov2006): diagrama de tempo referente ao controle do sistema computacional

Sinal “select” mostrado para oito linhasSinal select mostrado para oito linhas

Sinais “sample signal” e “sample reset”p g p

“Select” não-convencional

UFRJ / COPPE / PEE / CPE786 – Slide 161 – José Gabriel R. C. Gomes

3.1. Regras Comp. QTD – Exemplog p Q p

Figura 13 (Artyomov2006): a operação do algoritmo de cálculo do tamanho do bloco é descritaconforme os intervalos de clock mostrados na tabela a seguir:

CLOCK OPERAÇÃO FIG. 131 Achar min e máx 56 a2 Achar min e máx 78 b3 min x max 56 a4 min x max 78 b > conclusão 2 x 25 e 6 achar 2 max 5678 cd7 e 8 achar 2 min 5678 ef9 e 10 min x max 2 vezes 5678 gh > conclusão 4 x 4

UFRJ / COPPE / PEE / CPE786 – Slide 162 – José Gabriel R. C. Gomes

4. Circuitos do Processador

São destacados na Figura 14 (Artyomov2006):

1. Pixel 4T Photogate

2. Chaves SW1 – SW4

3. Quatro células WTA (na figura só vemos uma)Q ( g )

4. Comparadores com threshold variável + appropriately switched inputs

- Faixa de tensões de entrada: 0 V a 1.3 V

- Limiar variável: 15 mV a 300 mV

- Limiar maior em torno de zero (não-uniformidade em torno de 50%)

UFRJ / COPPE / PEE / CPE786 – Slide 163 – José Gabriel R. C. Gomes

4.1. Célula WTA em Modo de Tensão

Ver N. Donckers et al., 1999.

UFRJ / COPPE / PEE / CPE786 – Slide 164 – José Gabriel R. C. Gomes

5. Resultados e Conclusões

APS 32 x 32 pixels, processo 0.35 um 4M 2P n-well TSMC CMOS (pela MOSIS)

Pixel: photogate 4T 7 um x 7 um 31% FF

li ã 3 3 0 30 Alimentação 3.3V; 70 mW a 30 Hz

Chip 2.8 mm x 3 mm

Leitura: 29 uV/elétron; FPN 0.11%

Conversor A/D deixado de fora

T d ã l t d 4 8 12 8 MSE Taxa de compressão relatada: 4.8 a 12.8, sem MSE

Ver Figuras 16 e 17 (Artyomov2006)

UFRJ / COPPE / PEE / CPE786 – Slide 165 – José Gabriel R. C. Gomes

5. Resultados e Conclusões

Imagens centrais da Figura 17 (Artyomov2006):

Resultado da divisão da imagem esquerda em blocos

Partes com intensidade uniforme não são divididos

Partes com detalhes são quase sempre divididas (falta de CDS no circuito computacional?)q p ( p )

Proposta: “first implementation of adaptive multiresolution sensor”

UFRJ / COPPE / PEE / CPE786 – Slide 166 – José Gabriel R. C. Gomes

Referências

Evgeny Artyomov and Orly Yadid-Pecht, Adaptive Multiple-Resolution CMOS Active Pixel Sensor, IEEE Trans. Circuits and Systems I: Regular Papers, vol. 53, no. 10, pp. 2178-2186, Out. 2006.

N Donckers et al Design of complementary low power CMOS architecture for loser take all and N. Donckers et al., Design of complementary low-power CMOS architecture for loser-take-all and winner-take-all, in Proc. Int. Conf. Microeletron. Neural, Fuzzy, and Bio-Inspired Syst., Los Alamitos, CA, 1999, pp. 360-365.

UFRJ / COPPE / PEE / CPE786 – Slide 167 – José Gabriel R. C. Gomes

Aula #15 – Múltipla Resolução e Wavelets

Lin et al., 2008 – Decomposição em , p çMúltiplos Níveis Filtragem Passa-Baixas e Filtragem Passa-Altas

Decomposição em Sub-Bandas

Wavelet – Base de Haar

UFRJ / COPPE / PEE / CPE786 – Slide 169 – José Gabriel R. C. Gomes

Decomposição em Sub-Bandasp ç

“Crianças” e “Árvores de Zeros”:

Embedded Zero-Tree Wavelet Coding (EZW – Shapiro, 1993) > SPIHT (1996)

UFRJ / COPPE / PEE / CPE786 – Slide 170 – José Gabriel R. C. Gomes

g ( p , ) ( )

Predição ao invés de Waveletsç

Substituir predição pelo uso de wavelets 9/7 e 5/3

Ver Figuras 2 e 3 do artigo (Lin 2008) Ver Figuras 2 e 3 do artigo (Lin, 2008)

Ver Tabela I do artigo (Lin, 2008)

UFRJ / COPPE / PEE / CPE786 – Slide 171 – José Gabriel R. C. Gomes

Projeto do Sensor CMOSj

Projeto do pixel – a capacitores chaveados

Cálculo de erros (residuais) combinado com APS ver Figura 5 do artigo (Lin 2008) Cálculo de erros (residuais) combinado com APS – ver Figura 5 do artigo (Lin, 2008)

Em cada pixel: 14 transistores e 4 capacitores

UFRJ / COPPE / PEE / CPE786 – Slide 172 – José Gabriel R. C. Gomes

Pixel APS com Cálculo de Residuais

Figura 5 do artigo (Lin 2008)

UFRJ / COPPE / PEE / CPE786 – Slide 173 – José Gabriel R. C. Gomes

Figura 5 do artigo (Lin, 2008)

Erro de Predição – Precisão do Cálculoç

UFRJ / COPPE / PEE / CPE786 – Slide 174 – José Gabriel R. C. Gomes

Resultados de Testes do Sensor APS 33 x 25 pixels, processo 0.5 um 3M 2P CMOS

Pixel: 3T 69 um x 69 um 20.7% FF

Alimentação: 0 25 mW a 30 Hz Alimentação: 0.25 mW a 30 Hz

Chip aproximadamente 2.3 mm x 2.3 mm

Leitura: 0.36 uV/elétron; FPN 0.7%

Codificação SPIHT não-implementada

Taxa de compressão relatada: PSNR acima de 38 dB, sem taxa de bits informada

Resultados: ver Figuras 11 e 13 Argumentam PSNR pelo menos igual a 38 dB já com Resultados: ver Figuras 11 e 13 . Argumentam PSNR pelo menos igual a 38 dB já com codificação SPIHT.

Aplicação do CDS com imagens de teste

UFRJ / COPPE / PEE / CPE786 – Slide 175 – José Gabriel R. C. Gomes

Imageador CMOS APS com T f d S á lTransformada Separável

(Chi et al 2009)(Chi et al., 2009)

Implementação do Circuitop ç

Ver Figura 3 do artigo (Chi 2009)

UFRJ / COPPE / PEE / CPE786 – Slide 177 – José Gabriel R. C. Gomes

Ver Figura 3 do artigo (Chi, 2009)

Multiplicadores a Capacitor Chaveadop p

Funcionamento baseado em H1 H2 S1 e S2

UFRJ / COPPE / PEE / CPE786 – Slide 178 – José Gabriel R. C. Gomes

Funcionamento baseado em H1, H2, S1 e S2.

Resultados e Conclusões

Características do chip: Características do chip:

- 0.5 um CMOS 3M 2P

- Área do chip: 3 mm x 3 mm

M t i 128 128 i l 17 17 40% FF- Matriz 128 x 128, pixel 17 um x 17 um com 40% FF

- Alimentação: 3.3 V

Compressão através de wavelets (ver Figura 5 do artigo) ou através de Compressive Sensing (ver Figura 6 do artigo)

UFRJ / COPPE / PEE / CPE786 – Slide 179 – José Gabriel R. C. Gomes

Referências

Zhiqiang Lin et al., A CMOS Image Sensor for Multi-Level Focal Plane Image Decomposition, IEEE Trans. Circuits and Systems I: Regular Papers, vol. 55, no. 9, pp. 2561-2572, Out. 2008.

Yu M. Chi et al., Na Active Pixel CMOS Separable Transfom Image Sensor, em Proc. IEEE Int. Symp. Circuits and Systems, Taipei, Taiwan, Maio de 2009, pp. 1281-1284.

UFRJ / COPPE / PEE / CPE786 – Slide 180 – José Gabriel R. C. Gomes

Lista de Tópicos para Projeto Final da Disciplina

Lista de Tópicos para Projetop p j Estudo de células alternativas para captura (1.75 T; 2 T) – Bruno Pixel logarítmico e faixa dinâmica estendida – Victor Conversão A/D no plano focal e dentro do pixel Detecção e estimação de movimento no plano focal

C ã d i t l f l Compensação de movimento no plano focal Reconhecimento de padrões no plano focal Câmeras com auto-calibração espacial Registro de pixels estéreo (stereo-matching) no plano focal - Lúcio Registro de pixels estéreo (stereo matching) no plano focal Lúcio Demosaicking e outros algoritmos para processamento de cor (AWB) no plano focal – Diego,

Alexandre Conversão A/D sigma-delta espacial no plano focal DPCM no plano focal – mais blocos e análise de efeitos de erros de fabricação Quantização vetorial no plano focal – implementar ECVQ Quantização vetorial no plano focal – implementar IVQ Representação hierárquica de uma imagem no plano focal (múltiplas resoluções) Representação hierárquica de uma imagem no plano focal (múltiplas resoluções) Decomposição em sub-bandas no plano focal e codificação SPIHT Wavelets no plano focal – Diego Aferição do desempenho de imageadores – Ricardo

UFRJ / COPPE / PEE / CPE786 – Slide 182 – José Gabriel R. C. Gomes

ç p g

Aula #16 – Estimação de Movimento

Fluxo Ópticop

A

UFRJ / COPPE / PEE / CPE786 – Slide 184 – José Gabriel R. C. Gomes

Referências

S. Mehta e R. Etienne-Cummings, A simplified normal optical flow measurement CMOS camera, IEEE Trans. Circuits and Systems I: Regular Papers, vol. 53, no. 6, pp. 1223-1234, Junho de 20062006.

UFRJ / COPPE / PEE / CPE786 – Slide 185 – José Gabriel R. C. Gomes

Aula #17 – AER e DPS

(Representação por Endereço de Eventos e Digital Pixel Sensor)Digital Pixel Sensor)

1. Representação por Endereço de p ç p çEventos (AER)

Pixel baseado em tempo (modulação por pulsos ou pixel PM)

Para outras referências sobre este assunto: A. N. Belbachir (Editor), Smart Cameras. Ed. Springer, 2010.

UFRJ / COPPE / PEE / CPE786 – Slide 187 – José Gabriel R. C. Gomes

AER: Sensor Digital “Biomórfico”g

Ver artigo Culurciello et al., 2003. Ver artigo Culurciello et al., 2003.

Elementos:

- “Engenharia Reversa sobre Sistema Biológico”

- Canal de Comunicações AE

- Geração de Eventos (com Baixo Consumo de Energia)

- Comunicação de EventosComunicação de Eventos

- Operação do Imageador (interface com o computador)

- Reconstrução de Imagens

- Características do Chip

UFRJ / COPPE / PEE / CPE786 – Slide 188 – José Gabriel R. C. Gomes

1.1. Canal de Comunicações AEç

UFRJ / COPPE / PEE / CPE786 – Slide 189 – José Gabriel R. C. Gomes

1.2. Geração de Eventosç

UFRJ / COPPE / PEE / CPE786 – Slide 190 – José Gabriel R. C. Gomes

1.3. Comunicação de Eventosç

UFRJ / COPPE / PEE / CPE786 – Slide 191 – José Gabriel R. C. Gomes

1.4. Operação do Imageadorp ç g Circuitos para arbitragem de linha e de coluna (Figura 8 do artigo);

Diagrama de tempo para arbitragem da matriz inteira (Figura 9);

Consumo dos circuitos analógicos em torno de 100 uW, podendo cair para valores inferiores a 10 uW para situações em que o ambiente é pouco iluminado;

Análise dos transistores M2, M3, M4 e M5 em separado (Figura 10);

Frequência de disparos do imageador completo;

Análise de fontes de ruído (descasamento de tamanho 6.4%, ruído elétrico 0.15%, arbitragem 5%, crosstalk 3.5% a 35%, ruído de leitura 25%).

UFRJ / COPPE / PEE / CPE786 – Slide 192 – José Gabriel R. C. Gomes

1.5. Reconstrução de Imagensç g

Conversão de intervalos entre disparos de volta para intensidade luminosa, levando em conta que a foto-corrente é diretamente proporcional à frequência dos disparos;

Histogramas;

Ampla faixa dinâmica e display em escala logarítmica (Figura 13 do artigo);

4 800 t t li ã it á id f it d íd d fi i ã d 4.800 eventos: atualização muito rápida, mas aparecem efeitos de ruído na definição do instante exato do disparo (Figura 14)

1.000.000 eventos: atualização mais lenta. O ruído temporal é atenuado, mas o FPN se torna visivel – solução com memória analógica e circuito a capacitores chaveados a ser publicada no futuro? (p. 288)

UFRJ / COPPE / PEE / CPE786 – Slide 193 – José Gabriel R. C. Gomes

1.6. Características do Chipp

Ano publicação: 2003 Ano publicação: 2003

Processo 0.6 um 3M CMOS

Pixel: 32 um x 30 um com 14% FF

Tamanho da matriz: 80 x 60 pixels

Faixa dinâmica: 48.9 dB a 30 fps

FPN: 4%FPN: 4%

Potência: 3.4 mW (digital, a 0.1 mW/cm2) e 10 uW (analógica, a 0.1 mW/cm2)

Taxa máxima de atualização por pixel: 8300 amostras por segundo

UFRJ / COPPE / PEE / CPE786 – Slide 194 – José Gabriel R. C. Gomes

2. Digital Pixel Sensor (DPS)g ( ) Ver artigo Kleinfelder et al., 2001.

Elementos:

- Conversor A/D com rampaConversor A/D com rampa

- Pixel com photogate, comparador e memória dinâmica de 3 bits (37 transistores)

- Diagrama de blocos do sensor, ilustrando arranjo com 2 x 2 pixels

- Polarização do comparador com desligamento para economia de energia

- Modos de imageamento

- Quadro únicoQuadro único- CDS- Vários quadros em uma exposição (múltiplos quadros)- Alta velocidade contínua, com sobreposição entre integração e leitura

UFRJ / COPPE / PEE / CPE786 – Slide 195 – José Gabriel R. C. Gomes

2.1. Pixel com Comparador e Memóriap

UFRJ / COPPE / PEE / CPE786 – Slide 196 – José Gabriel R. C. Gomes

2.2. Polarização do Comparadorç p

Para temporização deste circuito, ver Figura 7 do artigo.

UFRJ / COPPE / PEE / CPE786 – Slide 197 – José Gabriel R. C. Gomes

2.3. Características do Chipp

Ano publicação: 2001 Processo 0.18 um 5M CMOS

Pi l 9 4 9 4 15% FF 37 t i t d t t MOS h t t Pixel: 9.4 um x 9.4 um com 15% FF; 37 transistores; detector nMOS photogate Tamanho da matriz: 352 x 288 pixels (CIF), tamanho do die: 5 mm x 5 mm Leitura: 64 bits a 167 MHz; taxa de dados de saída máxima em torno de 1.33 GB/s Conversor A/D: 8 bits, conversão em 25 us Conversor A/D: 8 bits, conversão em 25 us FPN: 0.027% com CDS Ruído temporal: 0.15% Potência: 50 mW @ 10.000 quadros por segundo Eficiência quântica: 13.6% Ganho de conversão: 13.1 uV/elétron Sensibilidade: 0.107 V/lux.s

UFRJ / COPPE / PEE / CPE786 – Slide 198 – José Gabriel R. C. Gomes

Referências

E. Culurciello, R. Etienne-Cummings e K. A. Boahen. A biomorphic digital image sensor. IEEE J. Solid-State Circuits, vol. 38, no. 2, pp. 281-294, Fevereiro de 2003.

S. Kleinfelder et al. A 10000 frames/s CMOS digital pixel sensor. IEEE J. Solid-State Circuits, vol. 36, no. 12, pp. 2049-2059, Dezembro de 2001.

UFRJ / COPPE / PEE / CPE786 – Slide 199 – José Gabriel R. C. Gomes

Aula #18 – Compressive Sensing

Referências

R. Baraniuk, ...

D D h D. Donoho, ...

V. Goyal, ...

UFRJ / COPPE / PEE / CPE786 – Slide 201 – José Gabriel R. C. Gomes

Aula #19 – Reconhecimento de Padrões no Plano Focal

Referências

G. L. Cembrano et al., A 1000 FPS at 128 x 128 vision processor with 8-bit digitzed I/O, IEEE J. Solid-State Circuits, vol. 39, no. 7, pp. 1044-1055, Julho 2004.

(Palestra) C. M. Giraldo, On the architectural design and applications of CMOS vision systems, palestra apresentada em IEEE CAS Workshop Image Sensors 2009, Rio de Janeiro & Belo Horizonte, Novembro 2009.

A. Rodríguez-Vázquez et al., ACE16k: the third generation of mixed-signal SIMD-CNN ACE chips toward VSoCs, IEEE Trans. Circuits and Systems I: Regular Papers, vol. 51, n. 5, pp. 851-863, Maio 2004.

T. Roska e L. O. Chua, The CNN universal machine: na analogic array computer, IEEE Trans. Circuits and Systems II: Analog and Digital Signal Processing, vol. 40, no. 3, pp. 163-173, Março 19931993.

UFRJ / COPPE / PEE / CPE786 – Slide 203 – José Gabriel R. C. Gomes

Aula #20 – Testes de ÓSensores Ópticos

UFRJ / COPPE / PEE / CPE786 – Slide 205 – José Gabriel R. C. Gomes

UFRJ / COPPE / PEE / CPE786 – Slide 206 – José Gabriel R. C. Gomes

UFRJ / COPPE / PEE / CPE786 – Slide 207 – José Gabriel R. C. Gomes

UFRJ / COPPE / PEE / CPE786 – Slide 208 – José Gabriel R. C. Gomes

UFRJ / COPPE / PEE / CPE786 – Slide 209 – José Gabriel R. C. Gomes

UFRJ / COPPE / PEE / CPE786 – Slide 210 – José Gabriel R. C. Gomes

UFRJ / COPPE / PEE / CPE786 – Slide 211 – José Gabriel R. C. Gomes

UFRJ / COPPE / PEE / CPE786 – Slide 212 – José Gabriel R. C. Gomes

Referências

Gerald C. Holst, Electro-Optical Imaging System Performance, Quinta Edição, JCD Publishing SPIE Press, 2008.

UFRJ / COPPE / PEE / CPE786 – Slide 213 – José Gabriel R. C. Gomes

ApêndicesApêndices

A. Implementação p çRápida de ECVQ

Programa Básicogclear all; close all; S = 0.01; BKJ = [];

for s = 1:400,

lambda = S*(s-1);randn('state',0); rand('state',0); M = 2; N = 800; K = 8; e = 0.5;X = randn(M,N);Y = 0.5*randn(M,K);l = log2(K)*ones(1,size(Y,2));F 200; BK zeros(F 4);F = 200; BK = zeros(F,4);

for i=1:F,% PartitionJ = 0; for n=1:N, j = sum((repmat(X(:,n),1,size(Y,2)) - Y).^2,1) + lambda*l;

k(n) = min(find(j==min(j))); J = J + min(j); end; J = J/N;% Centroid% Centroidp = zeros(K,1); Y = zeros(size(Y)); for n=1:N, Y(:,k(n)) = Y(:,k(n)) + X(:,n);

p(k(n)) = p(k(n)) + 1; end;for j=1:K, if p(j)~=0, Y(:,j) = Y(:,j)/p(j); end; end;% Cost EvaluationD = 0; for n=1:N, D = D + sum((X(:,n)-Y(:,k(n))).^2); end; D = D/N;Y = Y(:,find(p~=0)); p = p(find(p~=0));p p p pp = p/sum(p); H = -sum(p.*log2(p)); BK(i,:) = [D H D+lambda*H J];% Codeword Length Updatel = HuffLen(p)';

end;

BKJ = [BKJ ; [lambda D H D+lambda*H size(Y,2)]]; [s lambda D H D+lambda*H size(Y,2)]

end;

plot(BKJ(:,3),BKJ(:,2),'k.'); grid on; xlabel('H (bits per vector)'); ylabel('D (MSE)');

save Aula2B;

UFRJ / COPPE / PEE / CPE786 – Slide 216 – José Gabriel R. C. Gomes

Tempo de Execuçãop ç

Programa Básico: 48 minutos

Programa Básico Modificado (XYtoYP): 28 minutos

Implementação MSVC / MEX Debug: 35 segundos

Implementação MSVC / MEX Release: 22 segundos

Implementação MEX –setup: 23 segundos

UFRJ / COPPE / PEE / CPE786 – Slide 217 – José Gabriel R. C. Gomes

Programa Básicogclear all; close all; S = 0.01; BKJ = [];

for s = 1:400,

lambda = S*(s-1);randn('state',0); rand('state',0); M = 2; N = 800; K = 8; e = 0.5;X = randn(M,N);Y = 0.5*randn(M,K);l = log2(K)*ones(1,size(Y,2));F 200; BK zeros(F 4);F = 200; BK = zeros(F,4);

for i=1:F,% PartitionJ = 0; for n=1:N, j = sum((repmat(X(:,n),1,size(Y,2)) - Y).^2,1) + lambda*l;

k(n) = min(find(j==min(j))); J = J + min(j); end; J = J/N;% Centroid% Centroidp = zeros(K,1); Y = zeros(size(Y)); for n=1:N, Y(:,k(n)) = Y(:,k(n)) + X(:,n);

p(k(n)) = p(k(n)) + 1; end;for j=1:K, if p(j)~=0, Y(:,j) = Y(:,j)/p(j); end; end;% Cost EvaluationD = 0; for n=1:N, D = D + sum((X(:,n)-Y(:,k(n))).^2); end; D = D/N;Y = Y(:,find(p~=0)); p = p(find(p~=0));p p p pp = p/sum(p); H = -sum(p.*log2(p)); BK(i,:) = [D H D+lambda*H J];% Codeword Length Updatel = HuffLen(p)';

end;

BKJ = [BKJ ; [lambda D H D+lambda*H size(Y,2)]]; [s lambda D H D+lambda*H size(Y,2)]

end;

plot(BKJ(:,3),BKJ(:,2),'k.'); grid on; xlabel('H (bits per vector)'); ylabel('D (MSE)');

save Aula2B;

UFRJ / COPPE / PEE / CPE786 – Slide 218 – José Gabriel R. C. Gomes

Programa Básicog% PartitionJ = 0; for n=1:N for n=1:N,

j = sum((repmat(X(:,n),1,size(Y,2)) - Y).^2,1) + lambda*l; k(n) = min(find(j==min(j))); J = J + min(j);

end; J = J/N;% Centroidp = zeros(K,1); Y = zeros(size(Y)); f 1 N for n=1:N,

Y(:,k(n)) = Y(:,k(n)) + X(:,n); p(k(n)) = p(k(n)) + 1;

end;for j=1:K for j=1:K,

if p(j)~=0, Y(:,j) = Y(:,j)/p(j); end; end;% Cost EvaluationD = 0; for n=1:N, D = D + sum((X(:,n)-Y(:,k(n))).^2); end; D = D/N;Y = Y(:,find(p~=0)); p = p(find(p~=0));p = p/sum(p); H = -sum(p.*log2(p)); BK(i,:) = [D H D+lambda*H J];% Codeword Length Updatel = HuffLen(p)';

UFRJ / COPPE / PEE / CPE786 – Slide 219 – José Gabriel R. C. Gomes

Programa Básico Modificado (XYltoYp)g ( p)

function [Yout,p] = XYltoYp(X,Yin,l,lambda);

p = zeros(size(Yin,2),1); Y = Yin; Ynew = zeros(size(Y));for n=1:size(X,2),

% Partitionj = sum((repmat(X(:,n),1,size(Y,2)) - Y).^2,1) + lambda*l; k = min(find(j==min(j))); % C t id% CentroidYnew(:,k) = Ynew(:,k) + X(:,n);p(k) = p(k) + 1;

end; for j=1:size(Yin 2) for j=1:size(Yin,2),

if p(j)~=0, Yout(:,j) = Ynew(:,j)/p(j); end; end;

UFRJ / COPPE / PEE / CPE786 – Slide 220 – José Gabriel R. C. Gomes

Programa Básico Modificado (XYltoYpD)g ( p )

function [Yout,p,D] = XYltoYpD(X,Yin,l,lambda);

p = zeros(size(Yin,2),1); Y = Yin; Ynew = zeros(size(Y)); D = 0;for n=1:size(X 2) for n=1:size(X,2),

% Partitionj = sum((repmat(X(:,n),1,size(Y,2)) - Y).^2,1) + lambda*l; k = min(find(j==min(j))); D = D + sum((X(:,n)-Y(:,k)).^2);, , ;% CentroidYnew(:,k) = Ynew(:,k) + X(:,n);p(k) = p(k) + 1;

end; / i ( 2)D = D/size(X,2);

for j=1:size(Yin,2), if p(j)~=0, Yout(:,j) = Ynew(:,j)/p(j); end;

end;

UFRJ / COPPE / PEE / CPE786 – Slide 221 – José Gabriel R. C. Gomes

Programa Básico Modificadog

clear all; close all; S = 0.01; BKJ = [];

for s = 1:400,

lambda = S*(s-1);randn('state',0); rand('state',0); M = 2; N = 800; K = 8; e = 0.5;X = randn(M,N);Y = 0.5*randn(M,K);Y 0.5 randn(M,K);l = log2(K)*ones(1,size(Y,2));F = 200; BK = zeros(F,4);

for i=1:F-1,[Y,p] = XYltoYp(X,Y,l,lambda);Y = Y(:,find(p~=0)); p = p(find(p~=0));p = p/sum(p); % Codeword Length Updatel = HuffLen(p)';

end;

[ ] l ( l l bd )[Y,p,D] = XYltoYpD(X,Y,l,lambda);p = p(find(p~=0)); p = p/sum(p);H = -sum(p.*log2(p));

BKJ = [BKJ ; [lambda D H D+lambda*H size(Y,2)]]; [s lambda D H D+lambda*H size(Y,2)]

end;end;

plot(BKJ(:,3),BKJ(:,2),'k.'); grid on; xlabel('H (bits per vector)'); ylabel('D (MSE)');

save Aula3;

UFRJ / COPPE / PEE / CPE786 – Slide 222 – José Gabriel R. C. Gomes

Programa Básico Modificadog

UFRJ / COPPE / PEE / CPE786 – Slide 223 – José Gabriel R. C. Gomes

XYltoYp – Implementação MSVC / MEXp p ç// 070614 gabriel@pads.ufrj.br (from 040224 CoreECVQ2.cpp)// MATLAB Syntax is [Y,p] = XYltoYp_MF(X,Y,l,lambda);

#include <stdlib.h>#include <math h>#include <math.h>#include "mex.h"

void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[])

{// function [Yout,p] = XYltoYp_MF(X,Yin,l,lambda);

if (nrhs != 4) mexErrMsgTxt("4 input arguments required.");if (nlhs != 2) mexErrMsgTxt("2 output arguments required.");

// Getting input arguments

double *X, *Yin, *lambda, *l;X = mxGetPr(prhs[0]); Yin = mxGetPr(prhs[1]); l = mxGetPr(prhs[2]); lambda = mxGetPr(prhs[3]);X = mxGetPr(prhs[0]); Yin = mxGetPr(prhs[1]); l = mxGetPr(prhs[2]); lambda = mxGetPr(prhs[3]);

// Size definitions

const int *size_X, *size_Y;size_X = mxGetDimensions(prhs[0]); size_Y = mxGetDimensions(prhs[1]);int n_dimensions = size_X[0]; int n_elements = size_X[1]; int size_codebook = size_Y[1];

// Auxiliary stuff

int i, j, k, data_index, vector_index, codebook_index, best_index, offset;double e; double d; double J_min; double J;

// Getting output arguments

plhs[0] = mxCreateDoubleMatrix(n_dimensions,size_codebook,mxREAL);plhs[1] = mxCreateDoubleMatrix(1,size_codebook,mxREAL);double *Yout, *p; Yout = mxGetPr(plhs[0]); p = mxGetPr(plhs[1]);

// Main Code: ECVQ encode (evaluation of new cells and their density) ...

UFRJ / COPPE / PEE / CPE786 – Slide 224 – José Gabriel R. C. Gomes

XYltoYp – Implementação MSVC / MEXp p ç

// Main Code: ECVQ encode (evaluation of new cells and their density)// Main Code: ECVQ encode (evaluation of new cells and their density)

data_index=0; codebook_index=0;

// p = zeros(size(Yin,2),1); Y = Yin; Ynew = zeros(size(Y));

for (i=0 ; i<size_codebook ; i++) {{

p[i]=0.0;for (j=0 ; j<n_dimensions ; j++){

Yout[codebook_index]=0.0;codebook_index++;

}}}

// for n=1:size(X,2), ...

UFRJ / COPPE / PEE / CPE786 – Slide 225 – José Gabriel R. C. Gomes

XYltoYp – Implementação MSVC / MEXp p ç// for n=1:size(X,2),

for (i=0 ; i<n_elements ; i++){

// j = sum((repmat(X(:,n),1,size(Y,2)) - Y).^2,1) + lambda*l; // k = min(find(j==min(j)));

vector_index=0; codebook_index=0;d = 0.0;for (k=0 ; k<n_dimensions ; k++){{

e = X[data_index+k]-Yin[codebook_index];d = d + e*e;codebook_index++;

}J_min = d + (*lambda)*l[vector_index];best_index = 0;vector index++;vector_index++;

for (j=0 ; j<(size_codebook-1) ; j++){

d = 0.0;for (k=0 ; k<n_dimensions ; k++){

e = X[data index+k]-Yin[codebook index];e = X[data_index+k]-Yin[codebook_index];d = d + e*e;codebook_index++;

}J = d + (*lambda)*l[vector_index];if (J < J_min){

J min=J;J_min=J;best_index=vector_index;

}vector_index++;

}

// Ynew(:,k) = Ynew(:,k) + X(:,n);// p(k) = p(k) + 1;// p(k) = p(k) + 1;

UFRJ / COPPE / PEE / CPE786 – Slide 226 – José Gabriel R. C. Gomes

XYltoYp – Implementação MSVC / MEXp p ç

// Ynew(:,k) = Ynew(:,k) + X(:,n);// p(k) = p(k) + 1;

offset=best_index*n_dimensions;for (j=0 ; j<n_dimensions ; j++){

Yout[offset+j] = Yout[offset+j]+X[data_index];data_index++;}p[best_index]=p[best_index]+1.0;

}

// for j=1:size(Yin,2),// if p(j)~=0, Yout(:,j) = Ynew(:,j)/p(j); end;// end;

for (i=0 ; i<size_codebook ; i++) if (p[i]!=0) for (j=0 ; j<n_dimensions ; j++)Yout[i*n_dimensions+j] = Yout[i*n_dimensions+j]/p[i];

}

UFRJ / COPPE / PEE / CPE786 – Slide 227 – José Gabriel R. C. Gomes

XYltoYp – Implementação MSVC / MEXp p ç

UFRJ / COPPE / PEE / CPE786 – Slide 228 – José Gabriel R. C. Gomes

XYltoYp – Implementação MSVC / MEXp p ç

UFRJ / COPPE / PEE / CPE786 – Slide 229 – José Gabriel R. C. Gomes

XYltoYp – Implementação MSVC / MEXp p ç

UFRJ / COPPE / PEE / CPE786 – Slide 230 – José Gabriel R. C. Gomes

XYltoYp – Implementação MSVC / MEXp p ç

UFRJ / COPPE / PEE / CPE786 – Slide 231 – José Gabriel R. C. Gomes

XYltoYp – Implementação MSVC / MEXp p ç

UFRJ / COPPE / PEE / CPE786 – Slide 232 – José Gabriel R. C. Gomes

XYltoYp – Implementação MSVC / MEXp p ç

UFRJ / COPPE / PEE / CPE786 – Slide 233 – José Gabriel R. C. Gomes

XYltoYp – Implementação MSVC / MEXp p ç

UFRJ / COPPE / PEE / CPE786 – Slide 234 – José Gabriel R. C. Gomes

XYltoYp – Implementação MSVC / MEXp p ç

UFRJ / COPPE / PEE / CPE786 – Slide 235 – José Gabriel R. C. Gomes

XYltoYp – Implementação MSVC / MEXp p ç

UFRJ / COPPE / PEE / CPE786 – Slide 236 – José Gabriel R. C. Gomes

XYltoYp – Implementação MSVC / MEXp p ç

UFRJ / COPPE / PEE / CPE786 – Slide 237 – José Gabriel R. C. Gomes

XYltoYp – Implementação MSVC / MEXp p ç

UFRJ / COPPE / PEE / CPE786 – Slide 238 – José Gabriel R. C. Gomes

Programa Básico Modificadog

clear all; close all; S = 0.01; BKJ = [];

for s = 1:400,

lambda = S*(s-1);randn('state',0); rand('state',0); M = 2; N = 800; K = 8; e = 0.5;X = randn(M,N);Y = 0.5*randn(M,K);Y 0.5 randn(M,K);l = log2(K)*ones(1,size(Y,2));F = 200; BK = zeros(F,4);

for i=1:F-1,[Y,p] = XYltoYp_MF_Debug(X,Y,l,lambda);Y = Y(:,find(p~=0)); p = p(find(p~=0));p = p/sum(p); % Codeword Length Updatel = HuffLen(p);

end;

[ ] l ( l l bd )[Y,p,D] = XYltoYpD(X,Y,l,lambda);p = p(find(p~=0)); p = p/sum(p);H = -sum(p.*log2(p));

BKJ = [BKJ ; [lambda D H D+lambda*H size(Y,2)]]; % [s lambda D H D+lambda*H size(Y,2)]

end;end;

plot(BKJ(:,3),BKJ(:,2),'k.'); grid on; xlabel('H (bits per vector)'); ylabel('D (MSE)');

save Aula3B;

UFRJ / COPPE / PEE / CPE786 – Slide 239 – José Gabriel R. C. Gomes

Programa Básico Modificadog

UFRJ / COPPE / PEE / CPE786 – Slide 240 – José Gabriel R. C. Gomes

Modo Release

UFRJ / COPPE / PEE / CPE786 – Slide 241 – José Gabriel R. C. Gomes

Modo Release

UFRJ / COPPE / PEE / CPE786 – Slide 242 – José Gabriel R. C. Gomes

Programa Básico Modificadog

clear all; close all; S = 0.01; BKJ = [];

for s = 1:400,

lambda = S*(s-1);randn('state',0); rand('state',0); M = 2; N = 800; K = 8; e = 0.5;X = randn(M,N);Y = 0.5*randn(M,K);Y 0.5 randn(M,K);l = log2(K)*ones(1,size(Y,2));F = 200; BK = zeros(F,4);

for i=1:F-1,[Y,p] = XYltoYp_MF(X,Y,l,lambda);Y = Y(:,find(p~=0)); p = p(find(p~=0));p = p/sum(p); % Codeword Length Updatel = HuffLen(p);

end;

[ ] l ( l l bd )[Y,p,D] = XYltoYpD(X,Y,l,lambda);p = p(find(p~=0)); p = p/sum(p);H = -sum(p.*log2(p));

BKJ = [BKJ ; [lambda D H D+lambda*H size(Y,2)]]; [s lambda D H D+lambda*H size(Y,2)]

end;end;

plot(BKJ(:,3),BKJ(:,2),'k.'); grid on; xlabel('H (bits per vector)'); ylabel('D (MSE)');

save Aula3C;

UFRJ / COPPE / PEE / CPE786 – Slide 243 – José Gabriel R. C. Gomes

Programa Básico Modificadog

UFRJ / COPPE / PEE / CPE786 – Slide 244 – José Gabriel R. C. Gomes

mex XYltoYp_MF_MATLAB.cpp;p ppmex –setup;mex XYltoYp_MF_MATLAB.cpp;

clear all; close all; S = 0.01; BKJ = [];

for s = 1:400,

lambda = S*(s-1);randn('state',0); rand('state',0); M = 2; N = 800; K = 8; e = 0.5;

d ( )X = randn(M,N);Y = 0.5*randn(M,K);l = log2(K)*ones(1,size(Y,2));F = 200; BK = zeros(F,4);

for i=1:F-1,[Y p] XYltoYp MF MATLAB(X Y l lambda);[Y,p] = XYltoYp_MF_MATLAB(X,Y,l,lambda);Y = Y(:,find(p~=0)); p = p(find(p~=0));p = p/sum(p); % Codeword Length Updatel = HuffLen(p);

end;end;

[Y,p,D] = XYltoYpD(X,Y,l,lambda);p = p(find(p~=0)); p = p/sum(p);H = -sum(p.*log2(p));

BKJ = [BKJ ; [lambda D H D+lambda*H size(Y,2)]]; % [s lambda D H D+lambda*H size(Y,2)]; , ; ,

end;

plot(BKJ(:,3),BKJ(:,2),'k.'); grid on; xlabel('H (bits per vector)'); ylabel('D (MSE)');

save Aula3D;

UFRJ / COPPE / PEE / CPE786 – Slide 245 – José Gabriel R. C. Gomes

B FSVQB. FSVQ

Exemplop

• Executar FSVQ.m

UFRJ / COPPE / PEE / CPE786 – Slide 247 – José Gabriel R. C. Gomes