Entwickler-Ecke
Multimedia / Grafik - Images miteinander vergleichen???
Killi - Mi 03.12.03 21:42
Titel: Images miteinander vergleichen???
Hi!
Kann man 2 Images miteinander vergleichen und den Grad der Veränderung heraus"lesen" lassen?
Will ein System mit Webcam basteln, die dann ein Video aufnimmt sobald sich etwas bewegt - also, sobald ein gewisser Grad an Veränderung im Bild ist......
Anonymous - Mi 03.12.03 21:55
du könntest jeden pixel in ein array packen und dann schauen welches pixel sich geändert hat...bei aufwärtsfolgenden zahl von pixeln kannst du das bild dann als geändert definieren...aber ob das die feine art ist?
gruß
ixtreme.de
Killi - Mi 03.12.03 21:59
Naja, ist schonma n Anfang - aber wie mach ich das???
Wie lad ich Pixel in ein Array??? - Vor allem: sind das Zahlen, oder...?
Tino - Do 04.12.03 13:05
Hier die o. g. Lösung:
| Zitat: |
Wie kann ich zwei Images vergleichen?
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!
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| procedure CompareImages(Image1, Image2: TImage); var x, y: integer; anzahl_unterschiede: LongInt; zeile1, zeile2: PByteArray; prozent: single; const schwellenwert=5; 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; |
|
Gruß
Tino
Killi - Do 04.12.03 18:32
die funktion sieht ja gut aus, aber wenn ich ein ROTES Bild habe und ein BLAU/ROTES-Bild dann sieht das Ergebnis so aus:
wenn rot beim 2.Bild auf der linken Seite dann Unterschied 0 % (!!!!!!)
wenn BLAU beim 2.Bild auf der linken Seite dann Untersch. 100 %!!!!!!!!!
Prüft er etwa nur den linken Teil des bildes - wenn da nix passiert, dann is jut oder wie???
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!