HVX优化大尺寸Box Filter的行处理流程

来源:互联网 发布:mysql c语言接口 编辑:程序博客网 时间:2024/06/06 03:40

Box Filter 17x17:


Box Filter 23x23:


Box Filter 35x35:


具体的思想是:

       利用一行Buffer存储一行中每个像素点的周围nxn box filter后的结果,然后计算下一行的结果时,加上新需要的一行像素的结果,减去最上面一行不需要的结果即可;主要思想其实是复用了两行像素点求box filter时共同需要的像素的和。

 for(i = lStartRow-radius;i<=lStartRow+radius;i++)
 {
  src1 = pSrc + min_t(max_t(i, 0), lSrcH-1)*lSrcStride;
  boxFilter_Row(pZero,src1,lSrcW,pSum,pDst,scaleRt,VLEN);
 }

 for(i = lStartRow+1;i<lEndRow;i++)
 {
  src0 = pSrc + max_t(i - radius - 1, 0)*lSrcStride;
  src1 = pSrc + min_t(i + radius, lSrcH - 1)*lSrcStride;
  pDst += lDstStride;
  boxFilter_Row(src0,src1,lSrcW,pSum,pDst,scaleRt,VLEN);
 }

MVoid boxFilter_u8_29x29_Row( unsigned char   *pSrcSub, unsigned char   *pSrcAdd, int  width, unsigned int  *pSum, unsigned char   *pDst, unsigned int scaleRt);



原创粉丝点击