Zwei Images vergleichen |
|
| System | Win9x, WinNT, Win2000, WinXP, Vista, Win7 |
|---|---|
| Ab Delphi-Version | Delphi 1 |
| Letzte Änderung | 28.09.2010 |
Mit dieser Prozedur können Images pixelweise miteinander verglichen werden. Bei Images, "die mal analog waren", empfiehlt es sich möglicherweise aufgrund des Rauschanteils, mit einem Schwellenwert größer als 0 zu arbeiten. Es wird vorausgesetzt, dass die Bitmaps von image1 und image2 die gleichen Abmessungen haben!
var x, y: integer;
anzahl_unterschiede: LongInt;
zeile1, zeile2: PByteArray;
prozent: single;
const schwellenwert=5;
// Erst wenn die Unterschiede den Schwellenwert überschreiten,
// wird die Abweichung registriert.
begin
anzahl_unterschiede:=0;
for y:=0 to image1.Picture.Bitmap.height-1 do begin
zeile1:=image1.Picture.Bitmap.scanline[y];
zeile2:=image2.Picture.Bitmap.scanline[y];
for x:=0 to image1.Picture.Bitmap.width-1 do
if abs(zeile1[x]-zeile2[x])>schwellenwert then
inc(anzahl_unterschiede);
if image1.Picture.Bitmap.height*image1.Picture.Bitmap.width>0 then
prozent:=100*(anzahl_unterschiede/(image1.Picture.Bitmap.height*
image1.Picture.Bitmap.width))
else
prozent:=0;
label1.caption:='Unterschiede:'+FloatToStr(prozent)+'%';
end;
end;