Jean-Luc Lamboley, Expert de bologne OBJECTIFS ET METHODES DU PROJET “TUNING” Lyon 13-14 mars 2008.
Vision des couleurs et création dimages Pascal Lamboley et Jean-Marcel Piriou.
-
Upload
yvon-courtois -
Category
Documents
-
view
109 -
download
2
Transcript of Vision des couleurs et création dimages Pascal Lamboley et Jean-Marcel Piriou.
Vision des couleurs et création d’imagesVision des couleurs et création d’imagesPascal Lamboley et Jean-Marcel Piriou
SommaireSommaire La vision des couleurs par l’œil humain La vision des couleurs chez les insectes, mammifères, primates
Le RVB comme famille libre et génératrice des couleurs visibles? Couleurs additives, soustractives, monochromatiques
Le format image PPM Gestion des transparences couleur
Vision des couleurs par l’œil humain: cônes et bâtonnetsVision des couleurs par l’œil humain: cônes et bâtonnets
Bâtonnets (1 type): vision nocturneBâtonnets (1 type): vision nocturne
Cônes (3 types): vision diurneCônes (3 types): vision diurne
Vision des couleurs par l’œil humain: spectres Vision des couleurs par l’œil humain: spectres d’absorption des cônes (vision diurne)d’absorption des cônes (vision diurne)
• Couleurs et convolutionCouleurs et convolution• Pigeons, insectes, mammifères non primatesPigeons, insectes, mammifères non primates• Trichromie humaine et berceau africain Trichromie humaine et berceau africain • Daltonisme / Vision féminineDaltonisme / Vision féminine• RVB libre et génératrice? RVB libre et génératrice?
Vision et résolutionVision et résolution
Œil humain: pouvoir séparateur de 1.E-4 rad environŒil humain: pouvoir séparateur de 1.E-4 rad environ
Écran de PC / station: 1280x1024 points, écran de 60 cm vu à 70 cm Écran de PC / station: 1280x1024 points, écran de 60 cm vu à 70 cm 7.E-4 rad 7.E-4 radProjecteur RVB: 1024x768 points, écran de 2 m vu à 7 m Projecteur RVB: 1024x768 points, écran de 2 m vu à 7 m 3.E-4 rad 3.E-4 rad
MammifèresMammifères
Œil du condorŒil du condor
Persistance rétinienne et animationPersistance rétinienne et animation
Œil humain: persistance rétinienne de 1/20 sŒil humain: persistance rétinienne de 1/20 sCinéma muet: 16 images/s Cinéma muet: 16 images/s sensation de saccadé sensation de saccadéCCinéma actuel: 24 à 30 images/s inéma actuel: 24 à 30 images/s dessins animés dessins animésVidéo: 30 images/sVidéo: 30 images/sSite WEB W3: de 5 à 15 images/sSite WEB W3: de 5 à 15 images/s
Un mouvement fluide demande plus de 23 images/sUn mouvement fluide demande plus de 23 images/s
Quid du chien et de la mouche au cinéma?Quid du chien et de la mouche au cinéma?
La vision: un cocktail de plusieurs ingrédientsLa vision: un cocktail de plusieurs ingrédients
Sens chromatiqueSens chromatique
RésolutionRésolution
Renouvellement des imagesRenouvellement des images
Vision du relief, du mouvementVision du relief, du mouvement
Couleurs additivesCouleurs additives
Couleurs additives primaires: rouge, vert, bleu Téléviseurs, moniteurs, projecteurs
Couleurs soustractivesCouleurs soustractives
Couleurs soustractives primaires: cyan,magenta, jaune- Cyan = bleu + vert = blanc – rouge filtre le rouge!- Magenta = rouge + bleu = blanc – vert filtre le vert!- Jaune = rouge + vert = blanc – bleu filtre le bleu!
Imprimantes, aquarelles
Lien couleurs additives / soustractivesLien couleurs additives / soustractives
Les couleurs additives et soustractives primaires entretiennent entre elles une relation très simple: elles sont inverses vidéo!…
Couleurs monochromatiquesCouleurs monochromatiques
Leur spectre est un Dirac à une longueur d’onde donnée
Rayonnement monochromatique bleu: active le seul cône bleu
Rayonnement monochromatique jaune: active également les cônes rouges et verts
Le format image PPM (Portable PixMap): une Le format image PPM (Portable PixMap): une écriture directe des triplets RVBécriture directe des triplets RVB
P6#600 400#255#(255)(000)(000)(000)(000)(200)…
# = retour chariot
Pour une image de Nx points en X et Ny points en Y, la taille du fichier PPM associé sera de (3*Nx*Ny+ quelques octets pour l’en-tête)
Exemple: 600x400 environ 720 ko
Exemple d’écriture de fichier PPM: dégradé de rougeExemple d’écriture de fichier PPM: dégradé de rouge
program demo!! Taille de l'image.!ix=600 ; iy=400!! En-tête du fichier PPM.!open(1,file='image_rouge.ppm',form='formatted')write(1,fmt='(a)') 'P6'write(1,fmt='(2i6)') ix,iywrite(1,fmt='(i6)') 255!! Ecriture des triplets RVB.!do jy=1,iy do jx=1,ix zratiox=real(jx-1)/real(ix-1) ir=max(0,min(255,int(256.*zratiox))) iv=0 ib=0 write(1,fmt='(3a)',advance='no') char(ir),char(iv),char(ib) enddoenddoclose(1)end
Exemple d’écriture de fichier PPM: RVB avec R+V+B Exemple d’écriture de fichier PPM: RVB avec R+V+B constantconstant
program demointeger, allocatable :: irvb(:,:,:)!! Taille de l'image.!ix=600 ; iy=400 ; allocate (irvb(3,ix,iy))!! Ecriture des triplets RVB.!do jy=1,iy zratioy=real(jy-1)/real(iy-1) do jx=1,ix zratiox=real(jx-1)/real(ix-1) irvb(1,jx,jy)=max(0,min(255,int(256.*zratiox))) ! Rouge en X. irvb(2,jx,jy)=max(0,min(255,int(256.*zratioy))) ! Vert en Y.
irvb(3,jx,jy)=max(0,min(255,255-irvb(1,jx,jy)-irvb(2,jx,jy))) ! Bleu: le complément à 1. enddoenddo!! Ecriture du fichier PPM.!call img_ecr('demo3.ppm',ix,iy,irvb)end
Exemple de lecture / écriture de fichier PPM: filtrageExemple de lecture / écriture de fichier PPM: filtrage
program paletteinteger, allocatable :: irvb(:,:,:)real, allocatable :: zchamp(:,:)character*200 clppm1,clppm2clppm1='perroquet.ppm' clppm2='demo5.ppm' !!-------------------------------------------------! Lecture d'une image.!-------------------------------------------------!call img_taille(clppm1,ix,iy) ! Taille de l’image d’entrée.allocate (irvb(3,ix,iy)) ! Allocation du tableau des triplets RVB.call img_lec(clppm1,ix,iy,irvb) ! Lecture des triplets sur le tableau irvb.!!-------------------------------------------------! Filtrage des 2/3 du bleu.!-------------------------------------------------!do jy=1,iy
do jx=1,ixirvb(3,jx,jy)=max(0,min(255,irvb(3,jx,jy)/3))
enddoenddo!! Ecriture du fichier PPM.!call img_ecr(clppm2,ix,iy,irvb)end
Application au tracé de champs météorologiquesApplication au tracé de champs météorologiques
1. Colorisation de champs 2D
2. Saisie de palettes externes
3. Fondus et transparences
1. Colorisation de champs 2D1. Colorisation de champs 2D
program paletteinteger, allocatable :: irvb(:,:,:)real, allocatable :: zchamp(:,:)!! Taille de l'image.!ix=8640 ; iy=4320 ; allocate (zchamp(ix,iy)) ; allocate (irvb(3,ix,iy))!!-------------------------------------------------! Lecture du champ.!-------------------------------------------------!open(1,file='relief_5km.dta',form='unformatted') ; read(1) zchamp ; close(1)!!-------------------------------------------------! Application d'une palette .!-------------------------------------------------!call palette_noir_vert_jaune_rouge(ix,iy,zchamp,irvb)!! Ecriture du fichier PPM.!call img_ecr('demo4.ppm',ix,iy,irvb)end
Subroutine palette_noir_vert_jaune_rouge(kx,ky,pchamp,krvb)Integer krvb(3,kx,ky)Real pchamp(kx,ky)Integer, parameter :: jppal = 4Integer ipalette(3,jppal)!! Tabulation des points de passage.!ipalette(1,1)=000 ; ipalette(2,1)=000 ; ipalette(3,1)=000 ! Noir. ipalette(1,2)=000 ; ipalette(2,2)=255 ; ipalette(3,2)=000 ! Vert.ipalette(1,3)=255 ; ipalette(2,3)=255 ; ipalette(3,3)=000 ! Jaune.ipalette(1,4)=255 ; ipalette(2,4)=000 ; ipalette(3,4)=000 ! Rouge.!! Extrêmes du champ réel d’entrée.!zmin=minval(pchamp) ; zmax=maxval(pchamp)!! La valeur du champ est convertie en couleurs,! Selon une ligne brisée comportant jppal points de passage.!do jy=1,ky
do jx=1,kxzpassage= real(jppal)*(pchamp(jx,jy)-zmin)/(zmax-zmin)ipassage=max(1,min(jppal,1+int(zpassage)))ipassage1=min(jppal,ipassage+1)zf=zpassage-int(zpassage)do jcoul=1,3
zoctet= (1.-zf)*real(ipalette(jcoul,ipassage)) & & + zf* real(ipalette(jcoul,ipassage1)) krvb(jcoul,jx,jy)=max(0,min(255,nint(zoctet)))
enddoenddo
enddoend
2. Exemple de saisie de palette externe2. Exemple de saisie de palette externe
Exemple de saisie de palette externeExemple de saisie de palette externe
3. Epaisseur optique et gestion des transparences couleur3. Epaisseur optique et gestion des transparences couleur
Epaisseur optique et gestion des transparences couleurEpaisseur optique et gestion des transparences couleur
fleur. une comme couche la versephoton tra le que
éprobabilit lasoit que tel :optiqueEpaisseur etdir
aF
Ftdif
Frdir F Frdif
1 difdirdifdir rrtta
E Ftdir
Epaisseur optique et gestion des transparences couleurEpaisseur optique et gestion des transparences couleur
• Si la transparence t est la même pour R,V et B, si l’émission est égale à l’absorption (loi de Kirchhof), et r=0 on obtient
- R = (1-t) Rpp + t Rf- V = (1-t) Vpp + t Vf- B = (1-t) Bpp + t Bf
• Pour gérer une couche hémi-transparente, on peut souvent se placer dans un cadre plus simple:
• On a un fond et un premier plan.• Le fond est défini en chaque point par sa couleur: Rf, Vf, Bf.• Idem premier plan: Rpp, Vpp, Bpp.
Fondu: transparence fonction de l’abscisseFondu: transparence fonction de l’abscisse
Transparence fonction de la nébulositéTransparence fonction de la nébulosité
Transparence fonction de la nébulositéTransparence fonction de la nébulosité
Transparence fonction de la nébulositéTransparence fonction de la nébulosité
Transparence fonction de la nébulositéTransparence fonction de la nébulosité
Passage PPM Passage PPM autres formats: usage de convert autres formats: usage de convert
GIF JPG
TIFF
PPM
PS, EPS
ETC!…
Conclusions vision et base RVBConclusions vision et base RVB
1. La vision colorimétrique humaine se ramène assez bien à trois degrés de liberté
2. Le format PPM permet de lire/écrire aisément des images via FORTRAN ou C
3. Convert permet de passer dans les deux sens de PPM aux autres formats GIF, JPG, TIFF, etc...