Table des matières Python

Couleurs interférentielles

1. Introduction

Sont présentés ici quelques exemples de couleurs interférentielles obtenues par la méthode colorimétrique exposée dans Repérage des couleurs CIE XYZ et Espaces de couleur RGB.

2. Interférence à deux ondes

Ces couleurs sont observées dans des expériences classiques d'optique en lumière blanche comme l'interféromètre de Michelson, les miroirs de Fresnel, etc.

Lors d'une interférence de deux ondes, le facteur spectral de luminance est :

R(λ)=12(1+cos(2πλδ))

La différence de marche est exprimée en fonction d'une longueur d'onde moyenne (ici 500 nm) par la relation :

δ=500p

p désigne l'ordre d'interférence pour cette longueur d'onde.

from pylab import *
from math import *
from CieXYZ import *
from XYZ2RGB import *
cie=CIEXYZ("../ciexyz/ciexyz31.txt")
cie.setIlluminant("CN",6500)
sRGB=XYZ2RGB([0.64,0.33],[0.3,0.6],[0.15,0.06],[0.3127,0.329])
adobeRGB = XYZ2RGB([0.64,0.33],[0.21,0.71],[0.15,0.06],[0.3127,0.329])
def couleur(p):
    delta=p*500 
    def Rf(L):
        return 0.5*(1+math.cos(6.2831853/L*delta))
    XYZ=cie.spectralF2XYZ(Rf)
    return adobeRGB.rgbN2G(XYZ)
im=[]
n=400
for k in range(n):
    p=-10.0+20.0/float(n)*float(k)
    RGB=couleur(p)
    im.append(RGB)
figure(1,figsize=(12,4)) 
imshow([im],aspect=5,extent=[-10,10,0,1])
            
plotA.svgFigure pleine page

L'espace AdobeRGB(98) a été utilisé pour la conversion RGB car il fournit un dégradé de teinte plus fin que l'espace sRGB.

3. Interférence à N ondes

La facteur spectral de luminance est :

R(λ)=1N2sin2(Nπδλ)sin2(πδλ)
def couleur(N,p):
    delta=p*500
    def Rf(L):
        sinus=math.sin(3.1415926*delta/L)
        if sinus==0:
            return 1 
        else:
            a=math.sin(N*3.1415926*delta/L)/sinus/float(N)
            return a*a
    XYZ=cie.spectralF2XYZ(Rf)
    return adobeRGB.rgbN2G(XYZ)
im=[]
n=400
for k in range(n):
    p=-10.0+20.0/float(n)*float(k)
    RGB=couleur(10,p)
    im.append(RGB)
figure(2,figsize=(12,4))
imshow([im],aspect=5,extent=[-10,10,0,1])
            
plotB.svgFigure pleine page
Creative Commons LicenseTextes et figures sont mis à disposition sous contrat Creative Commons.