Je veux accélérer le traitement d'image en utilisant la détection de cercle de hough.algorithme hough parallèle utilisant omnithread lib
// For all rows in image:
for y:=0 to AnalysisBitmap.Height-1 do
begin
// For all pixel in one row :
for x:=0 to AnalysisBitmap.Width-1 do
begin
// Is there a point ?
if IsPixel(x,y, AnalysisBitmap, 128) then
begin
for theta:=0 to max_theta do
begin
TestPoint.x := round (x - r * cos(theta*PI/max_theta));
TestPoint.y := round (y - r * sin(theta*PI/max_theta));
if ((testPoint.x < ImageWidth) and (testPoint.x > 0) and
(testPoint.y < ImageHeight) and (testPoint.y > 0)) then Inc(aHoughResult[TestPoint.x,TestPoint.y]);
end;
end;
end;
end;
Comme le VCL Bitmap est pas sûre que je suppose que je ne peux que faire du traitement parallèle de la boucle intérieure Theta? Quelle est la meilleure approche pour accélérer ce code.
Avez-vous considéré une bibliothèque de traitement d'image comme OpenCV, si votre préoccupation est pratique? – MBo
oui, nous utilisons également matlab pour le traitement d'image. Cette fois, nous voulons utiliser notre propre algorithme avec DELPHI – user1769184
D'accord avec @MBo - à moins que ce soit un exercice académique, pourquoi réinventer la roue? Si les performances importent, je sauterais probablement le multithreading et irais directement sur [[gpu :: HoughCircles]] d'OpenCV (http://docs.opencv.org/2.4/modules/gpu/doc/image_processing.html#gpu-houghcircles). –