主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

ステレオビデオからの深度推定のためのコード生成

この例では,MATLAB®编码器™を使用してMATLAB関数のCコードを生成する方法を説明します。このコードは,ステレオカメラキャリブレーターアプリまたは関数estimateCameraParametersで作成されたstereoParametersオブジェクトを使用します。ここではステレオビデオからの深度推定の例にあるMATLABコードを変更して,コード生成がサポートされるようにする方法を説明します。

この例にはMATLAB编码器のライセンスが必要です。

コード生成

MATLAB®编码器™を使用したコード生成の基礎については,特徴のマッチングとレジストレーションを使ったコード生成の紹介の例を参照してください。

Cコード生成のためのMATLABコードの再構成

MATLAB编码器でCコードを生成するには,MATLABコードが関数の形式を取っていなければなりません。また,関数の引数がMATLABオブジェクトであってはなりません。

これはMATLABコードからコードを生成する際に問題となります。MATLABコードではcameraParametersオブジェクトまたはstereoParametersオブジェクトが使用され,これは通常,カメラのキャリブレーション時にあらかじめ作成されます。この問題を解決するには,toStruct ()メソッドを使用してcameraParametersオブジェクトまたはstereoParametersオブジェクトを構造体に変換します。この構造体は,その後,生成されたコードに渡すことができます。

ステレオビデオからの深度推定の例のメインアルゴリズムを再構成したコードは,depthEstimationFromStereoVideo_kernel.mという関数内にあります。depthEstimationFromStereoVideo_kernelは,stereoParametersオブジェクトから作成された構造体を受け取る関数であることに注意してください。また,showPointCloudFunctionはコード生成をサポートしないため,再構成された3次元点群は表示されません。

ステレオカメラのパラメーターの読み込み

stereoParametersオブジェクトを読み込みます。このオブジェクトはstereoCameraCalibratorアプリまたは関数estimateCameraParametersを使用してカメラのキャリブレーションを行った結果です。

加载stereparameters对象。负载(“handshakeStereoParams.mat”);视觉化摄像机外物。showExtrinsics (stereoParams);%将对象转换为结构体,该结构体可以传递给生成的对象%的代码。stereoParamsStruct = toStruct (stereoParams);

ビデオファイルの非圧縮化

Macintoshでは,圧縮されたビデオを読み取るためのコード生成がVideoReaderでサポートされていません。ビデオファイルを非圧縮化して,一時ディレクトリに保存します。

如果比较字符串(计算机(),“MACI64”解压缩左边视频。videoFileLeft =“handshake_left.avi”;读者= VideoReader (videoFileLeft);作家= vision.VideoFileWriter (videoFileLeft);hasFrame(reader) frame = readFrame(reader);步骤(作家,框架);结束释放(读者);释放(作家);解压正确的视频。videoFileRight =“handshake_right.avi”;读者= VideoReader (videoFileRight);作家= vision.VideoFileWriter (videoFileRight);hasFrame(reader) frame = readFrame(reader);步骤(作家,框架);结束释放(读者);释放(作家);结束

MATLAB関数の墨西哥人ファイルへのコンパイル

関数codegenを使用して,関数depthEstimationFromStereoVideo_kernelを墨西哥人ファイルにコンパイルします。コンパイルレポートを生成するには‘报告’オプションを指定します。このレポートには元のMATLABコードと,Cコードの生成時に作成された関連ファイルが含まれています。必要に応じて,生成されたファイルをMATLAB编码器が保存できる一時ディレクトリを作成します。生成される墨西哥人ファイルの名前は,- oオプションを使って実行可能ファイルの名前を指定した場合を除き,元のMATLABファイルに_mexを追加したものになることに注意してください。

MATLAB编码器では,すべての入力パラメーターのプロパティを指定しなければなりません。これを簡単に行うには,コマンドラインでargsオプションを使用して,入力パラメーターを例で定義します。詳細については,コマンドラインでの例による入力プロパティの定義(MATLAB编码器)を参照してください。

compileTimeInputs = {coder.typeof (stereoParamsStruct)};%生成代码。codegendepthEstimationFromStereoVideo_kernelarg游戏compileTimeInputs

生成されたコードの実行

球员=愿景。放像机(“位置”, [100 200 750 560]);eofReached = false;~eofReached [eofReached, disframe] = depthestimationfromsterevideo_kernel_mex (stereoParamsStruct);%保留最后一帧。如果~ eofReached步骤(球员,dispFrame);结束结束

クリーンアップ

清晰的depthEstimationFromStereoVideo_kernel_mex;释放(球员);

まとめ

この例では,cameraParametersオブジェクトまたはstereoParametersオブジェクトを入力として受け取るMATLABコードからCコードを生成する方法を説明しました。