Processamento de Imagens no Plano Focal -...
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 [email protected] (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