gpt4 book ai didi

c++ - 单 channel 图像的滑动窗口标准过滤器

转载 作者:太空宇宙 更新时间:2023-11-04 11:46:32 24 4
gpt4 key购买 nike

我想将具有固定补丁大小的“std filter”应用于单 channel 图像。
也就是说,我希望 out[i,j] 等于 img[i,j] 附近的像素值的标准值。

对于那些熟悉 Matlab 的人,我正在寻找等同于

>> out = nlfilter( img, [P P], @std );

有没有办法使用 ippi 函数来做到这一点?

我遇到了 ippiMean_StdDev但它似乎适用于单个窗口,而不适用于滑动窗口(返回标量值而不是数组)。
我还看到了 ippiRectStdDev但手册说明此功能适用于整体图像 - 我不明白这对我的情况有何影响。

有人有这方面的工作示例或更详细的手册吗?

最佳答案

我终于明白了。

  1. 输入图片必须是uint8格式
  2. 需要分配 2 个缓冲区(在我的例子中是 32 位 float 和 64 位 float )
  3. 数组的大小:
    输入尺寸 HxW
    过滤器大小,PxP
    结果大小 H-P+1xW-P+1
    中间缓冲区(32f 和 64f)大小 H+1xW+1(注意积分图像边界加一!)

    // first, compute integral and sqIntegral image 
    IppiSize sz; sz.width = W; sz.height = H;
    ippiSqrIntegral_8u32f64f_C1R( uint8ImgPtr, W*sizeof(unsigned char),
    d32ImgPtr, (W+1)*sizeof(float),
    d64ImgPtr, (W+1)*sizeof(double),
    sz, 0, 0 );
    // using the integral images compute the std filter result
    IppiRect rect = { 0, 0, P, P };
    IppiSize dsz; dsz.width = W-P+1; dsz.height = H-P+1;
    ippiRectStdDev_32f_C1R( d32ImgPtr, (W+1)*sizeof(float),
    d64ImgPtr, (W+1)*sizeof(double),
    dstPtr, (W-P+1)*sizeof(float), dsz, rect );

关于c++ - 单 channel 图像的滑动窗口标准过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19663223/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com