Utilizando J em imagens (parte 3 de n)

Caso não saiba o que é J, é necessário ler o primeiro artigo da série. Se sabe mas não tem instalado ou não leu o segundo artigo, agora é a hora. Por último, existe a possibilidade de ler apenas este artigo e ignorar os outros.

Primeiramente vamos partir de uma imagem qualquer gravada em um diretório qualquer (aqui a imagem possui o nome de pipoca.jpg e está gravada na pasta /home/guara/).

load 'media/image3'

load 'media/image3/view_m'

im=.read_image '/home/guara/pipoca.jpg'

view_image im

Considerando que im é uma matriz com n linhas e m colunas (largura e altura da imagem) e p planos (para as cores r,g,b), podemos fazer alguns cálculo em cima de cada trio de cores primárias. Uma das coisas seria selecionar apenas uma das cores. Para tanto, multiplicamos por 1 a cor de desejamos manter e por 0 a cor que desejamos excluir. Se desejamos apenas o canal vermelho, usamos:

view_image 1 0 0 * "1 im

Com o mesmo processo poderíamos efetuar alguma correção de cor. Se desejamos retirar um pouco de vermelho e verde, podemos multiplicar as cores por 0,9 e 0.95, por exemplo.

view_image <. 0.9 0.95 1 * "1 im

Para uma imagem em tonalidades de cinza, devemos deixar os valores de r,g,b iguais. Um procedimento simples é obter a média de um ponto e deixar os três valores iguais. Por exemplo, se o ponto tiver R=145, G=103, B=80, deixamos R=G=B=(145+103+80)/3=109,33=109. A definição de média em J é dada pela expressão (mais informações na documentação):

media=. +/ % #

e utilizamos a expressão

view_image <. 3 # "0 media "1 im

para obter a imagem:

Pode-se ainda juntar tudo o que foi visto para simular a utilização de um filtro na conversão. Mesmo um filtro que não existiria normalmente. Se eu desejo apenas escurecer o vermelho, poderia utilizar:

view_image <. 3 # "0 media "1 (0.5 1 1 * "1 im)

para obter:

Sim, é claro que tudo o que foi mostrado poderia ter sido feito em qualquer linguagem. O difícil seria fazer sem utilizar um for…next ou qualquer outra estrutura de laço. Em J, as brincadeiras se resumiram a alguns caracteres em uma linha.

=-=-=-=-=
Powered by Blogilo

Anúncios

Uma opinião sobre “Utilizando J em imagens (parte 3 de n)

  1. Pingback: Utilizando J em imagens (parte 4 de n) « Fotomix’s Weblog

Os comentários estão desativados.