RAL, sRGB, L*a*b*… What is color ?

What is color ?

The color observed (CO) of an object is the combination of the color itself (C), the light source (L) and the sensitivity of the observer (S).

CO = L * C * S

The light can change modifying the color observed.

The CIE (Commission internationale de l'Eclairage) was to standardize the light source … and the observer to reach the absolute object color.

Standardized light source are Daylight D65, C, Incandescent light A, Fluorescent light F2, F11 for instance. The most used is the D65. Those are represented as spectral power distribution.

Standardized observer has been established by numeruous observers and systematic visual tests integration small and large field of view : CIE 1931 with 2° FOV ​and CIE 1964 with 10° FOV respectively.

From the previous visual tests and the three-component theory of color vision, the concept for the XYZ tristimulus values has been built so that each visible color has non-negative XYZ coordinates. It resulted the CIE 1931 standard Observer having the color matching functions shown in the figure here below.

The XYZ tristimulus value are then directly calculated using the Standard Observer color-matching functions. For a given intensity spectrum  emitted or being the result of the light reflected by the object, those values are :

The CIE standard observer color matching functions

So with a standardized lighting and observer, we can measure the absolute color C !

From this XYZ color space, a chromaticity diagram as been defined as the first lightness independent representation to easily visualize colors : this is the CIE xyY color space with x= X / (X+Y+Z), y = Y / (X+Y+Z), z = Z / (X+Y+Z)

The CIE 1931 color space chromaticity diagram. The outer curved boundary is the spectral (or monochromatic) locus, with wavelengths shown in nanometers.[1]

What is a color space ? What is L*a*b*

The CIE 1931 XYZ color space is the basis for almost all other color spaces.

The CIE RGB color space is a linear transformation of the CIE XYZ. It is defined by three primary colors that are monochromatic (blue at 435.8nm, green at 546.1nm, red at 700nm).

Gamut of the CIE RGB primaries and location of primaries on the CIE 1931 xy chromaticity diagram

Gamut of the CIE RGB primaries and location of primaries on the CIE 1931 xy chromaticity diagram [1]

Other derivatives of the CIE XYZ are the CIE LUV, CIE LAB.

The CIE L*a*b*, with L for lightness and a and b for the color components is a non linear transformation of the CIE XYZ with the intention to approximate the human vision.

It is the device-independent model used as a reference that mimics the non linear response of the eye and one of the main usefullness of this model is to mesure perceptual color differences as the Euclidean distance between two L*a*b* coordinates.

delta E = sqrt(L^2+a^2+b^2)

What is a gamut ?

The CIE XYZ color space represents all the colors the the standard observer can see but all those colors can not be reproduced with three primary colors.

The gamut is subset of the CIE XYZ colors. In color reproduction it is often a triangle where the extremities are defined by three primary colors.

In additive color reproduction system, common RGB gamut color space are sRGB, Adobe RGB.

In substractive reproduction, the most used gamut is the CMYK.[2]

CIE 1931 xy chromaticity diagram showing the gamut of the sRGB color space and location of the primaries. The D65 white point is shown in the center. The Planckian locus is shown with color temperatures labeled in Kelvin. The outer curved boundary is the spectral (or monochromatic) locus, with wavelengths shown in nanometers (blue). Note that the colors in this displayed file are being specified using sRGB. Areas outside the triangle cannot be accurately colored because they are out of the gamut of sRGB, therefore they have been interpreted.

 

What is the RGB of a RAL Colour ?

RAL, as Pantone, HKS… are colour matching systems providing to the users a set of color references that can be used for quality control.

Those colors are absolute and list of L*a*b* coordinates for those color references are available.[3]

Those colors are often organised in Hue, Lightness and Chroma. 

Colour-Solid-of-the-RAL-DESIGN-System

But the reproduction of a L*a*b* color implies the choice of a gamut.

When looking on internet for the RGB values of a given RAL color we found various results : for instance RAL 1000 can be

(214, 199, 148), (http://www.ralcolor.com/)

(200, 186, 127), (http://www.easyrgb.com/index.php?X=TINT#Result)

(204, 204, 153), (http://www.pats.ch/formulaire/unites/unites11.aspx)

(201, 194, 140) (http://www.e-paint.co.uk/Lab_values.asp?cRange=RAL%20Classic&cRef=RAL%201000&cDescription=Green%20beige)

 

RAL ID   L* a* b* R G B     Name
RAL 1000   77,13 -0,59 25,90 205 186 1336 #CBDA88 #CCC58F Green beige
RAL 2000   60,35 34,64 54,65 218 110 0 #DA6E00 #DD7907 Yellow orange
                     
                     
                     
                     
                     
                     
                     

 

 

[1] http://en.wikipedia.org/wiki/CIE_1931_color_space

[2] http://en.wikipedia.org/wiki/Gamut

[3] http://en.wikipedia.org/wiki/List_of_RAL_colors

http://docs-hoffmann.de/cielab03022003.pdf

http://www.byk.com/fileadmin/byk/support/instruments/theory/color/en/Intro_Solid_Color.pdf

Ranger Camera Configuration : SICK Ranger E example

Here are the steps to configure the camera for a given field of view and belt speed.

To illustrate with realistic values we will follow a case study with a Field of view (FOV) of 600 mm and a belt speed of 2,2 m/s.

Pulse triggering using an encoder

In order to have the same resolution in the belt direction than perpendicular we have to acquire at 2200(mm/s) / 0, 4(mm) = 5500Hz (cycle time = 181 µs).

So we could acquire 'free-running' with trig mode = 0 and cycle time = 181 µs or use an encoder to keep object proportion when the conveyor speed may vary.

We chose an encoder like the DFV60 providing 65536 pulses by revolution. In this case one revolution correspond to 300mm and the camera receive one pulse each 300/65536 = 0,0045 mm. As we need to trig one line each 0,4mm, we specify the parameter pulse per trig = 0,4/0,0045 = 87.

Exposure versus cycle time

In free-run mode  (trig mode = 0) the exposure can be equal to the cycle time for the best performences.

In pulse triggering mode (trig mode = 5 for motion mode) a reset time has to be added with reset + exposure <= cycle time.

The time it takes to reset the sensor rows within a ROI is equal to the shortest possible exposure time for the ROI. For short exposure time it could be significant.

In our case with an ROI of 128 lignes and the cycle time of 183 µs the reset time is 71µs and the exposure is 112 µs ! We have to chose to loose 71µs of exposure to be sure that the belt speed remain constant !

Pixel resolution : 

Horizontal max and threshold : 1/2 pixel resolution
Horizontal threshold : 1/2 pixel resolution (1 thres), 1/4 pixel resolution (2 thres)
Horizontal max : 1 pixel resolution (), 1/2 pixel resolution ()
Hi-resolution 3D : 1/16th pixel resolution

Acquisition direction
Specifies whether to start at the bottom or the top of the ROI when searching for the laser line. Default: 0.
0 = Start at bottom
1 = Start at top

Range axis 
Specifies whether to measure the range from the bottom or the top of the ROI, depending on the acquisition direction.

Range Axis = 0, Acq Dir = 0 : Highest value at top of the ROI
Range Axis = 0, Acq Dir = 1 : Highest value at bottom of the ROI
Range Axis = 1, Acq Dir = 0 : Highest value at bottom of the ROI
Range Axis = 0, Acq Dir = 0 : Highest value at top of the ROI

ROI = Row 0 : top, Row bottom : 512

Concrete bubble quantification for aesthetic classification

Exposed concrete must meet several requirements. Technological, structural and functional requirements are already standardized and designers refer to various Belgian and European standards.

The WTCB -CSTC (1) is standardizing aesthetic requirements of exposed concrete. These requirements relate to the texture, the number and size of the bubbles and the homogeneity of the color. This standard is an extension of the standard EN 206-1 , NBN B 15-001 and DIN EN 13670 .

The next image processing intends to measure the surface proportion of bubbles less than 2 mm, bubbles of 2 to 15 mm and bubbles over 15 mm ( defects) . According to the surface percentage of bubbles of 2 to 15 mm, it will be standard, high quality or high quality.

Concrete_Bubbles_600

0-2mm Bubbles in blue, 2-15mm bubbles in green, defaults in red. 

Click on the image to see the animated gif

The threshold used the Otsu algorithm optimized to cut bimodal (black and white) distribution of pixels.

Nevertheless to give good result the image has to be cleaned of non-uniform lighting and non-uniform concrete texture and color.

This is done by removing the background from the image. This background is provided by a morphological closing and better by a morphological erosion followed by a reconstruction (2).

Morphological closing

Morphological closing

Morphological erosion followed by a reconstruction.

Morphological erosion followed by a reconstruction.

Background corrected image

Background corrected image

Matlab code :

function [Sum_0_2, Sum_2_15, Sum_15_max] = GetConcretePorosity( image_path )
%  GetConcretePorosity
%  Computes the Porosity of concrete surface
%  Norm definition :
%  Standard Concrete : < 1,9% of 2-15mm bubbles;
%  HT Concrete : < 0,6% of 2-15mm bubbles
%  THT Concrete : <0,3% of 2-15mm bubbles
%  Usage:
%  [Sum_0_2, Sum_2_15, Sum_15_max] = ...
%  GetConcretePorosity('C:/Image-Acquisition/Bulles/Fotos/P1080135.JPG');

  % 1 - read the image
  Im_Color = imread(image_path);
  crop_option = 0;
  if crop_option == 1
    [Im_Color] = imcrop(Im_Color);
  end
  % rgb2gray converts RGB images to grayscale by eliminating the hue and
  % saturation information while retaining the luminance
  Im_Gray = rgb2gray(Im_Color);

  % 2 - read the resolution
  % note : 72dpi means 1 pixel = 25.4/72 mm = 0,35 mm
  info=imfinfo(image_path);
  XResolution = info.XResolution;
  Area_2mm = int32((3.1416/4)*(2*XResolution/25.4)^2);
  Area_15mm = int32((3.1416/4)*(15*XResolution/25.4)^2);

  % 3 - remove the background
  % remove what is smaller than 15mm : 15 x 72 / 25.4 pixels
  cutoff_size_mm = 15;
  SE_size = (cutoff_size_mm*XResolution/25.4)/2;
  %structuring_element = strel('disk', 20);
  structuring_element = strel('disk', double(uint8(SE_size)));

  remove_option = 2;
  if remove_option == 1
    Im_Closed = imclose(Im_Gray, structuring_element);
    Im_Corrected = imadjust(Im_Closed - Im_Gray);
  else
    Im_Gray_Complement = imcomplement(Im_Gray);
    Im_Marker = imerode(Im_Gray_Complement, structuring_element);
    Im_Reconstructed = imreconstruct(Im_Marker, Im_Gray_Complement);
    Im_Closed = imcomplement(Im_Reconstructed);
    Im_Corrected = imadjust(Im_Closed - Im_Gray);
  end

  %figure;
  %imshow(imcomplement(Im_Corrected));

  % 4 - the segmentation
  % The graythresh function uses Otsu's method, which chooses the threshold
  % to minimize the intraclass variance of the black and white pixels.
  level = graythresh(Im_Corrected);
  Im_Segmented = im2bw(Im_Corrected,level);
  Im_Segmented = imfill(Im_Segmented,'holes');
  % Remove particle smaller than 2mm with bwareaopen :
  % BW2 = bwareaopen(BW, P) removes from a binary image all connected
  % components (objects) that have fewer than P pixels
  % Im_Segmented = imclose(Im_Segmented, 15);

  cc = bwconncomp(Im_Segmented, 8);
  cc.NumObjects;

  labeled = labelmatrix(cc);
  % RGB_label = label2rgb(labeled, @spring, 'c', 'shuffle');
  % figure, imshow(RGB_label);

  graindata = regionprops(cc, 'basic');
  regions_areas = [graindata.Area];

  % 5 - make 3 groups of bubbles 0-2, 2-15, 15-max mm
  % sort the areas then the indexes
  [grain_areas, label_idx] = sort(regions_areas);
  [label_idx_s, label_idx_s_idx] = sort(label_idx);

  % remove the background region
  % grain_areas(end) = [];

  index_2mm = -1;
  index_15mm = -1;
  for i = 1:length(grain_areas)
    if all([grain_areas(i)>Area_2mm, index_2mm == -1])
        index_2mm = i;
    end
    if all([grain_areas(i)>Area_15mm, index_15mm == -1])
        index_15mm = i;
    end
  end

  % 6 - Create a animated gif
  Im_Color_Overlay = Im_Color;
  [Width, Height] = size(Im_Segmented);
  for j=1:Height
    for i=1:Width
      if labeled(i, j) ~= 0
        label_ij = labeled(i, j);
        label_idx_ij = label_idx_s_idx(label_ij);
        % Im_Color(i,j,:) = [255, 0, 255];
        if label_idx_ij < index_2mm
          Im_Color_Overlay(i,j,3) = 255;
        elseif label_idx_ij < index_15mm
          Im_Color_Overlay(i,j,2) = 255;
        else
          Im_Color_Overlay(i,j,1) = 255;
        end
      end
    end
  end

  filename = 'C:/Image-Acquisition/Concrete_Bubbles.gif';
  [Im_Color_Overlay_256, Im_Color_Overlay_Map] = ...
      rgb2ind(Im_Color_Overlay, 256);
  Im_Color_Overlay_256(:,:,1,2) = rgb2ind(Im_Color, Im_Color_Overlay_Map);
  imwrite(Im_Color_Overlay_256, Im_Color_Overlay_Map, filename, 'DelayTime', 1, ...
          'LoopCount', inf);

  %imwrite(Im_Color_Overlay_256, Im_Color_Overlay_Map, filename, 'gif', ...
  %        'DelayTime', 1, 'Loopcount',inf);
  %imwrite(Im_Color_Overlay_256, Im_Color_Overlay_Map, filename, 'gif', ...
  %        'WriteMode', 'append');

  figure, imshow(Im_Color);

  % 7 output histograms and surfaces ratio
  grain_areas = grain_areas(index_2mm:index_15mm);
  grain_size = sqrt(grain_areas/3.1416);
  x_bins = [0, 2, 15, 50];
  figure; s(1) = subplot(2,1,1); s(2) = subplot(2,1,2);
  hist(s(1), grain_size, x_bins);
  hist(s(2), grain_size, 20);

  Sum_0_2 = sum(regions_areas(1:index_2mm))/(Width*Height);
  Sum_2_15 = sum(regions_areas(index_2mm:index_15mm))/(Width*Height);
  Sum_15_max = sum(regions_areas(index_15mm:length(grain_areas)))/(Width*Height);

end

(1) The WTCB -CSTC is a research institute funded primarily by 90000 Belgian companies representing all construction trades , which leads scientific and technical research for the benefit of its members, providing technical advice and contributing to innovation in order to improve the competitiveness of these.

(2) Morphological Grayscale Reconstruction in Image Analysis: Applications and Ecient Algorithms, Luc Vincent. 

Calculer la frèche d’un poutrelle en I sur deux appuis..

Une poutre en I est constituée de deux ailes horizontales reliées par une âme verticale.

Soit Ha et Va les dimensions horizontale et verticale de l'âme.

Soit Hl et Vl les dimensions horizontale et verticale des ailes.

POUTRELLE I BOIS

Le moment d'inertie se calcule selon la formule :

 I = \frac{Hl \left(Va + 2 Vl\right)^3 - \left(Hl - Ha\right)Va^3}{12}

La flèche se calcule selon la formule :

 y = \frac{-5.p.L^4}{384.E.I}

Exemple d'application :

Soit une terrasse de 4x4m posée sur 4 appuis avec une charge de 400kg/m². Deux poutres en I latérales doivent supporter le tout. Quelle sera la flèche si lapoutre est constituée d'une âme de section 38×225 et de deux ailes de section 50×150 ?

 I = \frac{150.325^3 - 112.225^3}{12} = 3,22.10^8 (mm^4) = 3,22.10^{-4}(m^4)

La charge linéaire est de 4000N/m²x4m²/2m = 8000 N/m. Le module d'élasticité du bois E=12000MPa. Le cas d'une poutre en bois et en I de 4 m sur deux appuis dont  donne : 

 y = \frac{-5*8.10^3(N/m)*4^4(m^4)}{384*12.10^9(Pa)*3,22.10^{-4}(m^4)} = -0,007 m

         
         
         
         
         
         
         

Exemple d'application :

Le cas d'une dalle en bois avec des madrier de 63×175 (HaxVa) écartés tous les 40 cm entre OSB 2cm (HlxVl = 200×20):

 I = 104,4 10^6 mm^4 http://raymond.caniac.perso.neuf.fr/mapage/annexe19/A19_caract_metaux.htm

Qt OpenCV Colorimetric Application

You will find here a simple application using Qt and OpenCV to create and modify the color of uniform source texture.


Some screeshots illustrate the options :
WarpAndDriftCorrected_Src600

Source image of a concrete slab.


WarpAndDriftCorrected_Warped600

OpenCV wrapPerspective transformation from the selected ROI.


WarpAndDriftCorrected600

Shading correction.

WarpAndDriftCorrected_Lab600

Lab modification within the ROI.

Download the zip file, unzip all in a folder and run GdColor.exe
Here is the source code

The toolbar gives the following options :
  • new : create a new image
  • open : open an image
  • save : save the current diplayed image
  • warp : modify the image in order to transform the purple ROI into the green ROI
  • shading correction : correct the non uniformity of the lighting within the selected ROI
The Colorimeter Box allow tho fix a Lab value within the ROI
  • « Set Mean Lab Value » button sets the mean Lab value within the ROI.
  • « Create dE of 2 around this value » takes the La*b* values set by the user and save a set of images located in the root directory (C:\ ) with (L+i, a*+j, b*+k) and i, j, k = -16, 14, -12…, 14, 16.
  • « Create Lab images with dE set » takes the La*b* values set by the user as sampling step to create images in the La*b* complete space : 0<L<100, -128<a*<128, -128<b*<128.

Typical use of this tool is the automatic generation of reference images with the same texture such :
a\b -80 -60 -40 -20 0 20 40 60 80
-80








-60
-40
-20
0
20
40
60
80

3D sensors for rock fragment measurement

cogolin real time control of aggregates 600

Context

In the context of sustainable development, the use of machine vision in the minerals industry aims directly at reducing the environmental impact by optimizing production facilities and improving quality control. The project I lead with my collegue Paolo Di Carlo takes place in the Marshal Plan. Indeed, the mineral industry occupies an important place in the Walloon economy and is facing important environmental challenges.

fragmo_on_belt_600

Objectives

COGOLIN project is aimed at improving the control, by machine vision, of size and morphology of bulk rock fragments scrolling on a conveyor belt, in harsh industrial environments (quarries,mines, …). The project involves the design, validation and installation of a scanner based on laser triangulation providing surfometric images. Those images have then to be analysed with specific algorithms. Algorithms and the user interface application allowing for instant results reporting constitute a major part of the research.

Technological Innovations

Size and shape control is of major interest at many stages of the processes developed in the mineral industry. Such controls are usually performed in the industry by manual sampling and sieving. Unfortunately, these techniques are unable to provide regular measurements in « real time » and, thus, do not permit on-line control and optimization of the installations.

New York 2012

STA_0129

Arrivée à JFK sans embûches si ce n’est les attentes classiques paraît-il à l’immigration. Nous nous rattraperons en boycottant le Ellis Island Immigration Museum ! Les premières impressions sont celles d’une vieille ville avec des routes à faire pâlir de fierté feu Dardenne.

A notre arrivée à l’appart, le proprio nous dit un truc bizarre : « je dois encore vous amener des torches électriques ». Interpellé, je l’interroge et il semble que les conditions météo passablement mauvaises que j’avais repérées avant notre départ s’avéraient en fait être dues à un ouragan.

Pour moi les ouragans n’étaient que dans les chansons de Stéphanie de Monaco. Mais comme disait France Gall, pour lui ça voulait dire beaucoup (plus). En tout cas, nous dit-il, il ne sortira pas de chez lui. Arggh.

Mais qu’est-ce qu’on fout ? On fait une réunion stratégie et logistique avec Arnaud et on se prépare à faire New York au pas de course, en un jour et demi avant l’ouragan puis à regarder l’Evénement à la télé comme les locaux, enfin à faire les musées quand la ville sera dévastée.

Direction pont de Brooklyn, Brooklyn heights, retour par le pont de Manhattan, vue de haut de Chinatown, métro vers le Queens et ses tags, enfin on récupère Axelle et Olivier le soir à Bryan Park et sa patinoire. On les prévient du danger qui guette ! On les rassure aussi, on gère la crise : le père d’Arnaud suit les news en direct et Arnaud lui sonne toute les heures pour suivre l’évolution. On ne sait jamais que les infos locales nous mentent !

IMG_0135
IMG_0105

IMG_0148

IMG_0154

IMG_0158

IMG_0160 IMG_0166 IMG_0168 IMG_0173 IMG_0177 IMG_0181 IMG_0200 IMG_0211

Deuxième jour : Manhattan : Central Park, Times Square, montée au Top of the rock (Rockfeller Center) avant qu’il ne ferme. Le plafond de l’ascenseur est vitré. Un jeu de lumière le fait passer d’opaque à transparent lorsqu’il se met à monter. On se croirait dans la rampe de lancement de Goldorak !

STA_0218

IMG_0240 IMG_0241 IMG_0245 IMG_0246

IMG_0250 IMG_0251 IMG_0262 IMG_0273

IMG_0263

IMG_0323
IMG_0275

Métro vers la Highline : une photo qui résume nos responsabilités respectives : Anne donne les orientations sur bases de fiches savamment optimisées, Axelle peaufine à l’aide du Lonely, olivier cherche le meilleur resto à proximité à l’aide d’une application smartphone, Arnaud se tritures les doigts en scrutant l’arrivée du métro pendant que je prends la photo.

On termine donc par ce qui nous a sans doute le plus plu : la Highline, parc urbain suspendu sur une ancienne voie ferrée.

IMG_0280 IMG_0290 IMG_0293 IMG_0298 IMG_0299Et voilà Sandy qui arrive. Les chaines de télé ne parlent plus que de ça. (Et nous aussi). On zappe entre l’Extreme Report Team et le Mobile Weather Lab. On achète tous les stocks de bougies et de pâtes chinoises du chinois près de l’appart  (les pakis à New York sont chinois, c’est fou non ?). Arnaud croise l’info avec son père au téléphone. On est prêt.

IMG_0317

IMG_0305

Mais Arnaud pense que je ne dois quand même pas prendre ces alertes à la rigolade ! On va devoir stocker quelques bières aussi !

Troisième jour : New York sans électricité.

IMG_0432

Les prises des quartiers favorisés (ceux qui ont du courant) sont prises d’assaut par ces inconscients qui n’ont même pas acheté de générateurs électriques comme il leur était conseillé à la télé!

IMG_0434

La police en profite pour sortir le grand jeu : feux de Bengale et camionnettes empruntées aux séries télévisées.

IMG_0443

On s’y résout : il va falloir vider nos stocks de bougies, pâtes et quelques menues boissons.

IMG_0444

Le sort nous a un peu préservé : il nous reste quand même le gaz pour chauffer l’eau. Les filles en profitent pour se laver les cheveux à l’évier. Je passe mon tour.

IMG_0334 IMG_0342

On termine ce voyage par les musées. Le Guggenheim et l’expo Picasso en noir et blanc étaient vraiment en harmonie.

IMG_0351

Le Metropolitan Museum of Art m’a bluffé. Des collections d’art tribal de Nouvelle-Guinée et d’Afrique à couper le souffle.

IMG_0368 IMG_0370 IMG_0372 IMG_0374 IMG_0382

Et des salles de Van Gogh, Monet, Gauguin et autres Degas (ci dessous) dont on peut profiter en toute quiétude. Déjà sans inondations ils sont pas très culture alors imaginez après un ouragan !

IMG_0404

Enfin le MoMA et ce superbe Picasso.

IMG_0421

Enfin, la passion connue de Anne pour les Rothko.

IMG_0425

Dernier jour, dernier rush, le Museum of Natural History avant l’avion. Bof.

IMG_0458IMG_0465IMG_0472IMG_0473

Terminons par un peu de culture.

Le coquilles d’ammonites sont faites d’aragonite, le composant principal de la nacre.

Ces coquilles d’ammonites modifiées et intensivement colorée de l’est des Rocheuses s’appellent ammolites et sont considérées comme des gemme par la World Jewelry Confederation !

A la question : quelles sont les trois gemmes d’origine organiques ? vous pourrez répondre : l’ambre, la perle et l’ammolite.

Thailande 2012

Traversée en bateau vers notre hôtel sur une île sur la rivière Kwaï

Non, on est pas fatigués du tout

Chambre avec vue la sur rivière Kwaï

Train remontant la rivière Kwaï vers Nam Tok

Train de touristes ridicules : ils ont jamais vu d'autochtones ou quoi ?

Chutes d'eau d'Erawan. Nord de Kwaï.

La petite famille au complet.

 

Rainforest de khao sok ... sous la pluie

Rainforest de khao sok ... sous la pluie

Khao sok et sa faune (j'aurais aimé mettre la photo de la sangsue qui s'était logée dans le nombril d'Anne mais Anne bougeait trop pfff !)

trajet (khao sok - takua pa) sous la protection de super-coq

Traversée vers koh kho khao : c'est beau et tout le monde s'en fout !

Kho Similan : ses blocs granitiques

Kho Similan : sa population locale

Kho Similan : ses plages

Kho Similan : ses touristes

Krabi et ses marchés : on a tout essayé

Resolution and depth of field

When specifying an imaging based system, one has to deal with resolution requirement : what is the smallest detail we need to acquire ?

Spatial resolution is defined in term of resolving power : the spatial resolution is the minimum distance between distinguishable objects. This resolution is limited by aberration and by diffraction. This last one is due to the fact that the light interferes with itself when crossing a lens.

Airy pattern and Point Spread Function

Let's consider perfect lenses without aberration : the spatial resolution is only limited by the diffraction. This one produces Airy pattern illustrated bellow.

Airy pattern depends on a Bessel function J1 depending on the aperture diameter d.
I(\theta)=I_{0}(\frac{2J_{1}(x)}{x})^2
x=\frac{\pi}{\lambda}d\sin{\theta}
This function has zeros when x ≈ 0,3.8,7.0,10.2
The maximum of the first ring is found for x ≈ 5.1

So the first dark ring occurs for small angles when
\sin{\theta}=1.22\frac{\lambda}{d}
And the first bright ring occurs for small angles when
\sin{\theta}=1.63\frac{\lambda}{d}

Using approximation of sin(θ) as x/f and the f-number f# defined as f# = f/d, the first dark ring is found for

x=1.22 \lambda f\#

For a wavelength of 500nm, f/2 gives 1.22 µm when f/8 gives x = 4.9 µm.

Resolutions in relation with f# and lamda
f# 1.4 2 2.8 4 5.6 8 11 16
blue 400nm 0.7 1.0 1.4 1.9 2.8 3.9 5.5 7.8
green 500nm 0.9 1.2 1.7 2.4 3.4 4.9 6.7 9.8
orange 600nm 1.0 1.5 2.0 2.9 4.1 5.9 8.3 11.7
red 700nm 1.2 1.7 2.4 3.4 4.8 6.8 9.7 13.7

So, Airy partern spreads out when increasing f#.

Point Spread Function

When the lens is not perfect, the Airy pattern becomes the Point Spread Function (PSF) describing the response of an imaging system to a point source.

A point source as imaged by a system with negative (top), zero (center), and positive (bottom) spherical aberration. Images to the left are defocused toward the inside, images on the right toward the outside. (wiki)

Modulation Transfert Function

The PSF gives the system resolution as the Airy disc gives the perfect lens resolution. In practice, the system resolution is measured with the ability to distinguish series of line pair. This is known as the Modulation Transfert Function (MTF) that plots the line pair contrast versus the spatial frequency.

The upper plot displays a sine pattern and a square pattern without and with lens blur. The middle plot displays the luminance of the square pattern. The lower plot displays the contrast versus the line frequencies. (link)

The 10% and 50% MTF give a good idea of the system resolution (sharpness): here MTF is 50% at 61 lp/mm and 10% at 183 lp/mm.

It is possible to measure the "vanishing resolution" corresponding to 5-10% MTF by looking the highest spatial frequency where USAF 1951 bars are visibly distinct.

In this USAF 1951 we the vanishing resolution is reach for the group 8,2.

With the following table we find the corresponding resolution of 287 lp/mm

Number of Line Pairs / mm in USAF Resolving Power Test Target 1951

Group Number

Element -2 -1 0 1 2 3 4 5 6 7 8 9
1 0.250 0.500 1.00 2.00 4.00 8.00 16.00 32.0 64.0 128.0 256.0 512.0
2 0.280 0.561 1.12 2.24 4.49 8.98 17.95 36.0 71.8 144.0 287.0 575.0
3 0.315 0.630 1.26 2.52 5.04 10.10 20.16 40.3 80.6 161.0 323.0 645.0
4 0.353 0.707 1.41 2.83 5.66 11.30 22.62 45.3 90.5 181.0 362.0 —–
5 0.397 0.793 1.59 3.17 6.35 12.70 25.39 50.8 102.0 203.0 406.0 —–
6 0.445 0.891 1.78 3.56 7.13 14.30 28.50 57.0 114.0 228.0 456.0 —–

Depth of field

When considering resolution, a majority of the emphasis is placed on point-to-point lateral resolution in the plane perpendicular to the optical axis. Another important aspect to resolution is the axial (or longitudinal) resolving power of an objective, which is measured parallel to the optical axis and is most often referred to as depth of field.

Depth of field is computed in terms of angular blur as :

DOF=\delta min + \delta plus

δmin and δmax are illustrated bellow and solved using similar triangle:

\omega=\frac{Bf}{D}=\frac{Bp}{D+\delta plus}=\frac{Bm}{D-\delta min} \frac{A}{D}=\frac{Bp}{\delta plus}=\frac{Bm}{\delta min} \frac{A}{D}=\frac{(D+\delta plus).\omega}{\delta plus}=\frac{(D-\delta min).\omega}{\delta min} \delta min=\frac{D^2\omega}{A+D\omega}; \delta plus=\frac{D^2\omega}{A-D\omega}

it gives : (see edmund optics)

\delta min + \delta plus = \frac{D^2\omega.2A}{A^2-D^2\omega^2}\approx \frac{2.\omega.D^2}{A} = 2.f\#_{obj}.Bf

Choosing the resolution to be one pixel width (Wpix)

DOF \approx 2.\frac{f\#}{magn}.Bf= 2.\frac{f\#}{magn^2}.W_{pix} DOF \approx \frac{2}{1.2 \lambda}.\frac{W_{pix}^2}{magn^2}

Thus for a given pixel size and magnification, the DOF is only related to the f#.

For instance, Xavier who studies carbonates has a magnification of 1 with MCT pixels of 30 µm.

What is his f*cking DOF for wavelengths of 1000 and 2500 nanometers :

(2 * 30 X 30) / (1.2 x 1 x 1) = 1.5 mm and (2 * 30 X 30) / (1.2 x 2.5 x 1) = 0.6 mm

References :

Wikipedia : Airy diskPoint spread function, MTF, USAF1951, DOFMaster

 

Une ellipse très discrète

Lorsqu’on souhaite mesurer avec précision un objet par vision industrielle, il est important de maîtriser l’optique d’une part et les effets de la numérisation d’autre part.

Nous traiterons de l’optique plus tard pour nous concentrer ici sur la numérisation : transformation d’un objet du monde réel dans une représentation discrète.

Dans notre cas deux discrétisations sont effectuées, l’une spatiale, l’autre en intensité. Il y correspond la notion de pixel auquel sont associés une position et un codage de couleur. Nous utiliserons par la suite le terme pixel, tantôt pour désigner une dimension, tantôt une couleur.
Le codage de couleur se résume à une valeur de niveaux de gris correspondant à la luminosité dans le cas d’une image noir et blanc, à plusieurs valeurs de niveaux de couleur correspondant aux intensités de ces composantes dans le cas d’une image couleur – par exemple 3 valeurs pour les canaux rouge, vert et bleu lors d’un affichage sur un écran ou 4 valeurs pour les canaux cyan, magenta, jaune, noir pour une impression en quadrichromie. La résolution (profondeur) de ces niveaux de gris ou de couleur dépend du nombre de bits dédiés à son stockage ou transport. Typiquement ces valeurs de niveau de gris ou niveau de couleur vont de 0 à 255 pour un codage sur 8bits, de 0 à 1024 sur 10 bits, de 0 à 4096 sur 12 bits, etc.
Pour servir de préliminaire à l’étude de la discrétisation de particules réelles, nous allons commencer par considérer le cas d’une ellipse théorique parfaite ayant un grand axe de longueur 2a et un petit axe de longueur 2b.
Pour ce faire, imaginons une grille de discrétisation sous laquelle nous plaçons une ellipse. Translatons ensuite cette ellipse de différents offsets en x et y et faisons la tourner de différents angles. Pour chaque combinaison offset & angle nous mesurerons la surface, le périmètre, l’aspect ratio … de cette ellipse et comparerons ces mesures aux valeurs calculées sur l’ellipse théorique.

ellipse non discrète

Ellipse d'axes x' et y' dans le monde réel sur laquelle est superposée une grille de discrétisation spatiale (des pixels)

 

Il est important de comprendre ici que les offsets qui nous intéressent sont de l’ordre du sous-pixel. En effet un périodicité de la discrétisation spatiale est rencontrée pour des offsets multiples de nombre entier de pixels. Dans les graphiques qui suivront nous déplacerons en fait le centre de l’ellipse en 49 positions suivant une sous-grille de 7×7 au sein d’un même pixel de la grille de discrétisation. Et pour chacune de ces positions nous effectuerons 7 rotations de l’ellipse entre 0 et 180 (0°, 25.7°, 51.4°, 77.1°, 102.8°, 128.6° , 154.3°).

L’effet de ces translations peut être illustré par le disque de diamètre 5 ci-dessous

disque de diamètre 5 avec translations au sous-pixel

disque de diamètre 5 avec translations au sous-pixel

Pour ce qui est de l’ellipse théorique, son équation cartésienne est la suivante :

 \frac{x'^{2}}{a^{2}} + \frac{y'^{2}}{b^{2}} = 1

Différentes formules permettent de caluculer ses surface, périmètre, aspect ratio avec exactitude :

 surface = \pi ab

 circonference = 2 \pi a \left[ 1 - \left(\frac{1}{2}\right)^{2}e^{2} - \left(\frac{1.3}{2.4}\right)^{2}\frac{e^{4}}{3} - \left(\frac{1.3.5}{2.4.6}\right)^{2}\frac{e^{6}}{5} - ... \right]

Avec l’approximation de Ramanujan :

 circonference \approx \pi \left[ 3(a+b) - \sqrt{(3a+b)(a+3b)} \right]

 ratio = \frac{b}{a}

L’effet de la discrétisation spatiale consiste a ne retenir de l’ellipse que l’information suivante : un ensemble de valeurs associées à chaque carré de la maille de discrétisation nous informant si ce carré est entièrement, partiellement ou pas du tout sur l’ellipse. Dans l’exemple de notre illustration, la grille comprend 8×7 = 56 carrés et donc nous ne retiendrons de l’ellipse que 56 valeurs.

La discrétisation en intensité concerne maintenant ces valeurs. Quelle précision souhaite-t-on conserver ? On peut prendre par exemple comme critère que si plus de 50% du carré est sur l’ellipse, on lui donne une valeur de 0 et dans le cas contraire une valeur de 1. Il s’agit alors d’une binarisation. Nous dessinons ci-dessous les pixels à 0 en noir et les pixels à 1 en blanc.

Binarisation d'une ellispe

Binarisation d'une ellispe

Si nous souhaitons plus de précision sur cette valeur, associons à chaque pixel le pourcentage de sa surface située sur l’ellipse. C’est ici que joue la discrétisation en niveau de gris. Selon le codage couleur utilisé, ce pourcentage occupera une plage de valeurs entière 0-255, 0-1024… Dans le cas d’images tels les bitmap, cette information est souvent stockée sur 256 niveaux, le 0 étant le noir (0%) et le 255 le blanc (100%). C’est la précision de rendu de nombre d’écran d’ordinateurs standards.
Une autre façon de le dire est que pour chaque pixel on conserve la couleur moyenne de la région qu’il couvre, couleur moyenne discrétisée entre 0 et 255 dans le cas d’images noir et blanc, en trois valeurs entre 0 et 255 dans le cas d’une image couleur.

Ellipse discrétisée en 255 niveaux de gris

Ellipse discrétisée en 255 niveaux de gris

Pour construire l’image ci-dessus sur base de l’équation de l’ellipse, nous allons procéder de la sorte : chaque pixel sera divisé en 256 sous-pixels (sous cadrillage de 16 par 16). Et la valeur du pixel sera le nombre de sous pixel dont le centre est situé sur l’ellipse.

Chaque centre de sous-pixel sera ramené de l’espace xy vers l’espace x’y’ par la transformation :

 x'= (x-offset_x') \cos \theta + (y-offset_y') \sin \theta
 y'= (y-offset_y') \cos \theta - (x-offset_x') \sin \theta

offset_x’ et offset_y’ étant la position respective de l’origine de l’espace x’y’ par rapport à l’origine de l’espace xy.

Ainsi le sous pixel est sur l’ellipse si
 \frac{x'^2}{a^2 } + \frac{y'^2}{b^2} < 1

 

Venons-en à ce qui intéresse le professeur Pirard qui faut-il le rappeler inventa le pixel en 1874 : Les graphique des bluntness des images de krumbein.

L’échelle de Krumbein (du célèbre géologue William Krumbein), représente de degré de lissage d’une particule suite à un processus d’abrasion.

Une charte de 9 série d’images correspondant aux 9 classes de l’échelle de Krumbein permet au microscopiste de classer ses particules. tent de comparer le comportement de paramètres tels la circularité, la bluntness… par rapport à ces classes.

Le paramètre de Bluntness issu du Calyptre développé par Eric Pirard est une version numérique de cette échelle : les valeurs de bluntness de particules classée selon l’échelle de Krumbein sont bien corrélées à celle-ci. Le paramètre de circularity est également corrélé mais dans une moindre mesure (classes 4 et 5 à valeurs semblables).

bluntness and circularity vs krumbein index

bluntness and circularity vs krumbein index

 

Ces paramètres sont bien entendu sensibles à la résolution spatiale. C’est par exemple le cas lorsque des particules sont acquises à des grossissements différents. On peut simuler cet effet en ré-échantillonnant des particules acquises à une résolution.

Une partie de cette sensibilité est liée au fait qu’au fur et à mesure que l’on ré-échantillonne on perd de l’information.

 

La ligne cyan correspond à la classe 9, la ligne jaune à la classe 1.

roundness_krumbein_1vs9_scale_02_05_10

Particules correspondant aux classes 9 (haut) et 1 (bas) de Krumbein à des échelles de 2, 5, 10% de l'image originale.

Selection d’airs d’opéra pour ténors

Je vais placer ici ma sélection d'air d'opéra pour ténor trouvée sur youtube.

Commençons par Roberto Alagna, mon maître à chanter, alias mon coiffeur selon mes intimes.
Je ne trouve pas qu'il ait la plus belle voix mais c'est celui qui a, selon mon prof, la meilleure technique, la même que celle de Luciano, il n'y a pas de secret.
Un souffle bien maitrisé donnant de beaux legatos et belles tenues de note mettant en évidence un superbe vibrato. Une technique qui mariée à sa générosité (aspect positif de ce que l'on peut parfois voir comme du cabotinage) m'a conquis avec le temps.

Le voici dans Carmen. Je l'ai vu à Berlin et trouve qu'il va bien dans le rôle. Il joue un Don José pleutre au sang chaud, tantôt fils à maman, tantôt amoureux fou, attachant par ses contradictions. Remarquez le diminuendo sur "de cette odeur je m'enivrais" : c'est cela la maîtise.


"La fleur que tu m'avais jetée", Carmen, Bizet.

Ensuite dans la forza del destino. Sa voix change avec le temps. Elle passe parfois par quelques fatigues et assombrissement. On sent qu'il cherche ici plus de rondeur pour moins de tranchant. Il faut ajouter qu'il se donne entièrement lors de ses concerts. J'ai eu la chance d'être au concert reprenant les thèmes de Roméo et Juliette donné au Bozar de Bruxelles : c'était cohérent et il y eut de vrais moments d'apesanteur comme lors de sa version a capella de la malageña. Et comment ne pas être touché par les 8 rappels donnés de bon coeur sans presque avoir eu à les demander ! Magique !


"La vita e inferno all'infelice", La forza del destino, Verdi.

Pour ce qui est du tranchant, il suffit de remonter un peu le temps :


"La donna e mobile", Rigoletto, Verdi.

Mais le rôle que je lui préfère c'est encore le Roméo de Gounod. On profite de sa diction et de ce costume kitch qui lui va à ravir. "A la porte des cieux et mourir".


"Salut! Tombeau sombre et silencieux!", Roméo et Juliette, Gounod. (1994)

Villazon. Un cas unique. Voici enfin un vrai acteur. Certains diront : parfois au détriment de la technique. On le retrouve souvent dans des productions plus contemporaines. Ce qui n'est pas désagréable. La version de la Traviata de Netrebko et Villazón est magnifique : sobriété du décor, choeurs mis en scène et chanteurs crédibles!


"Un di felice" La traviata, Verdi. (Salzburg 2005)

Un petit bijou de fraicheur :


"La Danza", Rossini

Pour compléter le tableau, on le voit ici en répétition dans le travail de l'air de Lensky. Difficulté du russe et souhait d'appropriation de l'air. Passion, simplicité et amusement font bon ménage.


Lensky aria, Eugene Oneguin, Tchaikovsky.

Enfin la première partie du final de Lucia di Lammermoor:


"Tombe degli Avi miei", Lucia di Lammermoor, Donizetti

Jonas Kaufmann, mon maître en émotion. Il a l'intelligence du chant. Son interprétation de Werther à Paris a mis toutes les autres versions au placard. Depuis, il fallait que je le voie, ce qui fut fait à Prague en Janvier dans une sélection de quelques classiques de Verdi, Puccini, Massenet… Une voix effectivement grandiose mais un concert un peu trop carré et découpé où l'émotion a du mal à naître. Contrairement à Roberto Alagna, il semble mieux dans une production d'opéra qu'en concert solo.


"Oh, nature!", Werther, Massenet

Le voici dans du pur lyrisme : Tosca.

Enfin dans Pagliacci, le premier opéra que j'ai vu en vrai. Un déclic !


"Vesti la giubba", Pagliacci, Leoncavallo

Il a tout du ténor dramatique. Il faut que j'aille le voir dans un Wagner.
Le voici dans ses débuts dans Lohengrin. 14000 personnes retenaient leur souffle face à l'écran géant placé face au Bayerische Staatsoper de Munich.


Gralserzählung, Lohengrin, Richard Wagner

Ce type de voix claire mais avec de la profondeur je l'avais trouvée avant chez Corelli. Mais hélas celui-ci n'étant plus, pas d'espoir de l'entendre en concert. Pour ce qui est de Kaufmann, j'espère bien pouvoir le voir dans Werther, Parsifal, Carmen !

Pour ce qui est de Franco Corelli, peu de bons enregistrements vidéo hélas. Ou alors des playbacks comme ici dans Turandot :


"Non piangere Liu", Turandot, Puccini

Voici un des rares concerts filmé dans ses belles années : La forza del destino. A comparer avec la version d'Alagna ci-dessus.


"La vita e inferno all'infelice", La forza del destino, Verdi

Il reste quelques enregistrements faits dans les débuts de la télé comme celui-ci mais sinon, nombres d'autres vidéos ont été filmées dans les années 70, alors que sa voix avait perdu de sont soutient.


Addio Alla Madre, Cavalleria Rusticana, Mascagni (1961)

Pour compléter ce panorama, j'aimerais revenir sur Carmen et son final mais cette fois avec José Carreras. C'est pour moins un des plus beaux finaux. Dramatique à souhait. La puissance dans l'exécution de José Carreras appuie justement celle de l'orchestration. C'est "légèrement" poussé mais il a deux jours pour se remettre après.


"C'est toi ? C'est moi !", Carmen, Bizet

Je ne résiste à l'envie de le montrer dans un air en espagnol. Voici Granada.

Placido Domingo :


"Niun mi tema", Othello, Verdi.


No puede Ser

Carlo Bergonzi

"Oh paradiso", L'Africaine, Meyerbeer's

"Una furtiva Lagrima", L'elixir d'amour, Donizetti

Bonissolli, vous connaissez ? Un ténor dans toute son ampleur, torse bombé, sautillement final, tout y est. Néanmoins, voici un des "di quella pira" des plus spectaculaires. Lorsque le talent dépasse de peu le cabotinage.


"Di quella pira", Il trovatore, Verdi.

Terminons par la crème de la crème, nessun dorma par monsieur nessun dorma : Luciano Pavarotti.
Terminer une session de youtube-opéra par ce morceau nettoie les oreilles et met les pendules à l'heure.
Chacun sa spécialité et, même s'il la sienne n'est pas toujours l'émotion, il faut reconnaître qu'il s'est attribué ce morceau comme personne.


"Nessun dorma", turandot, puccini

Il existe d'autres versions mais celle-ci montre le maître en gros plan (et non l'inverse) sur le "vincerò" final pendant 15 secondes. Les jugulaires sont à deux doigts de péter.I will place here youtube links of my selection of tenor arias.
Send me new one to update my selection.

 

Chine 2010 Yunnan

(12) Kunming

Très content de l’hôtel ‘the hump’ avec tout le confort du backpacker moderne (du wifi aux hambuger). Une visite sous la pluie parce qu’on est des malades et puis on rentre prendre un bon thé pour pas tomber réellement malade.

Un spectacle magnifique est au programme : Dynamic Yunnan, danses et chants inspirés des cultures des ethnies du Yunnan

(13-14) Dali

Pagodes, parc et temples à gogo sous un ciel encore un peu menaçant.

Le soir, repérage de resto. Ira-t-on, à celui de gauche ou de droite. On choisira sans doute selon le programme télé.

C’est fait on est à l’intérieur de celui de droite et c’était le bon choix. Peu de temps après nous, il sera pris d’assaut par des femmes sortant de la douche. Non je blague, l’évolution a remplacé petit à petit les couvre chef traditionnels par des serviette.

Dans le bac en bas à gauche, des grosses grenouilles. Très bonnes !

(15-16) Lijiang

Le Brugge, Venise,… local. Ville touristique, tourisme essentiellement chinois comme partout ailleur,  car une des seules dont le vieux centre a été préservé. C’est maintenant fleuri, embelli. En saison ça doit être l’horreur, dans notre cas on a pu déambulé de façon très paisible.

Centre historique restauré pour restaurant et ballades touristiques. Splendide au demeurant.

Marché authentique car le présent est aussi historique.

On accède au palais surplombant la ville en passant par des cours, des sentiers, des jardins. On y contemple une très belle vue de ce tapis de toits couvrant la vielle ville.

Les environs de Lijiang et ses champs de patates aux contrefort du petit tibet.

Chine 2010 Guizhou

(8) Sanjiang

(8) Zhaoxing

(9) Zhaoxing – Kaili
11 heures de bus. La route est en travaux. A un moment ils la faisaient même en live devant nous :

(10) Kaili

L’image qui choque au détour d’un marché. C’elle d’un chien rôti. Si je résume : le chinois mange de tout, l’occidental ne mange pas de chien, le musulman ne mange pas de porc ni de chien, le végétarien ne mange pas de viande. Tout le monde est content de sa culture. Le végétarien est content de son choix.

(10) Langdé (entre Kaili et Leishan)

(11) Guiyang

En attendant le train de nuit, on visite les deux ridicules vestiges historiques de cette métropole sans âme sous la bruine glacée.

Chine 2010 Guangxi

Encore un geste pour la planète : pour lutter contre le réchauffement climatique nous prenons l’avion pour ne pas chauffer notre maison ! On est prêt à tous les sacrifices !

(1-2-3) Hong Kong

En vrac, première bière chinoise, tentative de cul bouche par des poulets de Hong Kong, hors terre : gratte-ciel (invariable au pluriel paraît-il) infinis et sous terre : métros  infinis

(4) Yangshuo (Guilin)

En vrac, des formations karstiques comme on en trouve dans la baie d’Along.

(5-6) Rizières du dos du dragon (Longsheng)

En vrac, quelques rappels de consignes de sécurité sur les chantiers et on peut commencer la visite, des lanternes, des vessies, des jus de coco, des récoltes de riz, des rizières, des chinois dans les rizières qui récoltent du riz, des touristes dans les rizières qui photographient les chinois dans les rizières qui récoltent le riz des rizières, des minorités ethniques (ici des Zhuang) qui s’amusent des touristes qui … bon je m’arrête là, des Zhuang disais-je sans qui nous n’aurions jamais trouvé la sortie du village (c’est elle qui nous l’ont dit : youdontno chi chi chi : chi chi chi voulant dire en chinois : par ici par là ou par là-bas) – Anne a tenu à les payer grassement (quasi deux euros) alors que j’étais prêt à leur jeter des pierres, non mais, comme si j’allais pas trouver mon chemin ah ah ah je me marre, kénscandaâale : c’est qui qui a les couilles !, je blague bien sûr – et enfin d’autre Zhuang qui bossent au champs parce qu’il en faut bien qui bossent quand même !

(7) Pont du vent et de la pluie de Chengyang (Sanjiang)

En vrac des discussions de mecs et d’autres discussions de meufs, c’est l’ambiance, un beau pont, un bel ensemble de villages piétons ouverts au tourisme (j’ai le wifi dans la chambre ce qui me permets de publier ces photos) mais en harmonie avec leur culture. Bon qu’est-ce qu’ils ont comme bière ?

USA 2009

(A) San Francisco

(B) Yosemite

(E) Las Vegas

(F) Zion

(G) Bryce Canyon

(I) Canyonlands

(J) Arches

(L) Monument Valley

(M) Page (Upper Antelope)

(N) Page (White Poket)

(Q) Havasupaï

(R) Bakersfield

(T) Monterey

Guatemala 2008

(A) Quetzaltenango J1

Gare de bus de Xela

Gare de bus de Xela

(B) Volcan Santa Maria J2

Volcan Santa Maria (3772m 5h->13h)

Volcan Santa Maria (3772m 5h->13h)

(C) Panajachel J3-4

Lac Atitlan : San Pedro, San Antonio...

Lac Atitlan : San Pedro, San Antonio...

(D) Antigua J5-6-7

Toussaint au cimetière d'Antigua

Toussaint au cimetière d'Antigua

Antigua

Antigua

(E) Couvent Santo Domingo -Volcan Pacaya J6

Volcan Pacaya en activité

Volcan Pacaya en activité

(J) San Antonio – Finca los Nietos

Finca Los Nietos

Finca Los Nietos

(K) Flores – Tikal J8-9-10

Tikal

Tikal dans la jungle

Toucan à la recherche de fruits

Toucan à la recherche de fruits