quinta-feira, 3 de novembro de 2016

Colorindo uma imagem com o MODELO HSI



O trabalho consiste em colorir uma imagem em níveis de cinza. Ela será colorida utilizando a paleta de cores HSI.









Segue o código

# -*- coding: utf-8 -*-
"""
Created on Tue Nov 01 22:24:13 2016

@author: rafael.vanso
"""


import numpy as np
import cv2

# Função para gerar a peleta de cores com um início e fim de cor
def paletadecores(inicio, fim, sv):

    # Função: np.linspace(A, B, X) gera um vetor com X valores entre A e B.
    h = np.linspace(inicio, fim, 256)
    s = np.linspace(sv, sv, 256)
    i = np.linspace(sv, sv, 256)
      
    # Função: a.reshape Da uma nova forma a uma lista. Neste caso, criamos uma altura de 256 e 1 de largura
    # Função: np.tile Repete um array X vezes. Repetindo o valor no eixo da largura para ficar com 256 de largura  
    p1 = np.tile( h.reshape(256,1), 256 )
    p2 = np.tile( s.reshape(256,1), 256 )
    p3 = np.tile( i.reshape(256,1), 256 )
     
    # Função: np.uint8 converter números para 8 bits
    p1 = np.uint8(p1)
    p2 = np.uint8(p2)
    p3 = np.uint8(p3)
      
    # Função: np.dstack( (v1, v2) ) o: Faz a concatenação dos dois vetores
    paleta = np.dstack( (np.dstack( (p1,p2) ), p3) )
          
    return paleta

# Gera a paleta de cores considerando HSI
paleta = paletadecores(120, 240, sv=200)

#
# Chama a imagem no local especificado.
img = cv2.imread('C:\WinPython-32bit-2.7.10.3\Imagens\cavalo.jpg', 0)

# Cria uma matriz com o mesmo tamanho da imagem cinza
colorida = np.zeros((img.shape[0], img.shape[1], 3))

# O for percorre a altura e a largura da matriz criada para representar a imagem colorida
# e recebe a cor de acordo com o tom de cinza
for i in range(img.shape[0]):
    for j in range(img.shape[1]):
           colorida[i][j] = paleta [ img[i][j] ][0]

# Converte a imagem colorida pra 8 bits
colorida = np.uint8(colorida)

# Transforma pra RGB
paleta = cv2.cvtColor(paleta, cv2.COLOR_HSV2BGR)
colorida = cv2.cvtColor(colorida, cv2.COLOR_HSV2BGR)

# Mostra as imagens na tela
cv2.imshow('Imagem Original',img)

cv2.imshow('Paleta de Cores',paleta)
cv2.imwrite('./Imagens/paleta_hsi.jpg', paleta)

cv2.imshow('Imagem Colorida',colorida)
cv2.imwrite('./Imagens/original_hsi.jpg', colorida)

cv2.waitKey(0)
cv2.destroyAllWindows()


Imagem Original:





























Paleta de Cores:




Imagem Colorida:





terça-feira, 1 de novembro de 2016

Amostragem e Quantização

O primeiro trabalho da Disciplina tem o objetivo de realizar a manipulação das imagens através da Amostragem e Quantização. Foram utilizados para a execução a IDE Spyder e os pacotes NumPy e OpenCV.

Abaixo segue códigos e imagens:

# -*- coding: utf-8 -*-
"""
Created on Mon Oct 31 20:40:25 2016

@author: rafael.vanso
"""
import numpy as np
import cv2
import time

#importando a imagem
imagem = cv2.imread ('C:\WinPython-32bit-2.7.10.3\Imagens\cavalo.jpg',0)


#Amostragem


#mostrando a imagem original
cv2.imshow('Imagem Original',imagem)
cv2.waitKey(0)

n=1
maximo = 8
#reduzindo a imagem
while n < maximo:
    reduzida =imagem[::n,::n]
    cv2.imshow('Imagem em Transformação', reduzida)
    cv2.waitKey(5)
    n = n + 1
    time.sleep(0.2)
   

#aumentando a imagem
m = 4
aumentada = np.repeat(reduzida, m, axis=0)
aumentada = np.repeat(aumentada, m, axis=1)


#Quantização
#verificando se a imagem possui limite de 255
x = (np.uint8(np.arange(256)))
img = x[imagem]

#dividindo a imagem pelo parametro e normalizando
quantizada =  (img/40)*40

#mostra a imaagem aumentada
cv2.imshow('Imagem Aumentada',aumentada)

#mostrando a imagem quanizada
cv2.imshow('Imagem Quantizada',quantizada)

cv2.waitKey(0)
cv2.destroyAllWindows()

Imagem Original

   

Imagem reduzida

   

 
Imagem Aumentada

 
 Imagem Quantizada