Aula 17 - RGB OU HSB?
Tarefa
Discutir e demonstrar como o brilho e a saturação de uma imagem podem ser facilmente ajustados empregando-se o padrão de cores HSB, em vez do RGB.Façamos algumas considerações:
o RGB (red,green,blue) é ajustado de acordo com a quantidade de vermelho, verde e azul de uma imagem. essas quantias variam de 0 ate 255.
Para mudar o brilho ou saturação de uma imagem com RGB, teria que a todo momento regular os três valores até encontrar uma zona com as cores desejadas. Quanto mais próximo de 0 mais escura é uma imagem, quanto mais próxima de 255 mais pura é uma cor. Todas misturadas em 255 resultam em branco e em 0 se tornam negras.
o HSB ( hue,saturation,brightness) trabalha de um modo diferente com as cores de uma imagem, agora não é mais preciso escolher uma mistura entre vermelho verde e azul para se encontrar um tom, o 'hue' que significa matiz em português, separa cores entre 0 e 499, assim para definir a cor a ser utilizada basta escolher um número. Para ajustá-la pode-se usar a saturação e o contraste, que variam em questão de porcentagem. Assim é possível ajustar todos os parâmetros em separado, sem ser preciso alterar todas as variáveis constantemente.

Para isso criei 4 variaveis, uma que irá receber uma imagem bem colorida, uma copia de Noite Estrelada do Vincent van Gogh como um desenho. E as outras três destinadas a criar imagens com a matiz, o brilho e a saturação alterados.
As variáveis 'h','s','b' vão guardar os valores respectivos de cada do HSB. E uma variável 'pos' que vai guardar esses valores de acordo com a posição do pixel.
Com o colorMode defini que a imagem ia ser trabalhada usando padrão HSB e setei que seus valores vão de 0 ate 100, para facilitar a operação, visto que no photoshop a matiz varia em quase 500 valores.
No draw() imprimi as imagens, a original no ponto (0,0), a imagem com a matiz alterada à esquerda, a imagem com a saturação em baixo da original e a imagem que ajusta o brilho do lado direito da imagem com saturação.

Para gerar essas imagens criei uma função chamada FuncaoHSB. Para fazer funcionar é preciso antes informar os valores do HSB no draw().
Dentro da função criei uma especie de "escaneador" da imagem original usando dois 'for', um que lê a imagem no eixo X e outra que lê no eixo Y. Usando uma variável de pos se tornou possível armazenar informações de cada pixel da foto.
O processing já possui funções próprias que reconhecem a matiz, a saturação e o brilho, o que facilita o procedimento.
Depois de armazenados os valores a imagem que eu escolhi para cada os recebe e são somados os valores do quanto eu quero alterar de cada parâmetro.
Os pixels são atualizados e as imagens formadas.
Veja possiveis resultados:

Se inserirmos valores negativos na função a imagem perde saturação e perde brilho.

Comentários
Postar um comentário