Forum: Programmieren allgemein
by sonny2007,
11. Jan 2014
hi Blub,
danke für die Hinweise.
for y := 0 to ScreenBMP.Height - 1 do
for x := 0 to ScreenBMP.Width - 1 do
Dieses Problem ist heute prompt nach meiner Euphorie aufgetreten ... Das ist schon behoben.
Grüße
Forum: Programmieren allgemein
by sonny2007,
10. Jan 2014
Ihr Seite der absolute Hammer. Vielen Vielen Dank.
Ist echt unglaublich wenn man mit den Zeigern arbeitet wie schnell das geht.
also die alte Zeit im schlechtesten fall 14,7 sec.
die Zeit ohne canvas,Stream oder sonstwas ... sondern direkt mit Zeigern auf das Bitmap.
unglaubliche 0,0061 sec
Ich kann es nicht glauben juhu :)
Forum: Programmieren allgemein
by sonny2007,
10. Jan 2014
:( sorry, aber man lernt ja nie aus
okay nun mal ein wenig deinen Link verfolgt und da wird auch einiges klar :)
logisch das dies dann schneller sein sollte.
Deshalb mal der erste Versuch ...
type
TRGBTripleArray = array of TRGBTriple;
pRGBTripleArray = ^TRGBTripleArray;
Forum: Programmieren allgemein
by sonny2007,
10. Jan 2014
So ...
erst Gehversuche. Gedanken ( straft mich nicht wenn er komplett falsch ist :) ) <--- noch nicht so erfahren
1.Schritt beide Bitmaps in Streams zu speichern.
2.Schritt Header Daten von beiden Bitmaps aus den Streams entfern um die reinen Bilddaten zu haben
3.Schritt in einem TempStream nur die erste Pixelreihe des Suchbildes kopieren um eine Vorsuche zu benutzen, da sonst zu lange...
Forum: Programmieren allgemein
by sonny2007,
10. Jan 2014
Medium hast vollkommen recht 99.47 % der Rechenzeit gehen beim kopieren des Bildausschnittes auf die temp.canvas drauf.
Das lässt mich erstmal daran zweifeln ob die Threadverwendung überhaupt notwendig ist. Denn wieso die Auswirkung versuchen auszubügeln,
wenn man doch direkt die Ursache eliminieren kann.
Werde jetzt mal versuchen es ohne Canvas versuchen. Danach das Thread trotzdem...
Forum: Programmieren allgemein
by sonny2007,
9. Jan 2014
jepp das ist korrekt ,deshalb ist es ratsam sagen bei 100x100 das bild nicht in 2st. 50x100 zu teilen sondern um das suchbild größer
also 2St. 55x100 der so. sodass definitiv die Suche erfolgreich ist :)
Aber recht hast du. Habe ich noch gar nicht dran gedacht ;(
Forum: Programmieren allgemein
by sonny2007,
9. Jan 2014
Erst einmal danke für die ganzen Hinweise. Danke für das snippet ...
danke an Mikkey für die Tipps .. werde mich rantasten und rumprobieren. Wenn ich hängen bleibe habe ich ja euch ^^
Danke nochmals für die Tips
Grüße s0n
Forum: Programmieren allgemein
by sonny2007,
9. Jan 2014
Deshalb war der Gedanke für jeden Thread unterschiedliche Bitmaps zu verwenden. Das sie nicht Threadsave sind habe ich in der Hilfe gelesen.
Also Thread 1 bekommt screen1 und search1 und thread 2 bekommt screen2 und search2. Somit sollten sich die Canvas doch nicht ins Gehege kommen oder sehe ich das falsch ?
Grüße
s0n
Forum: Programmieren allgemein
by sonny2007,
9. Jan 2014
ich kopiere in die TempBmp einen Ausschnitt des Screens und nur der wird mit dem Suchbitmap verglichen. Verstehe jetzt nicht so ganz wie du es meinst.
Bin für Kritik und Verbesserung jederzeit zu haben ^^
Grüße s0n
Forum: Programmieren allgemein
by sonny2007,
9. Jan 2014
hiho,
mmhhhhhh.........
also ich habe es jetzt so abgeändert.
in formCreate
aktScreen1 := TBitmap.Create;
aktScreen2 := TBitmap.Create;
suchbild1 := TBitmap.create;
Forum: Programmieren allgemein
by sonny2007,
9. Jan 2014
Hi Leute,
ich sitze jetzt die halbe Nacht und irgendwie werde ich nicht schlau daraus. Vielleicht könnt ihr mir da weiter helfen.
Also die Grundaufgabe ist ein Bildausschnitt in einem großem Bild zu suchen.
Die einfache Abarbeitung dauert ca.12 sec bei extrem großen Bildern. Nun kam mir die Idee das Bild aufzuteilen und mit einzelnen Threads Mehrkern-Prozessor besser auszulasten
und...