AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Bildanalyse/-vergleich
Thema durchsuchen
Ansicht
Themen-Optionen

Bildanalyse/-vergleich

Ein Thema von Slashmob · begonnen am 8. Dez 2011 · letzter Beitrag vom 12. Dez 2011
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    
Slashmob

Registriert seit: 28. Okt 2011
45 Beiträge
 
#11

AW: Bildanalyse/-vergleich

  Alt 9. Dez 2011, 19:04
Irgendwie passen Deine Schleifen überhaupt nicht zusammen.
Hm, das versteh ich nicht.

Hab versucht mit der ersten Schleife das erste Bild pixelweise auszulesen und mit der zweiten Schleife das zweite Bild. Liegt das vlt. daran, dass ich bei beiden die gleichen Variablen genommen hab?
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#12

AW: Bildanalyse/-vergleich

  Alt 9. Dez 2011, 19:06
Ich habe meinen letzten Beitrag editiert, schau noch einmal.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#13

AW: Bildanalyse/-vergleich

  Alt 9. Dez 2011, 19:07
DeddyH war wieder mal schneller, da ich es schon habe poste ich es trotzdem mal ...


BTW.: wenn Du es es optimieren willst steig von Pixels auf Scanline um, Beiträge hierzu liefert die Forensuche bis zum Abwinken

Die bildest im Moment die Differenz nur für das letzte Pixel Deiner Schleifen, man könnte es so lösen
Delphi-Quellcode:
var
 i,j,z:Integer;
begin
 z := 0;
 For i:=0 to image1.width - 1 do // Erstes Bild pixelweise auslesen
         Begin
              For j:=0 to image1.height -1 do
                  Begin
                       farbe1:= image1.canvas.pixels[i,j];
                       farbe2:= image2.canvas.pixels[i,j];
                       wert:= (farbe1 and clred)-(farbe2 and clred); // Differenzwert bilden
                       inc(z);
                       AddFound(z , i, j, wert);
                    end;
           end;
Zahlen müssen in Strings umgewandelt werden wenn Du sie in einem Stringgrid darstellen willst

Delphi-Quellcode:
procedure TForm1.AddFound(nr, x, y, wert :Integer);
begin
  if StringGrid1.Rowcount < (nr + 1) then StringGrid1.Rowcount := (nr + 1);
  StringGrid1.Cells[0, nr ] := IntToStr(Nr);
  StringGrid1.Cells[1, nr ] := IntToStr(x);
  StringGrid1.Cells[2, nr ] := IntToStr(y);
  StringGrid1.Cells[3, nr ] := IntToStr(wert);
end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)

Geändert von Bummi ( 9. Dez 2011 um 19:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#14

AW: Bildanalyse/-vergleich

  Alt 9. Dez 2011, 19:09
Was mir gerade erst auffällt: ist Pixels nicht 0-indiziert?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#15

AW: Bildanalyse/-vergleich

  Alt 9. Dez 2011, 19:11
Doch ..... ich habe die Schleife ungeprüft kopiert und angepasst ...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Slashmob

Registriert seit: 28. Okt 2011
45 Beiträge
 
#16

AW: Bildanalyse/-vergleich

  Alt 9. Dez 2011, 19:59
Was mir gerade erst auffällt: ist Pixels nicht 0-indiziert?
Was bedeutet das? Muss ich ggf. was ändern?


@Bummi: versuche grade deine Idee anzupassen, doch irgendwie bleibt der Differenzwert immer Null.
Muss nochmal in den Code gucken...
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#17

AW: Bildanalyse/-vergleich

  Alt 9. Dez 2011, 20:01
Siehe Bummis geänderten Code: die Pixel nicht von 1 bis Width/Height vergleichen, sondern von 0 bis Width/Height - 1.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Slashmob

Registriert seit: 28. Okt 2011
45 Beiträge
 
#18

AW: Bildanalyse/-vergleich

  Alt 9. Dez 2011, 20:34
Ich habe jetzt versucht den Code etwas anzupassen.
Ich brauch ja nur die Stellen wo es einen Unterschied der beiden Bildern mit dem Schwellwert gibt. Das heißt, es werden nicht mehr alle Pixel aufgelistet, sondern nur die, wo der (Differenz-)Wert > Schwellenwert.
Das Problem ist, dass bei der Ausgabe auf dem Stringgrid der (Differenz-)Wert immer Null ist.
Wo könnte der Fehler sein?

@Bummi und DeddyH:
An dieser Stelle mal ein Danke für eure geleistete Hilfe, Bemühungen und Tipps!

Delphi-Quellcode:
procedure TForm1.Addfound (nr,x,y,wert:Integer);
Begin

     If stringgrid1.rowcount < (nr+1) then
        stringgrid1.rowcount:= nr+1;
        
        stringgrid1.cells[0,nr]:=inttostr(Nr);
        stringgrid1.cells[1,nr]:=inttostr(X);
        stringgrid1.cells[2,nr]:=inttostr(Y);
        stringgrid1.cells[3,nr]:=inttostr(Wert);
        
        stringgrid1.cells[0,0]:='Nr.';
        stringgrid1.cells[1,0]:='X';
        stringgrid1.cells[2,0]:='Y';
        stringgrid1.cells[3,0]:='Diff-Wert';

end;


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
Var
    farbe1, // Pixelfarbe im Image1
    farbe2, // Pixelfarbe im Image2
    wert, // Differenzwert
    schwellwert, // Schwellwert zum Vergleich
    x, // Laufindex
    y, // Laufindex
    z // Zähler
            :integer;

begin
     b:=image1.width; h:=image1.height; // Breite und Höhe der Imagefelder
     image2.width:=b; image2.height:=h;
     
     schwellwert:=spinedit1.value; // Voreinstellung 10

     z:=0;
     For x:=0 to b-1 do
      Begin
           For y:=0 to h-1 do
               Begin
                    farbe1 := image1.canvas.pixels[x,y];
                    farbe2 := image2.canvas.pixels[x,y];
                    wert:= (farbe1 and clred)-(farbe2 and clred);
                    If wert > schwellwert then
                    inc(z);
                    AddFound(z,x,y,wert);
               end;
      end;
end;
  Mit Zitat antworten Zitat
Slashmob

Registriert seit: 28. Okt 2011
45 Beiträge
 
#19

AW: Bildanalyse/-vergleich

  Alt 9. Dez 2011, 20:44
Ah jetzt steht dort keine Null mehr. *freu*
Vor dem IF stand kein Begin und end?!

Delphi-Quellcode:
begin
     b:=image1.width; h:=image1.height; // Breite und Höhe der Imagefelder
     image2.width:=b; image2.height:=h;
     
     schwellwert:=spinedit1.value; // Voreinstellung 10

     z:=0;
     For x:=0 to b-1 do
      Begin
           For y:=0 to h-1 do
               Begin
                    farbe1 := image1.canvas.pixels[x,y];
                    farbe2 := image2.canvas.pixels[x,y];
                    wert:= (farbe1 and clred)-(farbe2 and clred);
                    If wert > schwellwert then
                    Begin
                      inc(z);
                      AddFound(z,x,y,wert);
                    end;
               end;
      end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#20

AW: Bildanalyse/-vergleich

  Alt 9. Dez 2011, 20:51
sorry, lapsus
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 5     12 34     Letzte »    


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 08:33 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