Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.27 KB | None | 0 0
  1. function TFloatMatrix.Normalize(Alpha:Single=0.0; Beta:Single=1.0): TFloatMatrix;
  2. var
  3.   Lo,Hi,oldRange,newRange:Single;
  4.   X,Y,W,H: Int32;
  5. begin
  6.   H := High(Self);
  7.   W := High(Self[0]);
  8.   SetLength(Result, H+1,W+1);
  9.   lo := $FFFFFF;
  10.   hi := -$FFFFFF;
  11.  
  12.   for Y:=0 to H do
  13.     for X:=0 to W do
  14.     begin
  15.       if self[y,x] < lo then lo := self[y,x];
  16.       if self[y,x] > hi then hi := self[y,x];
  17.     end;
  18.  
  19.   oldRange := Hi-Lo;
  20.   newRange := Beta-Alpha;
  21.   for Y:=0 to H do
  22.     for X:=0 to W do
  23.       Result[Y,X] := (Self[Y,X] - lo) / oldRange * newRange + Alpha;
  24. end;
  25.  
  26. procedure BuildHeatmap(BMP: TMufasaBitmap; Mat: TFloatMatrix);
  27. var
  28.   _h,_l:Extended;
  29.   W,H,x,y,color:Int32;
  30. begin
  31.   W := Length(Mat[0])-1;
  32.   H := Length(Mat)-1;
  33.   Mat := Mat.Normalize(0,1);
  34.   BMP.SetSize(W+1,H+1);
  35.  
  36.   for y:=0 to H do
  37.     for x:=0 to W do
  38.     begin
  39.       _h := (1 - Mat[y,x]) * 100;
  40.       _l := Mat[y,x] * 50;
  41.       color := HSLToColor(_H,100,_L);
  42.       BMP.SetPixel(x,y, color);
  43.      end;
  44. end
  45.  
  46.  
  47. var
  48.   BMP1,BMP2: TMufasaBitmap;
  49. begin
  50.   BMP1 := GetMufasaBitmap(LoadBitmap('tests/lena++.png'));
  51.   BMP2 := GetMufasaBitmap(LoadBitmap('tests/lena_sub.png'));
  52.  
  53.   BuildHeatmap(BMP1, ex.MatchTemplate(BMP1, BMP2, 5));
  54.   BMP1.Debug();
  55.   BMP1.Free();
  56.   BMP2.Free();
  57. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement