SlideShare uma empresa Scribd logo
PIL (Python Imaging Library)
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.
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.
Exemplos práticos
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
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
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:
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")
Segmentação de vídeos
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.
Estrutura de um vídeo
Tipos de transição.
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.
Fade Out  :   Um fade out é um decréscimo gradual dos quadros de uma tomada até resultar em um quadro preto.
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.
Técnicas de segmentação de vídeo
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
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.
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
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.
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|)
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
Comparação local de histogramas.
Comparação entre as técnicas baseadas em histogramas.
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).
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
imd1 = rgb2gray(im1); Imd2 = rgb2gray(im2); % black background image bw1 = edge(imd1, 'sobel');  bw2 = edge(imd2, 'sobel');  % invert image to white background ibw2 = 1-bw2;  ibw1 = 1-bw1;  s1 = size(find(bw1),1); s2 = size(find(bw1),1); % dilate se = strel('square',3); dbw1 = imdilate(bw1, se); dbw2 = imdilate(bw2, se); imIn = dbw1 & ibw2; imOut = dbw2 & ibw1; ECRIn = size(find(imIn),1)/s2; ECROut = size(find(imOut),1)/s1; ECR = max(ECRIn, ECROut);
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

Mais conteúdo relacionado

PDF
Cg 03 primitivas_graficas
PDF
Aula 09 imagens vetoriais
PPTX
ComputaçãO GráFica Para Designers
PPT
Fundamentos do desenho
PDF
Computação Gráfica em Python
PPTX
Trabalho 3 - Seminário Sobre Processamento de Imagens
PPTX
Processamento Morfológico de Imagens
PDF
Computacao grafica python v2
Cg 03 primitivas_graficas
Aula 09 imagens vetoriais
ComputaçãO GráFica Para Designers
Fundamentos do desenho
Computação Gráfica em Python
Trabalho 3 - Seminário Sobre Processamento de Imagens
Processamento Morfológico de Imagens
Computacao grafica python v2

Mais procurados (8)

PPTX
Traçado em dispositivos gráficos matriciais Parte 1
PDF
Apresentação - CONTROLE ROBÓTICO REFERENCIADO POR SISTEMA DE VISÃO COMPUTACIO...
PDF
Aula 9 - Sistemas e Aplicações Multimídias - A Terceira Dimensão - parte II
PDF
Aula19 visibilidade
PDF
Aula 7 sam - desenhos
PPT
Utilizacaodosistemamultimedia 2
DOC
Relacoes e funcoes_apostila
PPT
Relações e funções
Traçado em dispositivos gráficos matriciais Parte 1
Apresentação - CONTROLE ROBÓTICO REFERENCIADO POR SISTEMA DE VISÃO COMPUTACIO...
Aula 9 - Sistemas e Aplicações Multimídias - A Terceira Dimensão - parte II
Aula19 visibilidade
Aula 7 sam - desenhos
Utilizacaodosistemamultimedia 2
Relacoes e funcoes_apostila
Relações e funções
Anúncio

Semelhante a Pil e segmentacao automatica de vídeo (20)

PPT
Multimidia na educação
PPTX
Open cv
PDF
Resumo - Visão Por Computador
PDF
Imagem digital-www-radiologiaeinovacao-com-br
PDF
Visão computacional ufba
PDF
Elementos do processamento de imagens digitais.pdf
PPT
Imagem Digital
PDF
Fundamentos da Imagem Digital
PDF
Sensoriamento Remoto introdução ao Processamento Digital de Imagens.pdf
PDF
PPT
Minicurso Ercemapi 2011
PDF
11477 41952-1-pb
PDF
Processamento digital de imagens com gnu octave jotacisio araujo oliveira fli...
PDF
comparaciones
PDF
18comparaciones
PDF
Aula 09 imagens vetoriais
PPT
Slide blog
PPT
Slide blog
PPTX
Introdução ao processamento de imagens com OpenCV (cont)
PDF
Processamento de imagens - Willian Mulia
Multimidia na educação
Open cv
Resumo - Visão Por Computador
Imagem digital-www-radiologiaeinovacao-com-br
Visão computacional ufba
Elementos do processamento de imagens digitais.pdf
Imagem Digital
Fundamentos da Imagem Digital
Sensoriamento Remoto introdução ao Processamento Digital de Imagens.pdf
Minicurso Ercemapi 2011
11477 41952-1-pb
Processamento digital de imagens com gnu octave jotacisio araujo oliveira fli...
comparaciones
18comparaciones
Aula 09 imagens vetoriais
Slide blog
Slide blog
Introdução ao processamento de imagens com OpenCV (cont)
Processamento de imagens - Willian Mulia
Anúncio

Pil e segmentacao automatica de vídeo

  • 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.
  • 11. Estrutura de um vídeo
  • 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
  • 23. Comparação local de histogramas.
  • 24. Comparação entre as técnicas baseadas em histogramas.
  • 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. imd1 = rgb2gray(im1); Imd2 = rgb2gray(im2); % black background image bw1 = edge(imd1, 'sobel'); bw2 = edge(imd2, 'sobel'); % invert image to white background ibw2 = 1-bw2; ibw1 = 1-bw1; s1 = size(find(bw1),1); s2 = size(find(bw1),1); % dilate se = strel('square',3); dbw1 = imdilate(bw1, se); dbw2 = imdilate(bw2, se); imIn = dbw1 & ibw2; imOut = dbw2 & ibw1; ECRIn = size(find(imIn),1)/s2; ECROut = size(find(imOut),1)/s1; ECR = max(ECRIn, ECROut);
  • 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