Schau mal hier:
http://www.experts-exchange.com/Prog..._23981530.html
Der benutzt aber TBitmap mit Canvas.Pixels. Also genau der Flaschenhals.
Das Ganze könnte man beschleunigen, indem man entweder statt mit
TBitmap
mit
TBitmap32
(Graphics32) arbeitet oder die Funktion auf
ScanLine
umstellt.