A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Imagem Digital Conceitos, Processamento e Análise 1.Imagem e funções 2.Imagem digital: amostragem, quantização e codificação 3.Re-amostragem de funções.

Apresentações semelhantes


Apresentação em tema: "Imagem Digital Conceitos, Processamento e Análise 1.Imagem e funções 2.Imagem digital: amostragem, quantização e codificação 3.Re-amostragem de funções."— Transcrição da apresentação:

1 Imagem Digital Conceitos, Processamento e Análise 1.Imagem e funções 2.Imagem digital: amostragem, quantização e codificação 3.Re-amostragem de funções Parte 1: Conceitos básicos

2 Imagem: Modelo Matemático: Função u v L L(u,v) Função

3 Imagem colorida R G B u v

4 Imagem coloridas como 3 canais de cor canal vermelho canal verde canal azul

5 Imagem Digital Amostragem, quantização e codificação

6 Amostragem, quantização e codificação de f(x) x f(x)f(x) amostra partição do eixo x

7 codificação = (3, 4, 5, 5, 4, 2, 2, 3, 5, 5, 4, 2) Amostragem, quantização e codificação de f(x) 0 1 2 3 4 5 6 x f(x)f(x) amostra quantizada

8 Anatomia das máquinas atuais

9 Câmeras atuais

10 Digitalização de Imagens Discretização espacial (amostragem)

11 Processos básicos Imagem de tons contínuos 64x54 Imagem amostrada amostragem 64x54 - 16 cores Imagem amostrada e quantizada quantização 55 2022234555 10091155 43427055 28762255 codificação 8*55, 1*20, 1*22, 1*23, …. Imagem amostrada, quantizada e codificada

12 Imagem Digital: Histogramas Uma outra maneira de ver a informação da imagem: probabilidade de ocorrência de um determinado valor, uso do intervalo [0,255], contraste,...

13 Histogramas de Imagem Colorida

14 Propriedades básicas de uma Imagem Digital

15 (a) aumento de resolução Problemas associados a re-amostragem de um sinal digital f(x) x f(x) função reconstruída pelo vizinho mais próximo função reconstruída por interpolação linear 0 1 2 3 4 5 6 função original

16 Re-amostragem de f(x) x f(x) função reconstruída pelo vizinho mais próximo função reconstruída por interpolação linear função original (b) redução de resolução 0 1 2 3 4 5 6

17 Freqüência de Amostragem x f(x) x

18 Parte 2 - Eliminação de ruídos e realce de arestas Aplicações da Transformada de Fourier Imagem Digital Conceitos, Processamento e Análise

19 Redução de ruídos Dada uma imagem I com um ruído n, reduza n o máximo que puder (preferencialmente elimine n completamente) sem alterar significativamente I. 20 dB significam

20 Dois tipos básicos de ruídos Ruído Gaussiano branco : processo estocástico de média zero, independente do tempo e dos espaço. é o mesmo processo estocástico que não varia no tempo. é uma variável aleatória com a distribuição:

21 Dois tipos básicos de ruídos Ruído impulsivo: causado por erro de transmissão, CCDs defeituosos, etc... Também chamado de pico e de sal e pimenta. são v.a. uniformemente distribuídas i min, i max, e l são parâmetos de controle da quantidade de ruídos.

22 Exemplo de ruído Gaussiano ( =5) e Impulsivo ( =0.99)

23

24 Imagem com ruído impulsivo 223204 223 171120 1812050120 171 120 116120 171 138120 5012097120 171 120 187120 242 172120 171 120 179120 167120171 120 235120 171 120 23512076175120 171 120 171 120 123120 214120114 171120 143171 120 232120 198120 171 203171 205171 203 Uso da mediana I ij = mediana ij

25 Sinal com ruído

26 Suavização f h

27 Filtragem Gaussiana

28 Mascara ou Filtro ou:

29 Convolução

30 Ilustação da convolução

31 Ilustração da convolução

32 Discretização da Gaussiana 1D 0.1 0.2 0.3 -4-3-201234

33 Discretização da Gaussiana 2D

34 Separabilidade do filtro gaussiano 2072473813138 6290129234231 21117544126 2365875128112 21014112516858 130 117 129 125 90 88 129 93 92 185 113 84 93 145 207 151 66 18 107 84 111 154 140 130 117 129 125 90 88 129 93 92

35 Imagem filtrada com um filtro passa baixa

36 Arestas e cantos Locais de mudanças significativas na intensidade da imagem

37 Edgedels = edge elements

38 Tipos de arestas degrau(step)rampa(ramp) cume(roof)impulso(spike)

39 Gráfico sem e com ruído

40 Derivadas e arestas f(x)f(x)+n(x)| f'(x)+n'(x) |f"(x)+n"(x)

41 Série de Taylor Com x=1, f(x)=f i e f(x+ x)=f i+1 Com x=-1, f(x)=f i e f(x+ x)=f i-1 (a) (b)

42 Aproximações para derivadas (a-b) (a+b) f(x) x f i-1 fifi f i+1 i+1 i i-1

43 Em 2D Gradiente Laplaciano Convolution Kernels

44 Finite differences Khurram Hassan-Shafique

45 Classical Operators Prewitts Operator Smooth Differentiate Khurram Hassan-Shafique

46 Classical Operators Sobels Operator Smooth Differentiate Khurram Hassan-Shafique

47 Sobel Edge Detector Detecting Edges in Image Image I Threshold Edges Khurram Hassan-Shafique

48 Sobel Edge Detector Khurram Hassan-Shafique

49 Sobel Edge Detector Khurram Hassan-Shafique

50 Filtros de realce de bordas Laplaciano VerticalHorizontal Roberts Sobel Gradiente

51 Imagem filtrada com um filtro passa alta

52 Filtragem LoG do Juiz Virtual filtro gaussiano filtro laplaciano

53 Parte 3 - Processamentos apenas no espaço das cores Imagem Digital Conceitos, Processamento e Análise

54 Correção gama Ajustes de contraste e iluminação

55 Correção gama

56 Probabilidade 01 x DF(x) x0x0 x1x1 Função de densidade de probabilidade 01 x CDF(x) 1 Função de densidade acumulada de probabilidade

57 Mudança de variavel y = f (x) 01 x y=f(x) 1 01 y 1 01 x DF(y) 1 Transformaçã o monotônica e limitada ao intervalo [0,1]

58 Equalização de Histograma 0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1234567891011

59 Equalização do histograma

60 Tons de cinza e negativo L x,y = 0.299R x,y + 0.587G x,y + 0.114B x,y tons de cinza L x,y = 255 - L x,y

61 Outros exemplos com o PaintShopPro tm

62 Quantização de cores Quantização de 24 para 8 bits

63 A qualidade depende da imagem

64 Corte mediano

65

66 HDRI (High Dynamic Range Image)

67 Resultado esperado da Q3 do T1

68 Parte 4 - Codificação e armazenamento de Imagens compressão e formatos de arquivos Imagem Digital Conceitos, Processamento e Análise

69 Organização de pixels num array no formato TGA (targa) bgra b g rabbar g 0 1 …... ar g w-1 x y unsigned char *bgra_vector; … offset=4*(w*y+x); blue = bgra_vector[offset]; green = bgra_vector[offset+1]; red = bgra_vector[offset+2]; alpha = bgra_vector[offset+3]; 0 1 2 h-1 3 Pixel (x,y)

70 Outra ordem no plano

71 Tipo Abstrato Imagem Image *imgCreate (int w, int h); void imgDestroy (Image *image); int imgGetWidth(Image * image); int imgGetHeight(Image * image); float * imgGetRGBData(Image * image); void imgSetPixel3fv(Image *image, int x, int y, float * color); void imgSetPixel3ubv(Image *image, int x, int y, unsigned char *color); void imgGetPixel3fv(Image *image, int x, int y, float *color); void imgGetPixel3ubv(Image *image, int x, int y, unsigned char *color); Image * imgReadBMP(char *filename); int imgWriteBMP(char *filename, Image * image); Image * imgCopy(Image * image); Image * imgGrey(Image * image); Image * imgResize(Image * img0, int w1, int h1); /*- implementação do tipo Imagem */ struct image_imp { int width; /* largura (width) em pixels */ int height; /* altura (height) em pixels */ float *buf; /* buffer RGB */ };

72 Arquivos Targa RGBA CabeçalhoPixels (bgra,bgra, …,bgra) /* escreve o cabecalho */ putc(byteZero,filePtr); /* no. de caracteres no campo de id da imagem */ putc(byteZero,filePtr); /* imagem nao tem palheta de cores */ putc(imageType,filePtr); /* = 2 -> imagem "true color" (RGBA) */ putuint(shortZero,filePtr);/* info sobre a tabela de cores (inexistente) */ putuint(shortZero,filePtr); /* idem */ putc(byteZero,filePtr); /* idem */ putuint(shortZero,filePtr); /* =0 origem em x */ putuint(shortZero,filePtr); /* =0 origem em y */ putuint(img->width,filePtr); /* largura da imagem em pixels */ putuint(img->height,filePtr); /* altura da imagem em pixels */ putc(bitDepth,filePtr); /* numero de bits de um pixel */ putc(byteZero, filePtr); /* origem canto inf esquedo sem entrelacamento */ unsigned char imageType=2 /* RGB(A) sem compressão */ unsigned char bitDepth=32; /* 32 bits por pixel */ unsigned char byteZero=0; /* usado para escrever um byte zero no arquivo */ short int shortZero=0; /* usado para escrever um short int zero no arquivo */

73 Organização de pixels num array no formato PPM (o mais simples) 0001 02080706050304100911 012... 131214 w-1 151617 18... x y Pixel (x,y) unsigned char *rgb_vector; … offset=3*(w*y+x); red = rgb_vector[offset]; green = rgb_vector[offset+1]; blue = rgb_vector[offset+2]; 0 1 2 h-1 3...

74 Formato PPM File_signature "P6". White_space (blanks, TABs, CRs, LFs). Width, w, (ASCII decimal characters). White_space (blanks, TABs, CRs, LFs). Height, h, (ASCII decimal characters). White_space (blanks, TABs, CRs, LFs). Max_color, max, (ASCII decimal characters). White_space (blanks, TABs, CRs, LFs). Pixels, (3*w*h bytes rgb components of pixels) Comments from # to the end of line lines 70 characters

75 Formato PPM P6 # Created by Paint Shop Pro 358 539 255 =?:?A CE@EFAFGBGHCGHCGHB... exemplo

76 Gravação em PPM int ppm_write(int w, int h, unsigned char *rgb, char *file_name) { FILE *fp; fp = fopen(file_name, "wb"); if (fp == NULL) return 0; if (fprintf(fp, "P6\n%d %d\n255\n", w, h) <= 0) { fclose(fp); return 0; } if (fwrite(rgb, 3*w*h, 1, fp) != 1) { fclose(fp); return 0; } fclose(fp); return 1; }

77 Leitura em PPM int ppm_read(int *p_w, int *p_h, unsigned char **p_rgb, char *file_name) { FILE *fp; char line[80]; int rgb_size; int max; fp = fopen(file_name, "rb"); if (fp == NULL) { printf(Error reading %s",file_name); return 0;} fgets(line,80,fp); if(strcmp(line,"P6\n")) { printf(Wrong signature\n"); return 0; } while (fscanf( fp, " %d ", p_w ) != 1) fgets(line, 80, fp); while (fscanf( fp, " %d ", p_h ) != 1) fgets(line, 80, fp); while (fscanf( fp, " %d", &max ) != 1) fgets(line, 80, fp); fgetc(fp); rgb_size=3*(*p_w)*(*p_h); (*p_rgb) = (unsigned char *) calloc(rgb_size, 1); if ((*p_rgb) != NULL) fread( (*p_rgb), rgb_size, 1, fp ); fclose(fp); return 1; }

78 Programa Simples void main(void){ int w, h; // dimensões da imagem unsigned char *rgb; // bytes de rgb unsigned char r,g,b,grey; // componentes de cor int x,y; long int k; if (ppm_read(&w,&h,&rgb,"test_in.ppm")==0) return; for (y = 0; y < h; y++) { for (x = 0; x < w; x++) { k = 3*(y*w+x); r = rgb[k]; g = rgb[k+1]; b = rgb[k+2]; grey = (unsigned char)(0.3*r+0.6*g+0.1*b); rgb[k] = grey; rgb[k+1] = grey; rgb[k+2] = grey; } ppm_write(w, h, rgb, "test_out.ppm"); free(rgb); }

79 Arquivo BMP colocado para garantir múltiplo de 4 colocado para garantir múltiplo de 4 Organização dos pixels de uma imagem RGB no arquivo BMP

80 Microsoft Windows Bitmap - BMP Características Principais Mono, 4-bit, 8-bit, 24-bit Tipo de compressão: RLE / não comprimido Tamanho máximo: 64K x 64K pixels Seções (versão 3): Header Info. Header Palette Bitmap Data

81 BMP - Header typedef struct _Win3xBitmapHeader { WORD Type; /* Image file type 4D42h (BM)*/ DWORD FileSize; /* File size (bytes) */ WORD Reserved1; /* Reserved (always 0) */ WORD Reserved2; /* Reserved (always 0) */ DWORD Offset; /* Offset to bitmap data in bytes */ } WIN3XHEAD;

82 BMP - Information Header typedef struct _Win3xBitmapInfoHeader { DWORD Size; /* Size of this Header (40) */ DWORD Width; /* Image width (pixels) */ DWORD Height; /* Image height (pixels) */ WORD Planes; /* Number of Planes (always=1)*/ WORD BitCount; /* Bits per pixel (1/4/8 or 24)*/ DWORD Compression; /* Compression (0/1/2) */ DWORD SizeImage; /* Size of bitmap (bytes) */ DWORD XPelsPerMeter; /* Horz. resol.(pixels/m) */ DWORD YPelsPerMeter; /* Vert. resol.(pixels/m) */ DWORD ClrUsed; /* Num of colors in the image */ DWORD ClrImportant; /* Num of important colors */ } WIN3XINFOHEADER;

83 BMP - Palette typedef struct _Win3xPalette { RGBQUAD Palette[ ]; /* 2, 16, or 256 elem.*/ } WIN3XPALETTE; typedef struct _Win3xRgbQuad { BYTE Blue;/* 8-bit blue component*/ BYTE Green;/* 8-bit green component*/ BYTE Red;/* 8-bit red component */ BYTE Reserved;/* Reserved (= 0) */ } RGBQUAD ;

84 BMP - Image Data Notas Cada scan line em um arquivo BMP é sempre um múltiplo de 4. Imagens com1-, 4-, e 8-bits usam uma palheta de cores. Imagens com 24-bits guardam a cor diretamente, na ordem azul, verde e vermelho. O armazenamento da imagem é sempre feito a partir do canto esquerdo inferior.

85 Esquemas de armazenamento de imagens Verm. Verde Azul Pixel 2 Plano de Cores 00010206 05 03 04 070809... Pixel 0 Pixel 5 Pixel 4 Pixel 3 Pixel 1 06 Organização dos pixels de uma imagem por planos de cores Bancos (Java) Informação é uma componente da cor (Data Buffer – Java)

86 Codificação uniforme Uniforme tons # pixelscódigotam.# bits 0190000035700 1/7250000137500 2/7210001036300 3/7160001134800 4/780010032400 5/760010131800 6/73001103900 12001113600 TOTAL30000 Podemos melhorar?

87 Construção da Árvore Huffman 1/72500 2/72100 01900 3/71600 4/7800 5/7600 6/7300 1200 1/72500 2/72100 01900 3/71600 4/7800 5/7600 n0500 n0 6/7 1

88 Construção da Árvore Huffman 1/72500 2/72100 01900 3/71600 4/7800 5/7600 n0500 n0 6/7 1 1/72500 2/72100 01900 3/71600 n11100 4/7800 5/7 n1

89 Construção da Árvore Huffman 1/72500 2/72100 01900 3/71600 n11100 4/7800 1/72500 2/72100 01900 n21900 3/71600 n0 6/7 1 5/7 n1 4/7 n2

90 Construção da Árvore Huffman 1/72500 2/72100 01900 n21900 3/71600 n33500 1/72500 2/72100 01900 n0 6/7 1 5/7 n1 4/7 n2 3/7 n3

91 Construção da Árvore Huffman n33500 1/72500 2/72100 01900 n0 6/7 1 5/7 n1 4/7 n2 3/7 n3 n44000 n33500 1/72500 n4 2/7 0

92 Construção da Árvore Huffman n0 6/7 1 5/7 n1 4/7 n2 3/7 n3 n56000 n44000 n4 2/7 0 n44000 n33500 1/72500 n5 1/7 n6

93 Construção da Árvore Huffman 1 0 11 10 01 00 111 110 1111 1110 11111 11110 111101 111100 00 01 10 110 1110 11111 111100 111101 n0 n1 n2 n3 n4 n5 n6 6/7 1 5/7 4/7 3/7 0 2/7 1/7

94 Codificação de Huffman UniformeHuffman tons# pixelscódigotam.# bitscódigotam.# bits 01900000357000023800 1/72500001375001025000 2/72100010363000124200 3/716000113480011034800 4/780010032400111043200 5/7600101318001111153000 6/7300110390011110161800 1200111360011110061200 TOTAL30000 TOTAL27000

95 Redundância de Codificação rp(r)Code 1l(r)l(r)p(r)Code 2l(r)l(r)p(r) 00.1900030.571120.38 1/70.2500130.750120.50 2/70.2101030.631020.42 3/70.1601130.4800130.48 4/70.0810030.24000140.32 5/70.0610130.180000150.30 6/70.0311030.0900000160.18 10.0211130.0600000060.12 1.00 L avg = 3.002.70 r k = tons de cinza em uma imagem, k=0, 1,..., p(r k ) = n k / n onde n k = número de pixels com tom r k n = número de pixels da imagem L avg = 111001 001 0001 00001 000001000000

96 Resultado da Teoria da Informação

97 Compressão de imagens Compressão de Imagens Compressão de Imagens Sem Perda Com Perda Preserva exatamente o conteúdo da imagem Taxas de compressão 3 : 1 Preserva de forma controlada o nível de qualidade da imagem Taxas de compressão que chegam a valores de mais de 100 : 1

98 Métodos de compressão Sem perdas –Run length encoding (RLE) - repetição –Huffman coding - histograma –Predictive coding - diferenças –Block coding (LZW) - dicionário Com perdas –Truncation coding - reduz a representação –Predictive coding - descarta diferenças altas –Block coding - dicionário aproximado –Transform coding - descarta frequencias altas Métodos compostos: JPEG, MPEG

99 Processo de compressão e descompressão Dados da Imagem Original 32, 45, 57, 68, 23, 100, 98,... 32, 45, 57, 68, 23, 100, 98,... Imagem Comprimida 32, 45, 57, 68, 23, 100, 98,... Dados da Imagem Original Compressão da imagem Imagem Comprimida 32, 45, 57, 68, 23, 100, 98,... Transporte e/ou Armazenamento Descompressão da imagem

100 Fundamentos da Compressão de Imagens codificação entre pixels psico-visual A compressão de uma imagem é obtida quando se elimina a redundância de:

101 Redundância entre pixels 640 colunas x 480 linhas x 1 byte/pixel = 300 KBytes 480*(1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0) = ~18 Kbytes onde 1 = 32 bytes de preto e 0 = 32 bytes de branco

102 Compressão - RLE Objetivo Reduzir a quantidade de dados redundantes. Exemplo AAAAAAxxx6A3x Caracterísiticas Simples e rápido, porém a eficiência depende da imagem a ser comprimida.

103 Run-Length Encoding 76 7879 80 76 | 578 | 179 | 480 | 2 imagem binária 0000000111100000 74 1... 5

104 Compressão do jpeg

105 Aplicações são tecnologicamente complexas: exemplo: algoritmo do JPEG FDCT Source Image Quantizer Entropy Encoder Table Compressed image data DCT-based encoding 8x8 blocks R B G

106

107

108

109 Equations for JPEG DCT Forward DCT: Inverse DCT:

110 Visualization of Basis Functions Increasing frequency

111 T1 Comparação de cores int comparaCor(const void * p1, const void * p2) { int *c1 = (int *) p1; /* aponta para o byte red da cor 1 */ int *c2 = (int *) p2; /* aponta para o byte red da cor 2 */ /* compara o canal vermelho */ if (*c1 < *c2) return -1; if (*c1 > *c2) return 1; /* compara o canal verde, uma vez que o vermelho e' igual */ c1++; c2++; if (*c1 < *c2) return -1; if (*c1 > *c2) return 1; /* compara o canal azul, uma vez que o vermelho e o azul sao iguais */ c1++; c2++; if (*c1 < *c2) return -1; if (*c1 > *c2) return 1; /* sao iguais */ return 0; } p1p2

112 T1 Median Cut typedef struct { int axis; float error; int k0; int k1; float red,green,blue; } Cell; k0k1


Carregar ppt "Imagem Digital Conceitos, Processamento e Análise 1.Imagem e funções 2.Imagem digital: amostragem, quantização e codificação 3.Re-amostragem de funções."

Apresentações semelhantes


Anúncios Google