AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Bilder vergleichen -> optimiertes verfahren gesucht!
Thema durchsuchen
Ansicht
Themen-Optionen

Bilder vergleichen -> optimiertes verfahren gesucht!

Ein Thema von alleinherrscher · begonnen am 16. Jul 2005 · letzter Beitrag vom 19. Jul 2005
Antwort Antwort
Seite 3 von 5     123 45      
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#21

Re: Bilder vergleichen -> optimiertes verfahren gesucht!

  Alt 17. Jul 2005, 17:44
Bei Bitmap32 gehts ohne PixelFormat (oder vergleichbares). Kann dein Problem allerdings nicht nachvollziehen, wenn man reine Bitmaps verwendet.
Ist die ursprüngliche Quelle allerdings ein JPEG z.B., dann musst du den Vergleich etwas Fehlertoleranter gestalten, da hier die Farben von der Kompression verfälscht werden.

Statt bild.Canvas.pixels[x,y]<>bild2.Canvas.pixels[x,y] solltest du eine Vergleichs-Funktion basteln, z.B.:
Delphi-Quellcode:
// Liefert true zurück, wenn Pixel unterschiedlich.
function PixelCompare(A, B: DWORD): boolean;
begin
  result := (Abs(RGBQuad(A).rgbBlue - RGBQuad(B).rgbBlue ) +
             Abs(RGBQuad(A).rgbGreen - RGBQuad(B).rgbGreen) +
             Abs(RGBQuad(A).rgbRed - RGBQuad(B).rgbRed ) ) > 64;
end;
Angewendet wird sie dann so:
        if PixelCompare(bild.Canvas.pixels[x,y], bild2.Canvas.pixels[x,y]) then Diese Funktion lieferte nach ersten Tests gute Resultate, ist aber nicht "wissenschaftlich untermauert".
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

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

Re: Bilder vergleichen -> optimiertes verfahren gesucht!

  Alt 17. Jul 2005, 17:58
Hi Scp!

Ich weiß auch, dass jpgs ne ungenauigkeit beim komprimieren bekommen. Hier hab ich ALLES (inkl. meiner Testbilder) mal gezippt...probierts mal aus. Es liefert oft das richtige ergebnis (genau den ausschnitt, der fehlerhaft ist) aber auch ab und zu einen zu großen oder falschen ausschnitt...

Danke für den Tipp mit dem JPG, aber könntest du dir das trotzdem mal anschauen, Scp? Das wäre lieb!

By the way: habe gerade deine Fehlertoleranz getestet, bei mir tritt trotzdem der selbe fehler auf, werde mir jetzt mal die farbwerte von dem als unterschiedlich erkannten pixeln ansehen...
Angehängte Dateien
Dateityp: zip alles_214.zip (1,97 MB, 19x aufgerufen)
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#23

Re: Bilder vergleichen -> optimiertes verfahren gesucht!

  Alt 17. Jul 2005, 18:08
Sieht doch gut aus eigentlich nur
Delphi-Quellcode:
    r2:= rect(x_min,y_min,x_max+1,y_max+1);

    //bild3.PixelFormat := bild.PixelFormat;

    bild3.SetSize(x_max-x_min+1, y_max-y_min+1);
// bild3.Width:=x_max-x_min+1;
// bild3.height:=y_max-y_min+1;
bei r2 jeweils +1 (frag mich nicht warum) und nur der Form halber bei g32 SetSize() statt Width und Height verwenden. Außerdem fehlt immer noch try finally.
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

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

Re: Bilder vergleichen -> optimiertes verfahren gesucht!

  Alt 17. Jul 2005, 18:24
Ja, danke, aber das löst ja das Problem nicht...ich habe jetzt mal nachgeschaut:

Wenn das Programm den Fehler bei mir macht, also an der stelle [x,y] zwei unterschiedliche Pixel auf bild1 und bild2 erkennt, obwohl diese gleich sind und man für die stelle[x,y] die rgb werte ausgibt, geschieht folgendes:

Bild1: r:232g:219b:210(oder sonst was)
Bild2: r:232g:0 b:0

Allerseits an der Stelle x=664, y=21

Es gibt auch noch andere Fälle.
Da in diesem speziellen Fehlerfall der y wert der unteren grenze kleiner ist, als der der oberen Grenze, führt das ganze zu einem Fehler, da das bild3 theoretisch eine negative höhe hätte...

Erklär mir mal einer, warum die pixel funktion da z.B. an der stelle 664,21 mal unterschiede erkennt, aber mal wieder nicht?! Das kann eigentlich nicht an meinem Programm liegen...vielleicht liegts an D6 in kombination mit g32, was weiß ich...

Es scheint so, als ob in dem einen bild jeweils zwei farbwerte fehlen würden, tun sie aber nicht....*arg*
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#25

Re: Bilder vergleichen -> optimiertes verfahren gesucht!

  Alt 17. Jul 2005, 18:28
Geschieht das denn bei den beigelegten Bildern? Also, under D2005 Personal gehts immer bis jetzt.
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

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

Re: Bilder vergleichen -> optimiertes verfahren gesucht!

  Alt 17. Jul 2005, 18:36
Ja, genau bei denen! Ich kanns lad nochmal 2 beispiele hoch, wie bei mir bild3 aussieht...vielleicht sollte ich versuchen g32 neu zu installieren oder so was...

Benutze immoment folgende Version von g32:
Graphics32 v1.7.1 - Build on 25-Februar-2005
Angehängte Dateien
Dateityp: zip richtigundfalsch2_909.zip (1,06 MB, 15x aufgerufen)
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
Benutzerbild von Jan
Jan

Registriert seit: 24. Sep 2002
Ort: Magdeburg
491 Beiträge
 
Delphi 7 Enterprise
 
#27

Re: Bilder vergleichen -> optimiertes verfahren gesucht!

  Alt 17. Jul 2005, 19:41
Vielen Dank @ scp fürs verteidigen meiner Routine!
Wenns wichtig ist das ganze würd ich mir einfach schnell den code zusammenbasteln zum auslesen eines Bitmaps und dem Auslesen der Farbwerte auf eigene Faust, ohne Kompo.
Gruß
Jan
Jan
Wenn die Sonne der Kultur tief steht, werfen auch kleine Gestalten lange Schatten.
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#28

Re: Bilder vergleichen -> optimiertes verfahren gesucht!

  Alt 17. Jul 2005, 21:55
Anbei das geänderte und unter D2005 kompilierte Projekt. Probier erst mal nur die .exe aus, brauchst nur die 2 bmps zurück in den Ordner kopieren.
Ich verwende auch die g32 1.71

@Jan
Namensvettern steht man eben zur Seite
Angehängte Dateien
Dateityp: zip alles_ge_ndert_ohne_bmps_199.zip (230,3 KB, 22x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von alleinherrscher
alleinherrscher

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

Re: Bilder vergleichen -> optimiertes verfahren gesucht!

  Alt 17. Jul 2005, 22:53
Danke für die ganze Mühe Scp! Es ist in der Tat wie ich vermutet habe...Deine Kompilation läuft ohne Probleme, 100 Prozentig inordnung (THX!!!), aber wenn ich das Projekt kompiliere, treten wieder die selben fehler auf. Scheinbar kann D6 nicht so gut mit gr32... i don't know...schade...mal schauen, was ich jetzt mache!

Danke erstmal!
„Software wird schneller langsamer als Hardware schneller wird. “ (Niklaus Wirth, 1995)

Mein Netzwerktool: Lan.FS
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#30

Re: Bilder vergleichen -> optimiertes verfahren gesucht!

  Alt 17. Jul 2005, 23:49
Naja, in dem Fall ist TBitmap bei mir genauso schnell, kannst ja erstmal das wieder nehmen.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 5     123 45      


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 04:43 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