23. Mai 2012, 14:26:32 *
Willkommen Gast. Bitte einloggen oder registrieren.

Einloggen mit Benutzername, Passwort und Sitzungslänge
News: Animationsfilmer haben niemals Zeit...
 
   Übersicht   back to mac Hilfe Suche Einloggen Registrieren  
Seiten: [1]
  Drucken  
Autor Thema: Bild Vergleich  (Gelesen 186 mal)
Core
Newbie
*
Beiträge: 2


« am: 15. August 2008, 02:05:15 »

Ich suche schon seit längerem ein Programm, das ein Bild mit dem anderen Vergleicht.
Allerdings waren die die ich im Laufe der Jahre gefunden habe nie das was ich wirklich gesucht habe bzw konnten mir nicht das bieten was ich wollte.
Ich möchte, dass das Programm die ähnlichkeit vom einen Bild zum anderen Bild aus einer Datenbank abfragen kann.
Schwer zu erklären... im Prinzip macht es genau das was diese Fingerabdruck-vergleicher bei der Polizei machen.
Das dumme ist bloß, dass man an gerade diese Programme nicht rankommt und einen ersatz zu finden der das gleiche macht gelingt mir seit 3 Jahren nicht.
Ich dachte ich frag mal hier nach, da ihr euch durch eure Arbeit mit Maya ja sehr viel mit Bildverarbeitung beschäftigt.

Ich wäre um jede Hilfe dankbar,
Chris
Moderator informieren   Gespeichert
mac
Administrator
Hero Member
*****
Beiträge: 908



WWW
« Antworten #1 am: 15. August 2008, 09:20:36 »

Hi Chris,

in solchen Fällen ist es einfacher wenn du erklärtst WAS und WARUM du etwas tun willst bzw. was das Ziel ist.
In den meisten Fällen gibt es weitere Lösungsansätze die du vielleicht noch nicht bedacht hast.

Also . klär uns mal auf =)

cheers
mac
Moderator informieren   Gespeichert

menschen die für alles offen sind - sind meist nicht ganz dicht..
Core
Newbie
*
Beiträge: 2


« Antworten #2 am: 16. August 2008, 05:27:20 »

Naja ich will eigentlich eine Art Erkennungssoftware schreiben. Das Problem ist, dass ich erst herausfinden wollte wie genau denn normale Erkennungssoftwares sind. Dem programm zeigt man per Scan, Image Datei oder Live-Cam dann ein Bild oder ein Video und das Programm gleicht dann bestimmte Aspekte wie lineare,vectoriale oder punktuelle Strukturen und Prozentuale Farbtexturen mit der Datenbank ab und sagt einem dann ob es dieses oder jenes ist. Als zweite Möglichkeit bestünde dann noch das ganze andersherum zu machen: Man zeigt dem Programm ein Bild, schaltet die Webcam ein und das Programm sucht den aufgenommenen Bereich der Kamera nach den Formen/Strukturen des Bildes ab und zeigt auf der Web-Cam ausgabe auf dem Bildschirm dann dem Anwender wo genau im aufgezeichneten Sichtradius der markierte Teil des Bildes ist.(Zb eine *.jpg von meinem gesicht wird gezeigt, und das programm umrandet mein gesicht in der wiedergabe der webcam)   So weit habe ich es zumindest bisher.  Aber ich wollte noch ein paar andere Dinge einprogrammieren, wozu ich allerdings vergleichsmöglichkeiten benötige^^ Und so entstand meine Frage Smiley

Naja das Projekt muss aber leider noch warten, denn wies aussieht wurde ich jetzt von Bekannten in ein größeres 11 Mann Projekt eingespannt um eine "Client -> Packet Inject -> Server" Geschichte zu coden.. kann ich mal nur hoffen, dass die mich bald mal aufklären was für ein Porjekt das genau ist, damit ich denen sagen kann, dass sie keine 11 Mann dafür brauchen Smiley

Bis die Tage,
Core
Moderator informieren   Gespeichert
mac
Administrator
Hero Member
*****
Beiträge: 908



WWW
« Antworten #3 am: 16. August 2008, 09:51:12 »

Aaalso..

zunächst mal, ohne dich enttäuschen zu wollen, die gute nachricht : Das gibs schon lange.
Auf amerikanischen und englischen Flughäfen laufen diese Dinger schon seit geraumer Zeit.

Die schlechte Nachricht: an den benötigten Algorithmen haben ganze Entwicklerteams gearbeitet,
deren IQ man nur noch 3 Stellig messen kann. Abgesehen davon das es völliger Unsinn ist eine
bestehende Software nochmal zu schreiben, solltest du als Coder wissen, würde es vermutlich
deine und meine Lebensspanne überschreiten wenn du das nachbauen willst.

Nur mal so...in welcher Sprache codest du denn?   

Ich zeig dir mal einen Sippet aus meinem letzten Projekt:
Das Ding macht NUR einen simplen Resize und stellt nur einen kleinen Teil der gesamten Routine dar.
Kannst du dir vorstellen wie das aussieht wenn nach dem Scann nach Mustern gesucht werden soll?


cheers
mac


Zitat
procedure TMacImage.Resize(Src, Dst: TBitmap);
var
  x, y: Integer;
  xP, yP: Integer;
  xP2, yP2: Integer;
  SrcLine1, SrcLine2: pRGBArray;
  t3: Integer;
  z, z2, iz2: Integer;
  DstLine: pRGBArray;
  DstGap: Integer;
  w1, w2, w3, w4: Integer;
begin
  Src.PixelFormat := pf24Bit;
  Dst.PixelFormat := pf24Bit;

  // Both Images identical?
  if (Src.Width = Dst.Width) and (Src.Height = Dst.Height) then
    Dst.Assign(Src)  // yes, just copy
  else
  begin  // NO - start calculating  /scann & penn) =)
    DstLine := Dst.ScanLine[0];
    DstGap  := Integer(Dst.ScanLine[1]) - Integer(DstLine);

    xP2 := MulDiv(pred(Src.Width), $10000, Dst.Width);
    yP2 := MulDiv(pred(Src.Height), $10000, Dst.Height);
    yP  := 0;

    for y := 0 to pred(Dst.Height) do
    begin
      xP := 0;

      SrcLine1 := Src.ScanLine[yP shr 16];

      if (yP shr 16 < pred(Src.Height)) then
        SrcLine2 := Src.ScanLine[succ(yP shr 16)]
      else
        SrcLine2 := Src.ScanLine[yP shr 16];

      z2  := succ(yP and $FFFF);
      iz2 := succ((not yp) and $FFFF);
      for x := 0 to pred(Dst.Width) do

      begin
        t3 := xP shr 16;
        z  := xP and $FFFF;
        w2 := MulDiv(z, iz2, $10000);
        w1 := iz2 - w2;
        w4 := MulDiv(z, z2, $10000);
        w3 := z2 - w4;
        DstLine
  • .rgbtRed := (SrcLine1[t3].rgbtRed * w1 +
          SrcLine1[t3 + 1].rgbtRed * w2 +
          SrcLine2[t3].rgbtRed * w3 + SrcLine2[t3 + 1].rgbtRed * w4) shr 16;
        DstLine
  • .rgbtGreen :=
          (SrcLine1[t3].rgbtGreen * w1 + SrcLine1[t3 + 1].rgbtGreen * w2 +

          SrcLine2[t3].rgbtGreen * w3 + SrcLine2[t3 + 1].rgbtGreen * w4) shr 16;
        DstLine
  • .rgbtBlue := (SrcLine1[t3].rgbtBlue * w1 +
          SrcLine1[t3 + 1].rgbtBlue * w2 +
          SrcLine2[t3].rgbtBlue * w3 +
          SrcLine2[t3 + 1].rgbtBlue * w4) shr 16;
        Inc(xP, xP2);
      end; {for}
      Inc(yP, yP2);
      DstLine := pRGBArray(Integer(DstLine) + DstGap);

    end; {for}

  end; {if}
  // ------------- Call SAFE to Files here ---------------


end;


Moderator informieren   Gespeichert

menschen die für alles offen sind - sind meist nicht ganz dicht..
Seiten: [1]
  Drucken  
 
Gehe zu:  

Powered by SMF 1.1.7 | SMF © 2006, Simple Machines LLC