The difference between opencv, opengl, osg, vulkan, webgL, opencL, cuda, osg, vtk, ogre

OpenCV

  • OpenCV is a cross-platform computer vision and machine learning software library released under the BSD license (open source) and can run on Linux, Windows, Android and Mac OS operating systems. It is lightweight and efficient - it consists of a series of C functions and a small number of C++ classes. It also provides interfaces in Python, Ruby, MATLAB and other languages, and implements many common algorithms in image processing and computer vision.
  • opencv official website
  • github source code

OpenGL

  • OpenGL (English: Open Graphics Library, translation: Open Graphics Library or "Open Graphics Library") is a cross-language and cross-platform application programming interface (API) for rendering 2D and 3D vector graphics. This interface consists of nearly 350 different function calls used to draw complex three-dimensional scenes from simple graphics bits. Another programming interface system is Direct3D only for Microsoft Windows. OpenGL is commonly used in CAD, virtual reality, scientific visualization programs, and video game development.
  • opengl official website
  • Getting Started Tutorial

OpenSceneGraph

  • OpenSceneGraph makes it faster and easier to create high-performance, cross-platform interactive graphics programs. OpenSceneGraph is an open source, cross-platform graphics development package designed for the development of high-performance graphics applications such as aircraft simulation, games, virtual reality, and scientific computing visualization. It is based on the concept of scene graph, which provides an object-oriented framework on top of OpenGL, thereby freeing developers from implementing and optimizing underlying graphics calls, and it provides many additional features for the rapid development of graphics applications. Utilities.

Vulkan

  • Vulkan is a cross-platform 2D and 3D drawing application programming interface (API), first announced by the Khronos Group at the 2015 Game Developers Conference (GDC). Konas first called VulkanAPI the "next generation OpenGL initiative" or "glNext", but these names were no longer used after Vulkan was officially announced. Like OpenGL, Vulkan is designed for real-time 3D programs (such as video games), and Vulkan plans to provide high performance and low CPU management overhead (overhead), which is also the goal of Direct3D12 and AMD's Mantle. Vulkan is compatible with a fork of Mantle and uses some components of Mantle.

WebGL

  • WebGL (full name Web Graphics Library) is a 3D drawing protocol. This drawing technology standard allows JavaScript and OpenGL ES 2.0 to be combined. By adding a JavaScript binding to OpenGL ES 2.0, WebGL can provide hardware 3D for HTML5 Canvas. Accelerate rendering so that web developers can use the system graphics card to more smoothly display 3D scenes and models in the browser and create complex navigation and data visualizations. Obviously, the WebGL technical standard eliminates the trouble of developing special rendering plug-ins for web pages, and can be used to create website pages with complex 3D structures, and can even be used to design 3D web games, etc.

OpenCL

  • OpenCL (full name: Open Computing Language, Open Computing Language) is the first open, free standard for general-purpose parallel programming of heterogeneous systems. It is also a unified programming environment that facilitates software developers to provide high-performance computing servers and desktop computing systems. , write efficient and lightweight code for handheld devices, and is widely applicable to other parallel processors such as multi-core processors (CPUs), graphics processors (GPUs), Cell type architectures, and digital signal processors (DSPs). It is used in games, entertainment, Various fields such as scientific research and medical care have broad development prospects.

CUDA

  • CUDA (Compute Unified Device Architecture) is a computing platform launched by graphics card manufacturer NVIDIA. CUDA™ is a general-purpose parallel computing architecture introduced by NVIDIA that enables GPUs to solve complex computing problems. It includes the CUDA instruction set architecture (ISA) and the parallel computing engine inside the GPU. Developers can write programs for the CUDA™ architecture using C, one of the most widely used high-level programming languages. The programs you write can run at ultra-high performance on CUDA™-enabled processors. CUDA3.0 has begun to support C++ and FORTRAN.

DirectX

  • DirectX (Direct eXtension, DX for short) is a multimedia programming interface created by Microsoft Corporation and is an application programming interface (API). DirectX can allow games or multimedia programs based on Windows to achieve higher execution efficiency, enhance 3D graphics and sound effects, and provide designers with a common hardware driver standard, so that game developers do not have to write for each brand of hardware. Different drivers also reduce the complexity of installing and setting up hardware for users. DirectX has been widely used in Microsoft Windows, Microsoft XBOX, Microsoft XBOX 360 and Microsoft XBOX ONE video game development.

Direct3D

  • The 3D specification interface formulated by Microsoft has good compatibility with Windows 95 and Windows NT operating systems. It can bypass the Graphics Display Interface (GDI) and directly perform the underlying operations of various hardware that support this API, greatly improving the operation of the game. speed. Direct 3D is a 3D graphics API based on Microsoft's Common Object Mode COM (Common Object Mode). It is a 3D API specification established by Microsoft. Microsoft owns the copyright of the library. All its syntax definitions are included in the help files and source code of the program development components provided by Microsoft. Direct3D is an important part of Microsoft's DirectX SDK integrated development package and is suitable for extensive and practical 3D graphics computing such as multimedia, entertainment, and real-time 3D animation. Since its release in 1996, Direct3D has quickly been widely recognized for its good hardware compatibility and friendly programming methods. Now almost all mainstream display cards with 3D graphics acceleration provide good support for Direct3D. But it also has flaws. Because it is provided in the form of a COM interface, it is relatively complex and has poor stability. In addition, it is currently only available on the Windows platform.

Differences and connections between DirectX and Direct3D

  • direct3D is just one module of directX.
  • DirectX is composed of many APIs, which can be divided into four parts according to their properties: display part, sound part, input part and network part.
  • The display part serves as the core of graphics processing and is divided into DirectDraw (DDraw) and Direct3D (D3D). The former is mainly responsible for 2D image acceleration, which includes many aspects: we use DDraw to play DVD movies, view pictures, play mini-games, etc. You can understand it as all underlined parts use DDraw; the latter It is mainly responsible for the display of 3D effects, such as scenes and characters in CS, which all use DirectX's Direct3D.
  • The most important API in the sound part is DirectSound. In addition to playing sounds and processing mixes, it also enhances 3D sound effects and provides recording functions. For example, sound card compatibility is solved by using DirectSound.
  • Input part DirectInput can support many game input devices, which can allow these devices to give full play to their best status and full functionality. In addition to keyboard and mouse, you can also connect controllers, joysticks, simulators, etc.
  • The network part, DirectPlay, is mainly developed for games with network functions. It provides a variety of connection methods, TPC/IP, IPX, Modem, serial port, etc., allowing players to use various networking methods to compete. In addition, it also provides network conversation functions. and confidentiality measures.

        vtk is an algorithm library that contains many good algorithms. If you are doing finite element cloud diagrams and contours, especially medical algorithms, it has great value. I once extracted its contour algorithm.

        It can be implemented in one class, with only three or four main functions, and it also implements cloud images and contour lines. It is much simpler than the tracking algorithm on the Internet. It is a raster algorithm. It is introduced in foreign Wikipedia, but Wikipedia The introduction on the encyclopedia is not exactly the same as that on vtk, although the idea is the same. The rendering efficiency of vtk should not be very fast. It does not integrate scene management algorithms such as octrees. Its main purpose is not rendering, but the algorithm.

        And its architecture is also a pipeline flow method. After the input data is processed by a series of algorithms, it finally forms points, lines, and surfaces, which are stored in vtkPolyData and then drawn on the screen.

        There are two main ways to use vtk. The first is to refer to its algorithm, extract it directly, and implement it with your own data structure. This method can be separated from vtk and directly added to your own software. The disadvantage is that it causes trouble. Need to be familiar with vtk

        The second method is to use the data structure of vtk. The algorithm part directly uses the vtk library, and then the final point, line and surface data are extracted from vktPolyData and drawn with your own code. The disadvantage is that if you only use a certain algorithm, such as its contour algorithm, you need to reference several of its libraries, which is too bloated. The advantage is that you don’t need to extract the algorithm, and you can directly use the various algorithms it provides. I Both methods have been used.

        osg is a scene graph method. Each OpenGL-related function is a node, which is suitable for simulation. It integrates many algorithms, such as multi-camera, multi-view, particle system, various callback functions, intersection, etc. It is suitable for simulation, and it only supports opengl. It is easy to expand. It also integrates several robots. If you want to write your own robot, you can also refer to it. If beginners want to learn graphics, it is recommended to learn osg. There are a lot of information and tutorials on the Internet, and it has a multi-threaded implementation model.

        ogre is used more in games and supports d3d. Since it needs to implement opengl and d3d at the same time, it is more difficult to expand compared to OSG. However, some of its plug-in architecture designs are quite good. If you want to enter the game industry, you also want to If you want to learn about the engine architecture, it is recommended to learn Ogre. I feel that Ogre is a bit over-designed and difficult to expand, and there is no easy-to-use robot integrated into it. Its particle system and scene management are all plug-in, and you can use it to learn plug-in programming.

Other information about vtk and osg

Paraview, developed on top of VTK, has become open source software and a visualization tool for many companies. Especially in terms of medical 3D visualization, it is basically the preferred development tool. The more famous visual development tools that use VTK and Paraview include OpenFOAM, Salome, StressCheck, Cubit, etc.

Vtk, (visualization toolkit) is an open source free software system mainly used for three-dimensional computer graphics, image processing and visualization. Vtk is designed and implemented on the basis of object-oriented principles. Its core is built in C++ and contains about 250,000 lines of code, more than 2000 classes, and several conversion interfaces, so it can also be freely used through Java , Tcl/Tk and Python various languages ​​use vtk

VTK takes user convenience and flexibility as its main principles and has the following characteristics:

1) It has powerful three-dimensional graphics functions. Visualization Toolkit not only supports voxel-based rendering, but also retains traditional surface rendering, thereby greatly improving the visualization effect while making full use of existing graphics libraries and graphics hardware.

2) The architecture of Visualization Toolkit gives it very good streaming and cache caching capabilities, and there is no need to consider memory resource limitations when processing large amounts of data.

3) Visualization Toolkit can better support network-based tools such as Java and VRML. With the development of Web and Internet technology, Visualization Toolkit has good development prospects.

4) Ability to support multiple shaders such as OpenGL, etc.

5) Visualization Toolkit is device-independent, making its code highly portable

6) Many macros are defined in the Visualization Toolkit, which greatly simplify programming and enhance consistent object behavior.

7) Visualization Toolkit has richer data types and supports processing of multiple data types

8) It can work on both Windows operating system and Unix operating system, which greatly facilitates users.

OpenCV是 Open Source Computer Vision Library

OpenGL是 Open Graphics Library

OpenCV mainly provides basic algorithm libraries for image processing and video processing, and also involves some machine learning algorithms. For example, if you want to achieve video noise reduction, tracking of moving objects, and recognition of targets (such as faces), these are all areas of CV.

OpenGL focuses on Graphics and 3D drawing.

In fact, the difference between the two is the difference between the two disciplines of Computer Vision and Computer Graphics. The former focuses on obtaining information from the collected visual images and uses machines to understand the images; the latter uses machines to draw appropriate visual images. Show it to others.


 

おすすめ

転載: blog.csdn.net/zhanglixin999/article/details/132247914