Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi schnelle getPixel Funktion (https://www.delphipraxis.net/162286-schnelle-getpixel-funktion.html)

ChrisE 16. Aug 2011 12:24

AW: schnelle getPixel Funktion
 
@medium
Das Zitat stammt aus dem Ausgangspost ;-)

Gruß, Chris

Medium 16. Aug 2011 12:27

AW: schnelle getPixel Funktion
 
Das ist von viertel vor zehn! Du verlangst das unmögliche :D Dennoch bleibt das manuelle inlinen eine gute Option. Wenn man derart auf die Tube drücken muss, geht halt etwas Schönheit dabei drauf. Bei einem Einzeiler find ich das auch ausgesprochen vertretbar.

ChrisE 16. Aug 2011 12:30

AW: schnelle getPixel Funktion
 
Zitat:

Zitat von Medium (Beitrag 1117226)
Das ist von viertel vor zehn! Du verlangst das unmögliche :D

Entschuldigung ;-)

schwarzerlotus 16. Aug 2011 12:46

AW: schnelle getPixel Funktion
 
@Medium

wahlfreien Zugriff brauche ich nicht wirklich aber ich habe zum Beispiel einen Algorithmus in dem ich mit einem Maskenbild und zwei rois auf einem anderen Bild arbeite - ich hantiere also mit drei Scanline Pointern die ich dann richtig bestimmen und inkrementieren muss.
Aber ich hab mich schon fast damit abgefunden das direkt in der Hauptfunktion zu machen und den Pixel Zugriff nicht in eine Funktion auszulagern. Wie du schon gesagt hast geringe Laufzeit > Eleganz und Lesbarkeit ;)

@ChrisE

hab mal die Index Tabelle ausprobiert aber das Durchlaufen der Schleife hat sich dabei nicht signifikant verbessert - liegt zwischen 27 und 28 ms.

ChrisE 16. Aug 2011 12:49

AW: schnelle getPixel Funktion
 
Zitat:

Zitat von schwarzerlotus (Beitrag 1117235)
hab mal die Index Tabelle ausprobiert aber das Durchlaufen der Schleife hat sich dabei nicht signifikant verbessert - liegt zwischen 27 und 28 ms.

Kannst du mal nen Beispielprojekt anhängen?

Gruß, Chris

schwarzerlotus 16. Aug 2011 13:16

AW: schnelle getPixel Funktion
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ok hier mal meine kleine Testapp - hab noch etwas aufgeräumt und das graphics32 rausgenommen damit ihr nicht noch zusätzliche Abhängigkeiten habt.
Einmal wird das Bild mit Scanline und TRGBTriple Pointer und einmal mit BPyteArrays durchlaufen.
Außerdem dann einmal die von TBitmap abgeleitete Klasse mit zwei getPixel Methoden für die Liste von PbyteArray Pointern und dann mit der Liste der vorher berechneten X Offsets.
Die fastpixel Methode von Bummi funktioniert bei mir noch nicht.

bye Maick

P.s. mein Testimage hab ich mal nicht mit in das zip File gepackt - das wäre 9MB groß - ist ein ganz normales RGB Bild 2048*1536

ChrisE 16. Aug 2011 13:28

AW: schnelle getPixel Funktion
 
Hallo,

TMyBitmap fehlt :-(

Gruß, Chris

schwarzerlotus 16. Aug 2011 13:37

AW: schnelle getPixel Funktion
 
Liste der Anhänge anzeigen (Anzahl: 1)
ohhh sorry ganz vergessen

Medium 16. Aug 2011 13:46

AW: schnelle getPixel Funktion
 
Noch ein Vorschlag: Parallelisierung. Sobald du eine CPU mit >1 Kern hast, lohnt sich Multithreading merklich. Auf welcher Ebene man dann ansetzt ist etwas individuell, aber wenn es entsprechend viele Bilder sind, wäre denke ich viel gewonnen, wenn du einfach den aktuellen gesamten Vorgang in einen Thread schubst, und davon so grob übern Daumen Kernanzahl*2 Mal viele davon ackern lässt. Da die Operation an sich aber schon recht fix ist, ließen sich den Threads statt je eines einzelnen Bildes auch eine Liste von ein paar mehr zustecken, so dass man sich nicht nachher durch den Overhead der Threadverwaltung wieder zu viel kaputt macht. Das ist in der Regel dann ein wenig trial and error bis man da ein ungefähres Optimum hat.
Seit ich Threadblut geleckt habe, komm ich davon nicht mehr runter :)

schwarzerlotus 16. Aug 2011 13:49

AW: schnelle getPixel Funktion
 
Da ich hier auf 4 Kernen arbeiten kann ist das auf jeden Fall eine Option :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:19 Uhr.
Seite 2 von 3     12 3      

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