èè
ïŒã¢ãããªãŒã»ãã¯ã·ãŒãšããããªã«ã»ã³ã«ãã£ã³ãïŒ kirillkornyakov ïŒãã¢ã³ãã¬ã€ã»ã¢ããŸãïŒ aod314 ïŒããŽã¡ãã£ã ã»ããµã¬ãã¹ããŒããªã¬ã°ã»ã¹ã¯ãªã£ããïŒ ãªã¬ã°ã¹ã¯ãªã£ãã ïŒããšãã²ããŒã»ã¿ã©ãã³ãã¢ã¬ã¯ãµã³ãã«ã»ã·ã·ã³ãïŒ ã¢ã¬ã¯ãµã³ããŒã»ã·ã·ã³ãïŒã

ããã«ã¡ã¯ãHabrïŒ
11æ2æ¥ã«ãç¡æã®ã³ã³ãã¥ãŒã¿ãŒããžã§ã³ã©ã€ãã©ãªã§ããOpenCVã®æ°ããããŒãžã§ã³ããªãªãŒã¹ãããããšããç¥ããããŸãã ãã®æçš¿ã¯
Itseezã§åããŠããã©ã€ãã©ãªéçºè
ã«ãã£ãŠæžãã
ãŸãã ã 以åã®ããŒãžã§ã³ä»¥éã®äž»ãªã€ãããŒã·ã§ã³ããªã¹ãããŸããããããã®å€ããæ³šç®ã«å€ããŸãïŒæ°ããã¢ã«ãŽãªãºã ãæ¢åã®ã¢ã«ãŽãªãºã ã®é«éåãæ°ãããã©ãããã©ãŒã ã®ãµããŒããéçºããã»ã¹ã®æŽæ°ãçµ±åãšãã¹ããããã³æŽæ°ãããããã¥ã¡ã³ãã ãªãªãŒã¹ã®æºåäžã«ããã©ãã«ãŒäžã®210ãè¶
ããã¿ã¹ã¯ïŒ
hackathon ã
ãªãªãŒã¹åè£ ã
ãªãªãŒã¹ ïŒãéããããŸããïŒãããããã°ä¿®æ£ãæ¢åã®æ©èœã®æ¡åŒµã
ãããããŸãæåã«ã
WebãªãœãŒã¹
OpenCVã¯ã€ãã«ã€ã³ã¿ãŒãããäžã®
opencv.orgã«ç¬èªã®ããŒã ãæã«å
¥ããŸããã ãã®ãµã€ãã§ã¯ãã©ã€ãã©ãªã®åç¶æéäžã®ææ°ã®ã€ãã³ããæ€çŽ¢ããããã«é¢é£ããä»ã®ãã¹ãŠã®WebãªãœãŒã¹ãžã®ãªã³ã¯ãèŠã€ããããšãã§ããŸãã ãã¥ãŒã¹ãèªåçã«è³Œèªããã«ã¯ãå
Ž
RSSãã£ãŒããŸãã¯
twitterã䜿çšã§ããŸãã
ã©ã€ãã©ãªéçºè
åãã®ããå°éçãªæ
å ±ã¯ã
ChiliProjectã«åºã¥ããŠäœæããã
code.opencv.org Webãµã€ãã«éäžããŠããŸãã ããã§ã¯ãã©ã€ãã©ãªã®æ¬¡ã®ãªãªãŒã¹ã®ã¹ã±ãžã¥ãŒã«ã«é¢ããæ
å ±ããŸãã¯æ¯é±ã®ããŒãã£ã³ã°äžã«éçºè
ãäžããæ±ºå®ã«é¢ããæ
å ±ããã¹ãŠèŠã€ããããšãã§ããŸãã æ
å ±ã¯Wikiã¢ãŒãã§äœæããã³ç·šéããããããã»ãšãã©ã®å Žåæãé¢é£æ§ãé«ããªããŸãã ãŸããã¡ã€ã³ã®git OpenCVãªããžããªã¯ããã«ãããŸãïŒãã ããgithubã§ãã©ãŒã䜿çšããããšããå§ãããŸãã詳现ã¯ä»¥äžãåç
§ããŠãã ããïŒããã³ãã°ãã©ãã«ãŒã ãããã£ãŠãã©ã€ãã©ãªã®äœ¿çšã§åé¡ãçºçããå Žåã¯ããã®ãªãœãŒã¹ãéããŠé æ
®ãªããç¥ãããã ããã
ãŸããæè¿ã§ã¯ããŠãŒã¶ãŒãµããŒããç®çãšããå¥ã®ãµã€ããéèšããŸããã ããã¯ãOpenCVãšã³ã³ãã¥ãŒã¿ãŒããžã§ã³å
šè¬ã®åé¡ã解決ããããã®StackOverflowã¹ã¿ã€ã«ã®
ãã©ãŒã©ã ã§ãã çãæŽå²ã«ããããããããã®ãªãœãŒã¹ã«ã€ããŠã¯ãã§ã«1,000以äžã®è³ªåãè°è«ãããŠããŸãã
ææ°ã®ãªãªãŒã¹ããŒãžã§ã³ã«å¿
èŠãªãã¹ãŠã®æ
å ±ãå«ãŸããŠ
ããã©ã€ãã©ãªã®
ãªã³ã©ã€ã³ããã¥ã¡ã³ãããããµã€ããå¿ããªãã§ãã ããã
çµ±åãã«ãã¹ã¬ããã®ãµããŒã
ããŸããŸãªããã¯ãšã³ãã䜿çšã§ããæ°ãããŠãããŒãµã«
parallel_for_ããªããã£ãã®ãããã§ã䞊åã³ãŒããèšè¿°ããæ¹ã䟿å©ã«ãªããŸããã
ããã«ãããTBBããªããŠãããã©ãŒãã³ã¹ãåäžãããããšãå¯èœã«ãªããŸããããäžèšã®å¥ã®ãã¬ãŒã ã¯ãŒã¯ããµããŒããããŠããŸãã äŸãã°
Windowsããã³Mac OSXã§ã¯ãéçºç°å¢ã«ä»å±ããŠããæšæºãã¯ãããžãŒã䜿çšããããã远å ã®ãã®ãã€ã³ã¹ããŒã«ããå¿
èŠã¯ãããŸããã TBBã䜿çšããå€ãã®OpenCVã¢ã«ãŽãªãºã ããæ°ãã
parallel_for_ã«ãã£ã¹ããããããåããŠäžŠååãããŸããã
Opencl
OpenCLãã¯ãããžãŒã䜿çšããŠã³ã³ãã¥ãŒã¿ãŒããžã§ã³ã¢ã«ãŽãªãºã ãå®è£
ããå®éšçãª
oclã¢ãžã¥ãŒã«ãã©ã€ãã©ãªã«è¿œå
ãããŸããã çŸåšã次ã®ã¢ã«ãŽãªãºã ãå©çšå¯èœã§ããããããŸã§ã®ãšããGPUã§ã®ã¿å®è¡ãããŠããŸãã
- ç®è¡æŒç®;
- ããŸããŸãªãã£ã«ã¿ãŒïŒSobelãScharrãGaussianBlurãboxFilterãbilateralFilterïŒ;
- ããŸããŸãªã¿ã€ãã®å¹ŸäœåŠç倿ïŒãµã€ãºå€æŽãåãããã³ã°ãªã©ïŒã
- ã«ã¹ã±ãŒãåé¡åšïŒæåã«é¡ãæ€åºããããïŒ;
- ãªããã£ã«ã«ãããŒã¢ã«ãŽãªãºã ïŒãã©ãããã«ãŒã«ã¹ã«ããæ³ïŒã
ã¢ãžã¥ãŒã«ã®
ããã¥ã¡ã³ãã¯ãã§ã«å©çšå¯èœã§ãã詳现ã«ã€ããŠã¯ããåãåãããã ããã
CUDA / GPU
ä»åã¯ãGPUã¢ãžã¥ãŒã«ã«å€ãã®äŸ¿å©ãªã¢ã«ãŽãªãºã ã远å ãããŸããã
- ç»åãã€ãºäœæžïŒ
- ãã€ã©ãã©ã«ãã£ã«ã¿ãŒ;
- éããŒã«ã«ææ®µãã«ãŒããã©ãŒã¹-å®è£
ã¯é«éã§ã¯ãããŸããããå
ã®èšäºã«å®å
šã«åŸããŸãã
- é«éé屿平å-ãã®å®è£
ã§ã¯ãã¬ãŠã¹ã®éã¿ä»ããçç¥ããããããã©ã³ãã³ã°ãµã ã¢ãããŒãã䜿çšããŠãã¢ã«ãŽãªãºã ãæ°ååé«éåã§ããŸããã
- ããã¯ã°ã©ãŠã³ãéžæã¢ã«ãŽãªãºã ïŒ ViBe ãGMGãFGDãMOGïŒæ··åã¬ãŠã¹ååžïŒã
- é·ãéCPUã«ååšããŠããLBPæ©èœïŒããŒã«ã«ãã€ããªãã¿ãŒã³ïŒã®ã«ã¹ã±ãŒãã®ãµããŒããã«ã¹ã±ãŒãåé¡ã«è¿œå ãããŸããã
- ããç·ãããåãããã³äžè¬åããããã倿ã
- æ¥ç¶ã³ã³ããŒãã³ãã®ã©ããªã³ã°/äžè¬åããããããŒãã£ã³ã°ç¯å²FloodFillã
ãŸãããã®ãªãªãŒã¹ã§ã¯ããããããããã€ã¹ã¬ã€ã€ãŒãïŒCUDAã§èšè¿°ãããnvccã³ã³ãã€ã©ãŒåãã®ãã³ãã¬ãŒã颿°ãšã¯ã©ã¹ãå«ãããããŒãã¡ã€ã«ã®ã»ããïŒãå
¬éããŸããã ããã¯ãCUDAãèªåã§äœæããéçºè
ã«åœ¹ç«ã¡ãŸãã ããã€ã¹ã¬ã€ã€ãŒã®æ©èœãšã³ãŒããçµã¿åãããããšã§ããŠãŒã¶ãŒã¯CUDAã«æ°ããç»ååŠçã¢ã«ãŽãªãºã ãå®è£
ãããããªããŸããã
Android
NVIDIAã«ãã£ãŠãµããŒããããŠããOpenCV for AndroidããŒã ã¯ãã©ã€ãã©ãªã倧å¹
ã«æŽæ°ããã©ã€ãã©ãªããã䟿å©ã«ããããå®å
šãªããã¥ã¡ã³ããæäŸããŠããŸãã ããã«ãTegra 3ãã©ãããã©ãŒã ã§ã¯ãå€ãã®æé©åã䜿çšããŠããšã³ãã¢ããªã±ãŒã·ã§ã³ã®ããã©ãŒãã³ã¹ã倧å¹
ã«æ¹åããŠããŸãã
- OpenCV for Androidã«é¢ããå€ãã®è³æãå
¬éãããŠããŸãã ãããã®äžã«ã¯ïŒ
- æ°ããããŒãžã§ã³ã§ã¯ã OpenCVãããŒãžã£ãŒã¯ãšã³ããŠãŒã¶ãŒããã®ã¯ãªãã¯ãã¯ããã«å°ãªãããããã«OpenCVã«äŸåããã¢ããªã±ãŒã·ã§ã³ãåèµ·åããå¿
èŠããããŸããã OpenCV Managerã«ã¯åçã©ã€ãã©ãªãä»å±ããŠãããããGoogle Playãã远å ã®ãã€ããªããã±ãŒãžãã€ã³ã¹ããŒã«ããå¿
èŠããªããªããŸããã äºææ§ã®çç±ãããå€ãããã±ãŒãžã¯ããŒãžã§ã³2.5ãŸã§Google Playã«æ®ããŸãããAndroidéçºè
ã¯OpenCV 2.4.3ã«åãæ¿ããããšããå§ãããŸãã
- Androidã®ææ°ããŒãžã§ã³ã§ããJelly BeanãããµããŒã察象ã®ãªã¹ãã«è¿œå ãããŸããã ãã€ãã£ãOSã¬ãã«ã§åäœããOpenCVã«ã¡ã©ã¯ãããå€ãã®ããã€ã¹ããµããŒããå§ããŠããŸãã
- Javaã¢ããªã±ãŒã·ã§ã³çšã®æ°ãããã¬ãŒã ã¯ãŒã¯ã æ°ããã¢ãŒããã¯ãã£ãšæŽæ°ãããã¢ããªã±ãŒã·ã§ã³ã®äŸãããçè§£ããããšããå§ãããŸãã æ°ãããã¬ãŒã ã¯ãŒã¯ã¯ãJavaããã³ãã€ãã£ãã«ã¡ã©ãããã€ã¹ã®ç»é¢ã§ç»åãèŠèŠåããã³ãŒããOpenCVãããŒãžã£ãŒã®ç°¡åãªåæåãé©åãªã€ãã³ãåŠçïŒäžæåæ¢ãç¶è¡ãå転ãªã©ïŒãå«ãã³ã³ãã¥ãŒã¿ãŒããžã§ã³ã¢ããªã±ãŒã·ã§ã³ã®åäžã®åºç€ãæäŸããŸãã
- NVIDIA Tegra 3ãã©ãããã©ãŒã ã®ããã©ãŒãã³ã¹ãæé©åããããã«å€ãã®äœæ¥ãè¡ãããŠããŸãããGoogle PlayããOpenCV Tegra Demoã¢ããªã±ãŒã·ã§ã³ãããŠã³ããŒãããããšã§ããããèªåã§ç¢ºèªã§ããŸãã æé©åã®å®å
šãªãªã¹ãã¯ã ãªã³ã¯ 17ã®ããã¥ã¡ã³ãã«ãããŸããTegraçšã®OpenCVã¯ãNVIDIA Tegra Android Development Packã«å«ãŸããŠããããã Androidã®éçºãå§ããã°ããã®å Žåã¯ãå¿
èŠãªãã¹ãŠã®ããã±ãŒãžã®é·ãã€ã³ã¹ããŒã«ããè§£æŸãããããã䜿çšããããšããå§ãããŸãã
iOS
iOSçšOpenCVã«ã¯ãåŸ
æã®ã€ãããŒã·ã§ã³ãæ°å€ããããŸããã
- Google Summer of Code 2012ã®ãã¬ãŒã ã¯ãŒã¯ã§ã®Eduard Feichoã®äœæ¥ã®ãããã§ããããªã«ã¡ã©ãæäœããããã®ã³ãŒãã倧å¹
ã«å€æŽãããŸããã çŸåšãããã¯highguiã¢ãžã¥ãŒã«ã®äžéšã§ãããCvVideoCameraã¯ã©ã¹ãšããŠå©çšå¯èœã§ãã
- iOSçšã®OpenCVãã¬ãŒã ã¯ãŒã¯ãäœæããããã®å€æŽãšã¹ã¯ãªããããã£ããããOpenCVã¯iOS 6.0ãšæ°ããã¢ãŒããã¯ãã£armv7s ïŒiPhone 5ïŒããµããŒãããããã«ãªããŸããã
- iOSçšOpenCVãæ§ç¯ããå Žåã2.4.2ã«ã¯ãå¿ãããããæé©åããŒãO3ããå«ãŸããŠãããããã¢ããªã±ãŒã·ã§ã³ã¯ããã«é«éã«å®è¡ãããŸãã
- GCDããµããŒãããæ°ãããã«ãã¹ã¬ããã¡ã«ããºã ã®ãããã§ãããã€ãã®éèŠãªã¢ã«ãŽãªãºã ããã¥ã¢ã«ã³ã¢ãããïŒ A5 ã A5X ã...ïŒã§ããé«éã«åäœããŸãã
- ããã«ãAppleã¢ãã€ã«ããã€ã¹ã«OpenCVã䜿çšããããã®åºç€ã«é¢ãããã¬ãŒãã³ã°è³æã远å ãã ECCV2012ã®ãã¬ãŒã ã¯ãŒã¯ã§iOSã®ãã¹ãŠã®ã€ãããŒã·ã§ã³ã«é¢ãã詳现ãªãã¬ãŒãã³ã°ã宿œããŸãã ã
Python
Google Summer of Code 2012ã®äžç°ãšããŠããµã³ã¯ãããã«ãã«ã¯ã®Alexander Mordvintsevã¯ãOpenCVã§ã®é«åºŠãªPython䜿çšã®çŽ æŽãããäŸãããã€ã远å ããŸããã
Buildbot
OpenCVã¯ã
Buildbotãç¶ç¶çãªçµ±å
ã·ã¹ãã ãšããŠäœ¿çšã
ãŸã ã WindowsãLinuxãMac OSãAndroidãiOSã®32ããã³64ããããã©ãããã©ãŒã ã§ãTBBãSSEãGPUã®æé©åã䜿çšããŠãæ¯æ¥50ãè¶
ããããŸããŸãªæ§æãåéãããŸãã åæ§æã§çŽ5,000ã®ç°ãªããã¹ããéå§ãããŸãã æãäžè¬çãª15ã®æ§æã1æ¥ã«2ååéãããŸãã TarballãWindowsçšã€ã³ã¹ããŒã©ãŒãiOSçšãã¬ãŒã ã¯ãŒã¯ãèªåçã«åéãããã³ãŒãã«ãã¬ããžãèšç®ããããã€ããªäºææ§ããã§ãã¯ãããŸãã ã芧ã®ãšãããã©ã€ãã©ãªã®é«ãå®å®æ§ã確ä¿ããããã«çŽ æŽãããä»äºãããŸãã:)
ãªããžããªã«è©²åœãã倿Žããããšãããã€ãã®ã¯ã€ãã¯ãã«ããå®è¡ãããŸãã çµæãæåããå Žåãã³ãŒããã³ã³ãã€ã«ãããä»ã®æ§æã®ãã¹ãã®å€§éšåã«åæ Œãããšããããªãä¿¡é Œã§ããä»®å®ãè¡ãããŸãã
OpenCV 2.4.2ã®ãªãªãŒã¹åŸãçŽæã©ãããããŒãžã§ã³ç®¡çã·ã¹ãã ã倿ŽããŸããã ãªããžããªãgitãå®è¡ããŠããŸãã ãã®ã¹ãããã®è«ççãªçµæã¯
ãgithubäžã«ãã©ãŒãäœæããããšã§ãããããã«ãããããã«å€ãã®ãµãŒãããŒãã£éçºè
ãã©ã€ãã©ãªã®éçºã«åŒãä»ããããšãã§ããŸããã Githubã¯äŸ¿å©ãª
ãã«ãªã¯ãšã¹ãã¡ã«ããºã ãæäŸããããããµãŒãã¹ã®ãã¹ãŠã®ãŠãŒã¶ãŒãOpenCVã®å
±èè
ã«ãªããŸãã åãã«ãªã¯ãšã¹ãã¯èªåã¢ã»ã³ããªãééããæåãããšãã¬ãã¥ãŒã®ããã«OpenCVããŒã ããéçºè
ã«å±ããŸãã 圌ã¯ã³ãŒãããã§ãã¯ããèè
ã«å¿
èŠãªè³ªåãããææ¡ããã倿Žãè¡ããæåŠããããæ±ºå®ããŸãã
ãã®ãªãªãŒã¹ã®ãªãªãŒã¹ã®æ°é±éåã«ããã¹ãŠã®åžžå€ã®éçºè
ãããµãŒãããŒãã£ã®éçºè
ã®èгç¹ãããã®ãããªãã©ã¯ãã£ã¹ã®é·æãšçæãè©äŸ¡ããããã«ããã«ãªã¯ãšã¹ããä»ããŠå€æŽãè¡ããŸããã æçš¿ã®1ã€ã§ãOpenCVãããžã§ã¯ããžã®ç¶ç¶çãªçµ±åã«ã€ããŠè©³ãã説æããäºå®ã§ãã ã³ã¡ã³ãã§ãã®ãããã¯ã«é¢ãã質åãããããšãã§ããŸããå¯èœãªéã詳现ã«åçããããåªããŸãã
èšç»
çªå·2.5ã®äžã®æ¬¡ã®ãªãªãŒã¹ã¯2013幎æ¥ã«äºå®ãããŠããŸãã 2.4.3ãšæ¯èŒããŠã倧å¹
ãªå€æŽãçºçããã©ã€ãã©ãªã®ã¢ãŒããã¯ãã£ãšAPIãææ°åããããã«ãã€ããªäºææ§ãæãªãããŸãã
èšç»ãããŠããäœæ¥ã®äžã§ã次ã®ç¹ã匷調ããŠããŸãã
- æ©èœã®ããã€ã¯ãã¢ãžã¥ãŒã«ããžã®åè§£ãã«ã¹ã¿ã ãã€ã¯ãã¢ãžã¥ãŒã«ã®ãµããŒãã
- 廿¢ãããã³ãŒãã®åé€ïŒãµããŒããããŠããªãå¥ã®ã¢ãžã¥ãŒã«ãžã®è»¢éïŒã
- 䞊ååãšæé©åã«é¢ããäœæ¥ã®ç¶ç¶ã
- Kinectã3Dãªã«ããªãèšç®åçã远跡ãªã©ãšé£æºããããã®æ°ããã¢ã«ãŽãªãºã ã
- OpenCVãŠãŒã¹ã±ãŒã¹ã®ããã¥ã¡ã³ããšããã²ãŒã·ã§ã³ã®æ¹åã
ãããã«
æåŸã«ããªãªãŒã¹ã«è²¢ç®ããéçºè
ã®ã³ââãã¥ããã£å
šäœãç¹ã«Google Summer of Code 2012ã®åå è
ã«æè¬ããŸããäžç·ã«ã©ã€ãã©ãªãæ¬åœã«äŸ¿å©ã§äŸ¿å©ãªãã®ã«ããããšããŸããã éçºããã»ã¹ã«åå ããŠãä»ãŸã§ä»¥äžã«äŸ¿å©ã«ãªããŸããïŒ
䟿å©ãªãªã³ã¯