119 lines
3.6 KiB
Plaintext
119 lines
3.6 KiB
Plaintext
unit umain;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
|
|
StdCtrls, ieview, ImageEnView, hyiedefs, hyieutils, iexBitmaps, iesettings,
|
|
iexLayers, iexRulers;
|
|
|
|
type
|
|
TForm1 = class(TForm)
|
|
Button1: TButton;
|
|
Label1: TLabel;
|
|
Label2: TLabel;
|
|
ImageEnView1: TImageEnView;
|
|
ImageEnView2: TImageEnView;
|
|
Button2: TButton;
|
|
Button3: TButton;
|
|
GroupBox1: TGroupBox;
|
|
Label3: TLabel;
|
|
Label4: TLabel;
|
|
Label5: TLabel;
|
|
Label6: TLabel;
|
|
Label7: TLabel;
|
|
Label8: TLabel;
|
|
Label9: TLabel;
|
|
Label10: TLabel;
|
|
Label11: TLabel;
|
|
Label12: TLabel;
|
|
Label13: TLabel;
|
|
Label14: TLabel;
|
|
Button4: TButton;
|
|
GroupBox2: TGroupBox;
|
|
Label15: TLabel;
|
|
Label16: TLabel;
|
|
procedure Button1Click(Sender: TObject);
|
|
procedure Button2Click(Sender: TObject);
|
|
procedure Button3Click(Sender: TObject);
|
|
procedure Button4Click(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
var
|
|
Form1: TForm1;
|
|
|
|
implementation
|
|
|
|
uses
|
|
ImageEnProc;
|
|
|
|
{$R *.DFM}
|
|
{$R WindowsTheme.res}
|
|
|
|
// compare (using ComputeImageEquality)
|
|
procedure TForm1.Button1Click(Sender: TObject);
|
|
var
|
|
psnr_min, psnr_max: double;
|
|
mse_min, mse_max: double;
|
|
rmse_min, rmse_max: double;
|
|
pae_min, pae_max: double;
|
|
mae_min, mae_max: double;
|
|
equal: boolean;
|
|
ww, hh: integer;
|
|
begin
|
|
// adjust sizes (make ImageEnView1=ImageEnView2)
|
|
ww := ImageEnView1.IEBitmap.Width;
|
|
hh := ImageEnView1.IEBitmap.Height;
|
|
if (ww <> ImageEnView2.IEBitmap.Width) or (hh <> ImageEnView2.IEBitmap.Height) then
|
|
ImageEnView2.Proc.Resample(ww, hh, rfNone);
|
|
//
|
|
equal := ImageEnView1.Proc.ComputeImageEquality(ImageEnView2.IEBitmap, psnr_min, psnr_max, mse_min, mse_max, rmse_min, rmse_max, pae_min, pae_max, mae_min, mae_max);
|
|
label4.caption := IEFloatToFormatString(psnr_min, 2, True) + ' (min) , ' + IEFloatToFormatString(psnr_max, 2, True) + ' (max)';
|
|
label6.caption := IEFloatToFormatString(mse_min, 2, True) + ' (min) , ' + IEFloatToFormatString(mse_max, 2, True) + ' (max)';
|
|
label8.caption := IEFloatToFormatString(rmse_min, 2, True) + ' (min) , ' + IEFloatToFormatString(rmse_max, 2, True) + ' (max)';
|
|
label10.caption := IEFloatToFormatString(pae_min, 2, True) + ' (min) , ' + IEFloatToFormatString(pae_max, 2, True) + ' (max)';
|
|
label12.caption := IEFloatToFormatString(mae_min, 2, True) + ' (min) , ' + IEFloatToFormatString(mae_max, 2, True) + ' (max)';
|
|
if equal then
|
|
label14.caption := 'True'
|
|
else
|
|
label14.caption := 'False';
|
|
end;
|
|
|
|
// compare using CompareWith
|
|
procedure TForm1.Button4Click(Sender: TObject);
|
|
var
|
|
ww, hh: integer;
|
|
v: double;
|
|
begin
|
|
// adjust sizes (make ImageEnView1=ImageEnView2)
|
|
ww := ImageEnView1.IEBitmap.Width;
|
|
hh := ImageEnView1.IEBitmap.Height;
|
|
if (ww <> ImageEnView2.IEBitmap.Width) or (hh <> ImageEnView2.IEBitmap.Height) then
|
|
ImageEnView2.Proc.Resample(ww, hh, rfNone);
|
|
//
|
|
v := ImageEnView1.Proc.CompareWith(ImageEnView2.IEBitmap, nil);
|
|
label16.Caption := IEFloatToFormatString(v * 100, 2, True) + ' %';
|
|
end;
|
|
|
|
// Open A B
|
|
procedure TForm1.Button2Click(Sender: TObject);
|
|
begin
|
|
with ImageEnView1.IO do
|
|
LoadFromFile(ExecuteOpenDialog('', '', false, 1, ''));
|
|
Label1.caption := 'Image A (' + ImageEnView1.IEBitmap.getHash() + ')';
|
|
end;
|
|
|
|
// Open B
|
|
procedure TForm1.Button3Click(Sender: TObject);
|
|
begin
|
|
with ImageEnView2.IO do
|
|
LoadFromFile(ExecuteOpenDialog('', '', false, 1, ''));
|
|
Label2.caption := 'Image B (' + ImageEnView2.IEBitmap.getHash() + ')';
|
|
end;
|
|
|
|
end.
|