=================================================================================== Release 1.4 =================================================================================== SUPPORTED SOFTWARE (1) NVIDIA(R) Jetson(TM) TK1 Pro OS : NVIDIA(R) Vibrante(TM) 3 Linux (V3L RC2) OpenCV : OpenCV 2.4.12.3 CUDA : NVIDIA(R) CUDA(R) 7.0 (2) NVIDIA(R) Jetson(TM) TK1 OS : NVIDIA(R) Tegra(R) Linux Driver Package R21.4 (L4T) OpenCV : OpenCV 2.4.12.3 CUDA : NVIDIA(R) CUDA(R) 6.5 (3) NVIDIA(R) Jetson(TM) TX1 OS : NVIDIA(R) Tegra(R) Linux Driver Package R24.1 (L4T) OpenCV : OpenCV 2.4.12.3 CUDA : NVIDIA(R) CUDA(R) 7.0 (4) Desktop X86_64 Ubuntu 14.04, with Kepler(TM) (compute capability 3.x) and Maxwell(TM) (compute capability 5.x) GPU generations OS : Ubuntu 14.04 x86_64 OpenCV : OpenCV 2.4.12.3 CUDA : NVIDIA(R) CUDA(R) 7.0 (5) Windows 8 x64, with Kepler(TM) (compute capability 3.x) and Maxwell(TM) (compute capability 5.x) GPU generations, Microsoft Visual Studio 2013 (Any edition, except Express) OS : Windows 8 x64 OpenCV : OpenCV 2.4.12.3 CUDA : NVIDIA(R) CUDA(R) 7.0 NEW FEATURES - New VisionWorks CUDA API, which provides direct low level access to VisionWorks CUDA kernels is introduced as an alpha feature. VisionWorks CUDA API does not use OpenVX framework and provides full control over scheduling, streaming and memory allocations to the developers without the framework. This API is intended for advanced CUDA developers. Note that this API is introduced as an alpha feature and will be extended and modified with the feedback from the developers. - Support for Block linear buffer support via CUDA Arrays for `vx_image` object. The CUDA array can be imported from the application via `vxCreateImageFromHandle` and can be exported to the application via `nvxMapImagePatch`. - Asynchronous multi-streamed execution for OpenVX graphs. Asynchronous execution is now enabled as the default mode of operation for OpenVX graph execution. - Debug tools and feature enhancements - Console log mechanism with various log message zones, activated with the NVX_LOG environment variable - Graph verification options, activated with the NVX_GRAPH environment variable. - Dot file generation for OpenVX graphs has been enhanced. - The NVX_PROF environment variable to activate VisionWorks profiling markers to appear with NVIDIA Visual profiler. Note that it should be set to 'nvtx'to activate the profiling. CHANGES - Packaging Changes: - `libvisionworks-dev` debian package was split onto `libvisionworks-dev` package with development files (headers and .so links) and `libvisionworks-samples` package with VisionWorks samples and NVXIO library. - Asynchronous execution support - Enabled asynchronous CUDA execution by default. The graph mode API now leverages asynchronous execution by default, to disable, use `-O1` graph option. - Improved some of the algorithms and pipelines by removing/reducing CPU-GPU synchronizations by leveraging asynchronous execution. - Primitive Updates - Optimized CUDA implementation of `OpticalFlowPyrLK` primitive (up to 10x speedup on TX1 and up to 2x speedup on TK1). - Improved `FindHomography` primitive: - Added `nvx_keypointf_t` type support. - Added more parameters (number of iterations, confidence) to control the primitive behavior. - The Gaussian Pyramid primitive now accepts level 0 of the output pyramid as input image The pyramid object is a bidirectional parameter in this case, what saves a copy of level 0. - Optimized `CopyImage` primitive for CPU<->GPU copy case (up to 2x speedup). - Added CUDA implementation for `Laplacian3x3` primitive. - Added CPU NEON optimized implementation for `OpticalFlowPyrLK`. - Added CPU optimized implementation for `FastTrack`. - Framework changes - The OpenVX 'single writer' rule has been relaxed to accept in the same graph a node that generates a data object and another node that takes this data object as bidirectional parameter. - Relaxed the thread safety rules to allow concurrently executed graphs to share inputs. - A `vx_delay` object can be used as input parameter for custom user kernel. The feature can be used to create generic temporal filtering kernels, for example. `vx_delay` object can be only input parameter, bidirectional and output are forbidden. - Debugging Enhancements - Added new "Debugging and profiling" section to user documentation. - Improved the dot file generation for graphs, added meta data information for all data objects, introduced more detailed view for pyramids and delays. - Improved VisionWorks library profiling information for NVIDIA Visual Profiler tool: - Used different colors for different operations (API, node execution, memory operations). - Used more explicit naming scheme. - The NVX_PROF environment variable (that must be set to 'nvtx') replaces the former NVX_ENABLE_PROFILER environment variable for activating the profiling. - NVXIO and samples changes: - Switched to a different method of maintaining a frame rate limitation to make it more stable on Windows. Introduced new `nvxio::SyncTimer` class for that purpose and deprecated old `nvxio::Application::sleepToLimitFPS` method. All samples were updated to use new `nvxio::SyncTimer` class. - Removed deprecated `nvxio::Render::putText` method. - Introduced new OpenGL based render for OpenCV video writer back-end on Windows platform. - Removed cameraID option from nvgstcamera capture sample. - Made OpenGL context switch exception safe. - Documentation updates and improvements: - Documented the target device possibilities for all primitives. - Added OpenCV to VisionWorks porting guide as "OpenCV Interoperability tutorial". - Added VisionWorks and NVXIO tutorials, which cover basic concepts of the libraries. - Added information about performance management on Jetson TX1 platform. FIXED ISSUES - Fixed `FindHomography` primitive behavior on lost points. Now the primitive will not process points with `tracking_status == 0`. - Fixed frame rate limitation issue on Windows, which caused some samples to run at a lower frame rate than expected (25-29 FPS). KNOWN ISSUES - The `stereo_matching` demo is not real-time on Jetson TK1 platform. - Camera capture via GStreamer doesn't fail in case of physical absence of camera module on Jetson TX1 platform. - Repeatedly opening/closing a GStreamer pipeline can break GPU access until reboot on L4T R21.4 (Jetson TK1 board). - Samples rendering rarely fails with SIGSEGV inside EGL due to internal EGL library issue on L4T R24.1 (Jetson TX1 board). =================================================================================== Release 1.2 =================================================================================== SUPPORTED SOFTWARE (1) NVIDIA(R) Jetson(TM) TK1 Pro OS : NVIDIA(R) Vibrante(TM) 3 Linux (V3L RC2) OpenCV : OpenCV 2.4.12.3 CUDA : NVIDIA(R) CUDA(R) 7.0 (2) NVIDIA(R) Jetson(TM) TK1 OS : NVIDIA(R) Tegra(R) Linux Driver Package R21.4 (L4T) OpenCV : OpenCV 2.4.12.3 CUDA : NVIDIA(R) CUDA(R) 6.5 (3) NVIDIA(R) DRIVE(TM) PX (P2379 B00), E2580 OS : NVIDIA(R) Vibrante(TM) 4 Linux (V4L) OpenCV : OpenCV 2.4.12.3 CUDA : NVIDIA(R) CUDA(R) 7.0 (4) NVIDIA(R) Jetson(TM) TX1 OS : NVIDIA(R) Tegra(R) Linux Driver Package R23.2 (L4T) OpenCV : OpenCV 2.4.12.3 CUDA : NVIDIA(R) CUDA(R) 7.0 (5) Desktop X86_64 Ubuntu 12.04, with Kepler(TM) (compute capability 3.x) and Maxwell(TM) (compute capability 5.x) GPU generations OS : Ubuntu 12.04 x86_64 OpenCV : OpenCV 2.4.12.3 CUDA : NVIDIA(R) CUDA(R) 7.0 (6) Desktop X86_64 Ubuntu 14.04, with Kepler(TM) (compute capability 3.x) and Maxwell(TM) (compute capability 5.x) GPU generations OS : Ubuntu 14.04 x86_64 OpenCV : OpenCV 2.4.12.3 CUDA : NVIDIA(R) CUDA(R) 7.0 (7) Windows 8 x64, with Kepler(TM) (compute capability 3.x) and Maxwell(TM) (compute capability 5.x) GPU generations, Microsoft Visual Studio 2013 Update 5 (Any edition, except Express) OS : Windows 8 x64 OpenCV : OpenCV 2.4.12.3 CUDA : NVIDIA(R) CUDA(R) 7.0 NEW FEATURES - Framework Features: - First release of asynchronous execution mode for CUDA primitives in graph processing mode. This feature is not enable by default, it is experimental, and it can be enabled by setting NVX_GRAPH_OPTIONS environment variable to '-O3'. - Non-contiguous memory support for imported images. Now `vxCreateImageFromHandle` function supports memory layouts with `stride_x` larger than pixel size, like interleaved channels. New `nvxMapImagePatch` and `nvxUnmapImagePatch` functions that allow to map `vx_image` object into contiguous buffer without gaps between pixels in a row. - New `nvxMapRemapPatch` and `nvxUnmapRemapPatch` methods that provide faster access without memory copy for `vx_remap` object. - New primitives and algorithm components: - `FindHomography` primitive, used in Video Stabilization. - Primitives for Iterative Motion Estimation algorithm: `CreateMotionField`, RefineMotionField`, `PartitionMotionField`, `MultiplyByScalar`. - Demo and Sample Pipeline enhancements: - New "Video Stabilization" demo that demonstrates a simple pipeline for video stabilization. - New "Motion Estimation" demo that demonstrates Iterative Motion Estimation algorithm. - "NvMedia camera" pipeline sample on DRIVE PX B00 platform is enhanced to support OmniVision 10640 cameras. - Optional support for NVIDIA Visual Profiler on Linux platforms. Now VisionWorks can generate API trace in NVIDIA Visual Profiler timeline if NVTX library is installed (as a part of CUDA runtime package). - NVXIO multimedia IO enhancements: - Support for full-screen rendering mode: - Scale mode and full-screen mode can be controlled by options of the `createRender` function. Scale mode is enabled by default, full-screen is disabled. - Full-screen mode can be enabled via `--nvxio_fullscreen` command line option, the image is up-scaled to fit the window. - If a window does not fit into display size, it's down-scaled while preserving the aspect ratio. - If an image does not fit into window, it's down-scaled preserving the original aspect ratio. - NvMedia API Omni Vision cameras functionality is wrapped in NVXIO `FrameSource` interface. - Rendering of semi-transparent text boxes. CHANGES - Framework changes: - Improved the management of virtual objects (images, pyramids, arrays): - Added the notion of mutability. Only undefined meta-data at creation time are mutable. - Virtual images can now change format multiple times (if the format is mutable). - Partially defined dimensions for images are now supported. - ROI and channel sub-images can be created from a virtual image only if its meta-data are immutable. - A virtual pyramid can be defined from its levels (a consistency check is done when a pyramid is read). - Pyramid levels of a meta-data mutable pyramid are mutable, only if this mutation occurs in their scope graph. If the mutation is requested in a sub-graph, pyramid levels meta-data are considered as immutable. - Added checks if the output virtual object has well defined meta-data in output validation process for primitives that require it. - Vision Primitive updates: - Extended `FastTrack` and `HarrisTrack` primitives to handle large image sizes with number of pixels up to 2^32. - Extended `Multiply` primitive to support `NVX_DF_IMAGE_F32` format. - Miscellaneous: - Extended `visionworks_suffix_version` field of `nvx_version_info_t` structure to 12 bytes. - Used more accurate CUDA dependencies for debian packages. Now main `libvisionworks` package depends only on CUDA runtime package and recommends CUDA NPP package. Removed redundant dependencies from CUBLAS and CUSPARSE libraries. - Updated "NvMedia camera" sample to match with Vibrante PDK modifications. - Removed "NvMedia video" elementary stream playback sample, its functionality is available in the "Player" sample through NVXIO if h264 elementary stream is passed as input. - NVXIO and samples improvements: - Text is now rendered in half-transparent bounding black box. - Avoided extra texture creation if the window size is smaller then actual rendered image. - Refactored GStreamer wrappers and factor out common code. - Removed redundant debug printing from `FrameSource` NVXIO classes. - Enhanced `OptionHandler` error messages for non-representable values. - Added documentation chapter with information about NVXIO thread safety. - `Render::putText` method was deprecated, new `Render::putTextViewport` method was added as replacement. - Added overload for `Render::putFeatures` method with per-feature style support. - Added target video bitrate configuration via environment variable (`NVXIO_VIDEO_RENDER_BITRATE`) for `GStreamerVideoRender`. - Added rounded corners support for `Render::putObjectLocation` method. - Refactored `nvmedia_camera` sample, reused NVXIO FrameSource interface. FIXED ISSUES - Imported images (created via `vxCreateImageFromHandle`) now synchronize internal buffers on destruction (when total reference counter is zero), at the time the memory ownership is back to the application. After destruction application's memory will contain up-to-date data. - Made VisionWorks independent from cudaSetDevice calls made by user. Added documentation regarding VisionWorks usage and limitations on multi-gpu systems. New `NVX_NODE_ATTRIBUTE_CUDA_STREAM` attribute was added for user implemented CUDA nodes. - Fixed keypoint's score value calculated by `HarrisTrack` primitives. In previous release it returned `actual_score - threshold` value instead of `actual_score`. - Added missed `NVX_DF_IMAGE_2F32` image format support to CUDA variant of `CopyImage` primitive. - Fixed reference leak when using ROI from virtual image inside graph processing. - Added a missing rectangle check in the `vxCreateImageFromROI` function. - Fixed segmentation fault in `MedianFlow` primitive with scale estimation when size of input array lower than 2. Now the primitive will report an error in this case. - Fixed invalid data that can occur if a sub-region of image or array is accessed in WRITE_ONLY mode. - Fixed `vxRegisterUserStruct` in case of type IDs overflow, now the function will return `VX_TYPE_INVALID`, if the namespace of types has been exhausted. - Fixed crashes when a node immutable parameter is optional and missing. - NVXIO and samples fixes: - Added support of video files with variable bit-rate on V4L platforms. - Fixed several issues with GLFW windows on Windows platform (window's size and aspect ratio). - Removed video trembling at the very end of the "OpenGL Interoperability" sample. - Fixed cursor handling in case when window was scaled to smallest size. - Fixed motion field rendering in case if windows size doesn't match with image size. - Fixed PointCloudRender implementation, removed useless and erroneous `vxWriteMatrix` calls. - Fixed rectangles rendering artifacts in `Render::putObjectLocation` method. KNOWN ISSUES - When VisionWorks samples are run extended hours (12hours or more) the application might hang due to platform SW issue. - 'FindHomography` primitive uses all points pair in homography computation irrespective of the tracking status. The developers should consider explicitly filtering out invalid pairs that were marked as lost by tracking algorithm, this will help reduce the number of outliers. - Parallel reading from several nvxio::FrameSource instances in single thread leads to segmentation fault on close on Vibrante 3 Linux (Jetson Pro Platforms). - On Jetson TX1 platforms, Camera frame rate cannot be set due to a platform SW issue. - The `stereo_matching` demo is not real-time on Jetson TK1 platform. - Memory leaks in GStreamer NvMedia plugins and in VisionWorks samples that use it on DRIVE PX (P2379 B00) platform. - Omni Vision 10635 cameras do not work properly on E2580 board due to platform issue. - Camera capture via GStreamer doesn't fail in case of physical absence of camera module on Jetson TX1 platform. - On Windows, sample frame rate limiting is imprecise, which may cause some samples to run at a lower frame rate than expected (25-29 FPS). =================================================================================== Release 1.0 =================================================================================== SUPPORTED SOFTWARE (1) NVIDIA(R) Jetson(TM) TK1 Pro OS : NVIDIA(R) Vibrante(TM) 3 Linux (V3L RC1) OpenCV : OpenCV 2.4.12.2 and OpenCV 2.4.12.3 (latest) CUDA : NVIDIA(R) CUDA(R) 7.0 (2) NVIDIA(R) Jetson(TM) TK1 OS : NVIDIA(R) Tegra(R) Linux Driver Package R21.4 (L4T) OpenCV : OpenCV 2.4.12.2 and OpenCV 2.4.12.3 (latest) CUDA : NVIDIA(R) CUDA(R) 6.5 (3) NVIDIA(R) DRIVE(TM) PX (P2379 B00), E2580 OS : NVIDIA(R) Vibrante(TM) 4 Linux (V4L) OpenCV : OpenCV 2.4.12.2 and OpenCV 2.4.12.3 (latest) CUDA : NVIDIA(R) CUDA(R) 7.0 (4) NVIDIA(R) Jetson TX1 (P2371) OS : NVIDIA(R) Tegra(R) Linux Driver Package R23 (L4T) OpenCV : OpenCV 2.4.12.2 and OpenCV 2.4.12.3 (latest) CUDA : NVIDIA(R) CUDA(R) 7.0 (5) Desktop X86_64 Ubuntu 12.04, with Kepler(TM) (compute capability 3.x) and Maxwell(TM) (compute capability 5.x) GPU generations OS : Ubuntu 12.04 x86_64 OpenCV : OpenCV 2.4.12.2 and OpenCV 2.4.12.3 (latest) CUDA : NVIDIA(R) CUDA(R) 7.0 (6) Desktop X86_64 Ubuntu 14.04, with Kepler(TM) (compute capability 3.x) and Maxwell(TM) (compute capability 5.x) GPU generations OS : Ubuntu 14.04 x86_64 OpenCV : OpenCV 2.4.12.2 and OpenCV 2.4.12.3 (latest) CUDA : NVIDIA(R) CUDA(R) 7.0 (7) Windows 8 x64, with Kepler(TM) (compute capability 3.x) and Maxwell(TM) (compute capability 5.x) GPU generations, Microsoft Visual Studio 2013 (Any edition, except Express) OS : Windows 8 x64 OpenCV : public OpenCV 2.4.12 CUDA : NVIDIA(R) CUDA(R) 7.0 GENERAL This is the first public release for L4T customers. NOTE: This file covers previous releases of VisionWorks which is applicable to various platform customers that this library supports. If you are using this library as a public library for the first release, "FIXED ISSUES" and "CHANGES" sections of 1.0 release notes as well as the previous releases' log might not be of importance to you. Please do refer to the "KNOWN ISSUES" section below. For our existing customers, the focus of this release is enabling hardware accelerated decode and new camera capture sample for L4T R23 platforms. NEW FEATURES - Camera capture sample for L4T R23 that demonstrates how to access camera on L4T R23 platforms, and its corresponding camera capture interface in NVXIO. - Support for hardware accelerated video decoding in NVXIO for L4T R23 and V4L platforms. CHANGES - Improvements in integration with debugging and profiling tools. - Stereo Matching Demo is enhanced with new color mode display option and corrected allowed parameter ranges for this demo. - Removed unused camera model enumeration (nvx_camera_model_e) type. - Performance improvement for Convolution primitive for 11x11 case for Tegra Maxwell platforms. - On Vibrante platforms, there are now two video playback samples: NvMedia Video Playback Sample app and Video Playback Sample app. Video Playback Sample app abstracts NvMedia and other multimedia API SW stack within NVXIO layer, simplifying the sample pipelines. NvMedia video playback sample will be deprecated in later versions. FIXED ISSUES - Documentation Fixes: - Added missing descriptions for several components - Updated input data description section of the Sample and Demo Applications in the Reference Manual. - Unified hardware codec information for Vibrante(™) platforms - Added instructions for individual compilation of samples. - NvMedia Camera Sample Fixes: - Updated NvMedia camera sample display interface and its documentation to describe histogram equalization mode applied to the captured images. - Fixed issue which caused segmentation fault in NvMedia camera sample at finalization stage on V4L platform. - Fixed privileges issue with NvMedia camera sample. - Corrected screen placement of OpenGL Interoperability Sample window when the application is started. - Fixed usage of mask in FastTrack primitive so that all the features outside of the mask are excluded properly. - Fixed NVXIO OpenGL rendering of feature points and lines where the input values were discarded when the infernal Buffer capacity was insufficient to hold all the elements. - Restored compatibility of library headers with pure C. KNOWN ISSUES - Concurrent reads from multiple nvxio::FrameSource instances initiated from a single thread lead to segmentation fault on Vibrante platforms on close. - Reference leak while using ROI from virtual image inside graph processing. - Video files with variable bit-rate are not supported on Vibrante 4 Linux platform (DRIVE PX and E2580 boards) due to a GStreamer issue on these platforms. - nvmedia_video sample requires super-user privileges on V4L platform. - H.264 elementary video streams are not supported on Jetson TX1 platforms (P2371). =================================================================================== Release 1.0 Beta 2 =================================================================================== SUPPORTED SOFTWARE (1) NVIDIA(R) Jetson(TM) TK1 Pro OS : NVIDIA(R) Vibrante(TM) 3 Linux (V3L RC1) OpenCV : OpenCV 2.4.12.1 CUDA : NVIDIA(R) CUDA(R) 7.0 (2) NVIDIA(R) Jetson(TM) TK1 OS : NVIDIA(R) Tegra(R) Linux Driver Package R21.4 (L4T) OpenCV : OpenCV 2.4.12.1 CUDA : NVIDIA(R) CUDA(R) 6.5 (3) NVIDIA(R) DRIVE(TM) PX (P2379 B00), E2580 OS : NVIDIA(R) Vibrante(TM) 4 Linux (V4L) OpenCV : OpenCV 2.4.12.1 CUDA : NVIDIA(R) CUDA(R) 7.0 (4) P2371 Board OS : NVIDIA(R) Tegra(R) Linux Driver Package R23 (L4T) OpenCV : OpenCV 2.4.12.1 CUDA : NVIDIA(R) CUDA(R) 7.0 (5) Desktop X86_64 Ubuntu 12.04, with Kepler(TM) (compute capability 3.x) and Maxwell(TM) (compute capability 5.x) GPU generations OS : Ubuntu 12.04 x86_64 OpenCV : OpenCV 2.4.12.1 CUDA : NVIDIA(R) CUDA(R) 7.0 (6) Desktop X86_64 Ubuntu 14.04, with Kepler(TM) (compute capability 3.x) and Maxwell(TM) (compute capability 5.x) GPU generations OS : Ubuntu 14.04 x86_64 OpenCV : OpenCV 2.4.12.1 CUDA : NVIDIA(R) CUDA(R) 7.0 (7) Windows 8 x64, with Kepler(TM) (compute capability 3.x) and Maxwell(TM) (compute capability 5.x) GPU generations, Microsoft Visual Studio 2013 (Any edition, except Express) OS : Windows 8 x64 OpenCV : OpenCV 2.4.12.1 CUDA : NVIDIA(R) CUDA(R) 7.0 NEW FEATURES - Support for ARM64 architecture and samples' cross-compilation for ARM64 platforms. - Added optional tracking error calculation to OpticalFlowPyrLK primitive. This feature is controlled by vxDirective function. See User's Guide for details. - Added EGL Stream interoperability tutorial to the User Guide. This tutorial demonstrates how to use Khronos EGL API to interact with rendering and capturing APIs. - Added nvxCreateImageFromChannel function that allows to create an image from single channel of other image without memory copy. The method supports multi-planar images (YUV4, IYUV, NV12, NV21) only and channels that occupy an entire plane. - Added U8->RGB[X] conversion support to ColorConvert primitive. - (Vibrante(TM)) NvMedia camera capture sample now includes an optional Histogram Equalization step applied to the captured images. By default this step is disabled. It can be enabled (toggles) by pressing the space-bar(s) during sample execution. Histogram equalization is applied to inner sub-rectangle only. CHANGES - Switched to the new Khronos OpenVX 1.0.1 standard (https://www.khronos.org/registry/vx/specs/1.0.1/html/index.html). List of changes in this revision: - added const qualifiers to the functions' parameters, where it is applicable - renamed Access/Commit methods to Read/Write for vx_convolution, vx_matrix and vx_scalar objects - added Access/Commit in COPY mode with application stride control for vx_image and vx_array objects - updated enumeration values for vx_channel_e type, now named channels (R, G, B, Y, U, V) and numeric channels (0, 1, 2, 3) are different - added VX_THRESHOLD_ATTRIBUTE_DATA_TYPE attribute and removed NVX_THRESHOLD_ATTRIBUTE_DATA_TYPE - added max field to vx_perf_t structure - changed kernel names to comply with OpenVX 1.0.1 - removed the vx_context parameter from vxHint and vxDirective functions - added vx_status return value to vxRemoveNode function - changed type for vx_distribution offset and range attributes from vx_size to vx_int32 - renamed VX_DELAY_ATTRIBUTE_COUNT to VX_DELAY_ATTRIBUTE_SLOTS and changed its type from vx_uint32 to vx_size - renamed VX_ACTION_RESTART enumeration - changed num_corners parameter type from vx_uint32 to vx_size in HarrisCorners, FastCorners, HarrisTrack and FastTrack primitives - added gradient normalization to HarrisCorners primitive - added S16 format support to AbsDiff primitive - OpenVX 1.0.1 specification is embedded into VisionWorks documentation. - VisionWorks repo package now excludes OpenCV4Tegra, and OpenCV4Tegra is delivered as a separate stand-alone package. - Framework changes & optimizations - Improved automatic graph verification: - correctly determine necessity for verification on primitives parameters change - added mutability property to kernel parameters: - NVX_MUTABLE_INIT parameters don't require re-verification on change - NVX_METADATA_IMMUTABLE_INIT parameters require re-verification on meta-data change - NVX_IMMUTABLE_INIT parameters require re-verification on meta-data or value change - added function to control kernel parameters mutability for user kernels (nvxSetKernelParameterMutability) - Optimizations in the framework - graph execution optimization (resource initialization was moved to verification stage) - optimized performance tracking for immediate mode and for graphs with single node - optimized CPU/GPU memory synchronization for vx_array object - Changed vx_array capacity validation process. Now it is allowed to have capacity greater than expected value Also primitives and user kernels can skip capacity estimation (set the corresponding field of vx_meta_format to 0), if there is no good estimation. In that case capacity must be explicitly provided by calling code even for virtual arrays. - Vision primitive updates - Convolution primitive optimizations (from 20% up to 5x speedup for square kernels). - Added non-zero constant border mode support to the following primitives: HarrisCorners, FastCorners, and Convolution. - Added back the following primitives and samples into the library after some clean up: - Primitives: Scharr3x3, Laplacian3x3, StereoBlockMatching, SemiGlobalMatching, HoughLines, HoughSegments, HoughCircles, MedianFlow - Sample applications: Stereo Depth Extraction, Hough Lines & Circles, OpenGL Interoperability, Player - NVXIO library updates - made command line parsing stricter - render all keypoints and 2D coordinates without skipping untracked points - improved GStreamer and NvMedia backends - refactored and improved OpenGL renders, implemented pure OpenGL rendering without CUDA kernels FIXED ISSUES - Fixed object leak in vxReleaseContext for stale references. - Fixed uninitialized data access in uniform images. - Added handling of misaligned input for CannyEdgeDetector, Convolution, FastCorners, HarrisCorners, FastTrack, HarrisTrack, Remap, ScaleImage, WarpAffine and WarpPerspective primitives. - Corrected an issue affecting performance in vxAddArrayItems function. - Fixed usage of nvxio::FrameSource::fetch in samples (obsolete parameter). - Fixed an issue in NVXIO video file rendering that affected large frame dimensions. - Added check to detect allocation error for the render object in nvmedia_video sample. - Partially fixed package conflict with ROS Indigo. For clear replacement of standard OpenCV by OpenCV for Tegra for ROS installation please install libopencv4tegra libopencv4tegra-dev and libopencv4tegra-python packages together. KNOWN ISSUES - On E2580 platforms, there is a problem in application window placement location for the samples. When the sample application starts, the window might be placed at the corner of the screen. The user can drag the window to the center for full visibility as a temporary work-around. - Parallel reading from several nvxio::FrameSource instances in single thread leads to segmentation fault on "close" on Vibrante Linux platforms. - nvmedia_video sample requires super user privileges on Vibrante Linux Embedded for DRIVE PX and Erista boards. - Package conflict with ROS Indigo is not fully resolved. List of remaining conflicting packages: ros-indigo-compressed-depth-image-transport, ros-indigo-simulators, ros-indigo-compressed-image-transport, ros-indigo-gazebo-plugins, ros-indigo-gazebo-ros, ros-indigo-gazebo-ros-pkgs, ros-indigo-image-pipeline, ros-indigo-image-transport-plugins, ros-indigo-image-view, ros-indigo-perception - Reference leak when creating ROI from a virtual image. - VisionWorks User Guide is missing VX_API_ENTRY in Macro definitions included in the in the headers and global definition sections. - (Vibrante(TM)) NvMedia camera capture sample documentation is missing information on Histogram Equalization step. When the sample is run, the step to activate this feature (pressing space-bar) is not informed on the application menu. =================================================================================== Release 1.0 Beta =================================================================================== SUPPORTED SOFTWARE (1) NVIDIA(R) Jetson(TM) TK1 Pro OS : NVIDIA(R) Vibrante(TM)Linux (V3L RC1) OpenCV : OpenCV 2.4.10.4 CUDA : NVIDIA(R) CUDA(R) 7.0 (2) NVIDIA(R) Jetson(TM) TK1 OS : NVIDIA(R) Tegra(R) Linux Driver Package R21.3 (L4T) OpenCV : OpenCV 2.4.10.4 CUDA : NVIDIA(R) CUDA(R) 6.5 (3) NVIDIA(R) DRIVE(TM) PX (P2379, A00, 32-bit only), E2580 OS : NVIDIA(R) Vibrante(TM) Linux (V3Le) OpenCV : OpenCV 2.4.10.4 CUDA : NVIDIA(R) CUDA(R) 7.0 (4) P2371 Board OS : NVIDIA(R) Tegra(R) Linux Driver Package R23 (L4T) OpenCV : OpenCV 2.4.10.4 CUDA : NVIDIA(R) CUDA(R) 7.0 (5) Desktop X86_64 Ubuntu 12.04, with Kepler(TM) (compute capability 3.x) and Maxwell(TM) (compute capability 5.x) GPU generations OS : Ubuntu 12.04 x86_64 OpenCV : OpenCV 2.4.10.4 CUDA : NVIDIA(R) CUDA(R) 7.0 (6) Desktop X86_64 Ubuntu 14.04, with Kepler(TM) (compute capability 3.x) and Maxwell(TM) (compute capability 5.x) GPU generations OS : Ubuntu 14.04 x86_64 OpenCV : OpenCV 2.4.10.4 CUDA : NVIDIA(R) CUDA(R) 7.0 (7) Windows 8 x64, with Kepler(TM) (compute capability 3.x) and Maxwell(TM) (compute capability 5.x) GPU generations, Microsoft Visual Studio 2013 (Any edition, except Express) OS : Windows 8 x64 OpenCV : OpenCV 2.4.11 CUDA : NVIDIA(R) CUDA(R) 7.0 GENERAL The focus of this release is intensive functionality testing. Algorithms, experimental primitives and related samples have been removed from distribution. NEW FEATURES - Multi-threaded execution support. See documentation for details on thread-safety support level. - New nvx_keypointf_t data type for key points with floating point coordinates. New type support added to OpticalFlowPyrLK, Harris, Fast9, HarrisTrack, and FastTrack. - Documentation improvement: * Added code excerpts for extensions. * Added reference manual for NVXIO. - Simple GStreamer-based video decoding pipeline for all Linux platforms in NVXIO. - Only on Vibrante based systems: H.264 Elementary stream playback with hardware accelerated NvMedia API in NVXIO. - OpenCV4Tegra installation is now optional, if installation of OpenCV4Tegra is omitted, OpenCV-NPP interop sample is not installed in the samples directory. - Full GPU-rendering pipeline without frames downloading into CPU memory. FreeType library is used for font rendering. - Play/Pause functionality in samples. CHANGES - Added function nvxReleaseReferenceList for generic reference releasing. - Significantly reworked nvmedia_camera sample. Simplified pipeline, removed own utility routings. Reused file parser and frame queue from NVXIO. - Optimizations for GPU: - MeanStdDev - MinMaxLoc - ChannelsCombine - ScaleImage - Histogram and EqualizeHistogram - Warp and Remap with non-zero constant border mode - FlipImage - Optimizations for CPU: - GausianPyramid FIXED ISSUES - Color conversion implementation now matches specification and correctly handle color space and channel range image attributes. Note: the fix affects RGB->Grayscale conversion results. BT709 color space is used by default. - Fixed multiple memory leaks in GStreamer+NvMedia decoding pipeline on Vibrante. - More accurate CUDA error handling. - Fixed CornerHarris with gradient_size=3 and block_size=3 bug that led to one pixel shift in horizontal direction. KNOWN ISSUES - Parallel reading from several nvxio::FrameSource instances in single thread leads to segmentation fault on close on Vibrante Linux. - nvmedia_video sample requires super user privileges on Vibrante Linux Embedded for DRIVE PX and Erista boards. =================================================================================== Release 0.94 =================================================================================== SUPPORTED SOFTWARE - NVIDIA(R) Vibrante(TM) 3.0 Beta 3 Linux - OpenCV 2.4.10.1 - NVIDIA(R) CUDA(R) 7.0 - NVIDIA(R) Tegra(R) Linux Driver Package (L4T) 21.2 - OpenCV 2.4.10.1 - NVIDIA(R) CUDA(R) 6.5 - Ubuntu 12.04 x86_64 - OpenCV 2.4.10.1 - NVIDIA(R) CUDA(R) 6.5 - NVIDIA(R) Kepler(TM) and NVIDIA Maxwell(TM) GPU generations - Ubuntu 14.04 x86_64 - OpenCV 2.4.10.1 - NVIDIA(R) CUDA(R) 6.5 - NVIDIA(R) Kepler(TM) and NVIDIA Maxwell(TM) GPU generations - Windows 8 x64 - Microsoft Visual Studio 2013 - OpenCV 2.4.11 - NVIDIA(R) CUDA(R) 6.5 - NVIDIA(R) Kepler(TM) and NVIDIA Maxwell(TM) GPU generations GENERAL The API must not be considered as thread-safe. VisionWorks API should be used only from a single thread. NEW FEATURES - New platforms support. - Full support for desktop Windows 8 x64 platform, including packages, samples and documentation. - New framework extensions. - Stream graph notion, which semantics is defined by an ordered execution of nodes. - Auto-aged delays. - The nvxRetainReference function, which simplifies reference ownership management. - New NVX_THRESHOLD_ATTRIBUTE_DATA_TYPE threshold attribute. - ObjectArray type to hold a collection of data objects. - New primitives. - Find Ground Plane primitive. - Single Semi Global Stereo matching primitive, which simplifies SGM pipeline usage. - Laplacian 3x3 filter. - New samples. - Stereo matching sample. - Sample for multiple CSI camera access via NvMedia API on Vibrante(TM). - Sample for OpenGL interoperability. - New NVXIO features. - Render interface for 3D point cloud rendering. - Configuration files parsing interface. CHANGES - Non-compatible API changes. - HoughLinesStandard primitive was renamed to HoughLines and HoughLinesProbabilistic was renamed to HoughSegments to better reflect their purpose. - RansacFilterOutliers primitive was split onto FindFundamentalMat and DecomposeFundamental primitives. - MotionField object was removed and replaced with simple Image object with new NVX_DF_IMAGE_2F32 format. - Reference type support in Array object was removed (it is implemented as separate ObjectArray type). - Remap object was replaced with Image object in SoftCascade and GravityConstraint primitives to avoid confusion. - All primitives use atomic types instead of vx_scalar for input parameters for simpler usage. - Better algorithms integration with framework. - 2D, 3D and 4D floating point vectors were renamed from nvx_point2d_t to nvx_point2f_t to avoid confusion with double type. - nvx_detection_t structure was renamed to nvx_detected_object_t. - Enumeration values were updated to avoid conflicts with the user-defined values. - Obsolete IntegralHistogram primitive was removed. - Fast NLM Denoising primitive was renamed to NLM Denoising to avoid confusion with real-time algorithms. - Framework improvements. - Improved and added more accurate error reporting for framework and primitives in case of incorrect usage. - Primitive optimizations. - The following CUDA primitives were optimized: - Phase primitive (20-50% speedup). - Remap for uniform images (20% - 10x speedup). - The following CPU kernels were optimized with NEON (up to 60x speedup on Jetson TK1 platforms): - Box3x3 - ChannelExtract - Convolution3x3 - Dilate3x3 - Erode3x3 - FlipImage - GaussianBlur3x3 - Laplacian3x3 - Multiply - Remap - ScaleImage - Sobel3x3 - Warp - The following CPU kernels were optimized: - EqualizeHist - Histogram - TableLookup - Changes in samples. - SfM sample : scale calculation based on ground plane estimation. - SfM sample : IMU data support. - GLEW dependency was removed. - Face detector sample : new command line parameter to set minimal face size. - Object tracker sample was removed from distribution. - Changes in documentation. - OpenVX API previously documented here has been replaced with hyperlinks to the official OpenVX specification on the Khronos website at: https://www.khronos.org/registry/vx/specs/1.0/html/index.html FIXED ISSUES - Fixed CUDA convolution performance degradation. - Fixed FindHomography primitive failure in case when the number of points is equal to 0. - Added support for all data types to meta format object. - Fixed initial state usage in Kalman filter. - Fixed several issues with asynchronous graph execution. - Fixed vx_keypoint_t structure processing by feature detectors and optical flow. Now the detector primitives initialize tracking_status field with 1 and optical flow takes into account tracking_status of input points and perform calculation only for points with non zero tracking_status. Also optical flow preserves values of other vx_keypoint_t fields (like scale and orientation). - Fixed ESM panorama sample failures in case of empty panorama. - Decreased the memory threshold for ESM panorama sample. Now it works when there are at least 50 MB of free CUDA memory. - Fixed bug in GaussianPyramid primitive in case when node input is changed via vxSetParameterByIndex. - Fixed hough_transform demo failures in case of invalid input scale_factor parameter. - Fixed EGLStream finalization in NVXIO and EGL-related samples on Vibrante(TM) platform. - Fixed mask generation in pedestrian_detection sample. - Fixed invalid output vx_imagepatch_addressing_t structure in vxAccessImagePatch in COPY mode. KNOWN ISSUES - Graph should not be modified (any change that requires re-verification) after it was scheduled with vxScheduleGraph call. - Installation of OpenCV4Tegra packages, which are used by VisionWorks samples, conflicts with installed ROS packages. - FindFundamentalMat primitive produces non accurate results in some cases. - AggregateCostScanlines primitive may produce non accurate result in some rare cases on L4T platform. - nvxio::FrameSource object has EGL objects leak on Vibrante platform. Samples produce warning: "NvEglHandle: Unfreed handle upon egl deinit: type=5 refcnt=1" - nvxio::FrameSource object has significant memory leaks on Vibrante that leads to samples fail after several minutes of execution. =================================================================================== Release 0.92 =================================================================================== SUPPORTED SOFTWARE - NVIDIA(R) Vibrante(TM) 3.0 Beta 1 Linux (23.01.01) - OpenCV 2.4.10.1 - NVIDIA(R) CUDA(R) 7.0 - NVIDIA(R) Tegra(R) Linux Driver Package (L4T) 21.2 - OpenCV 2.4.10.1 - NVIDIA(R) CUDA(R) 6.5 - Ubuntu 12.04 x86_64 - OpenCV 2.4.10.1 - NVIDIA(R) CUDA(R) 6.5 - NVIDIA(R) Kepler(TM) and NVIDIA Maxwell(TM) GPU generations - Ubuntu 14.04 x86_64 - OpenCV 2.4.10.1 - NVIDIA(R) CUDA(R) 6.5 - NVIDIA(R) Kepler(TM) and NVIDIA Maxwell(TM) GPU generations GENERAL In this preliminary NVIDIA(R) VisionWorks(TM) release, the degree of maturity of the various framework functions differ. The following features and functions should be considered experimental in the current release: - Kernel object and the related API. - Parameter object and the related API. - The notion of a valid image region. - User-defined structures. - Image ROI. The API must not be considered as thread-safe. A vx_context object and its derived objects must be created and manipulated by a single thread. NEW FEATURES - Target device assignment API for immediate mode. - Parallel Random Number Generator. - VisionWorks-NvMedia interoperability sample. - VTK library independent 3D point cloud render for SfM sample. - Samples cross compilation with Vibrante PDK toolchain. CHANGES - API changes: - OpenVX API was updated to match the final 1.0 specification (see ). - ConvertToGray primitive was merged into ColorConvert. - Command base class for all algorithms was added to control algorithms deallocation. - Optimization: - Framework optimization: - Memory usage for data objects was reduced up to 2 times. - Uniform image initialization and usage by some kernels was optimized up to 2 times. - The following CUDA kernels were optimized: - AbsDiff (up to 10% speedup on Jetson TK1 platforms). - Accumulate (up to 10% speedup on Jetson TK1 platforms). - Add (up to 10% speedup on Jetson TK1 platforms). - CannyEdgeDetector (up to 25x speedup on Jetson TK1 platforms). - ConvertDepth (up to 10% speedup on Jetson TK1 platforms). - Convolution (up to 1.5x speedup on Jetson TK1 platforms). - ConvolveCost (up to 6x speedup on Jetson TK1 platforms). - HarrisCorners for gradient size 5 and 7 (up to 10x speedup on Jetson TK1 platforms). - Histogram (up to 6x speedup on Jetson TK1 platforms). - HoughCircles (up to 2x speedup on Jetson TK1 platforms). - HoughLines (up to 1.5x speedup on Jetson TK1 platforms). - MeanStdDev (up to 90% speedup on Jetson TK1 platforms). - Multiply (up to 10% speedup on Jetson TK1 platforms). - RANSAC (up to 3x speedup on Jetson TK1 platforms). - RGB[X] to Grayscale conversion (up to 1.4x speedup on Jetson TK1 platforms). - SBM (up to 1.5x speedup on Jetson TK1 platforms). - Subtract (up to 10% speedup on Jetson TK1 platforms). - Threshold (up to 10% speedup on Jetson TK1 platforms). - The following CPU kernels were optimized with NEON (up to 60x speedup on Jetson TK1 platforms): - AbsDiff. - Accumulate, AccumulateSquare, AccumulateWeighted. - Add. - Bitwise operations. - ChannelCombine. - ColorConvert. - ConvertDepth. - Integral. - Magnitude. - MeanStdDev. - MinMaxLoc. - Phase. - Subtract. - Threshold. - Primitives changes: - S16 format support was removed from the ComputeCostBT primitive. - RGB image support for ScaleImage primitive was added. FIXED ISSUES - Memory leak on kernel removal. - Crashes on invalid input parameters for public API. - Crashes of ScaleImage primitive on misaligned input. - SoftCascade scales validation. - Frame drop in nvxio::FrameSource due to big delay in a processing loop. KNOWN ISSUES - nvxio::FrameSource object has EGL objects leak on Vibrante platform. =================================================================================== Release 0.80 =================================================================================== SUPPORTED SOFTWARE - NVIDIA(R) Vibrante(TM) 3.0 Beta 1 Linux - OpenCV 2.4.10.1 - NVIDIA(R) CUDA(R) 7.0 - NVIDIA(R) Tegra(R) Linux Driver Package (L4T) 21.1 - OpenCV 2.4.10.1 - NVIDIA(R) CUDA(R) 6.5 - Ubuntu 12.04 x86_64 - OpenCV 2.4.10.1 - NVIDIA(R) CUDA(R) 6.5 - NVIDIA(R) Kepler(TM) and NVIDIA Maxwell(TM) GPU generations - Ubuntu 14.04 x86_64 - OpenCV 2.4.10.1 - NVIDIA(R) CUDA(R) 6.5 - NVIDIA(R) Kepler(TM) and NVIDIA Maxwell(TM) GPU generations GENERAL In this preliminary NVIDIA(R) VisionWorks(TM) release, the degree of maturity of the various framework functions differ. The following features and functions should be considered experimental in the current release: - Kernel object and the related API. - Motion Field object and the related API. - Parameter object and the related API. - The notion of a valid image region. - User defined structures. - Image ROI. The API must not be considered as thread-safe. A vx_context object and its derived objects must be created and manipulated by a single thread. NEW FEATURES - Semi-Global Matching Stereo Correspondence algorithm for disparity map reconstruction. The algorithm is represented as a set of standalone primitives. - FlipImage primitive. - Target device assignment API, which allows you to manually specify the target (CPU and GPU) for each node in a pipeline. - NVXIO: hardware accelerated video decoding pipeline on Vibrante platforms using the GStreamer/NvMedia/EGL/CUDA approach. - NVXIO: ConvexPoligon rendering function. CHANGES - Primitives and samples optimization: - BilateralFilter primitive optimization (up to 5x speedup on Jetson TK1 platforms). - FindHomography primitive optimization (up to 2x speedup on Jetson TK1 platforms). - Morphology filters (Erode and Dilate primitives) optimizations (up to 3x speedup on Jetson TK1 platforms). - ScaleImage primitive optimization for 2x and 4x AREA downscaling case (up to 2x speedup on Jetson TK1 platforms). - HOG primitive optimization (up to 20% speedup on Jetson TK1 platforms). - Bitwise operations optimization (up to 10% speedup on Jetson TK1 platforms). - IME sample optimization in rendering part (up to 5-7% speedup on Jetson TK1 platforms) - New scale parameter for TwoViewTriangulation primitive. - Official GLFW3 debian packages are used on all platforms, except Vibrante. - New tutorials section in the user documentation. FIXED ISSUES - Implemented unsupported modes for Pyramid primitive: - SCALE_ORB scale factor. - border modes. - Fixed YUV->RGB color conversion formula for blue channel. - Fixed segmentation faults in public API with NULL parameters. - Fixed two bugs in HOG primitive: - incorrect small levels processing. - out-of-border access in groupRectangle step. - Fixed incorrect results for small objects in NonRigid ObjectTracker. KNOWN ISSUES - vxGetReferenceFromDelay and vxAssociateDelayWithNode do not work with Pyramid objects; nvxGetRoamingReferenceFromDelay should be used instead. - nvxio::FrameSource object has EGL objects leak on Vibrante platform. =================================================================================== Release 0.70 =================================================================================== SUPPORTED SOFTWARE - NVIDIA(R) Vibrante(TM) 3.0 Alpha 3 Linux - OpenCV 2.4.10 - NVIDIA(R) CUDA(R) 6.5 - NVIDIA(R) Tegra(R) Linux Driver Package (L4T) 21.1 - OpenCV 2.4.10 - NVIDIA(R) CUDA(R) 6.5 - Ubuntu 12.04 x86_64 - OpenCV 2.4.10 - NVIDIA(R) CUDA(R) 6.5 - NVIDIA(R) Kepler(TM) and NVIDIA Maxwell(TM) GPU generations - Ubuntu 14.04 x86_64 (internal only) - OpenCV 2.4.10 - NVIDIA(R) CUDA(R) 6.5 - NVIDIA(R) Kepler(TM) and NVIDIA Maxwell(TM) GPU generations GENERAL In this preliminary NVIDIA(R) VisionWorks(TM) release, the degree of maturity of the various framework functions differ. The following features and functions should be considered experimental in the current release: - Kernel object and the related API. - Motion Field object and the related API. - Parameter object and the related API. - The notion of a valid image region. - User defined structures. - Image ROI. The API must not be considered as thread-safe. A vx_context object and its derived objects must be created and manipulated by a single thread. NEW FEATURES - Object Detector and Object Detector With Tracking. algorithms. The Face detector sample is built on top of the new algorithms. - ESM panorama stitching algorithm and sample. - Object removal algorithm and sample. - 2 view triangulation primitive. - CUDA optimized implementation for ChannelExtract, ChannelCombine and ColorConvert primitives. - RANSAC primitive was extended with pinhole and Scaramuzza fisheye camera models support. - YUV4 format support in ChannelExtract primitive. - NV12, NV21, UYVY, YUYV and IYUV formats support to ChannelCombine primitive. - nvxGetVersionInfo function to get version information. CHANGES - OpenCV for Tegra packages were integrated to the VisionWorks repo package. Installation instructions were updated. - The EULA text was added to all VisionWorks packages. - CUDA primitives optimization: - Multiply primitive (2x speedup). - Phase primitive (20-30% speedup). - New implementation for SoftCascade primitive (2x detector). Documentation for training tools were updated. - Full termination criteria support for PyrLK OpticalFlow primitive. - Non-zero constant border mode support in CustomConvolution primitive. - Image plane attribute type was changed from vx_uint32 to vx_size. - nvxio sample library changes: - nvxio::Render::putLines method was refactored. Now it works with a single array of nvx_point4f_t type, which is an output from HoughLines. - Pre-built libnvxio.a library was removed from the package. Now the nvxio library is built from sources. - New command line argument parser was added to nvxio library. - New nvxio::Application::findLibraryFilePath method to load cascades installed with the library. - Updated installation paths to SoftCascade primitives' cascades: - /usr/share/visionworks/data/softcascade/car.xml - /usr/share/visionworks/data/softcascade/pedestrian.xml - Custom copy node in feature-based stitching sample was replaced by nvxCopyImageNode. - Feature tracker sample was updated with new RANSAC primitive. FIXED ISSUES - Maxwell GPU support was enabled on Desktop platforms. - Fixed access/commit methods for Image ROIs. - Fixed memory leak in Image ROIs. - Fixed NEAREST_NEIGHBOR interpolation in WarpAffine and WarpPerspective primitives. - Fixed a bug related to color conversion in Object tracker algorithm. - Fixed a deadlock in case of reentrant log callback. - Added graph auto-verification to vxProcessGraph. - Fixed Canny primitive for 5x5 and 7x7 gradient sizes. - Fixed Hough lines primitives failures in case of small input parameters. - Fixed CUDA primitives failures on misaligned input. - Fixed CUDA sign key removal after repo package removing. - Corrected graph dependency analysis with ROI. - Fixed EqualizeHistogram primitive on uniform image. - Corrected node removal and graph re-verification. - Fixes in the feature based stitching sample: - Some error messages have been fixed. - Fixed bug with one image as input. - Fixed bug with two simple similar images. - Fixed samples failures if the sample window is closed with the X button. - Fixed aspect ratio for scaled frames in nvxio::Render implementation. KNOWN ISSUES =================================================================================== Release 0.66 =================================================================================== SUPPORTED SOFTWARE - NVIDIA Vibrante 3.0 Alpha 2 and Alpha 3 Linux - OpenCV 2.4.9.1 - NVIDIA CUDA 6.5.14 - NVIDIA Tegra Linux Driver Package (L4T) 19.2 or 19.3 - OpenCV 2.4.9.1 - NVIDIA CUDA 6.0.42 - Ubuntu 12.04 x86_64 - OpenCV 2.4.9.1 - NVIDIA CUDA 6.0.37 - Ubuntu 14.04 x86_64 (internal only) - OpenCV 2.4.9.1 - NVIDIA CUDA 6.5.14 GENERAL In this preliminary VisionWorks release, the degree of maturity of the various framework functions differs. The following features and functions should be considered experimental in the current release. - Kernel object and the related API. - Delay object and the related API. Delays are also not yet supported for Convolution, Distribution, Remap and LUT data objects. - Parameter object and the related API. - The notion of a valid image region. - User defined structures. NEW FEATURES - RGBX format support in WarpAffine, WarpPerspective and Scale primitives. - Copy Image Primitive. - Output validation support for matrices. - The new panorama stitching sample. - RGB and gray-scale image format support in nvxio. - Render implementation from nvxio library now supports window scaling if the window does not fit in the display. CHANGES - Updates to find_homography and rotation_estimator modules. - Samples are split into 2 categories: samples and demos; feature_tracker, hough_transform, object_tracker, video_stabilizer pipelines were converted into demos. - All samples and demos were updated: - Command line parameters were brought to the common format. - Documentation was extended with pipelines explanation and graph diagrams. - Samples and demos are now compiled with C++11 standard (-std=c++0x flag). - opencv_npp_interop sample shows all images in a single window and reports performance information. - The default input source for denoising sample was changed to an image. - The hough_lines and hough_circles samples were merged into a single hough_transform demo: - The hough_transform demo demonstrates both pipelines on a single video. - The default input frame source was replaced with new video. - video_stabilizer demo updates: - Pipeline was optimized and made real-time. - Code was simplified, and unused delay and bi-directional parameters were removed. - The demo now shows both original and stabilized video. FIXED ISSUES - Fixed an issue in vxAllocateLUT. - Added check to vxCreateContext to verify that the system GPU is supported by the implementation. In case of error, NVX_ERROR_NO_CUDA_GPU or NVX_ERROR_UNSUPPORTED_CUDA_GPU error code is returned. - Fixed Delays aging (shifting was in the opposite order). - Fixed Delay usage in samples (only negative and zero indexes are used for delay slots). - Fixed several issues in HoughCircles primitive: - Incorrect behavior when minRadius == maxRadius. - Failures when the difference between maxRadius and minRadius is too large. - Fixed OpticalFlowPyrLK input validators, and checks that window size is in the range 3..32. - Fixed VectorImageToMatMapper from nvx_opencv_interop.hpp to work with arrays of 0 size. - Fixed vxProcessGraph error code loss when CUDA node fails. - Fixed several memory access issues in Color Convert primitive. - Fixed failures in HoughCircles CPU implementation when no circles are detected. - Fixed bug in sub-images created with vxCreateImageFromROI. - Fixed garbage on first frame in several samples. - Fixed failure in OpticalFlowPyrLK primitive when input keypoints array is empty. - Fixed HoughSegments input validators, and checks that rho parameter is not too large for the input resolution. KNOWN ISSUES - The API must not be considered as thread-safe. A vx_context object and its derived objects must be created and manipulated by a single thread. - Samples fail if some of the required command line parameters values are not set. - pedestrian_detection, slam and softcascade samples were removed from -dev and -docs packages. - Demos and samples do not support input sources with odd dimensions. - Desktop platforms (Ubuntu 12.04 x86_64 and Ubuntu 14.04 x86_64) support Kepler GPU generation only. =================================================================================== Release 0.62 =================================================================================== SUPPORTED SOFTWARE - NVIDIA Vibrante 3.0 Alpha 1 Linux - OpenCV 2.4.8.2 - NVIDIA CUDA 6.0.26 - NVIDIA Vibrante 3.0 Alpha 2 Linux - OpenCV 2.4.8.3 - NVIDIA CUDA 6.5.11 - NVIDIA Tegra Linux Driver Package (L4T) 19.2 - OpenCV 2.4.8.2 - NVIDIA CUDA 6.0.42 - Ubuntu 12.04 x86_64 - OpenCV 2.4.8.2 - NVIDIA CUDA 6.0.37 NEW FEATURES - Render implementation for nvxio library based on GLFW library with OpenGL and OpenGL ES support. - Kernels split on 3 targets: REF, CPU, CUDA. - Extension for delay simplification. =================================================================================== Release 0.60 =================================================================================== SUPPORTED SOFTWARE - NVIDIA Tegra Linux Driver Package (L4T) 19.2 - OpenCV 2.4.8.2 - NVIDIA CUDA 6.0.42 NEW FEATURES - Scharr3x3 Primitive. - HoughCircles Primitive and Sample. - FindHomography Primitive. - Feature-based Video Stabilization Sample. - Added nvx_point2f_t support to primitives that work with vx_keypoint_t (PyrLK Optical Flow, Corner Detectors, RANSAC, MedianFlow). User can choose whether to use nvx_point2f_t, which requires less memory and faster, or to use vx_keypoint_t, which is conformant with OpenVX and provides more information for feature (like orientation and scale). - Array object now can hold other Objects like Image, Array, Scalar, etc. - Added CMake configuration files to use VisionWorks from CMake-based projects. CHANGES - Soft Cascade Sample was renamed from nvx_sample_soft_cascade to nvx_sample_softcascade. - utility library that was used in samples was merged into nvxio library and removed. FIXED ISSUES - Fixed bug with wrong offset in vxAddArrayItems. - Fixed SLAM re-localization. - Fixed integral kernel on images with small size (less than 32 x 32). KNOWN ISSUES - NVIDIA Vibrante 3.0 Alpha 2 Linux is not supported in this release. - Only the documented subset of OpenVX API is supported. - Object Detector algorithm and sample is temporary disabled. - The samples don't work via ssh with X forwarding (ssh -X). - There is a bug in vxFormatArrayPointer and vxArrayItem macros - missing parentheses for arguments. The parentheses must be added explicitly in calling code - vxFormatArrayPointer(ptr, (index + 1), stride). =================================================================================== Release 0.42 =================================================================================== SUPPORTED SOFTWARE - NVIDIA Vibrante 3.0 Alpha 1 Linux - OpenCV 2.4.8.2 - NVIDIA CUDA 6.0.26 - NVIDIA Tegra Linux Driver Package (L4T) 19.2 - OpenCV 2.4.8.2 - NVIDIA CUDA 6.0.42 NEW FEATURES - Introduced separate classifier training tools package for Ubuntu x64 desktop, which will allow to train their own classifiers. - Added CUDA optimized implementation for the following primitives: - box3x3; - dilate3x3; - erode3x3; - gaussian3x3; - median3x3; - scale_image; - remap; - table_lookup; - mean_stddev; - min_max_loc; - histogram; - equalize_histogram; - convert_depth. - Added support for User Defined CUDA Kernels: - opencv_npp_interop sample was updated to show the usage of the feature. - Added new features support to Soft Cascade (HOG6MagGraySqr). CHANGES - Improved performance for the following primitives: - warp_affine; - warp_perspective. - Fixed and completed according to specification: - warp_affine: add not zero constant border mode support; - warp_perspective: add not zero constant border mode support; - sobel3x3 : add constant and replicate border modes, fixed out of width write for not a multiple of 4. - Updated OpenVX framework and primitives according to the latest Khronos specification: - removed vxCreateVirtualImageWithDimension function; - removed Target object; - switched magnitude output format to FOURCC_U16; - removed laplacian pyramids; - used vx_int32 type for Threshold attributes; - removed VX_INTERPOLATION_TYPE_AREA support from Warping Nodes; - replaced vx_meta_format_t struct with opaque vx_meta_format object; - switched accumulate output format to FOURCC_S16, used saturate overflow policy; - switched accumulate_square output format to FOURCC_S16, used saturate overflow policy; - switched accumulate_weighted output format to FOURCC_U8, used truncating rounding policy; - changed CUDA fast_corners to expect the threshold in the range 1-254; - restricted multiply's scale to be <= 1.0; - removed VX_SCALE_PYRAMID_DOUBLE; - updated custom_convolution implementation, now it is closer to the mathematical definition, where the matrix and the kernel are iterated over in opposite directions. - Updated input video files for the samples. FIXED ISSUES - Fixed imported image behavior: - do not synchronize internal buffers for imported images every time; - now user must explicitly use vxAccessImagePatch and vxCommitImagePatch functions to notify framework about changes in imported memory. - Fixed vxCreateContext behavior: - now it creates new context each call. - Fixed several issues in sample makefiles. KNOWN ISSES - Only the documented subset of OpenVX API is supported. - Object Detector algorithm and sample is temporary disabled. - The samples don't work via ssh with X forwarding (ssh -X). - There is a bug in vxFormatArrayPointer and vxArrayItem macros - missing parentheses for arguments. The parentheses must be added explicitly in calling code - vxFormatArrayPointer(ptr, (index + 1), stride). =================================================================================== Release 0.40 =================================================================================== SUPPORTED SOFTWARE - NVIDIA Vibrante 3.0 Alpha 1 Linux - OpenCV 2.4.8.2 - NVIDIA CUDA 6.0.40 - NVIDIA Tegra Linux Driver Package (L4T) 19.2 NEW FEATURES - Introduced OpenVX Graph Manager with CUDA acceleration support. - Added new opencv_npp_interop sample demonstrating how VisionWorks can be integrated with other libraries. - Added full support for Jetson TK1 with L4T. - RANSAC primitive. CHANGES - Refactored API and switched to the new OpenVX data types. Older API is fully deprecated. - Created a new sample framework, with much cleaner API for multimedia I/O that enables focusing on the processing code. - Added Unique Object Identifier to detected objects in ObjectDetectorPipeline. - Updated nvx::cuda::HOG API, returns array of Detection objects. - CUDA HOG optimization (2.5x speedup). FIXED ISSUES - Several memory leaks were fixed. KNOWN ISSUES - Only the documented subset of OpenVX API API is supported. - Object Detector algorithm and sample is temporary disabled. - Several minor fixes for nvx::cuda::cornerHarrisExt. - Fixed total FPS measurements in all demos. - Fixed mouse selection logic in object_tracker demos =================================================================================== Release 0.10 =================================================================================== Release for Vibrante pre-alpha2. NEW FEATURES - Object Detection pipeline for pedestrians and vehicles. - Debian packages for Vibrante. - Vibrante samples. FIXED ISSUES - Fix out-of-bounds read/write in nvx::cuda::cornerHarrisExt. - Fix IME types mismatch between arrays and textures.