A obtenção de meio-tom
O processo
de criação das imagens correspondentes aos
tons de cinza se baseia na formação de meio-tom,
variando as superfícies das imagens em uma
pequena área.
Tradicionalmente,
usa-se uma matriz que guarda os limiares para
quantização em cada pixel, chamada matriz
de dither. Na formação da imagem de saída,
compara-se para cada pixel de saída, sua
posição relativa dentro da matriz (como se
cortássemos a imagem em retângulos do
tamanho da matriz) e na posição encontrada
compara-se o limiar na matriz e o cinza na
imagem, para decidir se o pixel será preto
ou branco, por ser respectivamente maior ou
menor que o limiar.
Em nossa
aplicação, um pixel em determinada posição
relativa pode variar durante a passagem da
fatia 0 à 255 entre o preto e o branco
diversas vezes. No método tradicional isso não
acontece. Uma vez que um ponto branco passa a
ser preto, permanece com sua cor inalterada
até a fatia 255. Por possuir essa
propiedade, é possível armazenar toda a
informação de cor de um pixel guardando na
matriz o valor da fatia em que ocorre a troca
de cor do pixel. Sendo assim, a matriz de
dither é bidimensional.
Como no uso
de imagens artísticas, na maioria das vezes,
um pixel não possui esta propiedade,
precisamos guardar a informação de sua cor
nas diversas fatias. Não sendo possível
armazenar apenas um valor limiar para cada
pixel e fazer uso de uma matriz bidimensional.
Para
computar o dither artístico podemos quebrar
o processo. Precomputamos os elementos de
tela responsáveis pelos diversos tons.
Durante a execução, ao invés de
procurarmos o limiar da posição na matriz,
consultamos a fatia responsável pelo tom
correspontente ao tom de cinza no pixel de
entrada e copiamos o pixel dentro desta fatia
na mesma posição relativa.
Para geração dos tons,
interpolamos entre duas escalas pré-computadas
e fazemos um recorte para encaixar a nova
imagem na tela..
