План действий примерно такой:
1. Свести к минимуму обращение к VCL компонентам (в идеале обращение только к Edit'у и уже тем более никаких TImage)
2. Прочитать 1 пункт 50 раз.
3. Не пересчитывать все время количество белых точек.
Сделать например так (упрощенно, лучше конечно класс сделать):
Код:
type
TTemplate = record
bitmap:TBitmap;
whitecount:integer;
mask:array of array of boolean;
end;
картинки загрузить в bitmap из файлов при инициализации потока, посчитать количество белых точек записать в whitecount, установить размеры массива маски равные размеру картинки и заполнить false в координатах белых точек (это понадобится для того чтобы избавится от проверки "а не белая ли точка на шаблоне", и съэкономит время)
4. Загрузить из файла картинку с капчей (тож в TBitmap) и с ней уже производить сравнения.
5. После всего через синхронайз вывести данные на форму.