問題タブ [accelerate-framework]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
iphone - Apple FFT および Accelerate フレームワークの使用
誰かがApple FFT
iPhone アプリ用に使用したことがありますか、それとも使用方法に関するサンプル アプリケーションがどこにあるか知っていますか? Apple がいくつかのサンプル コードを投稿していることは知っていますが、それを実際のプロジェクトに実装する方法がよくわかりません。
ios - Apple Accelerate Framework のスケーリングとベクトルの正規化
Accelerate.framework
ベクトルをスカラーでスケーリングし、ベクトルを正規化するには、どの関数を使用できますか? ドキュメントでスケーリングに役立つと思われるものを見つけましたが、その操作について混乱しています。
ios - iPhone で vImage ライブラリを参照するコードをコンパイルできないのはなぜですか?
コードに vImage ベースの機能を含めようとしています。しかし、コンパイルは失敗します-関数/変数をまったく認識していないようです。
しかし同時に、vDSP ベースのコードは問題なく動作するようです。また、コードはシミュレーターでコンパイルされますが、デバイスでは失敗します。
サンプルコード (失敗) は次のとおりです。
ここで、同じフレームワーク内の DSP ベースのコードである DSPComplex は正常に動作しますが、vImage ベースのコードである vImagePixelCount は失敗します。誰でもこれについて私を助けることができますか? vImage は iOS4 に含まれていませんか?
デバイスでiOS4.2を使用しています。
iphone - Apple の iPhone 用 Accelerate FFT のセットアップ
デジタル サウンド処理の概念を理解しようとしており、Apple の Accelerate Frameworkリンクの FFT を実装したいと考えています。vDSP API では、素晴らしく高速な FFT を見つけることができますが、残念ながら正しく設定できません。ドキュメントは本当にわかりにくいと思います。iPhoneのマイクの信号をFFTしようとしています。誰かが私にこれについて読むことができるセットアップまたはいくつかのサイトを教えてもらえますか? 本当に素晴らしいでしょう。
ご回答ありがとうございます。
iphone - Accelerate フレームワークを使用して FFT を実行する場合、バッファを設定するにはどうすればよいですか?
Accelerate フレームワークを使用して高速フーリエ変換 (FFT) を実行しており、それで使用する 1024 の長さのバッファーを作成する方法を見つけようとしています。 FFTを実行したい信号。
誰かが私を助けたり、これを行うためのヒントを教えてくれますか?
opencv - OpenCV for Mac は Accelerate フレームワークを使用していますか?
Accelerate フレームワークは、画像畳み込みや LAPACK などを提供する Mac 固有のフレームワークであり、Mac で可能な限り高速になるように最適化されていると思われます。私の質問: OpenCV はこれを利用していますか? 具体的には、関数「filter2D」はAccelerateを使用していますか?
signal-processing - FFT データに間違った周波数でスパイクが発生する原因は何ですか?
ここで何 度も説明したように、Apple の Accelerate フレームワークを使用して iPhone に FFT ピッチ検出を実装しています。
私は位相オフセット、ビン周波数を理解しており、FFT 技術 (単純なピッチ検出、自己相関、ケプストラムなど) を使用してピッチを検出するいくつかのオープンソース チューナーを調査しました。これが私の問題です:
FFT の結果は、ビンが 1 ~ 2 ヘルツしか離れていない場合でも、一貫して 5 ~ 10 Hz (+/-) ずれています。私はさまざまなアルゴリズムを試しましたが、高解像度でサンプリングされた単純な FFT でさえ、一見間違った場所でマグニチュード スパイクを示しています。これは一貫したオフセットではありません。高すぎるものもあれば、低すぎるものもあります。
たとえば、440Hz のトーンは 445.2 Hz として認識されます。214Hzとして220Hz; 874Hzとして880Hz; 1174Hzをトーンジェネレーターで1183Hzに。ほぼ同じアルゴリズムを使用する Mac 用の同様のオープンソース チューナーは、問題なくピッチを完全に検出します。(これらの違いは、デバイス上とシミュレータ上では異なりますが、オフのままです。)
実際のトーンと検出された振幅スパイクの間にいくつかのビンがあることが多いため、問題はビンの解像度ではないと思います。入力が間違ったピッチを聞いているかのようです。
以下にコードを貼り付けました。一般的な流れは単純です。
ステップを FFT バッファにプッシュします -> Hann Window -> FFT -> Phase/Magnitude -> 最大ピッチが間違っています。
c++ - vDSP 関数を使用した自己相関
float または double の 1D ベクトルが与えられた場合、Accelerate Framework の vDSP ライブラリの関数を使用して、そのベクトルの自己相関をどのように計算できますか?
vDSP_acor() および vDSP_acorD() 関数がこの計算を実行すると思われるかもしれませんが、ドキュメント vDSP_Library.pdf (ここから入手可能) は、関数の引数がどのように使用されるかを説明していません。
同様に、vDSP_conv() および vDSP_convD() 関数は、2 つのベクトル間の相関と畳み込みを実行する機能について言及していますが、それらをうまく使用できるようにするための十分な説明やサンプル コードを提供していません。たとえば、フィルター カーネルを使用して 2D マトリックスを畳み込む場合、異なる値の signalStride を使用して vDSP_convD() を 2 回呼び出す必要があると思いますが、これはドキュメントから省略されています。もう 1 つの省略は、フィルター内のデータをパックする方法です。ゼロでパディングされた場合、ゼロが最初か最後か、またはゼロ以外のエントリの両側に均等に分散する必要があるかどうかは重要ですか? フィルターの長さ、結果の長さ、および入力の長さに関する要件はありますか?
有用な例の提案: vDSP_acor() と vDSP_conv() の両方を使用した、ベクトルとそれ自体の自己相関の実装。IFT が正規化されていない回答を返す前に、自己相関関数の計算に使用される vDSP_fft2d_zrip() を使用して前方 FFT された実データとしてパックされた周波数領域の 2 つの配列の 2 項乗算。1D および 2D 配列でのガウス カーネル畳み込みの実装。一般的に、これは素晴らしいライブラリです (FAST と言えますか?!) が、これらの特定の関数を理解するのは少し難しいことがわかりました。前述の例は、信号処理と画像解析で非常に一般的であるため、おそらく広く使用されます。
vDSP_Library 参照ドキュメントの管理者への提案: 「空間ドメイン」と「時間ドメイン」はドキュメント全体で同等であると想定しています。そうでない場合は、その区別をしてください。また、議論されている関数で宣言された引数の名前と一致する適切に定義されたパラメーターが式に含まれていることを確認してください。
脚注: ここで言及する自己相関は、次のように定義されます: A[T] = <(X[t]-m)(X[tT]-m)>/v、ここで、A[T] はラグ T での自己相関です。 t は信号 X のインデックス、m はすべての t での X の平均、v はすべての t での X の分散です。山括弧 <> は、T 離れた X の使用可能なすべてのペアの平均を示します。
iphone - Accelerateフレームワークを使用した符号なし8ビット整数の合計配列
Accelerate Frameworkを使用して、floatの配列に変換せずに、符号なし8ビット整数の配列を合計できますか?
私の現在のアプローチは次のとおりです。
しかし、vDSP_vfltu8はかなり遅いです。
iphone - AccelerateFrameworkとvDSPを使用したiPhone画像処理
更新:より多くのコードを含む以下の追加の質問を参照してください。
画像をぼかすためのカテゴリをコーディングしようとしています。私の出発点は、ここにあるJeffLaMarcheのサンプルです。これは(他の人が提案した修正後)正常に機能しますが、私の要件には1桁遅すぎます。3GSでは、適切なぼかしを行うのに3秒かかる可能性があり、これを0.5未満に下げたいと思います。フルスクリーンの場合は秒(速いほど良い)。
彼はAccelerateフレームワークをパフォーマンスの向上として言及しているので、私はこれ、特にAppleDocumenationによるとvDSP_f3x3を見て最後の日を過ごしました。
3x3カーネルで2次元畳み込みを実行することにより、画像をフィルタリングします。単精度。
完璧-私は適切なフィルターマトリックスを持っていて、画像を持っています...しかし、これは私が困惑するところです。
vDSP_f3x3は、画像データが(float *)であると想定していますが、私の画像は;からのものです。
コンテキストはkCGImageAlphaPremultipliedFirstを使用したCGBitmapContextCreateから取得されるため、私のsrcDataは実際にはコンポーネントあたり8ビットのARGBです。
私が本当に必要としているのはfloatコンポーネントのコンテキストだと思いますが、Quartzのドキュメントによると、kCGBitMapFloatComponentsはMac OSでのみ利用可能であり、iOSでは利用できません:-(
私が持っている整数コンポーネントをvDSP_f3x3が必要とするfloatコンポーネントに変換するaccelateフレームワークを使用する本当に速い方法はありますか?自分でできるということですが、それを実行してから畳み込みを行ってから元に戻すまでに、畳み込みを行った方がよいので、今よりもさらに遅くなっているのではないかと思います。
多分私は間違ったアプローチをしていますか?
vDSPを使用してiPhoneで画像処理を行ったヒントはありますか?私が見つけることができるドキュメントは、非常に参照指向であり、この種のことに関してはあまり初心者に優しいものではありません。
誰かが本当に速いぼかし(そして高品質、解像度を下げてから私が見たものを再スケーリングしてズボンに見えるものではない)のリファレンスを持っているなら、それは素晴らしいでしょう!
編集:
@Jasonに感謝します。私はこれを実行し、ほぼ機能していますが、問題は、画像がぼやけても、呼び出すたびに1ピクセル左にシフトすることです。また、画像が白黒になるように見えますが、それは別のことかもしれません。
このコードには、明らかに正しくないものとして飛び出しているものがありますか?私はまだそれを最適化しておらず、少しラフですが、たたみ込みコードが十分に明確であることを願っています。
vDSP_conv行をコメントアウトし、次の行を次のように変更する場合は、これを追加する必要があります。
その後、予想どおり、私の結果は元のソースのクローンになります。カラーで、左にシフトされていません。これは、問題が発生しているのは畳み込みであることを意味しますが、どこにあるのかわかりません:-(
思考:実際にこれについて考えると、畳み込みは入力ピクセルがARGB形式であることを知る必要があるように思われます。そうしないと、畳み込みは値を乗算し、その意味についての知識がありません(つまり、複数のR * Bなど) 。これは、私が思うに白黒の結果が得られる理由を説明しますが、シフトは説明しません。繰り返しになりますが、ここにある私の素朴なバージョンよりも多くのものが必要かもしれないと思います...
最終的な考え:左へのシフトはフィルターの自然な結果だと思います。画像のサイズを確認し、場合によってはそれを埋める必要があります...したがって、コードは実際に機能していると思います。