ãã®èšäºã§ã¯ã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ïŒäžïŒ;
- æ¡åŒµI / OããŒã¿ãŒã«ãŒãïŒäžïŒã
å€æ°ã®ã³ã³ããŒãã³ãããããããæãéèŠãªã³ã³ããŒãã³ãã®ã¿ã«æ³šæãåããŸãã
äžã®å³ã¯ã以äžã®ã³ã³ããŒãã³ããããŒã¯ãããã³ã³ãã¥ãŒãã£ã³ã°ã¢ãžã¥ãŒã«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ãªã©ã®ä»®æ³ãã·ã³ã䜿çšããå¿ èŠããããŸãã ã€ã³ã¹ããŒã«ãšæ§æã®æé ã«ã€ããŠã¯ã ãã¡ããã芧ãã ãã ã
以äžã®è¡šèšã䜿çšãããŸãã
- host $-ãã¹ãã§å®è¡ããã³ãã³ãã
- ã¿ãŒã²ããïŒ-ã¿ãŒã²ããOSã§å®è¡ããã³ãã³ãã
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
ã¹ã¯ãªããã¯å¿ èŠãªããã±ãŒãžãã€ã³ã¹ããŒã«ãã説æãæ±ããŸãïŒ
- ã¿ãŒã²ãããã¡ã€ã«ã·ã¹ãã ãã€ã³ã¹ããŒã«ãããã¹ã¯ã/ home /ïŒ usernameïŒ / targetfsã§ãã
- tftpã«ãŒããã£ã¬ã¯ããªãã¹-/ tftpboot;
- ã·ãªã¢ã«ããŒããã¹ã¯/ dev / ttyUSB0ïŒUSBããŒãçµç±ã§æ¥ç¶ããããïŒãŸãã¯/ dev / ttyS0ïŒCOMããŒãçµç±ã§æ¥ç¶ããããïŒã§ãã
- ãã¹ããã·ã³ã®IPã¢ãã¬ã¹-ããããã«ç¬èªã®ã¢ãã¬ã¹ããããŸãïŒããšãã°ã10.54.4.44ããããŸãïŒã
- Linuxã«ãŒãã«ã®å Žæã¯ãææ¡ããããªã¹ãã®æåãã€ãŸãTFTPã§ãã
- ã«ãŒããã¡ã€ã«ã·ã¹ãã ã®å Žæã¯ãææ¡ããããªã¹ãã®æåãã€ãŸãNFSã§ãã
- TFTPããããŒããããã«ãŒãã«ã€ã¡ãŒãžã®ååã¯uImage-dm816x-evm.binã§ãã
- minicomçšã®ã¹ã¯ãªãããäœæãããã©ãã-åæããŸãã
- äœæããã¹ã¯ãªãããããã«å®è¡ãããã©ãã-æåŠããŸãã
ãã®ã¹ã¯ãªãããä¿®æ£ããŸããããããã¹ããšãã£ã¿ã§éããã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é¢æ° | å¹³åæé
| å¹³åæé
| ããŒã¯ã«ã€ããŠ
| å®è¡çµæã®éã
|
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ïŒ |
çµæã«ãããšã次ã®ããã«çµè«ä»ããããšãã§ããŸãã
- äžéšã®é¢æ°ã«ã¯ãå®è¡çµæã«éãããããŸãã ã·ã°ãã«ããã»ããµã®ã¢ãŒããã¯ãã£ã¯ãæ±çšãã€ã¯ãããã»ããµãšæ¯èŒããŠãäžè¬çãªDSPã¿ã¹ã¯ã®å®è¡é床ãæ倧åãããšããèŠæã«é¢é£ããããã€ãã®æ©èœãåããŠããŸãã DSPã¯ãŸã第äžã«ãé åã®ä¹ç®ãããèŠçŽ ã®ã¢ãã¬ã¹ã®ããªã³ã¶ãã©ã€ãèšç®ã«ããä¹ç®ã®è€æ°ã®å®è¡ã«çŠç¹ãåãããŠããŸãã ããŸããŸãªåºæ¬æäœã§å®è£ ãããã¢ã«ãŽãªãºã ã¯ãç°ãªãçµæãçæããå¯èœæ§ããããŸãã
- DSPã®ãã¹ãŠã®æ©èœãARMãããéãåäœããããã§ã¯ãããŸããã ãã¿ãŒã³ã«æ°ä»ãããšãã§ããŸãããããã¯ãè¡åã®åºæ¬æäœã®é¢æ°ãŸãã¯äž»ã«ãããã§æ§æãããé¢æ°ã§ãã ãã®ãããªãæªããæ©èœã¯ARMã§å®è¡ã§ããŸãããä»ã®æ©èœã¯DSPã«è»¢éã§ããŸãã ARMããã»ããµã«éè² è·ãããã£ãå ŽåãDSPã®äžéšã®ãäžè¯ãæ©èœã®äœ¿çšã¯èš±å®¹ãããŸãã
- DSPã§ãé©åãªãæ©èœã䜿çšãããšãæ¹åã1æ¡ä»¥äžãåŸãããããšããããŸãã ãããã¯éåžžãæãæéã®ãããæ©èœã§ãã
ãããã£ãŠãé床ãããã»ããµè² è·ãå®è¡çµæã®ãã©ã³ã¹ãåãããšã§ãã¢ããªã±ãŒã·ã§ã³ãå€§å¹ ã«æé©åã§ããŸãã
䟿å©ãªãªã³ã¯ïŒ