iaprofiledemo - Extraction and plotting of a vertical profile of an image

Nesta demonstração, iremos analisar os níveis de cinza de uma imagem em nível de cinza em uma dada coluna.

Inicialmente, lemos a image e colocamos por conveniência suas dimensões na legenda da imagem.

1. import ia636 as ia
2. f = adreadgray('astablet.tif')
3. adshow(f, 'imagem (%d,%d)' % (f.shape[0], f.shape[1]) )

imagem (150,251)

Observamos que é uma imagem de uma cartela de remédios onde um deles está faltando. A coluna 160 é adequada para analisar. Utilizamos o fatiamento do ndarray na coluna desejada

1. coluna = 160
2. 
3. perfil = f[:,coluna]

Uma boa forma de visualizar os valores em uma coluna é usando o plot, pois permite verificar num gráfico como os níveis de cinza variam, pois nossos olhos não conseguem verificar tão bem a variação de valores.

Iremos utilizar o matplotlib para plotar gráficos. É um pacote bastante completo. Existe um bom tutorial de pyplot em pyplot_tutorial.html.

A seguir é um pequeno trecho que deve ser copiado toda vez que for utilizar o matplotlib. Observe que o primeiro comprimido branco possui valores próximos de 255 e no comprimido que está faltando, o nível de cinza varia entre 80 e 200.

1. adshow( ia.iaplot( perfil), 'perfil coluna %d' % (coluna,))

perfil coluna 160

Finalmente, para sinalizar visualmente na imagem onde foi a coluna analisada, iremos também utilizar a facilidade de fatiamento do ndarray. Como a imagem pode estar tanto escura como clara, iremos modificar 3 colunas da imagem. A coluna escolhida fica em branco e uma coluna à esquerda e à direita fica em preto, para realçar o local onde a coluna foi escolhida.

1. f[:,coluna-1:coluna+2]=0
2. f[:,coluna] = 255
3. adshow(f, 'coluna = %d'% (coluna,) )

coluna = 160

Ligações úteis