![]() |
"Verfärbte" Bilder vergleichen.
Liste der Anhänge anzeigen (Anzahl: 3)
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. ( ![]() gruß reli |
Re: "Verfärbte" Bilder vergleichen.
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.
|
Re: "Verfärbte" Bilder vergleichen.
hm ja die idee ist mir auch schon gekommen... die frage ist how to do :o)
|
Re: "Verfärbte" Bilder vergleichen.
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 |
Re: "Verfärbte" Bilder vergleichen.
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.
|
Re: "Verfärbte" Bilder vergleichen.
Hier mein Vorschlag:
Delphi-Quellcode:
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...
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; mfg |
Re: "Verfärbte" Bilder vergleichen.
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 |
Re: "Verfärbte" Bilder vergleichen.
Wie sieht eigentlich die Differenz der beiden Bilder aus? Wären sie absolut gleich, würde das Diffenz schwarz sein. Und hier?
|
Re: "Verfärbte" Bilder vergleichen.
*mit den schultern zuck*
keine ahnung muss ich passen |
Re: "Verfärbte" Bilder vergleichen.
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:
Bitte nicht steinigen, weil ich alle Grundsätze guten Codes über Bord geworfen habe.
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz