• Nenhum resultado encontrado

PSI Dispositivos e formatos para imagens

N/A
N/A
Protected

Academic year: 2021

Share "PSI Dispositivos e formatos para imagens"

Copied!
6
0
0

Texto

(1)

1

PSI-5796 2004

Hae Yong Kim [email protected]

http://www.lps.usp.br/~hae

Tópicos a serem abordados:

1. Dispositivos e formatos para imagens; 2. Halftoning;

2.1. Difusão de erro; 2.2. Ordered dithering;

2

1. Dispositivos e formatos para imagens

Em níveis de cinza ou colorido.

Número de bits por pixel (Ex: 1, 4, 8, 16, 24, 32). Com ou sem palette.

Número de colunas e número de linhas. Resolução (pixels/polegada).

Modelo de cor aditivo ou subtrativo.

Exemplos:

Monitor de computador CRT: Colorido.

4, 8, 16 ou 24 bits por pixel.

Com palette: 4 bits (16 cores) e 8 bits (256 cores).

Sem palette: 16 bits (5 bits ou 32 níveis por cor) e 24 bits (8 bits ou 256 níveis por cor).

640×480, 800×600, 1024×764 ou 1280×1024 pixels. Modelo de cor aditivo.

Monitor de notebook (cristal líquido): Colorido.

16 ou 32 bits por pixel. Sem palette.

1024×764 pixels (800×600 por interpolação). Modelo de cor aditivo.

Impressora laser: Preto e branco. 1 bit por pixel.

Impressora jato de tinta: Colorido.

1 bit por pixel.

Modelo de cor subtrativo. Imagem BMP, TIF e TGA:

Colorido ou cinza.

Não compactado ou compactado sem perdas. Vários escolhas de bits por pixel.

Com ou sem palette. Imagem GIF:

Colorido.

8 bits por pixel com palette. Compactado sem perdas.

(2)

5

Imagem PNG: Colorido.

Várias escolhas de bits/pixel. Compactado sem perdas.

Imagem JPG ou JPEG (antigo e 2000): Colorido.

Compactado com perdas. Imagem JBIG:

Binário.

Compactado com perdas.

6

1. Como é possível mostrar fotografia em níveis de cinzas numa impressora laser?

2. Como é possível mostrar fotografia colorida numa impressora jato de tinta?

3. Como escolher o melhor palette para imagem GIF?

LENNA.TGA original Thresholding

//Thresh.cpp #include <imgall>

int main(int argc, char** argv)

{ if (argc!=3) erro("Thresh ent.tga sai.bmp"); IMGGRY ent; IMGBIN sai;

le(ent,argv[1]); sai=ent;

imp(sai,argv[2]); }

(3)

9

2. Halftoning

Dada uma imagem em níveis de cinza G com valores reais entre 0 e 1, construir uma imagem binária B com valores 0 ou 1 tal que

) , ( ) , (l c G l c B

onde B( cl, ) é a média dos valores de B em torno do pixel (l,c).

10

Thresholding Ruído branco ±0,5

//NoiseB.cpp #include <imgall>

int main(int argc, char** argv)

{ if (argc!=3) erro("NoiseB ent.tga sai.bmp"); IMGGRY ent; IMGFLT a; IMGBIN sai;

le(ent,argv[1]); a=ent; mysrand(7);

for (int l=0; l<a.nl(); l++) for (int c=0; c<a.nc(); c++) a(l,c) += 1.0*myrand()-0.5; sai=a; imp(sai,argv[2]);

}

(4)

13

Ordered dithering clustered dots (meu programa)

Ordered dithering clustered dots (alchemy)

14 //DispersB.cpp

#include <imgall>

int main(int argc, char** argv) { if (argc!=3)

erro("DispersB ent.tga sai.bmp"); MATRIZ<int> D(8,8, 0, 32, 8, 40, 2, 34, 10, 42, 48, 16, 56, 24, 50, 18, 58, 26, 12, 44, 4, 36, 14, 46, 6, 38, 60, 28, 52, 20, 62, 30, 54, 22, 3, 35, 11, 43, 1, 33, 9, 41, 51, 19, 59, 27, 49, 17, 57, 25, 15, 47, 7, 39, 13, 45, 5, 37, 63, 31, 55, 23, 61, 29, 53, 21); IMGGRY ent; le(ent,argv[1]); IMGBIN sai(ent.nl(),ent.nc()); for (int l=0; l<ent.nl(); l++) for (int c=0; c<ent.nc(); c++) { int l2=l%8; int c2=c%8; if (ent(l,c)<4*D(l2,c2)+2) sai(l,c)=false; else sai(l,c)=true; } imp(sai,argv[2]); } //Clustered dots MATRIZ<int> D(8, 8, 1, 9, 23, 27, 31, 20, 6, 2, 8, 15, 38, 47, 38, 39, 14, 7, 22, 37, 52, 53, 54, 49, 40, 21, 30, 46, 60, 61, 62, 55, 41, 28, 26, 45, 59, 64, 63, 56, 42, 32, 17, 36, 51, 58, 57, 50, 33, 18, 11, 16, 35, 44, 43, 34, 13, 12, 3, 10, 24, 29, 25, 19, 5, 4);

(5)

17

Difusão de erro (Floyd and Steinberg)

Difusão de erro (Rogers)

18

Difusão de erro (Jarvis, Judice and Ninke)

Difusão de erro (Stucki)

2.2 Difusão de erro

//RogersB.cpp

#include <imgall>

int main(int argc, char** argv)

{ if (argc!=3)erro("RogersB ent.tga sai.bmp"); IMGGRY ent; IMGFLT a; IMGBIN sai;

double error;

le(ent,argv[1]); a=ent; sai.resize(a.nl(),a.nc()); for (int l=0; l<a.nl(); l++) for (int c=0; c<a.nc(); c++) { if (a(l,c)<0.5)

{ sai(l,c)=false; error=a(l,c); } else { sai(l,c)=true; error=a(l,c)-1; } a(l,c+1) += 3*error/8; a(l+1,c) += 3*error/8; a(l+1,c+1) += 2*error/8; } imp(sai,argv[2]); } ⎥⎦ ⎤ ⎢⎣ ⎡• × ⎥⎦ ⎤ ⎢⎣ ⎡ 2 3 3 8 1 Rogers ⎥⎦ ⎤ ⎢⎣ ⎡ • × ⎥⎦ ⎤ ⎢⎣ ⎡ 1 5 3 7 16 1

Floyd and Steinberg

⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ • × ⎥⎦ ⎤ ⎢⎣ ⎡ 1 3 5 3 1 3 5 7 5 3 5 7 48 1

Jarvis, Judice and Ninke

⎥ ⎥ ⎥ ⎦ ⎤ ⎢ ⎢ ⎢ ⎣ ⎡ • × ⎥⎦ ⎤ ⎢⎣ ⎡ 1 2 4 2 1 2 4 8 4 2 4 8 42 1 Stucki

(6)

21

LENNA.TGA original Difusão de erro (Floyd and Steinberg)

22

(1a) Input sample Ax (1b) Output sample Ay

(1c) To-be-processed Qx (1d) Ideal output Qy

(1e) Gaussian 2.8 PSNR 30.23dB (1f) 10-ID3 PSNR 34.75dB

(2a) Dispersed-dot OD (2b) PSNR 33.69 dB

Exercício:

Reduzir true color (24 bits/pixel) para 6 bits/pixel usando ordered dithering e difusão de erro.

Dada uma imagem halftone, como descobrir qual foi o método de halftoning usado?

Referências

Documentos relacionados

Recomendo também que, antes de fazer a compra, você verifique, com o auxílio das informações apresentadas no anexo “As safras”, se a colheita de determinado vinho é mais ou

Desde as impressora de folha solta digital, alimentação contínua e grandes formatos até o jato de tinta, impressoras de fotos e soluções de fluxo de trabalho, a Canon personaliza

Dependendo da suas necessidades e orçamento, você pode ficar com o Módulo de acabamento profissional all-in-one e empilhar, grampear, perfurar, criar livretos e fazer dobras em v;

Nesse sentido surgiu a Carta Brasileira do Esporte na Es- cola, que teve contribuicao de todos os segmentos envolvidos na realizaceo dos JEBs (dirigentes, professores, arbitros e

Para além dos exemplos abaixo, a nossa gama de reparações e equipamentos remanufaturados inclui mais de 10.000 unidades diferentes de controlo Bosch.. Produtos

O participante que tiver rompido o vínculo com a patrocinadora e que não esteja em gozo de benefício pelo plano poderá optar pela transferência do saldo de suas

Pela TABELA 3 notou-se que a coloração aparente dos corpos de água nos pontos de coleta da bacia hidrográfica do córrego Santa Helena variou de 5 a 20 uH, sendo valores iguais

Sendo assim este trabalho teve como objetivos avaliar os aspectos relacionados ao comportamento e bem-estar das aves, comparando o sistema de criação convencional (bateria de