假设存在具有以下值的7x5矩阵(16位图像),并且我想使用IPP将每个第3值复制到新的3x2矩阵中。
我尝试了函数ippiCopySubpix_16u_C1R
,但它只复制了我的原点矩阵的左角。我有哪种可能性?这是我的测试代码:
Ipp16u x[7*5], y[3*2];
IppiSize roiOrig = {7,5}; IppiSize roiDst = {3,2};
auto * ptr = x; // fill the matrix
for (int i = 0; i < 7*5; i++)
{
*ptr++ = i;
}
ippiCopySubpix_16u_C1R(x, 7*2, y, 3*2, roiDst, 3, 3);
// result is [0 1 2 7 8 9]
答案 0 :(得分:0)
我不认为ippiCopySubpix_16u_C1R是该作业的正确功能。
请参阅:http://technion.ac.il/doc/intel/ipp/ipp_manual/IPPI/ippi_ch4/functn_CopySubpix.htm
此函数根据以下公式使用线性插值计算目标图像的像素值(请参阅附录B中的线性插值):
其中i = 0,... roiSize.height - 1,j = 0,... roiSize.width - 1。
如您所见,dx和dy不是要跳过的像素的距离,而是子像素中的偏移值。
我认为您正在寻找的功能是:ippiCopy_16u_C3C1R
请参阅:https://software.intel.com/en-us/node/503752
功能水平跳过每三个源像素。
对于垂直跳过,请将srcStep
设置为3行的大小(以字节为单位)。