Imagem colorida para imagem em preto e branco
Esta calculadora online converte imagens coloridas em imagens em preto e branco. Duas opções são possíveis: limiar de luminosidade ou Floyd–Steinberg dithering.
A calculadora a seguir converte a imagem colorida carregada em uma imagem em preto e branco. Não é uma imagem em tons de cinza como em Conversão de Cor para Escala Cinza, mas uma imagem que consiste apenas de pontos pretos e brancos. Quatro métodos de conversão são suportados - usando um valor de limiar de luminância (que pode ser alterado), Floyd-Steinberg dithering, Jarvis dithering, e Stucki dithering. Você pode ler mais sobre os algoritmos da calculadora abaixo.
Conversão de imagem colorida em imagem preto e branco
Usando um limiar de luminosidade
O algoritmo para este método de criação de uma imagem em preto e branco é bastante simples.
-
Calcule a luminosidade (brilho) de um pixel. A calculadora usa os coeficientes padrão (novamente, consulte Conversão de Cor para Escala Cinza) e o valor da luminosidade é calculado como
- Se o valor calculado for superior ao limiar, substitua a cor do pixel original por branco. Se for menor ou igual, substitua a cor original do pixel por preto.
Por padrão, a calculadora utiliza o valor de 127 como limite, no meio do intervalo [0 ... 255].
Floyd–Steinberg dithering
Usar apenas o valor de limite resulta em transições muito nítidas entre preto e branco, especialmente em bordas suaves. Para solucionar esse problema, em 1976, Floyd e Steinberg propuseram um algoritmo de dithering baseado na difusão do erro de quantização da imagem. 1 A ideia do algoritmo é calcular o erro de quantização (erro de arredondamento) e "retornar" parte dele à imagem original, distribuindo-o entre pixels vizinhos que ainda serão processados.
No algoritmo Floyd–Steinberg, o erro entre pixels adjacentes é distribuído da forma a seguir:
Como você pode ver, esta distribuição permite que você processe a imagem em uma única passagem - da esquerda para a direita, de cima para baixo.
O pseudo-código do algoritmo da Wikipédia:
para cada y, de cima para baixo, faça
para cada x da esquerda para a direita faça
pixel antigo := pixel[x][y]
pixel novo := encontrar_paleta_de_cor_mais_próxima(pixel antigo)
pixel[x][y] := pixel novo
quant_error := pixel antigo - pixel novo
pixel[x + 1][y ] := pixel[x + 1][y ] + quant_error × 7 / 16
pixel[x - 1][y + 1] := pixel[x - 1][y + 1] + quant_error × 3 / 16
pixel[x ][y + 1] := pixel[x ][y + 1] + quant_error × 5 / 16
pixel[x + 1][y + 1] := pixel[x + 1][y + 1] + quant_error × 1 / 16
Existem outros métodos de dithering: Jarvis dithering, Stucki dithering, Burkes dithering, Sierra dithering, mas eles se diferem majoritariamente no esquema de difusão de erro. Eu incluí alguns deles. Se você quiser algum outro, deixe-me saber nos comentários.
Jarvis dithering
Stucki dithering
-
R.W. Floyd, L. Steinberg, An adaptive algorithm for spatial grey scale (Um algoritmo adaptativo para escala cinza espacial). Proceedings of the Society of Information Display 17, 75–77 (1976). ↩
Comentários