Я хочу ускорить обработку изображений, используя обнаружение круга.Параллельный алгоритм hough с использованием 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;
Как VCL Bitmap не поточно я думаю, я могу только сделать параллельную обработку внутренней Theta Loop? Каков наилучший подход для ускорения этого кода.
Вы считаете библиотеку обработки изображений, такую как OpenCV, если ваша проблема практична? – MBo
да, мы также somethime использование matlab для обработки изображений. В этот раз мы хотим использовать собственный алгоритм с DELPHI – user1769184
Согласовано с @MBo - если это не академическое упражнение, зачем изобретать колесо? Если производительность важна, я бы, вероятно, вообще пропустил многопоточность и пошел прямо в OpenCV ['gpu :: HoughCircles'] (http://docs.opencv.org/2.4/modules/gpu/doc/image_processing.html#gpu-houghcircles). –