2015-10-27 47 views
0

假設有一個具有以下值的7x5矩陣(16位圖像),我想使用IPP將每個第三個值複製到一個新的3x2矩陣中。如何使用英特爾IPP複製光柵像素?

enter image description here =>enter image description here

我試過功能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

我不認爲ippiCopySubpix_16u_C1R是該作業的正確功能。
參見:http://technion.ac.il/doc/intel/ipp/ipp_manual/IPPI/ippi_ch4/functn_CopySubpix.htm

此函數計算使用線性內插的目標圖像的像素值(見線性內插在附錄B)按照下列公式計算:

enter image description here

其中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行的大小(以字節爲單位)。