Perché due rettangoli perfettamente adiacenti creano linee nere o bianche in mezzo come se fossero sovrapposte o non esattamente adiacenti?


53

Ho un design piatto (beh, dovrebbe essere), ma queste linee in bianco e nero tra le forme sono così fastidiose ... [nessun tratto] dai un'occhiata:

Problema

Vedi queste linee tra due rettangoli sovrapposti? Come posso ripararlo? (L'ho creato con Photoshop, ma c'è lo stesso problema con Paint.net e Adobe Illustrator) È qualcosa con il colore? O sto vedendo troppo? : P


Penso che la chiave qui a decidere se questa è la banda di Mach o qualcos'altro è l'asimmetria: "come puoi vedere, il lato destro del rettangolo si è sovrapposto di 1 px (come hai detto) mentre il lato sinistro no". Le bande di Mach dovrebbero apparire simmetricamente su entrambi i lati.
Elmo Allén,

1
Ho ingrandito (fino al 25600%), quindi è sicuramente un effetto subpixel. Per inciso, vedo i manufatti solo su 1 monitor su 3. Gli altri due sembrano primo sharpo !! Quindi dipende sicuramente dalla costruzione dei pixel del monitor.
Polpo,

1
@Octopus: che marca monitora? Questo è il mio prossimo acquisto e mi piacerebbe acquistare qualcosa di oggettivamente di qualità superiore.
dotancohen,

Risposte:


90

Come osserva correttamente Elmo Allén, questa non è né un'illusione ottica né un bug nel tuo editor grafico, ma un effetto causato dalla tecnologia di monitoraggio che stai utilizzando.

In particolare, su un tipico schermo TFT-LCD moderno , ogni pixel è in realtà composto da tre subpixel separati disposti uno accanto all'altro, rispettivamente colorati, verde e blu:

Pixel su uno schermo TFT

Ognuno di questi subpixel può produrre solo uno dei colori primari della luce, ma, poiché sono molto vicini tra loro, i loro colori si fondono insieme quando li guardi, producendo l'illusione del colore solido.

Per un pixel bianco (o grigio), tutti i subpixel sono ugualmente illuminati. Regolando l'intensità dei diversi subpixel l'uno rispetto all'altro, è possibile produrre colori diversi. All'estremo, per un pixel rosso, verde o blu puro, vengono attivati ​​solo i sottopixel che producono quel colore. Pertanto, la tua striscia rosso-verde-rossa sarà, a livello di subpixel, renderizzata in questo modo:

Striscia rosso-verde-rossa su uno schermo TFT

Qui puoi iniziare a vedere cosa sta succedendo: di solito c'è uno spazio di due subpixel scuri tra ciascuno illuminato, ma ai confini tra i colori, lo spazio è di tre subpixel (creando una banda scura) o solo uno (creando un uno leggero).

Certo, l'effetto è più evidente quando i colori dei subpixel vicini vengono mescolati insieme, come normalmente accade quando si guarda lo schermo:

Striscia rosso-verde-rossa su uno schermo TFT, sfocata

Qui, ho applicato solo una moderata quantità di sfocatura, simulando ciò che potresti vedere se, ad esempio, guardassi il tuo schermo attraverso una lente d'ingrandimento. (Provalo!) La banda scura al limite sinistro è ovvia qui; la banda luminosa al limite destro non appare così chiaramente, ma diventerebbe più evidente se l'immagine fosse ulteriormente sfocata.

Naturalmente, non devi fidarti di queste immagini simulate. Consentitemi invece di includere un paio di foto ravvicinate che ho scattato sullo schermo del mio laptop, mostrando l'immagine nella vostra domanda, con una fotocamera digitale economica:

Foto dello schermo del computer portatile che mostra il confine di colore rosso / verde
Foto dello schermo del computer portatile che mostra il confine di colore verde / rosso

Come nell'immagine simulata, la linea scura è molto evidente; la linea luminosa è meno, forse perché c'è ancora un sottopixel scuro tra quelli illuminati, quindi non c'è un picco così chiaro a intensità singola.

Cosa puoi fare per risolvere questo problema?

In linea di principio, questo effetto è qualcosa che il tuo monitor potrebbe compensare automaticamente, ad esempio rilevando tali transizioni problematiche e lasciando che i colori si spargano leggermente l'uno nell'altro per ammorbidire la transizione. Ciò aggiungerebbe maggiore complessità e costi, tuttavia, motivo per cui la maggior parte dei produttori di monitor non si preoccupa.

Tuttavia, puoi ottenere tu stesso lo stesso risultato aggiungendo una striscia stretta di un colore intermedio (ad esempio giallo, per rosso e verde) tra campi di colore così contrastanti. Il colore di questa striscia dovrebbe corrispondere approssimativamente alla luminanza media dei colori circostanti, tenendo conto della gamma di visualizzazione .


2
Non penso che la compensazione influirebbe davvero tanto sul costo (~ 1 euro per pannello superiore). Considerando i vecchi tempi degli amiga hanno fatto qualcosa di simile. È più come se il problema fosse alquanto raro e tu non volessi problemi con le tue regolazioni di nitidezza / adattamento per quasi nessun guadagno. Solo un buon promemoria che la tecnologia è piena di compromessi e devi essere consapevole di alcuni di essi. +1 Hyvät kuvat kuitenki.
joojaa,

2
L'aggiunta di colori intermedi viene effettivamente eseguita in pratica?
Lilienthal,

1
@Lilienthal: non l'ho mai visto; poi di nuovo, il punto è che non dovresti vederlo. Suppongo che uno dei motivi per cui raramente si presenti la necessità sia che la maggior parte dei designer tende ad evitare di mettere colori puri così fortemente contrastanti l'uno accanto all'altro.
Ilmari Karonen,

35

È difficile fare esattamente ciò che tutti vedono qui, perché ognuno ha il proprio display per vedere l'immagine. Sul mio monitor, se socchiudo gli occhi, potrei vedere una linea nera molto sottile tra il rettangolo rosso sinistro e il rettangolo centrale verde. E al contrario, tra il rosso e il centro a destra, vedo una linea bianca molto sottile. Fondamentalmente, capisco che il poster originale significa che vedono questo (esagerato):

Descrizione del problema: una linea bianca o nera tra rettangoli adiacenti, esagerata.

Queste non sono bande di Mach , come suggerito nei commenti alla domanda. Le bande Mach non nascono tra colori con cromie diverse, ma tra colori con luci diverse (ad es. Tra due tonalità di grigio). Una banda Mach molto debole viene creata nella parte destra del rettangolo rosso, perché il rosso pieno (RGB 255-0-0) è leggermente meno luminoso del verde pieno (RGB 0-255-0) sul mio monitor (e su tutti i monitor sRGB come bene). (Anche se i colori dell'immagine originale non sono rosso o verde puro, la differenza nella loro leggerezza percepita è approssimativamente la stessa.) Fondamentalmente, le bande Mach mostrano in questo modo (di nuovo, altamente esagerate):

Illustrazione delle bande di Mach, esagerate.

Ma le bande Mach non possono creare linee sottili bianche o nere. Creano solo una leggera differenza nella luminosità osservata su una vasta area. E le bande Mach sono sempre simmetriche: il rosso-verde è uguale al verde-rosso. Ma questo è asimmetrico: l'altro limite è nero e l'altro è bianco.

Invece, ciò che l'artefatto visivo che vediamo qui è a causa della disposizione dei sub-pixel LCD . La disposizione più comune è rosso-verde-blu da sinistra a destra. Quindi tra ogni pixel rosso pieno ci sono un subpixel verde spento e un subpixel blu spento. Tra un pixel rosso pieno e un pixel verde pieno, invece, ci sono tre subpixel disattivati: verde, blu e rosso. Questo crea un effetto di una sottile linea nera tra il rosso e il verde. Come nell'immagine qui sotto:

Rappresentazione sub-pixel di colore rosso che incontra il colore verde.

Ora sull'altro lato del rettangolo verde, c'è prima un subpixel verde acceso, un subpixel blu spento e poi uno rosso. Ora tra i subpixel verde e rosso illuminati c'è solo un subpixel nero. Questo crea un effetto di una linea luminosa molto sottile che corre tra il confine verde e rosso. Come sotto:

Rappresentazione sub-pixel di colore verde che incontra colore rosso.

Per vedere i subpixel sul monitor, probabilmente avrai bisogno di una lente d'ingrandimento. La vista umana normanna non può concentrarsi su una distanza così ravvicinata in cui si vedrebbero i pixel separati. Tuttavia, è molto buono nel riconoscere quella leggera differenza di luminosità.

Ora, per dimostrare la teoria corretta, potresti aggiungere ad esempio una linea larga 1 px di RGB 128-255-0 tra il rettangolo rosso sinistro e il rettangolo verde e vedere se la linea nera svanisce, perché questo aggiunge un po 'di luce verde subpixel prima il divario. Inoltre potresti provare ad esempio un RGB 85-85-0 largo 1 px tra il rettangolo verde e il rettangolo rosso destro, per attenuare leggermente i pixel secondari. Sfortunatamente, questo non può essere utilizzato nel design reale, perché in primo luogo dipende dalla disposizione dei subpixel rosso-verde-blu e allo stesso tempo rende il bordo del colore un po 'macchiato.

Inoltre, esiste la possibilità che avvenga un algoritmo di nitidezza dello schermo. Fondamentalmente, la nitidezza del monitor rende tutti i bordi dei colori più prominenti, aggiungendo bianco al lato più luminoso del bordo e attenuandolo al nero sul lato più scuro. Questo è molto simile all'effetto della banda Mach, ma molto più stretto e di solito più prominente. Questo può essere scoperto regolando l'impostazione della nitidezza del display (si spera possibile) e vedendo se l'effetto è ridotto.


2
sì, questo ha senso, tuttavia non tiene conto di tutti gli effetti, ma sì, ora che guardo in 2 monitor diversi con un ordine diverso noto, l'effetto è effettivamente invertito. Tuttavia, non vedo l'irregolarità del colore sul monitor principale, che potrebbe essere dovuto alla qualità follemente buona degli elementi dell'immagine del monitor. L'unica cosa che vedo sono le bande mach. Ps per testare questo monitor a testa in giù.
joojaa,

ah o anzi che gli elemebts sono stocasticamente rimescolati per contrastare questo problema
joojaa,

Ad ogni modo, OP @candh parla di una sovrapposizione larga 1px. Le bande mach non dovrebbero mai essere così strette. (Comunque, non possono nemmeno essere definiti nel senso di pixel, perché si formano nel cervello. Gli artefatti dei subpixel si formano sullo schermo.) Tuttavia, senza che Candh elabori di più su ciò che vede esattamente, siamo bloccati nel trovare la soluzione corretta. (Con la mia reputazione, non posso ancora commentare la domanda.)
Elmo Allén

2
@joojaa, ovviamente il rumore avrebbe attenuato l'effetto della linea retta dei subpixel, ma avrebbe gettato il bambino con l'acqua del bagno, perché la linea dritta non sarebbe più così nitida. Non penso che ci sia un buon modo per combattere questo o in realtà un motivo per farlo. Sui display moderni l'effetto è già minuscolo, e ora con i display HiDPI che stanno lentamente diventando mainstream anche sui computer desktop, conta ancora meno. Inoltre, molto raramente vengono usati contrasti cromatici molto grandi, e questo non influisce affatto sul contrasto della luminosità.
Elmo Allén,

2
Sul mio monitor R, G, B, ho ridotto molto l'artefatto visivo aumentando / diminuendo il totale dei due pixel di confine di 1/6 (totale 1/3, tenendo conto dello spostamento di 1/3 di un pixel). Più precisamente: 1 0 0 | 1 0 0 | 1 x 0 | x 1 0 | 0 1 0 | 0 1 0: se si impostano i due componenti x su 1/6 anziché 0, si evita l'effetto banda nera. E in 0 1 0 | 0 1 0 | 0 y 0 | y 0 0 | 1 0 0 | 1 0 0: è necessario impostare y su solo 5/6 per evitare l'effetto banda bianca. (I valori 1/6 e 5/6 dovrebbero probabilmente essere raffinati tenendo conto del livello di percezione dell'occhio.)
Armin Rigo,

4

Questa è la natura dei colori quando si incontrano. L'occhio umano tende a semplificare per chiarire le cose .. e le illusioni ottiche causate dalla nostra percezione dei colori.

questo fenomeno che si chiama "Mach Bands Illusion" appare con due colori diversi in Valore. non nella tonalità né nella saturazione. e il mio diagramma allegato mostra che la stessa illusione si presenta nei colori grigi. il grigio più chiaro sarà più chiaro rispetto a quello più scuro nel mezzo e il grigio medio appare più chiaro accanto al bordo del grigio scuro destro a destra. E così uno.

inserisci qui la descrizione dell'immagine

se è importante per te, hai due opzioni.

  1. scegliere due colori con lo stesso rapporto di nero assicurerà di ridurre l'illusione
  2. puoi "ingannare l'occhio" aggiungendo una piccola linea grigia tra i due colori che hanno il grigio medio dei due grigi in quei colori. vedere il risultato di seguito. potresti riconoscere che la striscia superiore è meno nell'illusione di quella inferiore.

la striscia superiore è meno nell'illusione

questa è la versione ingrandita con la piccola linea grigia.


11
Questo non è corretto Il primo diagramma (rosso-verde-rosso) non corrisponde al secondo (grigio chiaro-grigio medio-grigio scuro) perché i due rossi sono dello stesso colore. Se si trattasse di luminosità, il grafico a linee sarebbe simmetrico, in questo modo --\|\--/|/--, e vedresti una banda nera sia sull'interfaccia rosso-verde che su quella rosso-verde, o una banda bianca su entrambi.
David Richerby,

5
Questo è davvero facile da confutare. Se hai un laptop e vedi le linee in bianco e nero, capovolgi il laptop. Troverai la linea nera a destra anziché a sinistra.
slebetman,

3
@hsawires: l'idea è di provare qualcosa scientificamente. Capovolgere il laptop e vedere dissipare completamente la tua teoria è sicuramente una valida confutazione. Non puoi semplicemente sventolarlo a mano dicendo "non puoi provare o confutare le illusioni"; che sciocchezza!
Corse di leggerezza con Monica il

1
@hsawires: Ad ogni modo, capovolgendo lo schermo, se non fosse stato per il fatto che ciò inverte l'ordine dei diodi che creano i diversi colori sullo schermo, non avrebbe fatto alcuna differenza sul modo in cui l'immagine viene percepito, perché l'immagine è simmetrica. Altrimenti, osservando l'effetto della banda Mach, è possibile determinare se lo schermo è stato ruotato o meno, il che non ha alcun senso. Il fatto che l'immagine non sia percepita in modo identico significa che deve succedere qualcos'altro, il che è dovuto alla struttura subpixel che Ilmari ed Elmo descrivono entrambi.
Ciao addio

1
Per supportare @HelloGoodbye, il nostro fidato amico Wikipedia ( en.wikipedia.org/wiki/Mach_bands ) ha questo da dire: "L'illusione è indipendente dall'orientamento".
Nelson Rothermel,

0

Non posso esserne certo, ma se indossi gli occhiali, è qui che sta il problema. Molto probabilmente stai vedendo un'aberrazione cromatica , in cui i rossi e i verdi si stanno separando.

Più spessi sono i tuoi occhiali, più pronunciato sarà l'effetto. Prova a girare la testa e osserva i blocchi di colore muoversi: mentre ti sposti verso il bordo degli occhiali, i tuoi occhiali saranno più spessi e quindi causeranno una maggiore separazione.


6
Non è l'aberrazione cromatica. Qualsiasi paio di occhiali competenti a metà strada non mostrerà aberrazione cromatica quando si guarda dritto al monitor di un computer.
David Richerby,

C'è assolutamente un aspetto dell'aberrazione cromatica qui. Semplicemente regolando l'angolazione che sto guardando il monitor fa cambiare le dimensioni delle bande in bianco e nero. E mentre questo effetto è più pronunciato con gli occhiali, è ancora presente senza occhiali - anche i tuoi occhi hanno lenti imperfette! Ignorando che i colori primari puri avranno questo effetto manca parte della storia.
David Sainty,

@Sainty Come mostra la risposta di Ilmari , si tratta della spaziatura dei sub-pixel sul monitor. Se sposti la testa di lato, la spaziatura apparente dei sotto-pixel cambia in modo che l'effetto cambi. E in che modo l'aberrazione cromatica produrrebbe il nero? Stai proponendo che l'aberrazione è così grave che la frequenza della luce cambia al di fuori della regione visibile dello spettro?
David Richerby,

@Richerby: in base alla risposta di Candh e ad alcune indagini più dettagliate da parte mia, questo non è l'effetto che stava vedendo. L'aberrazione cromatica esiste, tuttavia, e crea linee nere: il rosso si sposterà da una parte e il verde dall'altra; pensa ai prismi e come separano i colori. La parte restante apparirà nera, anche se ai miei occhi (quando indossavo gli occhiali) sembrava più che il rosso stesse "fluttuando" sopra lo schermo.
user295691

0

Questa discussione sul forum di Adobe ha un buon punto su dove sono le opzioni "Allinea alla griglia di pixel".

Se ricordo bene, questo può anche essere abilitato a livello di documento tramite la File > Newfinestra di dialogo (in fondo alla finestra).

O questi esperti di monitor hard-core sono corretti o hai solo una discrepanza creata dal vettore che non si allinea ai pixel del monitor in modo corretto. Questo è esattamente il motivo per cui così tante persone sono entusiaste dell'aggiunta di questa piccola casella di controllo a Illustrator.


3
I vettori sono allineati correttamente. Per verificare che devi solo copiare e incollare l'immagine su Photoshop o su qualsiasi editor di immagini e ingrandire. Non c'è antialiasing tra i pixel e nessun pixel di tono medio.
Elmo Allén,

-2

Ciò potrebbe essere dovuto all'interazione del colore. Il rosso e il verde sono colori complementari e quando affiancati sembrano creare una linea nera / scura che sembra una sovrapposizione. Puoi leggere e vedere altri esempi qui .

Illustrator inserisce automaticamente le forme in posizione, quindi non dovrebbero esserci problemi di sovrapposizione.


2
Se il fenomeno fosse puramente dovuto ai nostri occhi, vedresti la stessa cosa al confine rosso-verde come fai al confine verde-rosso.
David Richerby,

Il rosso e il verde, se affiancati e visti da una distanza sufficiente (ad es. Guardando piccoli pixel da qualche metro di distanza), produrrebbero il giallo, non il nero.
Jason C,

-2

Se si abilita un'opzione Allinea nuovi oggetti alla griglia pixel nel menu delle opzioni della finestra Trasforma (quello nell'angolo in alto a destra di qualsiasi finestra delle opzioni), tutti i nuovi oggetti disegnati hanno la proprietà allineata pixel impostata per impostazione predefinita. Per i nuovi documenti creati utilizzando il profilo del documento Web, questa opzione è abilitata per impostazione predefinita. Per gli oggetti esistenti, puoi disattivare l'allineamento della griglia dei pixel selezionando Allinea alla griglia dei pixel nella finestra Trasforma stessa (visualizzata dopo aver spuntato Altre opzioni nel menu delle opzioni della finestra).

L'aspetto nitido dei tratti allineati ai pixel viene mantenuto nell'output raster con una risoluzione di soli 72 ppi. Per altre risoluzioni, esiste un'alta possibilità che tali tratti producano risultati anti-alias.

Gli oggetti allineati ai pixel, ma senza segmenti verticali o orizzontali diritti, non vengono modificati per allinearli alla griglia dei pixel. Ad esempio, poiché un rettangolo ruotato non ha segmenti verticali o orizzontali diritti, non viene spostato per produrre percorsi nitidi, quando la proprietà allineata ai pixel è impostata per esso.

Questa documentazione di Adobe lo dice in modo più ampio: http://helpx.adobe.com/illustrator/using/drawing-pixel-aligned-paths-web.html


1
quale opzione, esattamente?
cand
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.