Учитывая две матрицы cv :: Mat, которые отображают каждый пиксель исходного изображения на пиксель целевого изображения (с R2 по R2), я хотел бы преобразовать исходное изображение в конечное изображение. Я успешно сделал это, используя цикл for, но он слишком медленный:
cv::Mat srcImg(100,100,CV_8U);
//fill...
cv::Mat dstImg(100,100,CV_8U);
//dst2src ->backprojection
//these matrices indicates for each pixel in the destination image, where to map it from the source image
cv::Mat x_dst2src(100,100,CV_64F);
cv::Mat y_dst2src(100,100,CV_64F);
//fill...
for(int ydst=0; ydst!=100;++ydst)
{
for(int xdst=0; xdst!=100;++xdst)
{
double xsrc = x_dst2src.at<double>(ydst,xdst);
double ysrc = y_dst2src.at<double>(ydst,xdst);
double val = getBicubic(srcImg,xsrc,ysrc);
dstImg.at<double>(ydst,xdst) = val;
}
}
этот базовый код работает, но ОЧЕНЬ медленно (мои изображения больше, чем 100x100, и я должен использовать бикубический).
Спасибо,
-O-