Buenas, Disculpen es que estoy relizando un filtro de Ruido llamado Rayleigh, el cula se lo aplico a una imagen, pero en mi codigo me esta marcando un error con respecto a mis valores flotantes, pero aun no he logrado descirfrar porque obtengo ese error, espero alguien me pueda ayudar, aqui les pongo la formula del ruido Rayleigh y mi codigo, muchas gracias por su atencion
Formula: H:= ((2*g)/gama) e^-(g^2/gama);
Donde:
g es el valor del canal actual
gama es un valor dado por el usuario entre 0 y 255,
por el momento yo estoy poniendo mi gama en 100
Código Delphi
[-]procedure TFImagen.RRayleigh;
var i,j: Integer;
ExpR,ExpG,ExpB,BaseR,BaseG,BaseB,AuxR,AuxG,AuxB:double;
P1,PC: PByteArray;
r,g,b: Integer; bmp:TBitmap;
begin
r:=0; g:=0; b:=0; bmp:=TBitmap.Create;
bmp.Assign(Bitmap); for j:= 0 to Bitmap.Height-1 do
begin
P1:=Bitmap.ScanLine[j]; PC:=bmp.ScanLine[j];
for i:=0 to ancho -1 do
begin
BaseR:= (2*(P1[(i*3)+2]))/100; BaseG:= (2*(P1[(i*3)+1]))/100;
BaseB:= (2*(P1[(i*3)]))/100;
ExpR:= -1*sqr(P1[(i*3)+2])/100; ExpG:= -1*sqr(P1[(i*3)+1])/100;
ExpB:= -1*sqr(P1[(i*3)])/100;
AuxR:= exp(ExpR);
AuxG:= exp(ExpG);
AuxB:= exp(ExpB);
r:=round(abs(BaseR*AuxR)); g:=round(abs(BaseG*AuxG)); b:=round(abs(BaseB*AuxB));
PC[i*3]:=round(b); PC[(i*3)+1]:=round(g);
PC[(i*3)+2]:=round(r);
end; end; Imagen.Picture.Assign(bmp);
end;