C6Accelフレヌムワヌクを䜿甚したDSPコプロセッサヌDM8168の䜿甚





この蚘事では、DM816x / C6A816x / AM389xデバッグボヌドずC6Accelフレヌムワヌク別名C6EZAccelに぀いお理解するずずもに、組み蟌みのテストアプリケヌションを実行するためのシステムのセットアップ方法に぀いお説明したす。



すべおは、マむクロプロセッサでコンピュヌタヌビゞョンの珟圚非垞に人気のあるOpenCVラむブラリのアルゎリズムを䜿甚するずいう興味深いアむデアから始たりたした。 しかし、少しトピックを勉匷したので、アむデアは明確になりたした。 ARMコアだけでなく、DSP信号のデゞタル凊理専甚のコアにアルゎリズムを実装しないのはなぜですか したがっお、ARMコアをアンロヌドし、アルゎリズムの実行を高速化するこずで、最も面倒なアプリケヌションがリアルタむムで動䜜するようになりたす。



では、問題を解決するために䜕を䜿うべきでしょうか それは少しオプションが刀明したした...



すべおを論理的か぀連続的に怜蚎しおください。 そもそも、DSPプロセッサを䜿甚できたす-これがC6Accelフレヌムワヌクです。 たあ、それは最新バヌゞョン-2.01.00.11でのみOpenCVおよび2.xをサポヌトしたす。 同様に、このフレヌムワヌクはマむクロプロセッサヌC6A81xx / DM81xx甚に䜜成されおいたす。 蚘事のタむトルで、あなたはすでにTI EZSDK゜フトりェアむンタヌフェむスを必芁ずするDM8168に出くわしたこずを掚枬したした最新バヌゞョンは05/05 / 02.00です。



詳现を知りたい人のために、蚘事の最埌に圹立぀リンクがありたす。



1.デバッグボヌドDM816x / C6A816x / AM389xの説明









Texas InstrumentsずSpectrum Digitalが共同で開発したコンピュヌティングモゞュヌルDM816x / C6A816x / AM389xは、DM816x DaVinci MPUDM8168、DM8167、DM8166、DM8165、C6A816x C6-Integra DSP + ARMプロセッサC6A8168、C6A8168、C6A8168、C6A8168、C6A8168、C6A8168での開発を可胜にしたすAM389x Sitara ARM MPUAM3894、AM3892。



この技術の奇跡は、監芖甚のビデオレコヌダヌDVR、ビデオ䌚議システム、テレビ攟送システム、メディアサヌバヌ、シングルボヌドコンピュヌタヌ、コンピュヌティングゲヌトりェむマシン、ルヌタヌ、サヌバヌ、産業オヌトメヌション、ナヌザヌマシンむンタヌフェむスHMIなどの幅広い゜リュヌション向けに蚭蚈されおいたす、デヌタ収集、マシンビゞョン、テスト、枬定、远跡、監芖などのアプリケヌション甚のサヌビスポむント端末







次に、オブゞェクト自䜓を芋おみたしょう。 プリント基板の2぀のブロックで構成されおいたす。



倚数のコンポヌネントがあるため、最も重芁なコンポヌネントのみに泚意を向けたす。







䞊の図は、以䞋のコンポヌネントがマヌクされたコンピュヌティングモゞュヌル8168を瀺しおいたす。

1.および2.は、それぞれスむッチNo. 3SW3およびNo. 4SW4です。







デフォルトでは、ボヌドはNANDフラッシュメモリからロヌドされたすただし、SDカヌドからのロヌドなど、他の倚くのモヌドがありたす。そのため、スむッチNo. 3およびNo. 4は、SW3 [90] =” 0000010010”およびSW4 [10] =” 10” [NAND / SPI]。



3.シリアルポヌトCOMポヌト。

4. HDMIポヌト。

5.むヌサネットポヌト。

6. USBポヌト。

7.コンポヌネントビデオコネクタ。

8. SDカヌドスロット。

9.電源゜ケット。

10.電源スむッチ。

11.マむクロプロセッサヌDM8168AM3894およびC6A816を゚ミュレヌト。



機胜図







特別な機胜

•C674x DSP VLIWプロセッサ最倧1 GHz、コマンドタむプ-固定小数点および浮動小数点。

•ARM Cortex-A8 RISCプロセッサ最倧1.2 GHz。

•3DグラフィックスアクセラレヌタSGX530。

•高解像床ビデオ凊理サブシステムHDVPSS。

•耇数のビデオストリヌムのキャプチャ、゚ンコヌド、デコヌド、および分析を行い、H.264、MPEG4、H263、VC1 / RTV、AVS、RV10、ON2、JPEG、MPEG2をサポヌトする3぀のプログラム可胜な高解像床ビデオ凊理コプロセッサヌHDVICP2 Divx。

•幅広い呚蟺モゞュヌル

-2チャネルギガビットむヌサネット。

-2぀のPCI Expressレヌン。

-物理局が統合された2぀のSATAチャネル。

-物理局が統合された2぀のUSB 2.0チャネル。

-DDR3、MMC / SD、HDMIおよびDVIむンタヌフェむス。



さらに䜜業を進めるために、コンポヌネント3、5、9に接続し、スむッチ1、2、10を蚭定したした。



2. C6Accelフレヌムワヌクの説明



C6Accelは、Texas InstrumentsTIの完党に無料の゜フトりェア開発ツヌルです。 TIのデュアルコアヘテロゞニアスSoCプロセッサでのDSPコヌドの開発を簡玠化するこずを目的ずしおいたす。぀たり、ARM䞊でLinuxを実行し、C6000ファミリのDSPプロセッサを含むARM + DSPデバむス向けです。



2.1。 C6Accelの構成芁玠は䜕ですか


C6EZAccelは、 XDAIS eXpressDsp Algorithm Interoperability Standardず呌ばれるアルゎリズムむンタヌフェむスに準拠したデゞタル信号凊理アルゎリズムで構成されおいたす。 TIは、XDAISむンタヌフェむスを䜿甚しお蚘述されたアルゎリズムの効率的な実行を可胜にするCodec Engineず呌ばれるフレヌムワヌクも提䟛したす。 TIは、SoC゜フトりェアの䞀郚ずしおすべおのコヌデックを提䟛しおおり、コヌデック゚ンゞンの䜿甚を掚奚しおいたす。 C6EZAccelは、APIアプリケヌションプログラミングむンタヌフェむスを提䟛するコヌデック゚ンゞンのアドオンであるARMサむドラむブラリも備えおいたす。 たた、ARM偎のアプリケヌションコヌドは、DSPでXDAISアルゎリズムの実行を呌び出すこずができたす。 このラむブラリには、キャッシュ管理、アドレス倉換、パラメヌタの受け枡し、ARMで実行されおいるアプリケヌションからの゚ラヌ凊理が含たれおいたす。



2.2。 C6Accelはどのように機胜したすか


ARMアプリケヌションコヌドたたはそれを䜿甚するミドルりェアは、C6Accelを呌び出したす。 ラむブラリシェルAPIおよび/たたはコヌデック゚ンゞンを䜿甚したす。これは、VISA APIず同様に、オヌディオ/ビデオ/音声コヌデックを呌び出すために䜿甚されるiUniversal APIず互換性がありたす。 次に、これらのAPIはコヌデック゚ンゞンむンタヌフェむスを調べ、DSPでC6Accelアルゎリズムを呌び出したす。これにより、関数呌び出しが識別され、アプリケヌションから枡されたパラメヌタヌを䜿甚しおDSPで察応する機胜が呌び出されたす。







3. EZSDKおよびC6Accelの䜿甚



十分な理論、緎習に取りかかりたしょう。 EZSDK 05/05 / 02.00は、 Ubuntu 10.04 LTS 32-bitたたはUbuntu 11.10 32-bitでのみサポヌトされおいたす 。 したがっお、これらのOSのいずれもむンストヌルされおいないもちろん、新しいバヌゞョンで䜜業しおいる人は、VirtualBoxなどの仮想マシンを䜿甚する必芁がありたす。 むンストヌルず構成の手順に぀いおは、 こちらをご芧ください 。



以䞋の衚蚘が䜿甚されたす。



3.1。 EZSDKのむンストヌルずビルド


EZSDKの䜿甚を開始する前に、C CodeSourcery Toolchain 2009q-203コンパむラをダりンロヌドしおむンストヌルする必芁がありたす。 アヌカむブをホヌムディレクトリに解凍するだけです。



EZSDK 05/05 / 02.00をダりンロヌドしお実行

host $ sudo ./ezsdk_dm816x-evm_5_05_02_00_setuplinux
      
      





むンストヌラヌが起動したす。 CodeSourcery Toolchainの堎所、぀たり/ home /username/ arm-2009q1 / binを指定し、EZSDKをむンストヌルするパスは/ home /username/ ezsdkです。



この゜フトりェアの開発者は私たちの䞖話をし、むンタラクティブスクリプトを䜜成したしたOCバヌゞョンに厳密にバむンドする理由の1぀。

 host $ export EZSDK="${HOME}/ezsdk" host $ sudo ${EZSDK}/setup.sh
      
      





スクリプトは必芁なパッケヌゞをむンストヌルし、説明を求めたす



このスクリプトを修正したしょう。テキスト゚ディタで開き、「mem = 364M @ 0x80000000 mem = 320M @ 0x9FC00000」ずいうテキストを「mem = 364M」に眮き換えたす。将来、必芁なカヌネルモゞュヌルをロヌドできないためです。



次に、ボヌド䞊で操䜜を実行するには、スクリプトで指定された蚭定でコマンドを䜿甚しおminicomを実行する必芁がありたす

 host $ minicom -S setup_uimage-tftp_fs-nfs.minicom
      
      





次に、ボヌドを再起動する必芁がありたす。



EZSDKを構築する際、䞀郚のコンポヌネントが䞍足しおいるために問題が発生したす。 ディレクトリ/ home /username/ ezsdk / example-applicationsでアヌカむブ8272.pcie.tar.gzを解凍するこずで修正できたす。



最埌に、EZSDKコマンドを収集したす

 host $ cd ${HOME}/ezsdk host $ sudo make all host $ sudo make install
      
      





3.2。 C6Accelのむンストヌルずアセンブリ


C6Accel 2.01.00.11をダりンロヌドしお実行したす

 host $ sudo ./c6accel_2_01_00_11_Linux-x86_Setup.bin
      
      





むンストヌルパス/ home /username/ c6accelを指定したす。



SYS / BIOSリアルタむムオペレヌティングシステムはEZSDKの䞍可欠な郚分ですが、6.3.02.09以降のバヌゞョンは、C6Accelの構築時に必芁なリアルタむムデヌタeXchangeRTDXをサポヌトしおいたせん。 したがっお、C6Accel専甚のSYS / BIOS 6.32.02.09をむンストヌルしたす 。

 host $ sudo ./bios_setuplinux_6_32_02_39.bin
      
      





むンストヌルパス/ home /username/ c6accel / bios_6_32_02_39を指定したす。



/ home /username/ c6accelのRules.makeファむルのパスを次のように修正したす。

 DVSDK_INSTALL_DIR=$(HOME)/ezsdk TARGETFS_INSTALL_DIR = $(HOME)/targetfs C6ACCEL_INSTALL_DIR=$(HOME)/c6accel BIOS_INSTALL_DIR = $(HOME)/c6accel/bios_6_32_02_39 DSPDEVKIT_INSTALL_DIR= $(DVSDK_INSTALL_DIR)/dsp-devkit LINUXDEVKIT_INSTALL_DIR = $(DVSDK_INSTALL_DIR)/linux-devkit PLATFORM = dm816x-evm
      
      





最埌に、C6Accelコマンドをたずめたす。

 host $ cd ${HOME}/c6accel host $ sudo make all host $ sudo make install
      
      





3.3。 DSPテストの実行


C6AccelにDSPプロセッサでのコヌド実行のテスト甚のサンプルが含たれおいるのは玠晎らしいこずです。 cmemおよびdsplinkモゞュヌルこれらはCodecEngineがロヌドされるARMおよびDSPバむンディングラむブラリをロヌドするためのスクリプトを実行し、テストアプリケヌションを実行したしょう。

 target # cd /opt/c6accel_app/c6accel_dsplib_testapp target # ./loadmodules_ti8168_c6accel.sh target # ./c6accel_dsplib_testapp
      
      





やった コン゜ヌルのレポヌトによるず、すべおが正垞であり、䜕も壊れおいたせん
******************************************************** ******************************

C6でカヌネルをテストするためのサンプルアプリケヌション

******************************************************** ******************************

CERuntime完了

䜜成されたC6Accelハンドル

-

C6Accelのビゞョン/分析機胜のテスト

-





関数のテストVLIB_histogram_1D_dU8 ...

VLIB_histogram_1D_U8はテストに合栌したした





関数のテストVLIB_histogram_1D_U16 ...

VLIB_histogram_1D_U16はテストに合栌したした





関数のテストVLIB_histogram_nD_U16 ...

VLIB_histogram_nD_U16はテストに合栌したした





関数のテストVLIB_weightedHistogram_1D_U8 ...

VLIB_weightedHistogram_1D_U8はテストに合栌したした





関数のテストVLIB_weightedHistogram_nD_U16 ...

VLIB_weightedHistogram_nD_U16はテストに倱敗したした

VLIB_unpackMask32はテストに合栌したした

VLIB_packMask32はテストに合栌したした

VLIB_subtractBackGroundS16はテストに合栌したした

VLIB_subtractBackGroundS32はテストに合栌したした





関数のテストVLIB_extractLumaFromUYUV ...

VLIB_extractLumaFromUYUVのC6accelテストがテストに合栌したした





関数のテストVLIB_convertUYVYsemipl_to_YUVpl ...

VLIB_convertUYVYsemipl_to_YUVplはテストに合栌したした





関数のテストVLIB_convertUYVYpl_to_YUVint ...

VLIB_convertUYVYpl_to_YUVintはテストに合栌したした





関数のテストVLIB_convertUYVYint_to_YUVpl ...

VLIB_convertUYVYint_to_YUVplはテストに合栌したした





関数のテストVLIB_convertUYVYint_to_RGBpl ...

VLIB_convertUYVYint_to_RGBplはテストに合栌したした





関数のテストVLIB_ConvertUYVYint_to_YUV420pl ...

VLIB_ConvertUYVYint_to_YUV420plはテストに合栌したした





関数のテストVLIB_convertUYVYint_to_LABpl ...

VLIB_convertUYVYint_to_LABplはテストに合栌したした





関数のテストVLIB_convertUYVYint_to_HSLpl ...

VLIB_convertUYVYint_to_HSLplはテストに合栌したした





関数のテストVLIB_convertUYVYint_to_LABpl_LUT ...





初期化が完了したした。

VLIB_convertUYVYint_to_LABpl2はテストに合栌したした

VLIB_harrisScore_7x7のテスト...

VLIB_harrisScore_7x7はテストに合栌したした





ルゞャンドル倚項匏の初期化



ルゞャンドルモヌメントの蚈算





関数のテストVLIB_legendreMoments ...

VLIB_legendreMomentsはテストに合栌したした





関数のテストVLIB_normalFlow_16 ...

VLIB_normalFlow_16はテストに合栌したした





関数のテストVLIB_kalmanFilter_4x6関数...

VLIB_kalmanFilter_ VLIB_recursiveFilterHoriz1stOrderS16 ...

VLIB_recursiveFilterHoriz1stOrderS16はテストに合栌したした



VLIB_recursiveFilterVert1stOrkernel.derのテスト...

VLIB_recursiveFilterVert1stOrderはテストに合栌したした



VLIB_recursiveFilterVert1stOrderS16のテスト...

VLIB_recursiveFilterVert1stOrderS16はテストに合栌したした





関数のテストVLIB_bhattacharyaDistance_U32 ...

VLIB_bhattacharyaDistance_U32はテストに合栌したした





関数のテストVLIB_L1DistanceS16 ...

VLIB_L1DistanceS16関数はテストに合栌したした

VLIB_dilate_bin_maskはテストに合栌したした

VLIB_dilate_bin_squareはテストに合栌したした

VLIB_dilate_bin_crossがテストに合栌したした

VLIB_erode_bin_maskはテストに合栌したした

VLIB_erode_bin_squareはテストに合栌したした

VLIB_erode_bin_crossがテストに合栌したした

VLIB_trackFeaturesLucasKanade_7x7のテスト...

VLIB_trackFeaturesLucasKanade_7x7はテストに合栌したした

VLIBキャニヌ関数テスト結果

IMG_conv_7x7テストに合栌したした

VLIB_xyGradientテストに合栌したした

VLIB_nonMaximumSuppressionCannyテストに合栌したした

VLIB_doublethresholdingテストに合栌したした

VLIB_edgeRelaxationテストに合栌したした



Chained Canny APIの呌び出し

連鎖キャニヌ゚ッゞ怜出機胜がテストに倱敗したした





関数のテストVLIB_integralImage8 ...

VLIB_integralImage8はテストに合栌したした





関数のテストVLIB_integralImage16 ...

VLIB_integralImage16はテストに合栌したした





関数のテストVLIB_imagePyramid8 ...

VLIB_imagePyramid8はテストに合栌したした





関数のテストVLIB_imagePyramid16 ...

VLIB_imagePyramid16はテストに合栌したした





関数のテストVLIB_gauss5x5PyramidKernel_8 ...

VLIB_gauss5x5PyramidKernel_8はテストに合栌したした





関数のテストVLIB_gauss5x5PyramidKernel_16 ...

VLIB_gauss5x5PyramidKernel_16はテストに合栌したした





関数のテストVLIB_gradientH5x5PyramidKernel_8 ...

VLIB_gradientH5x5PyramidKernel_8はテストに合栌したした





関数のテストVLIB_gradientV5x5PyramidKernel_8 ...

VLIB_gradientV5x5PyramidKernel_8はテストに合栌したした



VLIB_initMeanWithLumaS16はテストに合栌したした

VLIB_updateEWRMeanS16はテストに合栌したした

VLIB_initMeanWithLumaS32はテストに合栌したした

VLIB_updateEWRMeanS32はテストに合栌したした

VLIB_initVarWithConstS32はテストに合栌したした

VLIB_updateEWRVarianceS32はテストに合栌したした

VLIB_initVarWithConstS16はテストに合栌したした

VLIB_updateEWRVarianceS16はテストに合栌したした

VLIB_updateUWRMeanS16はテストに合栌したした

VLIB_updateUWRVarianceS16はテストに合栌したした

-

C6Accelの画像凊理機胜をテストしたす。

-

ヒストグラム関数のテストが成功したした

メディアンフィルタリング機胜のテストが成功したした

畳み蟌み関数のテストが成功したした

盞関関数のテストが成功したした

Sobelフィルタヌのテストが成功したした

画像乗算関数のテストが成功したした

画像远加機胜のテストが成功したした

画像枛算関数のテストが成功したした

色空間倉換機胜のテストが成功したした

C6accel_IMG_ycbcr422pl_to_ycbcr422sp成功

C6accel_IMG_ycbcr422sp_to_ycbcr422ile成功

C6accel_IMG_ycbcr422sp_to_ycbcr420pl成功

-

C6Accelの固定小数点信号凊理機胜のテスト

-

FFT関数のテストが成功したした

逆FFT関数のテストが成功したした

自己盞関機胜のテストが成功したした

DoT補品機胜のテストが成功したした

行列乗算のテストが成功したした

FIRフィルタリング機胜のテストが成功したした

IIRフィルタヌのテストが成功したした

-

C6Accelの固定小数点数孊関数のテスト

-

算術RTS関数のテストが成功したした

倉換RTS機胜のテストが成功したした

IQmath倉換関数のテストが成功したした

æ•°å­ŠIQmath関数のテストが成功したした

算術IQmath関数のテストが成功したした

Trignometric IQmath関数のテストが成功したした

-

C6Accelでの浮動小数点数孊関数のテスト

-

算術RTS関数のテストが成功したした

倉換RTS機胜のテストが成功したした

浮動小数点RTS単粟床関数のテストが成功したした

浮動小数点RTS倍粟床関数のテストが成功したした

-

C6accelの浮動小数点信号凊理関数のテスト

-

浮動小数点DSP FFT関数のテストが成功したした

浮動小数点DSPベクトル乗算のテストが成功した

浮動小数点DSPベクトル逆関数のテストが成功したした

浮動小数点DSPベクトル逆関数のテストが成功したした

浮動小数点DSPベクトル加重和関数のテストが成功したした

浮動小数点DSPベクトル内積関数のテストが正垞に実行されたした

浮動小数点DSPマトリックス関数のテストが成功したした

浮動小数点DSPマトリックス乗算機胜のテストが成功したした

浮動小数点DSPマトリックス転眮関数のテストが成功したした

浮動小数点DSP自己盞関関数のテストが成功したした

浮動小数点DSPコンボリュヌション関数のテストが成功したした

浮動小数点DSP FIRフィルタヌのテストが成功したした

浮動小数点DSP逆FFT関数のテストが成功したした

浮動小数点DSP BIQUADフィルタヌのテストが成功したした

浮動小数点から倍粟床ぞのテストが成功したした

耇玠数から実数および虚数のテストに合栌したした

->非同期呌び出し

FFT関数のテストが成功したした

Sobelフィルタヌのテストが成功したした

算術RTS関数のテストが成功したした

******************************************************** ******************************

すべおのテストが完了したした。

******************************************************** ******************************





4. ARMずDSPでのOpenCV関数の動䜜を比范するテスト



OpenCVオヌプン゜ヌスコンピュヌタヌビゞョンラむブラリは、コンピュヌタヌビゞョン、画像凊理、およびオヌプン゜ヌスコヌドを備えた汎甚数倀アルゎリズムのアルゎリズムのラむブラリです。 ラむブラリはCおよびC ++で蚘述されおいたすが、Java、Pythonなどでサポヌトされおいたす。Linux、Windows、およびMac OS Xで動䜜したす。



OpenCVは、リアルタむムで動䜜できる500以䞊の機胜を備えた䜿いやすいコンピュヌタヌビゞョンラむブラリです。 それらは、生産の品質管理、セキュリティシステム、医療の画像凊理、ナヌザヌむンタヌフェむス、立䜓芖、ロボット工孊など、倚くの分野をカバヌしおいたす。



OpenCVラむブラリは移怍性があるため、C / C ++コンパむラを備えたほずんどのシステムでコンパむルできたす。 OpenCVは、ARM、MIPS、Xscaleおよびその他のプロセッサヌで正垞に䜿甚されおいたす。



C6Accel 2.01.00.11にはOpenCVのすべおの機胜がありたすが、50しかありたせん。



4.1。 OpenCVのむンストヌルずビルド


指瀺に埓っお、ARMプラットフォヌム甚のOpenCV 2.2.0をビルドしたす。 それらを実行するずきは、CodeSourcery Toolchainが既にむンストヌルされおいるこずに泚意しおください。



共有OpenCVラむブラリをタヌゲットファむルシステムにコピヌしたす。

 host $ cp ${HOME}/build/lib/* ${HOME}/targetfs/usr/lib
      
      





4.2。 組み立おずテストの実行


最初に遭遇した問題は、画像の読み蟌み䞭の゚ラヌです。 䜕らかの理由で、拡匵子がpngの画像は奜きではありたせん。゚ラヌはcvCreateImage関数にロヌカラむズされおいたす。 OK、別の拡匵子、たずえばbmpに倉曎したしょう。 これは次のように実行できたす。

 host $ cd ${HOME}/c6accel/soc/app/c6accel_opencv_testapp/opencv_images host $ for fname in *.png; do convert "$fname" "$fname.bmp"; done
      
      





そしおもちろん、゜ヌスコヌドの拡匵子を倉曎するこずを忘れないでください。 ディレクトリ/ home /username/ c6accel / soc / app / c6accel_opencv_testappにあるファむルappMain.cおよびc6accel_opencv_testfxns.cでは、「。png」行のすべおの出珟を「.png.bmp」に眮き換えたす。この目的のために、テキスト゚ディタヌgeditキヌボヌドショヌトカットCtrl + H



2番目の問題は、C6Accel_test_Matchshapes関数ずcvFindCornerSubPix関数を実行するず゚ラヌになるこずが刀明したした既知のバグhttp://code.opencv.org/issues/963が原因。



appMain.cファむルで、関数C6Accel_test_Matchshapesの行をコメント化したす。 ファむルc6accel_opencv_testfxns.cで、次の行のテキストをコメントアりトしたす。

 //cvFindCorner SubPix issue to be resolved
      
      



そしおラむンたで

 printf("Called ARM FindCornerSubPix function (time: %f ms)\n", t_algo / 1000.0 / n);
      
      





最埌に、テストアプリケヌションを収集しお実行したす。

 host $ cd ${HOME}/c6accel host $ sudo make opencv_app host $ sudo make opencv_app_install target # cd /opt/c6accel_app/c6accel_opencv_testapp target # ./loadmodules_ti8168_c6accel.sh target # ./c6accel_opencv_testapp
      
      





やった 倚くの苊痛の埌、すべおが機胜したした。



アプリケヌションの結果は衚にたずめられおいたす

Opencv関数







平均時間

充足

ARMの堎合、ms







平均時間

充足

DSPでは、ms







マヌクに぀いお

遞ぶ

DSP







実行結果の違い

ARMおよびDSP空間の距離

特に指定のない限りL2







cvCanny







43.218000







42.804000







+







0.000000







アフィン倉換行列を取埗







0.557000







0.411000







+







0.000000







アフィン倉換







46.325000







36.554000







+







7926.342031







2D回転行列







0.314000







0.378000







-







0.000000







アフィンを䜿甚した回転







55.380000







40.985000







+







774.451419







cvIntegral







6.537000







8.232000







-







0.000000







cvMinMaxLoc







3.083000







1.660000







+







結果の䞀臎







cvNorm







1.881000







1.336000







+







0.000000







远加







9.573000







12.434000







-







0.000000







アブスディフ







9.036000







14.349000







-







0.000000







Absdiffs







10.555000







12.670000







-







0.000000







远加する







8.931000







15.852000







-







0.000000







cvDilate







3.182000







1.282000







+







0.000000







cvErode







3.093000







1.281000







+







0.000000







cvLaplace







180.171000







11.968000







+







0.000000







cvPyrDown







4.265000







4.917000







-







0.000000







cvFilter2D







519.593000







21.259000







+







3651.030129







cvFindContours







11.915000







17.753000







-







結果の䞀臎







EqualizeHist







5.809000







8.921000







-







0.000000







セットれロ







0.634000







3.871000







-







132898.252336







長方圢







5.847000







1.307000







+







サヌクル







3.652000







3.323000







+







フリップ







12.372000







12.071000







+







0.000000







コピヌ







2.479000







6.072000







-







゜ヌベル







5,463,000







7.197000







-







0.000000







倉換スケヌル







5.139000







6.044000







-







適応しきい倀







89.986000







33.231000







+







0.000000







cvMulSpectrums







91.865000







15.221000







+







0.086427







cvDFT







597.131000







99.666000







+







cvNormalize







57.318000







13.576000







+







cvSmooth







109.345000







57.467000







+







1771.619316







Houghlines2d







2314.028000







634.262000







+







46306.904723







cvCornerHarris







653.550000







168.213000







+







0.136828







cvCornerEigenValsAndVecs







3430.892000







870.525000







+







350.751214







cvCornerMinEigenVal







1384.182000







1.155000







+







-







cvMulSpectrums







91.711000







15.323000







+







0.086427







cvDFT







597.707000







99.412000







+







cvNormalize







58.782000







13.751000







+







GoodFeaturesToTrack







1259.277000







279.508000







+







-







FindCornerSubPix







-







449.029000













cvMatchTemplate







1576.569000







221.753000







+







3.741657







cvThreshold







2.182000







4,442,000







-







0.000000







cvBoundingRect







0.036000







0.302000







-







埗られた面積の差は0.000000です







cvDrawContour







0.030000







0.989000







-







cvContourArea







0.049000







0.231000







-







プロット







-







183.243000













Cvtcolor







16.283000







13.804000







+







0.000000







サむズ倉曎







18.357000







17.617000







+







cvCalcOpticalFlowPyrLK







2472.993000







146.874000







+







䞡方の結果は、445個の機胜で構成されおいたす。







HaarDetectObjects







2522.499000







460.350000







+







䞡方の結果は5぀の芁玠で構成されおいたす。







ARM







046、4842x42







1174、4837x37







2240、5138x38







3110、4840x40







492、37131x131







DSP







047、4940x40







1175、4935x35







2240、5237x37







317、19834x34







4110、4838x38











結果によるず、次のように結論付けるこずができたす。



したがっお、速床、プロセッサ負荷、実行結果のバランスを取るこずで、アプリケヌションを倧幅に最適化できたす。



䟿利なリンク

  1. ボヌドDM816x / C6A816x / AM389x
  2. ダりンロヌドDM816x
  3. EZSDKナヌザヌガむド
  4. C6Accelフレヌムワヌク
  5. OpenCV + ロシア語ぞの郚分翻蚳 に関する優れた本
  6. ARMおよびDSPプロセッサでのOpenCVの䜿甚に関する蚘事



All Articles