2. Implementa: Ferramentas para cortar, redimensionar e mesclar imagens. Algoritmos de conversão. Filtros, tais como suavizar e detectar bordas. Ajustes, incluindo brilho e contraste. Operações com paletas de cores. Desenhos simples em 2D. Rotinas para tratamento de imagens: equalizar, deformar, inverter e outras.
3. Principais Módulos: Image: O módulo Image define a classe para tratar imagens com vários métodos para modificar suas características. ImageOps : O módulo implementa várias rotinas comuns de processamento. ImageFilter: O módulo oferece vários filtros para tratamento de imagens.
5. import Image im = Image.open("linux.jpg") print im.format, im.size, im.mode isto irá retornar: ((250, 250), 'JPEG', 'RGB') Obtendo dados da imagem
6. Redimensionando imagens: import Image size = (250, 320) image = Image.open("linux.jpg") image.thumbnail(size) image.save('linux' + str(size), 'JPEG') Isto irá retornar uma imagem de tamanho 250,230 do arquivo linux.jpg
7. import os import Image cwd = os.getcwd() for arquivo in os.listdir(cwd/imagens): if arquivo.endswith('.JPEG'): im = Image.open(arquivo) nome = arquivo.split('.')[0] im.save(nome, "BMP") Convertendo uma pasta inteira:
8. filtros: import Image from ImageFilter import * image = Image.open("linux.jpg") for filtro in (BLUR, CONTOUR, DETAIL, EMBOSS, FIND_EDGES, SMOOTH, SMOOTH_MORE, SHARPEN): im = image.filter(filtro) im.save("linux" + str(filtro), "JPEG")
10. Introdução: A quantidade de conteúdos digitais produzidos sob a forma de vídeo teve um grande crescimento na última década. Os impulsos para este crescimento foram: o barateamento das câmeras digitais, a adição de câmeras digitais a dispositivos móveis como celulares, a popularidade do vídeo baseado na web, a adoção e a difusão de vídeo digital por parte da indústria como parte dos seus serviços de distribuição, dentre outros. Como um número recorde de clips de vídeo são acrescentados diariamente em bibliotecas digitais pelo mundo, existe a necessidade de uma gestão de tal conteúdo por eficientes meios de armazenamento, de indexação e de recuperação da informação.
13. Transições abruptas: As transições abruptas são os cortes, ou seja,duas tomadas são concatenadas sem modificações ou criação de quadros entre elas. Esse é o tipo mais simples de transição.
14. Fade Out : Um fade out é um decréscimo gradual dos quadros de uma tomada até resultar em um quadro preto.
15. Fade In : Um fade In é um acréscimo gradual de luminosidade dos quadros de uma tomada, começando de um quadro preto até se tornar em um quadro com luminosidade normal.
17. Domínio espacial: comparação pixel a pixel A comparação direta entre os pixels correspondentes de dois quadros qi e qj foi uma das primeiras características exploradas na literatura. Infelizmente, tal métrica é incapaz de discernir entre uma pequena mudança em uma grande área dos quadros e uma grande alteração em uma pequena área, o que a torna muito sensível à movimentação de objetos e da câmera
18. Domínio espacial: blocos Buscando utilizar informação local para incrementar a robustez da métrica em situações de movimento, alguns autores substituiram a comparação entre pixels pela comparação de blocos de pixels, que dividem o quadro em regiões retangulares de mesmas dimensões e sem sobreposição entre si.
19. Principal ponto deste algoritmo. def calculateDiference(self, im1, im2): diference = 0 image1 = im1.load() image2 = im2.load() width, height = im1.size for x in range(width): for y in range(height): if image1[x,y] != image2[x,y]: diference +=1 return diference
20. Comparação de histogramas. A cor de cada pixel de uma imagem é produzida por uma combinação de cores primárias (vermelho, verde e azul, ou RGB).Cada uma dessas cores pode ter um brilho que varia de 0 a 255 em uma imagem digital. Um histograma RGB é produzido quando um computador analisa uma imagem e para cada pixel são verificados os valores de brilho RGB. Os pixels que apresentarem valores iguais são contabilizados e distribuídos em níveis de 0 a 255 de acordo com o valor de RGB do pixel. Computacionalmente a estrutura anteriormente é represen- tada por meio de um vetor onde cada posição representa um nível de RGB.
21. Cont... Um corte é detectado se a soma absoluta das diferenças entre dois quadros consecutivos for maior do que um limiar pré-estabelecido. A diferença de histogramas de dois frames consecutivos é representada na equação abaixo. D(n, n+1)=Ʃ(|Hn – Hn+1|)
22. Principal ponto deste algoritmo. def calculateHistogramDiference( self, histogram1, histogram2 ): diferenceHistogram = 0 for bin in range(0,256): diferenceHistogram = diferenceHistogram + (abs(histogram1[ bin ] - histogram2[ bin ])) return diferenceHistogram
25. Domínio espacial de bordas/contorno. Essa técnica se baseia nos conceitos de pixels d e borda entrante e pixel de borda ausente. Um pixel de borda entrante entre dois quadros n e n-1 é um pixel (x; y) de borda de n que não possua um corres- pondente em uma vizinhança de n-1 (x; y). Simi- larmente, um pixel de borda ausente é um pixel (x; y) de bordas de n-1 que não possua um correspondente em uma vizinhança de n(x; y).
26. Not entering edge Not entering edge Entering edge E n-1 E n Impose E n to E n-1 E n-1 E n Impose E n to E n-1
27.
28. As transições são definidas observando o comportamento das variáveis apresentadas, elas se comportam da seguinte maneira: Cortes : apresentam uma variação muito grande de pixels entrantes e ausentes. Fade in: apresentam um aumento gradativo de pixels entrantes em um determinado período Fade out: apresenta um aumento gradativo de pixels ausentes em um determinado período