Introdução à visão computacional

Instalação ou Configuração

Instruções detalhadas sobre como configurar ou instalar a visão computacional.

Para esta e as seguintes séries de visão computacional, usarei Python 2 como linguagem de programação. Python é uma escolha comum para a comunidade científica, é gratuito, possui muitas bibliotecas gratuitas e de código aberto e, se você é novo na programação, é um dos mais simples de aprender e começar a programar.

Agora configure, se você usa Linux você provavelmente já tem python, basta abrir o terminal e digitar ‘python’ para verificar se tudo já está funcionando. Outros, pode verificar este link e baixar o python 2.7.

Em segundo lugar, precisaremos instalar as bibliotecas que usaremos no código-fonte. Agora, uma observação aqui, esta configuração é projetada para este exemplo, em etapas posteriores, adicionaremos diferentes bibliotecas e, claro, diferentes aplicativos de visão computacional podem exigir bibliotecas específicas, como OpenCV. Precisaremos apenas de uma biblioteca instalada em nosso sistema para executar o código. Ao usar python, geralmente instalo dependências usando ‘pip’. É uma ferramenta simples para instalar os módulos python, você também pode conferir através neste link

Agora, estamos prontos para instalar a biblioteca que precisamos, PyPNG. Se você estiver usando pip tudo que você precisa fazer é

pip instalar PyPNG

no terminal se estiver usando Linux/Mac, na linha de comando se estiver usando Windows.

Além disso, para estes exercícios, você precisa obter imagens que podem ser encontradas no link do github ao lado do código-fonte e dos notebooks do ipython.

https://github.com/Skorkmaz88/compvis101

Agora, devemos ser bons para ir para o exercício

Exemplos

Esta é uma série de exercícios Python de processamento de imagem e visão computacional muito simples, projetada para introduzir esses tópicos com pouca prática. Lamento antecipadamente por quaisquer erros de novato, ainda está em desenvolvimento. Nesta série, limitarei as imagens digitais que podemos usar para arquivos PNG por uma questão de simplicidade, que também discutirei o tópico de compactação de imagem.

Por favor, clone o repositório se você ainda não o fez, ou você pode simplesmente baixá-lo aqui via Github:

git clone https://github.com/Skorkmaz88/compvis101

Existem dois arquivos que você pode usar, um deles é o tutorial0.py e o outro é o readingImages.ipynb, o segundo é um notebook ipython, se você preferir usar, pode fazê-lo. Mas dois arquivos estão fazendo a mesma coisa.

Código tem explicações nos comentários, estou

<pré><código> #libs importar png

Criamos uma imagem em tons de cinza conforme descrito em nosso texto.

Para fazer isso de forma simples, criamos um array 2D em python.

x e y, x sendo horizontal e y sendo direções verticais.

x = [] y = []

Brinque com esses valores de pixels para obter diferentes imagens em tons de cinza, eles devem ser

no intervalo de 0 a 255.

branco = 255 cinza = 128 preto = 0 largura = 100 altura = 300

Adicione um retângulo de 100 x 100 apenas como pixels de valor branco (255)

para i no intervalo (0, 100): for j in range(0,100): y.append(white); # Pixel (i,j) is being set to a value, rest is coding trick to nest two lists x.append(y) y = []

Adicione um retângulo de 100 x 100 como apenas pixels com valor de cinza médio (128)

para i no intervalo (0, 100): for j in range(0,100): y.append(gray); x.append(y) y = []

Adicione um retângulo de 100 x 100 apenas como pixels de valor preto (0)

para i no intervalo (0, 100): for j in range(0,100): y.append(black); x.append(y) y = []

arquivo de imagem de saída

f = open(‘out.png’, ‘wb’) w = png.Writer(largura, altura, escala de cinza=Verdadeiro, profundidade de bits=8) w.write(f, x) f.fechar()

Se tudo correu bem, você deve ter 3 retângulos alinhados verticalmente branco, cinza e preto

Verifique sua pasta de trabalho

PARTE 2

Ler uma imagem em tons de cinza e convertê-la em binário

Desta vez vamos binarizar uma imagem em tons de cinza, para isso vamos ler pixels e de acordo com o limite que definimos

decidiremos se esse pixel deve ser branco ou preto

Este arquivo é originalmente uma imagem png de 8 bits, pode ser encontrada no repositório do github, você deve usar apenas este tipo de

imagens se você quiser alterar a imagem.

f = open(’./img/lenaG.png’, ‘r’)

r=png.Reader(arquivo=f)

Você saberá os detalhes sobre a imagem, por enquanto preste atenção apenas ao tamanho e profundidade de bits.

img = r.ler()

largura = img[0] altura = img1

Valor limite para imagens binárias,

limite = 128 print “O tamanho da imagem de entrada é: “+ str(width)+ " pixels como largura, " + str(height) + " pixels como altura”

f_out = open(’lenaBinary.png’, ‘wb’) w = png.Writer(largura, altura, escala de cinza=Verdadeiro, profundidade de bits=1)

pixels = img2

x = [] y = []

Vamos percorrer a imagem da Lena

para linha em pixels: for pixel in row: p_value = pixel # Now here we binarize image in pixel level if p_value > threshold: p_value = 1 else: p_value = 0

    y.append(p_value);
x.append(y)
y = []

w.write(f_out, x) f_out.close()

Se tudo funcionou bem, parabéns! Você criou uma imagem do zero e executou a primeira transformação de nível de pixel em uma imagem existente. Verifique sua pasta de trabalho para ver as novas imagens