画像処理ライブラリ opencv で 出来ること・出来ないこと

64
画画画画画画画画画 OpenCV 画画画画画 画画画画画画 画画画画画画画 画画 画画 http://fukushima.web.nitech.ac.jp/ 画画画画画画画 I-6 2016/10/14 Design Solution Forum 2016

Upload: norishige-fukushima

Post on 16-Apr-2017

21.326 views

Category:

Software


14 download

TRANSCRIPT

PowerPoint

OpenCV http://fukushima.web.nitech.ac.jp/I-62016/10/14Design Solution Forum 2016

2004 2009 2009 2015 http://fukushima.web.nitech.ac.jp/QiitaOpenCV Advent Calendar 2015OpenCV.jp

2

3ARVR

3

OpenCVJava, PythonAndroidiOSOpenCV4

5

10M500K+Open Computer Vision (OpenCV)6

C++PythonJavaMatlabCC#, Go, Processing, Lua, Ruby, PHP, Haskell, etchttps://github.com/atinfinity/lab/wiki/OpenCV-binding%E3%81%BE%E3%81%A8%E3%82%81

7

WindowsLinuxMac OSFreeBSDAndroidiOSARM Linux

8

OpenCV9

19992015200020012002200320042005200620072008200920102011201220132014OpenCV StartedAlpha Release at CVPR 2000. Windows only.Beta 1. Linux support Release 1.0 Release 1.1 Release 2.0. C++ Release 2.1. Full Python support Release 2.4 LTSRelease 2.2. Android SupportRelease 3.0 RefactoredWillow SupportOpenCV FoundationIntel SupportGoogle Summer of CodeNvidia SupportRenewed Intel SupportRelease 2.3. GPU Support. ModulesMagic LeapDevelopment team has moved to Itseez

1997 IntelProcessing Library (IPL)2000 OpenCV alpha20012005 OpenCV beta2006 OpenCV 1.02008 Willow Garage OpenCV 1.1pre2009 OpenCV 2.02015 ItseezOpenCV 3.0OpenCV3.12016 IntelItseezOpenCV 3.12015-12-21

OpenCV10

OpenCVContribOpenCVContrib11

OpenCV 2.xOpenCV 3.x contributions

OpenCV 3.x

SIMDCUDAGPUOpenCLGPU

12

CPUIPP-ICV OpenCV3.0HALUniversal IntrinsicsNEONSSEParallel_for_GPUCUDANVIDIA OpenCLTransparent API (T-API)UMatGPU,CPUexeOpenCL

13

IntelIntel Performance Primitive (IPP) OpenCVFFTIPP-ICV14

CPUT-API15

CPU - AMD A10-6800k, iGPU - HD8670D, dGPU - Radeon HD7790

MatUmatOpenCLGPUMatgpuMatCUDANVidiaMatUMatgpuMat16

OpenCLiOSAndriod, Windows PhoneFullHDOpenCLFarneback480pOpenCLCPUOpenCLUMat17

RGBRGBBGROpenCVIntelProcessing Library1997BGRWindowsBGROpenCVcvtColor(src, dest, COLOR_BGR2YUV)RGBBGROpenCVBGR18

19

(core) (imgproc) (imgcodecs) (videoio)GUI (highgui)3 (viz) (shape) (video) (calib3d)HDR (photo)

(stitching) (videostab) (superres) (ml) (features2d) (objectdetect) (flann)CUDA(cudaarithm, cudabgsegm, cudacodec, cudafeatures2d, cudafilters, cudaimgproc, cudalegacy, cudaobjdetect, cudaoptflow, cudastereo, cudawarping, cudev)

OpenCV 3.x20

AR (aruco) (bgsegm) (bioinspired) (ccalib) (cvv)(datasets) (dnn) (dpm) (face) (fuzzy)Hdf5 (hdf) (line_descriptor)Matlab (matlab) (optflow) (plot) (reg)RGB+ (rgbd) (saliency) (sfm) (stereo) (structured_light)3 (surface_matching) (text) (tracking) (xfeatures2d) (ximgproc) (xobjdetect)(xphoto)

OpenCV Contrib.21

BMPPPMPGMPBMJPEGJPEG2000PNGTIFFOpenEXRWebP

(imgcodecs)22IO

USBIOKinectCREATIVESENZ3DIOMPEG1,2,4,H.264, H.265, (videoio)23

imshowQtGUI (highgui)24

With Qt

(imgproc)25

ANN (SVM) (EM) (DTrees) (Boost) (RTrees)K (KNearest) (LogisticRegression) (NormalBayesClassifier)

(ml)26

(shape)27

~0.5~157

(calib3d)28 (calib3d)

(calib3d)29

OpenCVvtk

3 (viz)30

photo31

photo32High Dynamic Range Imaging (HDRI)

ArUco: a minimal library for Augmented Reality applications based on OpenCVOpenCVAR

AR (aruco)33

https://www.youtube.com/watch?v=CzD48UkGsK8

Htesseract-ocr

(text)34

CaffeTorchIOOpenCVdnn (dnn)35

SIFTSURFcontrib

(xfeatures2d)36

QtopenGLOpenCV3 (cvv)37

1D/2D

OpenCPhttps://github.com/norishigefukushima/OpenCPPythonmatplotlibC++matplotlib-cpphttps://github.com/lava/matplotlib-cpp (plot)38

OpenCVSVDfloatfloatPCAfloatfloatPython

39

OpenCVMatlab, PythonC++40

CoreAlgorithm3.0HALContribGoogle Summer Code

41

Matlab

OpenCVC++PythonOKMatlab vs OpenCV42

OpenCV43

MatMatOpenCVEIGENGithubC++

44

MatlabFFTWFFTEigen#define EIGEN_NO_DEBUGIntel MKLIntel IPP45

DlibVLfeatImage Processing Onlinehttp://www.ipol.im/46

OpenCV parallel_for_AutoBufferuniversal intrinsics

47*PythonPythonCVfor*

OSGCD (OSX, iOS), OpenMP, Pthreads (new in 3.0), TBB, Concurrency (Windows, WinRT), C=cv::Mutex map-reduce

parallel_for_48

Malloc100alloca

alloca + malloc = AutoBuffer49using namespace cv;

void foo(){AutoBuffer buf;buf.allocate(n); // allocate buffer for n floats on stack or, if n is big, on the heapfloat* bufptr = buf;} // buf is invalid at this pointAutoBuffer buf(n); // allocate on stack if n