- RapidEye235RGBIHSDetetaMin7Cla.alg
<?php echo "hello world!"; ?>
COnverte RGB para IHS
Adapted from Foley, VanDam 2nd.Ed.(p.592)
// given r,g,b on [0 ... 1],
// return (s,l) on [0 ... 1] h [0...360, -1= UNDEFINED]
{
Imagem i1, i2, i3, i4, i5 (“CAT_Imagem”);
MNT m1, m2, m3, m4, m5 (“CAT_MNT”);
MNT hue (“CAT_MNT”);
MNT maxv (“CAT_MNT”);
MNT red, green, blue (“CAT_MNT”);
MNT iszero, minvl (“CAT_MNT”);
MNT dltvl (“CAT_MNT”);
MNT hue6 (“CAT_MNT”);
MNT sat (“CAT_MNT”);
hue = Novo( Nome = “H_235” , ResX = 5 , ResY = 5 , Escala = 10000 );
maxv = Novo( Nome = “V_235” , ResX = 5 , ResY = 5 , Escala = 10000 );
red = New(Name=“TMP_HSV_R”,ResX=5,ResY=5,Escala=10000);
green = New(Name=“TMP_HSV_G”,ResX=5,ResY=5,Escala=10000);
blue = New(Name=“TMP_HSV_B”,ResX=5,ResY=5,Escala=10000);
minvl = New(Name=“TMP_MIN”,ResX=5,ResY=5,Escala=10000);
dltvl = New(Name=“TMP_DLT”,ResX=5,ResY=5,Escala=10000);
sat = New(Name=“TMP_SAT”,ResX=5,ResY=5,Escala=10000);
hue6 = New(Name=“TMP_H6”,ResX=5,ResY=5,Escala=10000);
i1 = Recupere( Nome = “RapidEye2014_1” );
i2 = Recupere( Nome = “RapidEye2014_2” );
i3 = Recupere( Nome = “RapidEye2014_3” );
i4 = Recupere( Nome = “RapidEye2014_4” );
i5 = Recupere( Nome = “RapidEye2014_5” );
m1 = New(Name=“TMP_M1”,ResX=5,ResY=5,Escala=10000);
m2 = New(Name=“TMP_M2”,ResX=5,ResY=5,Escala=10000);
m3 = New(Name=“TMP_M3”,ResX=5,ResY=5,Escala=10000);
m4 = New(Name=“TMP_M4”,ResX=5,ResY=5,Escala=10000);
m5 = New(Name=“TMP_M5”,ResX=5,ResY=5,Escala=10000);
Assume input image range 0-65535, output range 0-1
m1 = Digital(i1)/65535.;
m2 = Digital(i2)/65535.;
m3 = Digital(i3)/65535.;
m4 = Digital(i4)/65535.;
m5 = Digital(i5)/65535.;
m1 = Digital(i1)/19978.;
m2 = Digital(i2)/18635.;
m3 = Digital(i3)/15604.;
m4 = Digital(i4)/13950.;
m5 = Digital(i5)/11244.;
m1 = m1 > 1. ? 1. : m1 ;
m2 = m2 > 1. ? 1. : m2 ;
m3 = m3 > 1. ? 1. : m3 ;
m4 = m4 > 1. ? 1. : m4 ;
m5 = m5 > 1. ? 1. : m5 ;
red = m2;
green = m3;
blue = m5;
// max := Maximum(r,g,b)
maxv = (red >= green ) && (red >= blue ) ? red :
(blue >= green) ? blue : green;
min := Minimum(r,g,b)
minvl = (red ⇐ green ) && (red ⇐ blue) ? red :
(blue ⇐ green ) ? blue : green;
if max <> 0 then
s := (max-min)/max
else s := 0
dltvl = maxv - minvl;
sat = (maxv == 0.0) ? 0.0 : dltvl/maxv;
if s = 0 then
h := UNDEFINED
hue6 = (sat == 0.0) ? 0.0 : (
else
begin
delta := max-min
if r = max then
h := (g-b)/delta
(red == maxv) ? 60.0 * 1)