1

ライブビデオストリームでリアルタイムの画像分析を行っています。vImage を使用してヒストグラムを計算し、さらに処理するために vDSP を使用しています。何年にもわたってうまく機能しているObjective-Cコードがあります。私は今それをSwiftに変換しようとしています。そして、それが機能している間は遅すぎます。主な問題は、UInt (vImagePixelCount) である vImage ヒストグラムを、vDSP が処理できる Float に変換することであることがわかりました。Objective-C では、vDSP を使用して変換を行っています。

  err = vImageHistogramCalculation_Planar8(&vBuffY,histogramY, 0);
  vDSP_vfltu32((const unsigned int*)histogramY,2,histFloatY,1,256);

ただし、vImage ヒストグラムは UInt32 ではなく UInt であるため、Swift では vDSP_vfltu32 を使用できません。代わりに私は使用しています

  let err = vImageHistogramCalculation_Planar8(&vBuffY, &histogramY, 0)
  let histFloatY = histogramY.compactMap{ Float($0) }

問題は、このコードが Objective-C バージョンよりも 100 倍以上遅いことです。より高速な代替手段はありますか?

4

1 に答える 1