Exercício 01 (06/03/2009)

Respostas e/ou comentários para os exercício proposto:

  1. Se registrar no Adessowiki e criar a sua página de diário do curso

    Página pessoal criada em: Laysson

  2. Estudar o Python (primer ou tutorial) http://docs.python.org/tutorial. Existe um site do Python no Brasil que pode ser útil também: http://www.pythonbrasil.com.br

    Página oficial do Phyton: http://www.python.org/

    Tutorial traduzido por Python Brasil versão 2.4.2: http://www.gpr.com.br/download/python24.pdf

  3. Estudar o NumPy (tutorial, para entender arrays e pequenos truques de processamento de imagem). http://www.scipy.org/Tentative_NumPy_Tutorial

    Tutorial PDF (versão antiga) e internet: http://www.scipy.org/NumPy_Tutorial

  4. Fazer um exercício que mostre os principais conceitos aprendidos. Procure fazer exercícios com matriz numérica de tamanho reduzido.

    *Tutorial em desenvolvimento*: tem o objetivo de reunir dicas para todos os usuários

  5. Estudar formas de gerar uma imagem xadrez e implementar algumas de sua preferência.

Para resolver este problema podemos utilizar duas formas distintas:

Varredura pixel a pixel: consiste em percorrer cada pixel da imagem, utilizando as coordenadas linha e coluna, conforme segue

1 def create_img(lin,col):
2   IMG = zeros( (lin,col) )
3   for i in range(0,lin):
4     for j in range(0,col):
5       IMG[i,j] = (i+j) % 2
6   mmshow(IMG, title= "Imagem criada pixel a pixel");
7 
8 create_img(100,200)
Warning: downcasting image from double to uint16 (may lose precision)

Imagem criada pixel a pixel

Conceito matricial: trata a matriz como um grid, ou seja, em sua forma natural. Linguagens como o Python e MatLab tem a capacidade de utilizar esta forma de representação. Em C++, por exemplo, é necessário implementar classes para utilizar este tratamento. Como estas linguagens utilizam este conceito, podemos utilizar funções para alocar matrizes de 0 e, assim, podemos iniciar o restante do processamento já com a matriz alocada. No exemplo abaixo, utilizei o método zeros do numpy para criar a matriz de zeros, conforme os parâmetros linha e coluna passados, e depois utilizando o operador : atribuir o valor 1 ao par ordenado composto por números pares.

1 def bin_matrix(lin, col):
2   matrix = numpy.zeros([lin, col])
3   matrix[0:lin:2,0:col:2] = 1
4   matrix[1:lin:2,1:col:2] = 1
5   mmshow(matrix, title= "Imagem criada com o uso do método numpy.zeros");
6 
7 bin_matrix(200,100)
Warning: downcasting image from double to uint16 (may lose precision)

Imagem criada com o uso do método numpy.zeros

Dúvida: "Warning: downcasting image from double to uint16 (may lose precision)" aparece no site e não aparece quando compilo no pc.

Autor: Laysson G. Albuquerque
Contato:laysson@gmail.com
Data:12/03/2009