Bonjour,
J'ai voulu regarder de plus près la distribution des niveaux de gris et, faute de données disponibles sur le logiciel de traitement d'images - IrfanView, dont je suis loin de connaître toutes les ressources - j'ai programmé l'affichage de l'histogramme et le calcul des quartiles par le repérage des sommes cumulées successives encadrant la fraction de la somme totale:
Scum[i] ≤ Stot*(k/4) < Scum[i + 1] avec k = 1 (pour Q1), 3 (pour Q3) ou 2 (dans le cas de la médiane).
Cela donne une indication précise de la répartition des valeurs:
Gmin = 1 ; Gmax= 250; Q1 = 30 ; Med = 76 .
Il ressort de l'examen des images précédemment obtenues qu'il faut augmenter la luminance des zones de clarté moyenne ou forte, qui seules contiennent des détails anatomiques; l'éclairement des zones les plus sombres peut être brutalement ramené à zéro sans perte d'information picturale, ce qui permet d'augmenter le contraste de l'ensemble.
D'où deux séries d'images correspondant à diverses valeurs du seuil de gris:
Lim = 30 ,50 , 70 , 90
situées comme tu l'avais pressenti pas très loin de la médiane.
Les deux fonctions font intervenir le paramètre p = (s-L3)/(Smax - L3))
calculé à partie de la somme des indices de couleur: s = r + v + b
et de sa limite inférieure L3 = 3 * LIm ;
on obtient à partir de là:
Couleur_A = = Round(255*p
1/2) ; Couleur_B = = Round(255*(p*(2-p))
1/2) .
Reste à savoir dans quelle série un radiologue peut observer le plus de détails utiles; une combinaison des deux fonctions précédentes conduisant à des valeurs intermédiaires, par exemple:
qA = p1/2 , qB = (p*(2-p))1/2 , Couleur_C(λ) = Round(255 * (λ * qA + (1 - λ)*qB)) .
peut se révéler intéressante.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
CONST M3 = 255; Smax = 3 * 250;
Lim = 90; L3 = 3 * Lim;
Delta = Smax- L3; I_Delta = 1 / Delta;
... / ...
FUNCTION Couleur_00(Px1: Pixel): Pixel;
VAR g, j: Byte; s:Z_32; p, q: Reel; Px2: Pixel;
BEGIN
s:= Px1[1]; FOR j:= 2 TO 3 DO Inc(s, Px1[j]);
IF (s>L3) THEN BEGIN
p:= I_Delta * (s - L3); q:= Sqrt(p);
g:= Round(255 * q)
END
ELSE g:= 0;
FOR j:= 1 TO 3 DO Px2[j]:= g;
Result:= Px2
END;
FUNCTION Couleur(Px1: Pixel): Pixel;
VAR g, j: Byte; s:Z_32; p, q: Reel; Px2: Pixel;
BEGIN
s:= Px1[1]; FOR j:= 2 TO 3 DO Inc(s, Px1[j]);
IF (s>L3) THEN BEGIN
p:= I_Delta * (s - L3); q:= Sqrt(p * (2 - p));
g:= Round(255 * q)
END
ELSE g:= 0;
FOR j:= 1 TO 3 DO Px2[j]:= g;
Result:= Px2
END; |
Envoyé par
Guesset
... / ... Je me demande si nous n'avons pas perdu le PO ? ...
Malheureusement, c'est bien possible
Partager