【问题标题】:How to copy the raster pixels with Intel IPP?如何使用英特尔 IPP 复制光栅像素?
【发布时间】:2015-10-27 09:18:50
【问题描述】:

假设有一个具有以下值的 7x5 矩阵(16 位图像),我想使用 IPP 将每个第三个值复制到一个新的 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]

【问题讨论】:

    标签: intel-ipp


    【解决方案1】:

    我认为 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 行的大小(以字节为单位)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多