AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bildvergleich durch XOR oder OR?
Thema durchsuchen
Ansicht
Themen-Optionen

Bildvergleich durch XOR oder OR?

Ein Thema von alleinherrscher · begonnen am 6. Nov 2006 · letzter Beitrag vom 7. Nov 2006
Antwort Antwort
Benutzerbild von alleinherrscher
alleinherrscher

Registriert seit: 8. Jul 2004
Ort: Aachen
797 Beiträge
 
Delphi XE2 Professional
 
#1

Bildvergleich durch XOR oder OR?

  Alt 6. Nov 2006, 22:46
Hi, ich suche gerade einen Weg (wie auch schon viele andere hier), Screenshots zu vergleichen, um nur die Teile eines Bildes zu übertragen, die sich geändert haben. Ich hab hier schon einige Verfahren gesehen, die z.B. die Bildpixel vergleichen oÄ.

Ich dachte aber mal an was ganz anderes, um es mir etwas einfacher zu machen. Ich gehe mal davon aus, dass ein komplett einfarbiges JPEG eine fast zu vernachlässigende Größe hat, weil das ja komprimiert ist. (ihr könnts ja mal testen, bei mir funktioniert das jedenfalls).

Okay, gehen wir also mal davon aus dass wir einen Screenshot als Bitmap haben und einen etwas älteren Referenzscreenshot (auch als Bitmap). Wenn wir jetzt diese beiden Bitmaps durch irgendeinen Befehl (und genau dieses Befehl suche ich) mit XOR (oder sowas in der Art) übereinanderlegen könnten, sodass sich 2 gleichfarbige Pixel auf den beiden Bitmaps immer zu schwarz addieren, wären alle Flächen, auf denen keine Veränderung zwischen den beiden Bitmaps stattfand komplett schwarz. Jetzt müsste man noch aus den restlichen flächen die originalfarbinformationen zurückrechnen und das ganze als JPEG komprimieren...

Was meint ihr könnte das klappen??

Grüße,
Alleinherrscher
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#2

Re: Bildvergleich durch XOR oder OR?

  Alt 6. Nov 2006, 22:53
Üverprüf die Pixel doch direkt ( = ) oder mach ne And verknüpfung oder nimm die Masken von BitBlt

Edit:
wenn du aus dem Bild was du bekommst etwas zurückrechen willst musst du subtrahieren oder xor verknüpfung machen
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Bildvergleich durch XOR oder OR?

  Alt 6. Nov 2006, 22:55
xor würde in dem Fall bedeuten, dass zwei gleiche Pixel schwarz werden.

pixel1 and (not pixel2) würden es auch tun, genauso wie not (pixel1 or pixel2).
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Bildvergleich durch XOR oder OR?

  Alt 6. Nov 2006, 23:15
Vorsicht beim Maskieren von Bildteilen unter Verwendung von JPEG. Du wirst selbst bei recht hoher Qualität "ausgefranste" Ränder bekommen, die dann beim Zusammenfügen von Alt-Bild und Differenzbild recht unschöne Effekte nach sich ziehen können, die sich mit jedem neuen Differenzbild natürlich auch nicht grad verringern .

Für solche Verfahren würde ich eher zu einer Abstufung auf z.B. 8 Bit Farbe, und LZW Kompression tendieren. (GIF ist z.B. ein 8Bit LZW Format soweit ich weiss, spannender sind aber sicher eigene Implementierungen ) Verlustbehaftete Kompression würde immer Toleranzen bei der Rückrechnung erfordern, die ihrerseits aber natürlich auch wider zu ungewünschten Ergebnissen führen können.

JPEG so wie es gebräuchlich ist, wurde ausschließlich und nur für echte Fotos entwickelt, da dort der Verlust in den meisten Fällen optisch kaum ins Gewicht fällt. Ein Desktop ist da meilenweit von entfernt, mit seinen größeren einfarbigen Flächen und geraden Linienfürungen. Das ist ganz genau nicht die Stärke und das Einsatzgebiet von JPEG.
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von Duke_2004
Duke_2004

Registriert seit: 26. Jan 2005
61 Beiträge
 
#5

Re: Bildvergleich durch XOR oder OR?

  Alt 7. Nov 2006, 06:56
Genau das hatte ich schonmal woanders gesehen, ich find nur den link net mehr...

Aus den beiden bmp's wurde via XOR ein Differenzbild erzeugt, bei dem die gleichen Teile Schwarz wurden. Dieses Differenzbild und das vorhergehende Vergleichsbild wieder mit XOR ergibt wieder das Originalbild...

Sollte ich den Link nochmal finden, reich ich ihn nach...
  Mit Zitat antworten Zitat
Cicaro

Registriert seit: 9. Feb 2005
285 Beiträge
 
Delphi 7 Personal
 
#6

Re: Bildvergleich durch XOR oder OR?

  Alt 7. Nov 2006, 12:46
Um diese bitweise Verknüpfung von Bildern durchzuführen, kann man in der Unit Windows nach SRCCOPY (oder nach anderen bekannten Konstanten) suchen. Daneben stehen andere Parameter-Konstanten mit kurzen und präzisen Kommentaren (bsp: "Dest = Dest or Src").

Außerdem ergeben XOR und Subtrahieren nicht dieselben Differenzen. Je nach dem was ich mit diesen Referenzen vorhabe, würde ich mir überlegen welche Methode ich nehme. Für das Subtrahieren ist auch die Herangehensweise mit ScanLine empfehlenswert.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz