AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi "Verfärbte" Bilder vergleichen.
Thema durchsuchen
Ansicht
Themen-Optionen

"Verfärbte" Bilder vergleichen.

Ein Thema von Relicted · begonnen am 26. Nov 2006 · letzter Beitrag vom 27. Nov 2006
Antwort Antwort
Seite 1 von 2  1 2      
Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#1

"Verfärbte" Bilder vergleichen.

  Alt 26. Nov 2006, 17:20
Mahlzeit!

Ich suche momentan nach ner kleinen hilfestellung. ich habe n bilder die ansich alle gleich sind. sie unterscheiden sich nur in der farbgebung. das objekt ansich ist 100% gleich.
mich würde interessieren ob es möglich ist, und wenn möglich auch wie, diese bilder zu vergleichen.

ich habe hier ein bildchen mal so manipuliert wie es auch in realität auftreten könnte - vielleicht hat hier ja wer ne idee.

zum vergleichen habe ich schon hier geschaut - müsste sie aber erstmal auf ein format bekommen um sie vergleichen zu können.
( http://www.delphipraxis.net/internal...ct.php?t=96369 )

gruß
reli
Miniaturansicht angehängter Grafiken
fake2_554.jpg   fake1_113.jpg   orig_176.jpg  
  Mit Zitat antworten Zitat
Sascha L

Registriert seit: 4. Jun 2004
Ort: Hamm
390 Beiträge
 
Delphi 2006 Professional
 
#2

Re: "Verfärbte" Bilder vergleichen.

  Alt 26. Nov 2006, 17:46
Ich weiß nicht, ob es klappt, aber müssten die Bilder in Schwarz/weiß, also Graustufen nicht identisch aussehen? Also wenn sie sich nur in der Farbe unterscheiden, würde ich halt einfach alle Farben runtersetzen, sodass man nur noch den Kontrast hat. Da die Form ja identisch ist, müssten alle Bilder dann gleich sein.
Sascha
  Mit Zitat antworten Zitat
Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: "Verfärbte" Bilder vergleichen.

  Alt 26. Nov 2006, 17:55
hm ja die idee ist mir auch schon gekommen... die frage ist how to do )
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#4

Re: "Verfärbte" Bilder vergleichen.

  Alt 26. Nov 2006, 18:03
Man könnte ein grobes Schwarz-Weis-Muster von den beiden Bildern anlegen und diese dann vergleichen. Sobald eine der 3 Farben über 127 ist (oder eben eine andere Zahl von 0 bis 255), dann wird der Pixel weiß, ansonsten schwarz.


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#5

Re: "Verfärbte" Bilder vergleichen.

  Alt 26. Nov 2006, 18:14
Ich würde eher die Werte in den HSV-Farbraum (vielleicht auch HSL/HSB/HSI) umrechnen und dann die V- und S-Werte vergleichen. Du solltest uns aber schon ein bisschen mehr Informationen geben, ob die Bilder beispielsweise künstlich erzeugt werden oder wirklich verschiedenfarbige Fotos sind.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Phantom1

Registriert seit: 20. Jun 2003
282 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: "Verfärbte" Bilder vergleichen.

  Alt 26. Nov 2006, 18:26
Hier mein Vorschlag:

Delphi-Quellcode:
function CompareBitmaps(Bitmap1, Bitmap2: TBitmap): Double;
var
  xy: integer;
  P1, P2: PRGBTriple;
  g1, g2: Byte;
  PixelWeight: Double;
begin
  Result:=100.0;
  PixelWeight:=100/(Bitmap1.Width*Bitmap1.Height)/255;
  Bitmap1.PixelFormat:=pf24bit;
  Bitmap2.PixelFormat:=pf24bit;
  P1:=Bitmap1.ScanLine[Bitmap1.Height-1];
  P2:=Bitmap2.ScanLine[Bitmap2.Height-1];
  for xy:=1 to Bitmap1.Height*Bitmap1.Width do begin
    g1:=(P1^.rgbtRed+P1^.rgbtGreen+P1^.rgbtBlue) div 3;
    g2:=(P2^.rgbtRed+P2^.rgbtGreen+P2^.rgbtBlue) div 3;
    Result:=Result-ABS(g1-g2)*PixelWeight;
    Inc(P1);
    Inc(P2);
  end;
end;
Verglichen wird hier nur die Helligkeit und gibt als Ergebnis die Ähnlichkeit in Prozent an. Man müsste dann nur noch entscheiden ab wieviel Prozent die Bilder als gleich gelten...

mfg
  Mit Zitat antworten Zitat
Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: "Verfärbte" Bilder vergleichen.

  Alt 26. Nov 2006, 18:31
hört sich gut an...

mehr infos kann ich gar nicht geben. ich denke es ist immer ein bild welches via script ( php or what ever ) die farbe ändert

danke schonmal für die nützlichen hinweise!

gruß
reli
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: "Verfärbte" Bilder vergleichen.

  Alt 26. Nov 2006, 19:03
Wie sieht eigentlich die Differenz der beiden Bilder aus? Wären sie absolut gleich, würde das Diffenz schwarz sein. Und hier?
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Relicted

Registriert seit: 24. Jan 2006
Ort: Iserlohn
646 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: "Verfärbte" Bilder vergleichen.

  Alt 26. Nov 2006, 19:14
*mit den schultern zuck*
keine ahnung muss ich passen
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: "Verfärbte" Bilder vergleichen.

  Alt 26. Nov 2006, 19:21
Ich habe mal die Differenz der beiden in Graustufen konvertierten Bilder gemacht: Voilá, schwarz wie die Nacht (bis auf ein paar klitzekleine grauen Linien).

Delphi-Quellcode:
Var
  c1,c2,x,p,q,i,j : Integer;
  b1,b2 : TBitmap;
  r : TRect;

begin
  b1 := TBitmap.create;
  b2 := TBitmap.create;
  r := rect (0,0,image1.width, image1.height);
  b1.width := image1.width;
  b1.Height := image1.Height;
  b2.width := image1.width;
  b2.Height := image1.Height;

  b1.Canvas.Draw(0,0,image1.Picture.Graphic);
  b2.Canvas.Draw(0,0,image2.Picture.Graphic);

  Image3.Width := image1.Width;
  image3.Height := Image1.Height;
  For i:=0 to image1.Height - 1 do
    for j:=0 to image1.Width - 1 do begin
      p := b1.Canvas.Pixels[j,i];
      q := b2.Canvas.Pixels[j,i];
      c1 := (GetRValue(p) + GetGValue(p) + GetBValue(p)) div 3;
      c2 := (GetRValue(q) + GetGValue(q) + GetBValue(q)) div 3;
      c1 := abs(c1 - c2);
      x := rgb ( c1,c1,c1);
      image3.Canvas.Pixels[j,i] := X;
      End;
  b1.free;
  b2.free;
end;
Bitte nicht steinigen, weil ich alle Grundsätze guten Codes über Bord geworfen habe.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16: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