Por que dois retângulos perfeitamente adjacentes criam linhas pretas ou brancas no meio como se estivessem sobrepostas ou não exatamente adjacentes?

53

Eu tenho um design plano (bem, deveria ser), mas essas linhas em preto e branco entre as formas são tão irritantes ... [sem golpe] dê uma olhada:

Problema

Veja essas linhas entre dois retângulos sobrepostos? Como posso corrigir isso? (Criei isso com o Photoshop, mas há o mesmo problema usando o Paint.net e o Adobe Illustrator) É algo com a cor? Ou estou vendo muito? : P

candh
fonte
Acho que a chave aqui para decidir se essa é a banda de Mach ou outra coisa é a assimetria: "como você pode ver, o lado direito do retângulo se sobrepôs a 1 px (como você afirmou) enquanto o lado esquerdo não". As bandas Mach devem aparecer simetricamente nos dois lados.
Elmo Allén
11
Eu ampliei o zoom (para 25600%), por isso é definitivamente um efeito de subpixel. Aliás, só vejo os artefatos em 1 de 3 monitores. Os outros dois parecem primos sharpo !! Portanto, é definitivamente dependente da construção de pixels do seu monitor.
Octopus
11
@ Octopus: Que marca monitora? Essa é a minha próxima compra, e eu adoraria comprar algo que seja objetivamente de maior qualidade.
dotancohen

Respostas:

90

Como Elmo Allén observa corretamente, isso não é uma ilusão de ótica, não é um bug no seu editor de gráficos, mas um efeito causado pela tecnologia de monitor que você está usando.

Especificamente, em uma típica tela de computador TFT-LCD moderna , cada pixel é realmente composto por três subpixels separados organizados lado a lado, respectivamente em cores reg, verde e azul:

Pixels em uma tela TFT

Cada um desses subpixels pode produzir apenas uma das cores primárias da luz, mas, como estão muito próximas, suas cores se misturam quando você as olha, produzindo a ilusão de cores sólidas.

Para um pixel branco (ou cinza), todos os subpixels são igualmente iluminados. Ajustando a intensidade dos diferentes subpixels um em relação ao outro, cores diferentes podem ser produzidas. No extremo, para um pixel vermelho, verde ou azul puro, apenas os subpixels que produzem essa cor são ativados. Assim, sua faixa vermelho-verde-vermelho será, no nível do subpixel, renderizada algo como isto:

Faixa vermelho-verde-vermelho em uma tela TFT

Aqui, você pode começar a ver o que está acontecendo: geralmente há um espaço de dois subpixels escuros entre cada um iluminado, mas nos limites entre as cores, o espaço é de três subpixels (criando uma faixa escura) ou apenas um (criando um um leve).

Obviamente, o efeito é mais óbvio quando as cores dos subpixels próximos são combinadas, como normalmente acontece quando você olha para a tela:

Listra vermelho-verde-vermelho em uma tela TFT, desfocada

Aqui, apliquei apenas uma quantidade moderada de desfoque, simulando o que você poderia ver se, por exemplo, olhasse para a tela através de uma lupa. (Experimente!) A faixa escura no limite esquerdo é óbvia aqui; a faixa clara no limite da direita não aparece com tanta clareza, mas se tornaria mais visível se a imagem ficasse mais nítida.

Obviamente, você não precisa confiar nessas imagens simuladas. Em vez disso, deixe-me incluir algumas fotos em close-up que tirei da tela do meu laptop, mostrando a imagem em sua pergunta, com uma câmera digital barata:

Foto da tela do laptop mostrando o limite de cores vermelho / verde
Foto da tela do laptop mostrando o limite de cores verde / vermelho

Como na imagem simulada, a linha escura é muito óbvia; a linha brilhante é menos, talvez porque ainda exista um subpixel escuro entre os iluminados, para que não haja um pico de intensidade única tão claro.

O que você pode fazer para corrigir isso?

Em princípio, esse efeito é algo que o seu monitor poderia compensar automaticamente, por exemplo, detectando tais transições problemáticas e deixando as cores sangrarem um pouco na outra para suavizar a transição. Isso acrescentaria mais complexidade e custo, razão pela qual a maioria dos fabricantes de monitores não se incomoda.

Você pode, no entanto, obter o mesmo resultado adicionando uma faixa estreita de cor intermediária (por exemplo, amarelo, vermelho e verde) entre esses campos de cores altamente contrastantes. A cor dessa faixa deve corresponder aproximadamente à luminância média das cores circundantes, levando em consideração a gama da tela .

Ilmari Karonen
fonte
2
Eu não acho que a compensação realmente afetaria tanto o custo (~ 1 euro por painel superior). Considerando os velhos dias de amizade, eles fizeram algo semelhante. É mais um problema raro e você não deseja problemas com seus ajustes de nitidez / adaptação para quase nenhum ganho. Apenas um bom lembrete de que a tecnologia está cheia de trocas e você precisa estar ciente de algumas delas. +1 Hyvät kuvat kuitenki.
Joojaa
2
A adição de cores intermediárias é realmente feita na prática?
Lilienthal
11
@ Lilienthal: eu nunca vi isso; então, novamente, o ponto principal é que você não deveria vê-lo. Suponho que uma das razões pelas quais a necessidade raramente surge na prática é que a maioria dos designers evita colocar cores puras tão fortemente contrastantes uma da outra.
Ilmari Karonen
35

É difícil fazer exatamente o que todo mundo vê aqui, porque todo mundo tem sua própria exibição para ver a imagem. No meu monitor, se eu apertar os olhos, pude ver uma linha preta muito fina entre o retângulo vermelho esquerdo e o retângulo verde do meio. E, em contraste, entre o vermelho e o meio direito, vejo uma linha branca muito fina. Basicamente, entendo que o pôster original significa que eles veem isso (exagerado):

Descrição do problema: uma linha preta ou branca entre retângulos adjacentes, exagerada.

Essas não são bandas mach , como sugerido nos comentários da pergunta. As bandas Mach não nascem entre cores cromadas diferentes, mas entre cores iluminadas diferentes (por exemplo, entre dois tons de cinza). Uma banda Mach muito fraca é criada no lado direito do retângulo vermelho, porque o vermelho total (RGB 255-0-0) é um pouco menos brilhante que o verde total (RGB 0-255-0) no meu monitor (e em todos os monitores sRGB como bem). (Embora as cores da imagem original não sejam vermelhas ou verdes puras, a diferença em sua luminosidade percebida é aproximadamente a mesma.) Basicamente, as bandas de Mach aparecem assim (novamente, altamente exageradas):

Ilustração de bandas de Mach, exagerada.

Mas as bandas Mach não podem criar linhas finas brancas ou pretas. Eles apenas criam uma pequena diferença no brilho observado em uma área ampla. E as bandas Mach são sempre simétricas: vermelho para verde é o mesmo que verde para vermelho. Mas isso é assimétrico: outro limite é preto e outro é branco.

Em vez disso, o artefato visual que vemos aqui é devido ao arranjo de sub-pixels do LCD . O arranjo mais usual é Vermelho-Verde-Azul da esquerda para a direita. Portanto, entre cada pixel vermelho completo, há um subpixel verde desativado e um subpixel azul desativado. Entre um pixel vermelho completo e um pixel verde completo, existem três subpixels desativados: verde, azul e vermelho. Isso cria o efeito de uma fina linha preta entre o vermelho e o verde. Como na imagem abaixo:

Representação de sub-pixel da cor vermelha que atende à cor verde.

Agora, do outro lado do retângulo verde, há primeiro um subpixel verde aceso, um subpixel azul desativado e depois um vermelho. Agora, entre os subpixels acesos verde e vermelho, há apenas um subpixel preto. Isso cria o efeito de uma linha brilhante muito fina correndo entre o limite verde e vermelho. Como abaixo:

Representação de subpixels da cor verde que encontra a cor vermelha.

Para ver os subpixels no seu monitor, você provavelmente precisará de uma lupa. A visão humana normanda não pode se concentrar em uma distância tão curta onde você veria os pixels separados. No entanto, é muito bom detectar essa ligeira diferença de brilho.

Agora, para provar que a teoria está correta, você pode adicionar, por exemplo, uma linha de 1 px de largura de RGB 128-255-0 entre o retângulo vermelho esquerdo e o retângulo verde e ver se a linha preta desaparece, porque isso adiciona alguma luz verde de subpixel antes a diferença. Você também pode tentar, por exemplo, um RGB 85-85-0 de 1 px de largura entre o retângulo verde e o vermelho direito, para escurecer um pouco os subpixels. Infelizmente, isso não pode ser usado no design real, porque primeiro depende do arranjo de subpixel vermelho-verde-azul e, ao mesmo tempo, torna a borda da cor um pouco manchada.

Além disso, existe a possibilidade de ocorrer um algoritmo de nitidez de tela. Basicamente, a nitidez do monitor torna todas as bordas das cores mais proeminentes, adicionando branco ao lado mais brilhante da borda e escurecendo para preto no lado mais escuro. É muito parecido com o efeito da banda Mach, mas muito mais estreito e geralmente mais proeminente. Isso pode ser descoberto ajustando a nitidez da tela (espero que seja possível) e ver se o efeito é reduzido.

Elmo Allén
fonte
2
sim, isso faz sentido, no entanto, não conta para todos os efeitos, mas sim, agora que olho em 2 monitores diferentes com uma ordem diferente conhecida, o efeito é de fato invertido. No entanto, não vejo a falta de cor das cores no monitor principal, o que pode ser devido à insanamente boa qualidade dos elementos da imagem dos monitores. A única coisa que vejo são as bandas mach. Ps para testar esse monitor de virada de cabeça para baixo.
Joojaa
ah, ou mesmo que os elemebts são estocasticamente esforçavam para combater este problema
joojaa
De qualquer forma, o OP @candh fala sobre 1px de largura sobreposta. As bandas mach nunca devem ser tão estreitas. (De qualquer forma, eles nem mesmo podem ser definidos no sentido de pixel, porque se formam no cérebro. Os artefatos de subpixel se formam na tela.) Ainda assim, sem candh elaborando mais sobre o que ele vê exatamente, estamos presos em encontrar a solução correta. (Com minha reputação, eu não posso comentar a questão ainda.)
Elmo Allén
2
@joojaa, é claro que o ruído diminuiria o efeito de linha reta dos subpixels, mas jogaria o bebê na água do banho, porque a linha reta e afiada não pareceria mais tão nítida. Eu não acho que exista uma boa maneira de combater isso ou realmente qualquer razão para isso. Em monitores modernos, o efeito já é minúsculo e, agora, com os monitores HiDPI lentamente se popularizando, mesmo em computadores de mesa, isso importa ainda menos. Além disso, contrastes de croma muito grandes são raramente usados, e isso não afeta o contraste da luminosidade.
Elmo Allén
2
No meu monitor R, G, B, reduzi muito o artefato visual aumentando / diminuindo o total dos dois pixels de limite em 1/6 (total 1/3, representando o deslocamento por 1/3 de um pixel). Mais precisamente: 1 0 0 | 1 0 0 | 1 x 0 | x 1 0 | 0 1 0 | 0 1 0: se você definir os dois componentes x para 1/6 em vez de 0, evitará o efeito de faixa preta. E em 0 1 0 | 0 1 0 | 0 y 0 | y 0 0 | 1 0 0 | 1 0 0: você precisa de y definido como apenas 5/6 para evitar o efeito de faixa branca. (Os valores de 1/6 e 5/6 deverá provavelmente ser refinado tendo em conta o nível de percepção do olho.)
Armin Rigo
4

Essa é a natureza das cores quando elas se juntam. O olho humano tende a simplificar as coisas e as ilusões ópticas causadas por nossa percepção das cores.

esse fenômeno que é chamado de "ilusão de bandas de mach" aparece com duas cores diferentes em valor. nem na tonalidade nem na saturação. e meu diagrama em anexo mostra que a mesma ilusão ocorre nas cores cinza. o cinza mais claro será mais claro em comparação com o mais escuro no meio e o cinza médio parecerá mais claro ao lado da borda do cinza escuro direito à direita. E assim um.

insira a descrição da imagem aqui

se é importante para você, você tem duas opções.

  1. escolher duas cores que tenham a mesma proporção de preto, isso garantirá a diminuição da ilusão
  2. você pode "enganar os olhos" adicionando uma pequena linha cinza entre as duas cores que possuem o cinza médio dos dois tons de cinza nessas cores. veja o resultado abaixo. você pode reconhecer que a faixa superior está menos na ilusão que a inferior.

a faixa superior é menos na ilusão

esta é uma versão ampliada com a minúscula linha cinza.

hsawires
fonte
11
Isto está incorreto. O primeiro diagrama (vermelho-verde-vermelho) não corresponde ao segundo (cinza claro-meio cinza-cinza escuro) porque os dois vermelhos são da mesma cor. Se fosse sobre brilho, o gráfico de linhas seria simétrico, assim --\|\--/|/--, e você veria uma faixa preta na interface vermelho-verde e na interface verde-vermelho e verde-vermelho ou uma faixa branca nas duas.
David Richerby
5
Isso é realmente fácil de contestar. Se você possui um laptop e vê as linhas em preto e branco, vire o laptop de cabeça para baixo. Você encontrará a linha preta à direita em vez da esquerda.
slebetman
3
@hsawires: A idéia é provar algo cientificamente. Virar o laptop de cabeça para baixo e ver sua teoria se dissipar inteiramente é certamente uma reprovação válida. Você não pode simplesmente acenar com a mão dizendo "você não pode provar ou refutar ilusões"; que absurdo!
Lightness Races com Monica
11
@hsawires: De qualquer forma, virar a tela de cabeça para baixo, se não fosse pelo fato de isso reverter a ordem dos diodos que criam as diferentes cores na tela, não teria feito nenhuma diferença em como a imagem é percebido, porque a imagem é simétrica. Caso contrário, você poderia, olhando o efeito da banda Mach, determinar se a tela foi girada ou não, o que não faz sentido. O fato de a imagem não ser percebida de forma idêntica significa que algo mais deve estar acontecendo, devido à estrutura de subpixel que Ilmari e Elmo descrevem.
HelloGoodbye
11
Para apoiar o @HelloGoodbye, nosso fiel amigo Wikipedia ( en.wikipedia.org/wiki/Mach_bands ) tem o seguinte a dizer: "A ilusão é independente da orientação".
Nelson Rothermel
0

Não tenho certeza, mas se você estiver usando óculos, é aí que o problema estará. Você provavelmente está vendo uma aberração cromática , na qual os vermelhos e os verdes estão se separando.

Quanto mais espessos forem os óculos, mais pronunciado será o efeito. Tente virar a cabeça e observar os blocos coloridos se moverem - à medida que você se aproxima da borda dos óculos, os óculos ficam mais grossos e, assim, causam uma maior separação.

user295691
fonte
6
Não é uma aberração cromática. Qualquer par de óculos competentes na metade do caminho não mostrará aberração cromática ao olhar diretamente para um monitor de computador.
David Richerby
Existe absolutamente um aspecto da aberração cromática aqui. Apenas o ajuste do ângulo em que estou olhando para o monitor faz com que as faixas em preto e branco mudem de tamanho. E embora esse efeito seja mais pronunciado com os óculos, ele ainda está presente sem os óculos - seus olhos também têm lentes imperfeitas! Ignorar que cores primárias puras terão esse efeito está faltando parte da história.
precisa
@Sainty Como mostra a resposta de Ilmari , trata-se do espaçamento entre pixels no monitor. Se você mover a cabeça para o lado, o espaçamento aparente dos sub-pixels mudará e o efeito será alterado. E como a aberração cromática produziria preto? Você está propondo que a aberração é tão grave que a frequência da luz muda para ficar fora da região visível do espectro?
David Richerby
@ Richerby: Com base na resposta de candh e em algumas investigações mais detalhadas da minha parte, esse não é o efeito que ele estava vendo. A aberração cromática existe, porém, e cria linhas pretas - o vermelho muda para um lado e o verde para o outro; pense em prismas e como eles separam cores. A parte restante aparecerá preta, embora aos meus olhos (quando eu usasse óculos) parecesse mais o vermelho "flutuando" acima da tela.
user295691
0

Este tópico no fórum da Adobe mostra muito bem onde estão as opções "Alinhar à grade de pixels".

Se bem me lembro, isso também pode ser ativado em todo o documento por meio da File > Newcaixa de diálogo (na parte inferior da caixa).

Esses especialistas em monitores do hard-core estão corretos ou você tem apenas uma discrepância criada pelo vetor que não se alinha aos pixels do monitor corretamente. É exatamente por isso que tantas pessoas estão empolgadas com a inclusão dessa pequena caixa de seleção no Illustrator.

AVLien
fonte
3
Os vetores estão alinhados corretamente. Para verificar se você precisará copiar e colar a imagem no Photoshop ou em qualquer editor de imagens e aumentar o zoom. Não há antialiasing entre pixels e nenhum meio-tom.
Elmo Allén
-2

Isso pode ser devido à interação de cores. Vermelho e verde são cores complementares e, quando colocados lado a lado, parecem criar uma linha preta / escura que parece uma sobreposição. Você pode ler e ver mais exemplos aqui .

O Illustrator encaixa automaticamente as formas no lugar, para que não haja nenhum problema de sobreposição.

tgr
fonte
2
Se o fenômeno fosse puramente por causa dos nossos olhos, você veria a mesma coisa no limite vermelho-verde do que no limite verde-vermelho.
David Richerby
Vermelho e verde, quando colocados lado a lado e vistos a uma distância suficiente (por exemplo, olhando pequenos pixels a poucos metros de distância), produziriam amarelo, não preto.
Jason C
-2

Se você habilitar uma opção Alinhar novos objetos à grade de pixels no menu de opções da janela Transformar (a que fica no canto superior direito de qualquer janela de opção), qualquer novo objeto que você desenhar terá a propriedade alinhada por pixels definida por padrão. Para novos documentos criados usando o perfil de documento da web, esta opção é ativada por padrão. Para objetos existentes, você pode desativar o alinhamento da grade de pixels selecionando Alinhar à grade de pixels na própria janela Transform (mostrada depois de marcar mais opções no menu de opções da janela).

A aparência nítida dos traços alinhados por pixels é mantida na saída raster com uma resolução de 72 ppi apenas. Para outras resoluções, existe uma grande possibilidade de esses traços produzirem resultados sem serrilhado.

Objetos alinhados a pixels, mas sem segmentos verticais ou horizontais retos, não são modificados para se alinhar à grade de pixels. Por exemplo, como um retângulo girado não possui segmentos verticais ou horizontais retos, ele não é estimulado a produzir caminhos nítidos, quando a propriedade alinhada por pixels é definida para ele.

A documentação desta Adobe fornece uma descrição mais ampla: http://helpx.adobe.com/illustrator/using/drawing-pixel-aligned-paths-web.html

Rahul Chouhan
fonte
11
qual opção exatamente?
candh