1

固定パッチ サイズの「std フィルター」を単一チャンネルの画像に適用したいと考えています。つまり、周囲のピクセル値の std と等しくし
たいということです。out[i,j]img[i,j]

Matlabに精通している方のために、私は同等のものを探しています

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

ippi関数を使用してこれを行う方法はありますか?

私は遭遇しましippiMean_StdDevたが、スライディングウィンドウではなく、単一のウィンドウで機能するようです(配列ではなくスカラー値を返します)。
私も見ましippiRectStdDevたが、マニュアルには、この機能は積分画像用であると記載されています-そして、これが私の場合にどのように適用されるかわかりません。

これに関する実用的な例やより詳細なマニュアルを持っている人はいますか?

4

1 に答える 1

1

最後に私はそれを理解しました。

  1. 入力画像は uint8 形式でなければなりません
  2. 2つのバッファを割り当てる必要があります(私の場合は32ビット浮動小数点と64ビット浮動小数点)
  3. 配列のサイズ:
    入力サイズHxW
    フィルター サイズPxP
    結果サイズH-P+1xW-P+1
    中間バッファー (32f および 64f) サイズH+1x W+1(整数イメージ境界のプラス 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 );
    
于 2013-10-30T13:02:44.663 に答える