News
ICL 6.10.0 Released
New General Features¶
- added Box-Plots upport to the PlotWidget
- applied some major changes to the default image visualization widget
- added fullscreen mode for single widget and an extra blue button for fullscreen (F11 works as well)
- added tooltips to the tiny blue widget buttons
- added tooltip to GUI compoenents (use @tooltip=text in your GUI definition)
- improved Kinect RGBD-Calibration tools
- replaced (wrong) homography based RGBD mapping with a more sophisticated projective geometry based mapping
- the new mapping works very well and seems to be comparable to the (unknown) open-NI RGBD-calibration method
- added performance optimizations (point-cloud creation + rgbd mappings takes less then 5ms)
- added a new SceneObject class called RGBDImageSceneObject (which will later use the already existent PointcloudSceneObject internally, but it will provide a much simpler and configurable interface)
- added triangle based rendering to the RGBDImageSceneObject class (quite slow still)
- added depthmap smoothing for better RGBD mapping
- added automatic IR-image shift to the Kinect grabber (which compensates for the hardware offset)
- added a new tool called icl-configurable-info, which can be used to list and inspect the properties of all classes that implement the Configurable-interface
- added a generic RANSAC implementation + demo-application for shape fitting
- moved ICLCore/Random.h to ICLUtils/Random.h
- added generic framework for direct least square model fitting (which was actually part of ICL some year ago in the ICLMEx package)
- extended the Scene's offscreen rendering method, so that it can also render the depth-buffer to simulate Kinect data
- added trylock to the Thread and Mutex class
- PylonGrabber based GIG-E camera support
- merged the development branch back to the trunk
- several optimizations and fixes
- added support for all image depth in the LocalThresholdOp class
- added new UnaryOp class that creates a color distance map: ColorDistanceOp
Important Changes to the Build System¶
- added (still experimental) support for building .deb packages using CMake /CPack
- try by using the debian-package.cfg configuration script. In the resulting build/debian-package/ directory, you can type 'cpack -G DEB' to create a debian package)
- completly re-implemented the dependeny tracking CMake code
- applied several fixes for linux-kernel 3.x support
- compiled ICL (with most dependencies) under Ubuntu 12.04 (beta1)
- in particular fixed the missing reference to pthread_atfork by finding out, that Intel IPP 6.1's libiomp is not compatible to the newest glibc. Instead, we now just suggest to use libiomp5.so from Intel IPP 7.0 (update 6) the new version of libiomp5 is already placed in our /vol/nivision/share/IPP/6.1/sharedlib directory
New Functions and Small Changes¶
- added SceneObject::clearAllPrimitives function
- added style presets to the PlotWidget class
- improved gui-component parsing now, the component string can also contains angular braces
- added linestrip and grid annotations to the PlotWidget class
- reimplemented the ICLWidget's histogram widget by using the new 2D PlotWidget
- accellerated 8u-histogram creation significantly
- added Color to the Common.h header
- added utlitiy method that allows for installing mouse-handler function directly to DataStore::Data instances
- added text(string,point) method to draw widget
- added new constructor to the UnaryCompare op, that allows for defining the comparison operation type as string (e.g. "<=")
Bug Fixes and internal changes¶
- fixed bug in Pylon Grabbers
- the documentation does now also show the icl-version number
- fixed GLImg::getColor(x,y)
- moved ProximityOp compilation into the HAVE_IPP section
- extended makefile system to only build a subset of examples
ICL 6.7.0 Released
New Features
- Added a very powerful 2D plotting/data visualization component for 1D and 2D data
- Added a full screen mode for all image-visualization and plot components (accessible by a new button or F11)
- Added tool-tips for the blue special buttons of ICLWidgets
- Added OpenCL dependency for
- Added normal estimation for 3D point clouds such as the Kinect 3D image (the OpenCL version is 2 magnitudes faster)
- Added point cloud class
- Added new features to the icl-rotate-image-3D tool
- Optimized marker 6D pose estimation by adding two iterative methods (brute force and simplex based optimization)
- Added a powerful "downhill simplex"-algorithm framework for iterative optimizations
- Reimplemented the FileGrabber class using the "pimpl" pattern
- Added FileGrabber option "loop", which can be set to false to grab all images only once
- Fundamentally restructured the ImageUndistortion classes
- Added built-in support to the GenericGrabber for image un-distortion
- Added a FileGrabber property "frame-index" that allows for random seek within the list of files
- Made SliderHandle and FSlider handle also provide information about their display component
- Added homography- and marker-based calibration for mapping of Kinects RGB and depth camera
- Added the MultiCamFiducialDetectorclass that allows Fiducial-Marker pose estimation from several cameras
- Completely reimplemented ICL's texture map engine, that is used to render images as OpenGL texture
- Complete redesign of the Primitive class for SceneObjects
- Added Shared Textures to the SceneObject class
- Added OpenGL smoothing options for lines, points and faces to the SceneObject class
- Made SceneObject locking more easy and transparent
New Experimental Features
- Made some progress with the Gigabit-Ethernet grabber implementation
Adaptions for the Build System
- Added post-install script that fixes group write permissions in the install path
- Fixed bug, that ICL did not compile if Qt is available, but OpenGL not
- Added configuration scripts for the continuous integration server
- Added the ICL-build version to the Doxygen title
Bug Fixes
- Fixed the bug that nothing was returned in the FiducialDetectorPluginART
- Fixed DynMatrix::solve, which does NOT necessarily need squared matrices
- Fixed bug in the V4L2 Grabber that did sometimes return NULL images after instantiation
- Fixed Homography2D that did not work for n != 4 points
- Fixed Memory Leak in the FileWriterPlugin
- Fixed property listing of the GenericGrabber
- Fixed some Properties in the FileGrabber that were not handled correctly
- Fixed bug, that -force-size option did not work in icl-cam-calib-2
- Fixed bug in CoplanarPointPoseEstimator that did not handle the reference frame correctly
- Fixed bug in PoseEstimator (an unexpected exception caused C++ to throw a std::bad_exception)
- Fixed color bug in SceneObject
ICL 6.3.2 released
ICL 6.xx¶
ICL 6.0.0 was introduced in May 2011. It came up with a whole new ICL-package called ICLMarkers. The new Marker package provides a very powerful marker detection framework, that is able to detect most common fiducial markers such as- ARToolkit markers
- ARToolkit+/Studierstube-tracker (BCH coded) markers
- Hierarchical libfidtrack markers (Amoeba and others)
- ICL's special marker types
Fundamental new Featuers¶
- new package ICLMarkers for detection of all common fiducial marker types.
- brand new Implementation for the KinectGrabber that does not support all kinect image types (even IR)
- added ProcessMonitor + GUI component 'ps' that allows to show process information in real time
- added a complete new camera calibration tool that allows for marker based calibration
- added icl-show-scene tool, that allows to visualize a scene and different camera views
- added an implementation of an LLM (local linear map) network (+examples)
- added simple to use, but powerful blur function to the ICLQuick package
- added a new class: TemplateTracker
- added PylonGrabber for Basler GIG-E cameras (still experimental)
- improved prog-arg based grabber instantiation: now you can e.g. call "icl-camviewer -i dc 800@property=value"
- improved the ICLProject makefile system: installed libraries are now make-targets
- added a virtual customRender() method to the scene Object class
- added V42L based grabber for USB-webcam image sources
- reimplemented the DynColVector and the DynRowVector class
Smaller advancements¶
- added Levenberg Marquard optimization (+example)
- added superquadric fitting
- restructured ICLGeom's CoordinateFrame-scene object
- added smoothing to the ColorSegmentationOp class interface
- added stepped sliders to the Configurable GUI
- added convex hull computation for Point32fs
- added 3D-image rotation tool
- added new cast-method to ImgBase (e.g. image->as8u() ...)
- added scene.getAllCameras()
- added a new feature to the ImageRectification class to disable automatic point ordering and checking
- added 3 more possible types to the Configurable interface (int, float and string)
- added DynMatrix::big_matrix_pinv(...)
- added execute_process to the Quick API
- added TextTable utility class
- made setPropertyValue and getPropertyValue of Configurable mutable exclusive using a Mutex instance
- added DynMatrix:: saveCSV and loadCSV
(important) Bug-fixes¶
- removed Mutex::Locker(mutex) from the GenericGrabbers destructor
- fixed SteppingRange io
- fixed png-reader for 4 channel (rgba) images
- fixed an issue in the ColorSegmentationOp class that caused problems when loading LUTs with 16Bit size
- fixed bug in DynMatrix multiplication
- fixed ConfigFile creation
- fixed typo in IconFactory
- fixed missing implementation of Scene::getDrawCoordinateFrameEnabled
- fixed combo-box creation in the Configurable - GUI
ICL 5.18.0 released
Additional Features and Improvements¶
- Adapted the SmartPtr and SmartArray classes to allow for better behavior with inherited types
- Added new undistortion handling, by now providing not only the simple undistortion model that was suggested by the ARToolkit guys, but also the much more sophisticated Matlab camera calibration toolkit model
- Added new helper scripts to facilitate build configuration. The new package does now
also provide a ./configure script that can be set up with a very simple configuration file - the former helper script scripts/icl-cmake.sh was renamed and is deprecated now
- Added several improvements to the KinectGrabber class
- Added an extra script called scripts/config-generator.sh that creates build-directories for several common dependency configurations (all dependencies, no dependencies, all except each dependency and each dependency alone)
- Added new Configurable property type called 'flag'. Flags represent boolean values and are translated to checkboxes in the Configurable-GUI component
- Added native support for writing and loading png-images even without ImageMagick
based on libpng.so and png.h (therefore libpng became a new optional dependency) - added the global extract_euler_angle function to FixedMatrix.h that allows to extract
euler angles from a given NxM rotation matrix (N>2 and M>2)
Bugfixes¶
- Fixed include statement in CC.h
- Several fixes in the build-system and CMake files for several dependency configurations
- Fixed issue, that ICLQt was built even without having OpenGL
- Fixed static initialization issue for the ImageMagick wrapper for file loading and saving
- Fixed check-box to string and back GUI-assignment operators
- Fixed bug in Configurable: addChildConfigurable does now only add those properties from the child, that are not deactivated
ICL 5.17.0 release
The new version of ICL provides the following features and bug fixes:
New Features- Added extra makefile variable ARCHITECTURE_DEPENDENT_BUILD. The build uses g++'s '-march=native' only if this is explicitly set to TRUE
- Added 'visible'-flag to the SceneObject class (this can be used to hide/show SceneObject instances)
- Replaced former SimpleMatrix<T> class by a new class called Array2D that provides the same features, but uses a more intuitive interface and row-major memory layout
- Added new GUI components for forcing certain image parameters when images are published using the built-in gui-tab 'capture'
- extended console-progress methods
- added -rotate to the 'icl-convert' tool
- added built-in superquadrics visualization (SceneObject can now also be superquadrics)
- applied some fundamental changes in the Grabber class
- removed former desired-params related methods
- restructured the way images are created
- replaced const ImgBase*grabUD(ImgBase**dst) by const ImgBase*acquireImage()
- acquireImage does no longer have to care about desired parameters -> it only creates a new image
- the Grabber's grab()-method does now care automatically for using desired parameters
- The user can also choose to use only one or two of the desired parameters rather than
all or none of them
Bug fixes
- desired parameters are now set using template methods (T can be depth, format and Size)
- void useDesired<T>(const T&)
- void ignoreDesired<T>()
- T getDesired<T>() const
- bool desiredUsed<T>() const
- Fixed canny edge detector
- Fixed copy constructor in ButtonHandle class
- some makefile dependent fixes regarding GLX support
- Fixed transparency issues in the scene class
- Fixed SceneObject::setColor bug
- some code cleanup in the Widget class
- Added some heuristics to enhance the robustness for exporting image from the GUI tab 'capture'
- fixed non-gui mode of icl-pipe
- some fixed in the documentation's style.css
- fixed throw-list in the PoseEstimator class (the list was not complete, which sometimes caused std::bad_exceptions)
- some OSX-build related fixes
ICL 5.16.0 released
The new version of ICL provides the following features and bug fixes:
Features:- New class called Hit that represents Intersections between SceneObjects and ViewRays
- Optimized scene- object picking including methods to get all objects that are intersected by a given view ray
- New method to render use an ICL-image as OpenGL texture, that is put on a quad
- Added scalable text visualization to the DrawWidget class (negative text sizes now indicate that the text size is given in image-pixels instead of in screen pixels. Therefore the text size is scaled in zoom mode)
- Added static methods Any::ptr to encode/decode pointers as instances of type Any
- Added direct pointer assignment methods to the SmatrPtr and SmartArray classes
- Fixed Scene's off-screen rendering mechanism, that now works on most Linux machines
- Several fixed and optimizations for object picking
- fixes in the makefile system regarding libfreenect and GLX support
- Textures are not illuminated correctly
- Bug fixes in the ConfigFile class (now entries can be overwritten correctly)
- Fixed 2 serious bugs in the Camera's ViewRay computation
- Several further bug fixes regarding GLX-support
ICL 5.15.0 released
The new version of ICL comes up with the following new features:
- added new property to DCGrabber
- added basic Mac-OSX Support
- minor improvements in icl-pipe
- extened ICLGeom's Scene and SceneObject class in order to provide a scene graph implementation
- applied some major improvements to the camera calibration tool icl-cam-calib (cameras can now be calibrated without a calibration object by manually associating world coordinates to image points
- replaced ICLGeoms fallback ImgQ-rendering pipeline by a much more sophisticated rendering method that uses hardware accelerated off-screen rendering
- changed the SceneObjects normal storage
- added lights to the Scene class (these can be used to defined OpenGL light-properties)
- removed redundant methods for setting the default view-port in instances of ICLWidget and it's subclasses (the new method is called setViewPort)
- Added linear-interpolating index-operator to the Channel-class template
- Added a method to specify DC-Cameras by their unique model ID
- Added a method to pick objects in Scenes
Bug fixes:
- fixed initialization of the CamCfgWidget's components
- added some 64bit fixes
- reimplemented libfreenect wrapper by using libfreenect's C-interface
ICL 5.12.0 released (101 comments)
Version 5.11.0 was a frequently changed developmental version. The new stable version is 5.12.0.
The new version of ICL comes up with the following new features:- Added a Function<..>-template that will be integrated as common callback type. The function template can wrap global functions as well as member functions.
- Extended the ICLGeom:ViewRay class (which now provides methods to compute distances to 3D-points and other ViewRays).
- added very basic support templates sqr -> power of two and power<exponent>
- Fundamentally improved ICL's camera calibration tool icl-cam-calib
- simplified GUI
- cleaned up interface
- modularized implementation (added extra classes CalibrationObject and CalibrationGrid)
- added manual mode that can be used to define the reference points using mouse
- added a quite useful utility class that implements the default mouse event handler. The DefineRectanglesMouseHandler can be used to define a set of rectangles (e.g. an image ROI) as an image overlay
- Added an implementation of the ICP (Iterative Closest Point) Algorithm
- Added an implementation of KD-Trees (used in ICP, but also available as utility class that is integrated with ICL's DynMatrix class)
- Updated the way camera-instances are visualized in Scenes (we now use a more or less schematic view that visualizes a part of the cameras view frustum)
- Added a new utility class called icl::Any. Instances of this class can be created from everything, and they can be casted to anything
- added a very useful method to the Grabber::interface that provides a mechanism to automatically adapt result images
- Added support for ICL's Kinect Device. The color camera can be accessed by using the GenericGrabber parameters 'kinectc DEVICE_ID' the depth cameras with 'kinectd DEVICE_ID'.
- Replaced ICL's selfmade XML-parser by a pugi-XML-based version
- Added PseudoColorConverter class to the ICLCC package
- Added global utility-functions openFileDialog and closeFileDialog to the ICLQuick header (of course this is only available with Qt-Support)
- Added an interface to set a cameras near-clipping plane to values even shorter than the Cameras focal length
- Optimized ICL's ICLProject makefile system (note: you can create an ICL-Project makefile tree using icl-create-project ProjectName)
- added install lists for targets that have to be installed to bin and etc
- enabled local linking for the development tree and global linking for the installed version. By this means, you'll no longer have to call 'make installlink' before you can run your local applications'
- Added a GUI compoment called "color()" color compoments can be used to define a color at runtime internally using a pop-uped QColorDialog instance
- Added a new and very powerful interface called Configurable. Configurable instances have a string-based interface for internal properties that allows for automatic creation of corresponding GUI-components.
Bug-fixes
- A Configurables GUI can be embedded using the new "prop(..)"-GUI-component
- fixed icl-pipe that could not be build without Qt before
- fixed some build-issues with OpenCV
- added post-install build-target to adapt the installation trees write permissions to group-writable
- OpenCVCamGrabber now uses desired parameters
- Many minor fixes in the makefile system
- A lot of further minor fixes
ICL 5.10.0 released
The new version comes up with the following major changes:
- Full integration of Carsten Schürmanns Myrmex tactile device
(simply use icl-camviewer -input myr 0 to grab images) - new embedded GUI component 'color' that can be used to conveniently
choose a color at runtime - new lookup-table function 'lut' was directly integrated into the Img<T>
template class - new PseudoColorConverter class was added to the ICLCC package
- fixed overlayed rendering of rectangles
(these were shifted by dx=dy=0.5 pixels before) - fixed some documentation issues
- fixed problem with icl-create-project script in particular, when the script
is called with the --update option - further minor fixes
ICL 5.9.0 released
This version comes up with several bug fixes and and a new powerful Configurable interface. Configurable-instances can easily be linked to automatically created GUI components.
Also available in: Atom