Meus primeiros programas de processamento de imagens usando Numpy

Neste curso iremos explorar o pacote NumPy, que adicionou o tipo ndarray ao Python. Contrário a utilizar um pacote ou biblioteca específica de processamento de imagens, onde a imagem é uma classe específica, onde as funções são primordialmente utilizadas para processamento de imagens, iremos utilizar o ndarray do NumPy para representar nossa imagem.

Neste curso, iremos praticar a programação do estilo matricial, isto é, procurando resolver o problema de forma matricial. Pretendemos com isto mostrar que este estilo de programação ajuda a reutilizar operações e manipulações matriciais conhecidas, aumenta a clareza do código, diminuindo o número de linhas e favorece a eficiência de execução visto a disponibilidade cada vez maior de hardware que processa operações vetoriais.

Aprendendo a programar usando o NumPy

Existem importantes conceitos e funções a serem aprendidas no NumPy e serão introduzidas aos poucos à medida que o curso evolui. Nesta semana, o foco é o uso de fatiamento. Para isto, são necessárias algumas leituras fundamentais:

Exercitando com o NumPy

Nas leituras acima, sempre é possível olhar como foi feito o programa ilustrativo dos exemplos colocando a página dos tutoriais no modo edição. Se você ficou com dúvida em algum exemplo, você pode copiá-lo para esta página e reproduzí-lo e fazer seus testes aqui.

Assim, procure exercitar os conceitos de representação da imagens e principalmente os conceitos de fatiamento do Numpy.

Utilize o espaço abaixo para copiar qualquer parte do tutorial que você viu para exercitá-lo aqui:


In [1]:
# para exercitar o numpy
import numpy as np
A = np.arange(24)
print(A)


[ 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23]

In [11]:
%matplotlib inline
import matplotlib.pyplot as plt
import matplotlib.image as mpimg

In [4]:
!ls ../data


blobs.pbm     cameraman.tif keyb.tif      tvframe.pgm
boat.tif      gull.pgm      lenina.pgm    woodlog.tif

In [7]:
f = mpimg.imread('../data/cameraman.tif')
print (f.shape)
print (f.dtype)
print (f.max(),f.min())


(256, 256)
uint8
251 0

In [13]:
plt.imshow(f,cmap='gray')
plt.colorbar()


Out[13]:
<matplotlib.colorbar.Colorbar at 0x10ef56a58>

Programas para correção automática

Como parte final das atividades desta semana, planejamos três programas simples que devem ser feitos e que serão corrigidos automaticamente, eles estão na sua lista de atividades da 1a semana. Os três programas devem ser resolvidos utilizando estritamente os conceitos de fatiamento discutidos e apresentados nos tutoriais mencionados. Evite fazer solução que utilize laço explícito com o uso de for:

  1. Programa para sobrepor quadriculado em imagem de cinza.
  2. Programa de imagens de quadrados cinzas.
  3. Programa para rotacionar uma imagem de 90 graus no sentido horário

Lembrar que como o Adessowiki é um ambiente colaborativo, poderemos compartilhar nossas experiências e aprender e ajudar os colegas.


In [ ]: