Я программист по обработке изображений, и я использую opencv C++. Как часть программы, которую я написал, у меня есть три вложенных. Первый - для разных изображений, второй - для строк изображений, а третий для столбцов изображений. Нет никакой зависимости между тремя, и они могут превзойти параллель (я имею в виду, что все пиксели всех изображений могут обрабатываться параллельно). Я не знаком с параллельным программированием, программированием на GPU, потоком, tbb, параллельным для цикла и .... Я нашел различные ссылки через Интернет, которые предлагали такие вещи. Я хочу знать, что является самым быстрым решением для моей проблемы? Моя ОС окно, и я использую Visual Studio 2015.Каков самый быстрый способ для выполнения трех вложенных циклов?
Мой код заключается в следующем:
int prjResCol[MAX_NUMBER_OF_PROJECTOR];
int prjResRow[MAX_NUMBER_OF_PROJECTOR];
Mat prjCamCor[MAX_NUMBER_OF_PROJECTOR][2]
Mat prjImgColored[MAX_NUMBER_OF_PROJECTOR];
for (int i = 0; i < numOfProjector; i++)
{
Mat tmp(prjResRow[i], prjResCol[i], CV_8UC3, Scalar(0, 0, 0));
prjImgColored[i] = tmp;
for (int ii = 0; ii < prjResRow[i]; ii++)
{
double* ptrPrjCamIAnd0 = prjCamCor[i][0].ptr<double>(ii);
double* ptrPrjCamIAnd1 = prjCamCor[i][1].ptr<double>(ii);
Vec3b* ptrPrjImgColoredI = prjImgColored[i].ptr<Vec3b>(ii);
for (int jj = 0; jj < prjResCol[i]; jj++)
{
if ((ptrPrjCamIAnd0[jj] != NAN_VALUE) && (ptrPrjCamIAnd1[jj] != NAN_VALUE))
{
ptrPrjImgColoredI[jj] = secondImgColored.at<Vec3b>(ptrPrjCamIAnd1[jj], ptrPrjCamIAnd0[jj]);
}
}
}
imwrite(mainAdr + "\\img" + to_string(i) + ".bmp", prjImgColored[i]);
}
Попробуйте предоставить MCVE - небольшой, но ПОЛНЫЙ образец. Вы оставили критическую информацию о типах ('Mat,' Vec3b') нескольких переменных (например, имена тех, кто начинается с 'prj') и' CV_8UC3' (что бы это ни было). Эта информация имеет решающее значение, потому что для оптимизации вашего кода кто-то должен будет понять, что это за вещи. – Peter
Профилировали ли вы его? Каковы ваши ограничения? Сколько изображений? Какой размер? Какая обработка во внутреннем цикле? Не имеет смысла начинать «оптимизацию», не зная об этом. – Miki
Максимальное количество изображений: 20. Размер каждого мата составляет около 2000 * 3000 (строки * столбцы). – Shahab