Ich hab mal sowas gemacht, und auch ne Tabelle verwendet. Wenn das Fischauge längere Zeit gleich groß ist, brauchst nichtmal eine Sinus-Tabelle, sondern kannst gleich eine Pixel-Matrix nehmen.
Die ist dann so groß, wie das Quadrat, in dem der Effekt angewandt wird, und in jeder Zelle steht die Abweichung drin. d.h. du hast z.B. an der Position [5,6] die Werte [2,-1], und addierst einfach die Position, an der der Effekt startet zum Zellenindex und der Abweichung, und hast die Position im unverzerrten Bild, wo du deinen Farbwert holen kannst. (Wenn dus interpolieren willst, nimmst natürlich floats für den inhalt).
Auf nem Celeron 1300 war eine Delphi-Implementation mit 200x200 Pixel Effekt und Interpolation flüssig.