Biais Illusions

Aucun pixel rouge dans ces fraises : les preuves.

Cet article est une traduction d’une publication de Nikhil Rasiwasia que vous trouverez ici.

Ce que nous avons trouvé d’intéressant dans cet article, c’est qu’il revient sur une remarque très très courante sur les réseaux sociaux selon laquelle cette image, présentée comme n’ayant aucun pixel rouge, contient en réalité des pixels rouges. C’est faux, et voici pourquoi :

Vu un peu partout sur Internet : l’image déconcertante de fraises «rouges» accompagnées de l’affirmation selon laquelle, elles ne contiendraient aucun pixel «rouge». Il en existe plusieurs versions sur Internet , mais pour cet article, j’ai téléchargé l’image qui a été initialement publiée par Akiyoshi Kitaoka sur Twitter (avec gamma: 1.0).

Ci-dessous, vous pourrez voir d’autres images à différents niveaux gamma. Il est clair que l’on peut percevoir les fraises comme étant de couleur rouge, mais on prétend souvent qu’il n’y a pas de pixels «rouges» dans l’image. Que signifie cette déclaration? Beaucoup de gens prétendent que cette image a beaucoup de pixels avec «R»> 0 (R étant le canal rouge d’une image RVB). Certains autres prennent une définition plus stricte du rouge et trouvent de nombreux pixels avec «R»> 127. D’autres encore donnent un contre-argument selon lequel pour que les pixels soient rouges, «R» devrait être supérieur à la fois aux canaux «G» (vert) (NdT : j’ai gardé «G» pour VERT, car sur les images le G est indiqué, et je n’ai pas transformé chaque G en V sur chaque image…) et au «B» (bleu), c’est-à-dire «R» > «G» et «R» > «B». Une question à tous ces penseurs RVB (NdT : « RGB » dans le texte original) : De quelle couleur est le pixel avec des valeurs RVB de [255, 254, 254] ? Il satisfait à la fois «R»> 127 et «R»> «G», «B». C’est «blanc» si vous vous demandez encore. Alors, comment définissons-nous les pixels «rouges». Plutôt de regarder les valeurs RVB des pixels, une manière de faire est de penser dans le langage de [‘teinte’, ‘saturation’, ‘valeur’] ou HSV. Dans le langage HSV, nous devrions trouver un pixel avec une «teinte» de «rouge». Wikipedia donne une définition assez compliquée de la « teinte » comme « le degré auquel un stimulus peut être décrit comme similaire ou différent des stimuli qui sont décrits comme rouges , verts , bleus et jaunes « . La teinte mathématique est définie comme:

où la teinte («h») varie alors de [0, 360] avec à la fois 0 et 360 impliquant «rouge», 120 étant «vert» et 240 étant «bleu». Dans un langage simple, la teinte capture la couleur du pixel. Ci-dessous, vous pouvez voir à la fois les valeurs «  R  » et les valeurs de «  teinte  » (codées par couleur pour montrer la couleur de teinte exacte) pour l’image du sélecteur de couleurs à gauche (avec des teintes mappées sur 0-180 au lieu de 0-360). Nous pouvons voir que la teinte capture les couleurs avec précision même si elle est atténuée, sauf lorsque la saturation est très faible (regardez au bas de l’image, qui est presque blanche) où les estimations de teinte sont un peu décalées.

Maintenant, voyons quelles sont les teintes présentes dans l’image des fraises d’Akiyoshi Kitaoka (gamma: 1.0), et regardons les vraies couleurs de teinte pour chaque pixel (avec des teintes mappées sur 0-180 au lieu de 0-360 ).

Clairement, en laissant quelques pixels ici ou là, tous les pixels ont une teinte entre «vert» et «bleu». Les quelques pixels avec une teinte rouge (teinte <20 ou teinte> 160 dans l’image ci-dessus) sont dus à une mauvaise estimation de la teinte lorsque la saturation / valeur est très faible, et sont dans le cas ci-présent principalement des pixels blancs, comme le montre l’image ci-dessous… Ils n’influencent donc pas notre perception de manière significative.

Enfin, ci-dessous, nous pouvons voir la même chose pour quatre niveaux gamma différents, ainsi que la valeur «R» de tous les pixels. Bien que dans certains cas, «R» soit proche de 200, la teinte ne varie cependant que de 60 à 120, qui est principalement de la gamme vert-bleu.

Et enfin, voyez-vous un ton rouge dans l’image ci-dessous ?

Je parie que non, sauf si vous avez vraiment envie de voir un pixel rouge, même les yeux fermés ! Cette image se compose des mêmes pixels que l’image des fraise, juste réarrangés selon une fonction “magique” (NdT : qui réorganise les pixels qui composent l’image sous forme de dégradé) ! J’espère que cela fait vraiment ressortir le fait que c’est le positionnement des pixels qui donne une perception «rouge» et que les pixels ne sont pas «rouges». Aussi, j’ai vérifié qu’il n’y ai aucun pixel où «R» est supérieur à la fois à «G» et à «B». J’espère que cela dissipe les doutes sur la présence de pixels «rouges» dans les images. Il n’y a pas de pixels «rouges». Cette image est en effet un chef-d’œuvre, nous faisant percevoir le «rouge» sans qu’aucun pixel ne soit «rouge».

Voici l’extrait de code pour tracer les teintes d’une image donnée, au cas où vous seriez intéressé de l’essayer:

import cv2
import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt

img = cv2.imread('strawberry_image.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
plt.figure(figsize=(20,5))
plt.subplot(131)
plt.imshow(img)
plt.title('Various Colors')
plt.subplot(132)
plt.imshow(img[:,:,0], cmap=plt.get_cmap('gray'))
plt.colorbar()
plt.title('R Component')
hsv = cv2.cvtColor(img, cv2.COLOR_RGB2HSV)
plt.subplot(133)
plt.title('Hue Distributions')
plt.imshow(hsv[:,:,0], cmap=plt.get_cmap('hsv'), vmin=0, vmax=180)
plt.colorbar()

Nikhil Rasiwasia

ML Manager / Senior ML Scientist chez Amazon (inde)

Vous pourriez également aimer...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.