AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Übereinstimmung von Bildern
Thema durchsuchen
Ansicht
Themen-Optionen

Übereinstimmung von Bildern

Ein Thema von robinWie · begonnen am 2. Mär 2006 · letzter Beitrag vom 21. Mär 2008
Antwort Antwort
Benutzerbild von robinWie
robinWie

Registriert seit: 26. Okt 2005
Ort: Lippcity
404 Beiträge
 
Delphi 2005 Personal
 
#1

Übereinstimmung von Bildern

  Alt 2. Mär 2006, 16:20
Hi,
ich will ein Programm schreiben das überprüft zu wie viel Prozent zwei geöffnete Bilder übereinstimmen. Als erstes hatte ich die Menthode den Farbcode zufällig ausgewählter Pixel in den Bildern zu vergelichen. Das hat funktioniert, war aber nicht sicher. Also habe ich nach einer Möglichkeit gesucht mit der man alle Pixel miteinander vergleicht. Aber ich kriege es einfach nicht gebacken. Mit diesen Code habe ich ein bisschen rumexpierentirt

Delphi-Quellcode:
var
  X, Y, A: Integer;
  P0,P1: PByteArray;
  P_Color: integer;
begin
  P_Color:=0;
  for Y := 0 to IMG_1.Height-110 do begin
     P0 := IMG_1.Picture.Bitmap.ScanLine[Y];
     P1 := IMG_2.Picture.Bitmap.ScanLine[Y];
     for X := 0 to IMG_1.Width-1 do begin
      if IntToStr(P0[X]) = IntToStr(P1[x]) then
        begin P_Color:=P_Color+1 end;
     end;
  end;
  //Anzahl der Pixel bestimmen
  A:=Y*X;
  //Prozent der Übereinstimmung errechnen und ausgeben
  MainForm.Caption:=FloatToStrF(100/A*P_Color,ffNumber,100,2);
end;
Danke im Voraus für die Hilfe
Robin W.
Ein Computer kann (fast) alles.... Man muss es ihm nur beibringen
  Mit Zitat antworten Zitat
Benutzerbild von Duke_2004
Duke_2004

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

Re: Übereinstimmung von Bildern

  Alt 2. Mär 2006, 16:25
Könnte man nicht auch die Bilder mit:

Image3 := Image1 XOR Image2 ein Differenzbild erzeugen und dann alle Pixel zählen die nicht 0 sind.

Korrigier mich bitte jemand, falls ich mich total irre... ^^
  Mit Zitat antworten Zitat
Benutzerbild von robinWie
robinWie

Registriert seit: 26. Okt 2005
Ort: Lippcity
404 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Übereinstimmung von Bildern

  Alt 2. Mär 2006, 16:33
Ich glaube ich habe die Lösung gefunden. Ich habe den Code neu geschrieben und die Sache mal ander angepackt

Delphi-Quellcode:
var
  hi,wi,p,n,a:integer;
  cc_1,cc_2: string;
begin
  p:=0; n:=0;
  for hi:=1 to IMG_1.Height do
    for wi:=1 to IMG_1.Width do
     begin
        try
         cc_1:=IntToStr(ColorToRGB(IMG_1.Canvas.Pixels[wi,hi]));
         cc_2:=IntToStr(ColorToRGB(IMG_2.Canvas.Pixels[wi,hi]));
         if cc_1=cc_2 then p:=p+1;
        except
          n:=n+1;
        end;
     end;
  a:=IMG_1.Height*IMG_1.Width;
  MainForm.Caption:=FloatToStrF(100/a*p,ffNumber,100,4)+'% Übereinstimmung';
end;
Ihr könnt ja mal einige Testdurchläufe machen, und gucken ob die ergebnisse stimmen könnten

[edit] Auf dieser art dauert das bei großen Bildern aber ganzschön lange [/edit]
Robin W.
Ein Computer kann (fast) alles.... Man muss es ihm nur beibringen
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Übereinstimmung von Bildern

  Alt 2. Mär 2006, 16:36
warum wandelst du die beiden Farbwerte erst zu einem String und vergleichst die Strings? Warum vergleichst du nicht die beiden Farbwerte?
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
wb32

Registriert seit: 4. Jul 2003
143 Beiträge
 
#5

Re: Übereinstimmung von Bildern

  Alt 21. Mär 2008, 12:26
wie kann man genau das aber nun mit jpg oder gif bildern tun?
  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 18:57 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