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: