Fetching contributors…
Cannot retrieve contributors at this time
638 lines (529 sloc) 26 KB
*** RELEASE 2.2.0, 12 MAY 2011 ***
- Fix theoretical static destruction race in Thread
- Add a hook for more extensible exceptions
- Remove the Exception(string) constructor (use Exception() << )
- Add a stderr warning if debug logging is turned on
- Move the singleton-dependent functions (vw_log, vw_settings, etc) into a new
System.h header
- Fix bugs in TypeDeduction related to non-standard types (_int64, long long,
long double) and char
- Make warnings and errors go to console by default
- Add a TemporaryFile iostream subclass
- Change default tile size to render at 256 px
- Fix cases where LAPACK errors would not be detected
- Fix handling of const Vectors and Matrices
- Add LU decomposition via the Math object LUD
- Add floor, ceil, polyval, sin, cos, tan, asin, acos, atan, and sqrt operations to Vectors
- Remove reference access to Quaternions (it violated the c++ spec)
- Split ImageResource interface into read-only and write-only interfaces. See
comments in ImageResource.h
- Modify many interfaces to use only the necessary subset of ImageResource
- Add an ImageResourceStream class that wraps streams
- Add IsFloatingPointIndexable support to the PixelAccessors
- Catch unrealistically-large image sizes earlier in set_size, before it risks
taking down your computer
- Overload == and << for ImageViews, and add a const_iterator
- Make premultiply a property of ImageFormat instead of ImageBuffer
- Change RotateTransform to require the axis of rotation
- Add ImageChannelType, a trait to get the channel type of an image (short
version of PixelChannelType<T::pixel_type>::type)
- Add square() operation for ImageViews and Pixels
- Fix normalize_retain_alpha to avoid value overflow
- Port DiskImageResource to new ImageResource API
- Add a new class of in-memory image encoding & decoding, MemoryImageResource
- Clean up DiskImageView's constructor proliferation
- Fix a logic inversion in GeoReference
- Fix OrthoImageView, allowing floating and integer access methods
- Add std::string constructor to Datum to allow construction on standard names
- Speed up CameraBBox
- Restore read support for the old-style TSAI binary camera format
- Add CAHVORE Model
- Replace linearize_camera calls to use Vector2i
- Add write() to CAHV Model
- Refactor to move more code from image2qtree
- Simplify pointer handling
- Change BA Reporter to require models to provide error functors
- Drop AdjustRobustSparseKGCP
- Fix VWIP writing to make sure they can be shared between 32- and 64-bit
- Add optional support for FLANN, a faster nearest-neighbor. If available, it
replaces KD-Tree in ipmatch
- Optimize Bayes EM subpixel code. (collapse loops, precompute consts, store
reused computations, remove unused code, remove FP underflows, etc)
- Moved research stereo code into CorrelateResearch.*
- Allow StereoView to solve for 1-D maps
- Remove unused, unexported functions
- Add mask checking to CorrelatorView
- Improve box_filter to avoid excessing copying
- image2qtree: kml fixes
- image2qtree: make google maps generation work again
- image2qtree: refactor option handling
- Add many more test utilities
- Finally kill off cxxtest, only gtest remains
- Upgrade to gtest 1.6.0
- More windows compat fixes
- Fix warnings with autoconf 2.68
- Fix many conversion warnings
- Change most indexes to (s)?size_t instead of int (except for image)
*** RELEASE 2.1.0, 1 SEPTEMBER 2010 ***
- Add hit/miss/evict data collection for Cache
- Change CacheLine::value() to also take shared_ptrs
- Fix Log::add to use the given RuleSet (bug reported by Rodrigo Benenson)
- Fix some multithread bugs in logging code
- Add abs overloads for Matrix and Vector
- Add CDF Accumulator support for arbitrary quantile count and stddev approx
- Fix a possible infinite loop in ConjugateGradient
- Fix lapack use on osx 64-bit
- Fix VectorTranspose assignment to MatrixRow
- Remove incomplete Fundamental Matrix solver in favor of new one in Camera
- Add a config setting (write_pool) for thread pool size for io-blocked threads
- Add an ImageResource for OpenCV's cv::Mat
- Add non-in-place pixel accessors
- Add PerPixelIndexView as an abstraction for pure-functional views
- Add remap_pixel_value which... remaps pixel values!
- Fix assignment to select_(col|row)
- Fix is_opaque to return true iff every channel is completely opaque
- Fix many bugs related to PixelMask math operations
- Replace BlobIndex class with blob_index function
- Fix DiskImageResourceJPEG's error-handling to avoid setjmp
- Fix DiskImageResourcePNG's error-handling to avoid setjmp
- Fix DiskImageResourcePNG to write data on write() rather than destructor
- Fix minor windows incompatibility (unlink)
- Fix DiskImageResourcePNG distructor to not throw
- Fix DiskImageResourceGDAL to use vw::Log for message-handling
- Fix nonexistent and invalid file-handling for all DiskImageResources
- Refactor quite a bit
- Add accessor for PinholeModel's camera matrix
- Add Adjustable Tsai lens distortion model
- Add Brown-Conrady lens distortion model
- Add Fundamental Matrix 8p solver
- Add Fundamental Matrix ML solver
- Add new EXIF tag names to spec, and make it an enum
- Change IO to use protocol buffers instead of a custom binary format
- Refactor PinholeModel and CameraModel for more model types
- Fix polar singularity issues by drawing an X across the pole
- Fix read_georeference to return a bool about success
- Improve memory use with iterators instead of copies
- Refactor Descriptor
- ba_test: fix brokeness with boost filesystem 1.36
- grassfirealpha: many improvements
- image2qtree: support arbitrary spherical datums
- image2qtree: allow user-override of georeference info
- ipalign: improve defaults, allow saving of intermediates
- ipfind: improve defaults
- Use boost::noncopyable instead of the private copy constructor idiom
- Fix gccisms for clang++
- Many more tests
- Remove TestInstantiate stuff (cool experiment, but too fragile)
- Switch from libtool's -version-info to -release numbering. Binary
compatibility is Too Hard.
*** RELEASE 2.0.0, 7 APRIL 2010 ***
- Add Stopwatch ability to pull CPU time or Calendar time.
- Add name() method to VW exceptions to stringify the exception type.
- Add general.tmp_directory config file key.
- Fix mutex lock inside Condition::timed_wait().
- Add concurrent-safe queue class (ThreadQueue).
- Remove TerminationHandler, it was really fragile.
- Change Warning/ErrorMessage behavior; they prepend "Warning: " or "Error: "
- Change ProgressBars to use a *.progress log namespace.
- Change ProgressBars to enforce 80-char width.
- Change values of ErrorMessage and InfoMessage, swapping them back to the
beta1 way.
- Change vwrc log filters to support limited wildcarding.
- Extend AffineFittingFunctor, SimilarityFittingFunctor,
TranslationRotationFittingFunctor, and TranslationFittingFunctor to work in
- Add Homogeneous error metric.
- Add CDFAccumulator.
- Rename SparseSkylineMatrix to MatrixSparseSkyline.
- Change MatrixSparseSkyline to inherit from MatrixBase.
- Add VectorReorganize and MatrixReorganize to re-map indices.
- Add Cuthill McKee ordering algorithm for MatrixSparseSkyline.
- Add Fundamental Matrix solvers.
- Rename Null to Nullspace.
- Add Rank and Nullity matrix operations.
- Fix excessive logging inside LevenbergMarquardt; improves speed.
- Add function to convert XYZ Euler angles to quaternions.
- Fix rounding bug with premultipliying (bugfix from William Rucklidge)
- Add alpha_to_mask() function.
- Fix PixelWithAlpha to properly noop if input already has an alpha channel.
- Add DiskCacheImageView constructor parameter to choose the cache directory.
- Change DiskImageResourceGDAL to turn on LZW compression by default for
- Remove obsolete/broken JP2.h code.
- Add DiskImageResourceGDAL::set_gdal_cache_size to set GDAL's internal cache
- Fix incorrect rotation inside AdjustCameraModel.
- Add PinholeModel method to set camera projection matrix.
- Add CameraMatrix fitting functor that attempts to solve for camera
projection matrix.
- Move Bundle Adjustment code from Camera into its own module.
- Add timers for internal functions; see loglevel DebugMessage namespace "ba".
- Add RobustSparseKGCP, a robust BA that doesn't deweight Ground Control
- Add Camera Relation Network, a new perspective of Control Network. Allows
for a Camera major organization.
- Add efficient ControlNetworkLoader.
- Refactor Sparse Bundle Adjustment to reduce speed by half and to build
sparse matrix more efficiently.
- Fix CameraBBox to work with meters per pixel on projection plane.
- Add D_MOON and D_MARS datums as well known datums.
- Add Gigapan viewer support inside image2qtree.
- Change EM subpixel to switch between Newton method and Gauss-Newton for
speed improvements.
- Add valid_pad technique that minimizes the cuts into the disparity that
happen from the pyramid correlator.
- Add Disparity Transform; it transforms an image by using a Disparity Map.
- Add Scaled Gradient Descriptor, a new custom and fast descriptor.
- Add OBALoG detector code with help from KSU.
- Add BoxFilterView which allows for arbitrary box filter application.
- Add IntegralDescriptor type for descriptors that use Integral Images.
- Add Scaled Gradient Descriptor 2, which is a simple descriptor that uses
Integral Images for calculation.
- ipfind: culling fix for threaded detection.
- ipfind: add gain setting as standard interface to all algorithms'
- correlate: modify to mimic Ames Stereo Pipeline's stereo.
- colormap: Fix nodata value detection.
- grassfirealpha: new tool that provides a grassfire image in the alpha
- all: accept -h as an alternative to --help.
- Add dependency on Boost Graph library.
- Switch a large number of tests to use Google Test.
- Enable silent build (use --disable-silent-rules or make V=1 to revert).
- Disable static libraries by default (use --enable-static to revert)
- Rework Boost detection. Again. Ad infinitum?
- Add support for autoconf 2.65.
- Fix support for really old autoconf.
- Fix TIFF-inside-GDAL detection.
- Add support for enabling Google perftools' tcmalloc and libprofiler.
- Many FreeBSD fixes. VW should compile on FreeBSD now thanks to Steve Wills!
- Add experimental GDB 7.0+ python-based pretty printers for select VW types.
- Compiler warning fixes throughout the tree.
- Some functions that the comments marked as deprecated will also throw
compiler warnings now if you use them.
*** RELEASE 2.0_beta4, 26 OCTOBER 2009 ***
- Fix config file parser to compile on boost 1.32.
- Fix scattered tile size options by centralizing into vw::Settings.
- Fix discrepancy in cache_size settings about whether the value is MB or B.
- Fix (unlikely) threading issue in ThreadPool's notify().
- Add a "set_ones" method for matrices, much like matlab's.
- Add a min()/max() method for Vector & Matrix.
- Add function to solve for nullspace of a Matrix (with LAPACK).
- Fix to perform correct homography fitting in RANSAC.
- Add create_mask support for scalar pixel ranges.
- Fix convolution error on multi-plane images.
- Add blob_index for identifying connected blobs.
- Fix to allow Pixel math operations to work properly on PixelMask'd images.
- Add intersect and union for PixelMask.
- Fix several of the Statistics.h functions.
- Fix bug where raster queue in block write would get way ahead of writing
queue, resulting in huge memory use.
- Add support for PBM/PGM/PPM-format files (All but P4 is currently supported).
- Add helper code for writing KML.
- Fix singular iterator in OpenEXR code.
- Add KAKADU support if GDAL supports it.
- Fix compilation on very old versions of Boost.
- Large refactor of bundle adjustment code to encapsulate various adjustment
- Fix to make sure calibration code runs the requested number if iterations.
- Fix nasty problem causing infinite-loop mis-compilations.
- Change api for control network reading/writing.
- Fix bad bug where UTM zones far from poles could cause transformation
- Fix so GDAL access is thread-safe.
- Fix bug around poles in ToastTransform.
- Added TranslationFunctor.
- Removed PixelDisparity<>. Replacement is PixelMask<Vector2f>. See comments in
DisparityMap.h for help in porting.
- Fixed row/col swap bug that affected linescan images.
- Fixes so correlators are more resilient with images larger than memory.
- Fix problem with EM SubPixel correlator injecting noise.
- Re-numbered stereo correlators (see SubPixel.h).
- Added experimental, rather slow but accurate, gamma-distribution-based EM
SubPixel correlator.
- colormap: Add support for standard Moon/Mars ranges.
- slopemap: New tool for generating slope maps.
- image2qtree: Fix to allow negative UTM override.
- image2qtree: Fix bad bug where UTM zones far from poles could cause
transformation failures.
- Many: Move default tile size option into vw::Settings.
- contourgen: new tool for generating SVG contour maps.
- ipfind & ipmatch: Make more resilient with large images.
- configure will now error if you specifically ask for a module or tool and
that tool is missing dependencies.
- Minor enhancements (ccache, profile, fat binaries, rpath).
- Disable strict aliasing by default, to work around (old, fixed) compiler
- Began switching to Google Test framework. Core and Math are converted.
- Make Boost detection more robust.
- Fix build on systems where /bin/sh is dash.
- Support autoconf-2.64.
*** RELEASE 2.0_beta3, 03 JUNE 2009 ***
- Fix multi-thread bug related to vw_log()
- Merged Logconf into Settings class
- Simplify the config file handling by switching to an INI-syntax
- Added a new version of edge_mask() that allows you to pick the mask value
- Added sparse image support (SparseImageCheck, sparse_check())
- Added the ability to specify some buffer around the edge mask.
- Make the convolution filters properly clamp integer pixels.
- Add an is_transparent() function for images
- Added support in ImageResource for nodata values.
- Fix some metadata handling bug in DiskImageResourcePNG
- Make png writer pick a better bit depth for 16-bit types
- Fixed an endianness bug for reading/writing 16-bit PNG files on little
endian architectures.
- Many improvements to Bundle Adjustment
- Speed
- KML Ground Control Point output has much more information and better
- TIFF EXIF tags are read by mmaping rather than reading the whole file
- Expose more aspects of QuadTreeGenerator to configuration/override.
- Added TOAST QuadTreeGenerator support
- Added full sparse image support to ImageComposite.
- Added a ToastTransform transform functor to convert between a standard
georeferenced image and a TOAST-projected image.
- Added a constructor for PixelDisparity that allows it to be used with
interpolation code.
- Many improvements in BayesEM correlator
- Switched upsample_disparity_map() to use bilinear interpolation instead of
nearest neighbor
- Fixed some bugs in the upsampling and downsampling of the disparity map
- image2qtree bugfixes
- Added an image2toast converter
- Allow manual override of total resolution in image2qtree.
- Fix a bug in AX_GROUP_PKG that might cause breakage
- Bash 4.0 doesn't include . in the "source" search path
- Make out-of-tree builds work
*** RELEASE 2.0.alpha4, 15 JANUARY 2008 ***
This release features many improvements to the primitives found in the
Core module of the Vision Workbench.
In particular, we have improved the generic threading interface by
adding a Condition class and a static method, Thread::id(), which
returns a globally unique ID for the current thread. We have also
added a new WorkQueue class for managing thread pools. You may want
to try out multithreaded image rasterization if you have a multicore
machine. The block_rasterize() and block_write_image() functions can
help you get started!
This release also features the debut of a thread-safe logging
subsystem. This functionality has been a long time in coming, and it
greatly improves the ability to print debugging and status information
to the user's console or to one or more files on disk. You can read
the new chapter in the Vision Workbook titled "Core Module" to learn
all about it.
IMPORTANT NOTE: This logging system is not yet windows compatible --
we do not recommend that you upgrade to 2.0alpha4 if you are currently
developing on windows unless you want to patch the Log.{cc,h} files to
replace POSIX functionality with the Windows equivalents.
These can be used if you need to augment the PixelFormatID<> type
traits class so that you can save an unusual or custom pixel type to
an image file.
Added better detection of the OpenEXR libraries, especially for
version 1.5 and above.
Improved detection of LAPACK libraries and fixed a bug in the m4
macros that appeared with certain versions of autotools.
Added a rate-limiting feature to the TerminalProgressCallback() that
eliminates redundant stream output that can negatively impact
performance on a slow terminal.
Optimized the GeoTransform object in cases where source and
destination transform are the same.
You can now have arbitrarily many DiskImageResourceGDAL's open thanks
to a new internal system for caching open file descriptors.
Added a new colorspace: Luv
Fixed compatibility problems with Automake 1.10 which was causing
problems on MacOS 10.5.
Eliminated many compiler warnings that appear when you compile with
Added a chapter to the Vision Workbook(!): Core Module
Moved the KDTree class from the InterestPoint module to the Math
Fixed a tricky edge condition in the ReflectEdgeExtension that would
sometimes cause a segfault.
*** RELEASE 2.0.alpha3, 9 NOVEMBER 2007 ***
This release introduces the InterestPoint module, which provides tools
to locate point features in images that can be use for image alignment,
matching, or tracking. We use it for things like grossly aligning images
prior to dense stereo correlation with the Stereo module, or aligning
images of a panorama prior to blending with the Mosaic module. This
release includes tools for detecting interest points as peaks in
Laplacian or Harris operator spaces, and for extracting scaled, oriented
image patches around peaks for identification. Still to come are
PCA-based interest point descriptors (i.e. feature vectors) and a fast
KD-tree-based interest point matching system.
Updated the configuration and build system to support recent versions
of the OpenEXR file IO library and building the GPU module using the
Apple OpenGL frameworks on OS X. Leopard support not yet tested.
Added row(), col(), and plane() methods to PixelIterator.
Added some more methods for querying SDS metadata in HDF files.
Added limited support for reading palette-based images via GDAL.
Fixed some corner cases in the image interpolation code.
Added pixel_format_name() and channel_type_name() for debugging output.
A handful of other minor tweaks/fixes.
*** RELEASE 2.0.alpha2, 22 OCTOBER 2007 ***
This release primarily fixes a critical bug in the handling of GeoTIFFs
that prevents loading of georeference information in many cases.
Added a CylindricalEdgeExtension type to simplify working with global
maps in cylindrical projections: it applies periodic edge extension in
the x-axis and constant edge extension in the y-axis.
A handful of other minor tweaks/fixes.
*** RELEASE 2.0.alpha1, 18 OCTOBER 2007 ***
So many little things have changed or been added that it is hard to
know where to begin. Real documentation will be forthcoming during
the beta period. More will become apparent in forthcoming alpha
relases, too. We'll focus on a few big-ticket items here.
Added the Stereo module, which performs dense stereo correlation on pairs
of images using a fast sum-of-absolute-difference technique. See the example program for a few examples of how it can be used.
Added the GPU module, which supports performing many image processing
operations directly on the GPU. Docs and examples coming soon.
Greatly enhanced the options for handling very large images. For
large images in memory, multi-thread your image processing operations
using the new block_rasterize() function. For extremely large images
on disk, "read" them in using a DiskImageView, "process" them lazily
using ImageViewRef for any necessary intermediates, and write the
result to disk using write_image().
Greatly improved camera response curve calibration in the HDR module.
The command-line tools hdr_merge and hdr_tonemap work well in many
cases now.
Added support for orthorectifiying an aerial or satellite image if you
have a traditional camera model and (optionally) a suitable DEM. See
OrthoImageView.h and its companion helper file CameraBBox.h in the
Cartography module.
*** RELEASE 1.0.1, 2 FEBRUARY 2007 ***
Renamed the *EdgeExtend classes and header files to *EdgeExtension,
for grammatical consistency.
Minor bugfixes and improvements to PNG, TIFF, and PDS file I/O,
georeferencing, image compositing and quad-tree generation, the CAHVOR
camera model, image transformations, the interpolation views, and the
Vision Workbook.
Added the ImageResource base class to support generalized image I/O.
Renamed GenericImageFormat and GenericImageBuffer to ImageFormat and
ImageBuffer. Added ImageResourceView to support view-based operations
on general resources. Reworked the DiskImageResource and
DiskImageView subsystem accordingly.
Added support for user-supplied error handlers to be called in place
of the usual exception-throwing. If the Vision Workbench is
configured with exceptions disabled, the default handler prints the
error text and calls abort().
Added the ability to generate KML "super-overlays" to the quad- tree
generator in the Mosaic module, and added an example command-line tool
called "image2kml". (Depends on the Cartography module, and therefore
requires PROJ.4 and GDAL. See the README file for more info.)
Added the Nelder-Mead optimization algorithm.
Removed dependence of the Math code on Boost's uBLAS, whose excessive
template complexity was causing problems on some platforms.
Added camera_transform(), camera_linearize_transform(), and
identiy_matrix() convenience functions, as well as overloads to
translate() for fast integer-offset translations.
Added a generic pinhole camera model including Tsai lens distortion
support to the Camera module.
Some versions of LAPACK appear to return eigenvalues/vectors in a
different order than others, which confuses the unit test fo eigen()
right now. If you see this error, do not worry about it.
On some platforms the Vision Workbench appears to behave strangely
when compiled with optimization turned off. This is probably a bad
idea anyway, since the Vision Workbench relies on function inlining
for reasonable performance.
Under some unknown circumstances the Cache system appears to get
confused about how many resources are in use and may produce
unexpected warning messages or exhibit suboptimal cacheing behavior,
though it does not appear to leak memory or resources.
*** RELEASE 1.0.0, 4 DECEMBER 2006 ***
There are doubtless more issues than these, but these are the one's
we're aware of at this time!
Some parts of the code are more mature than others. In particular
the Cartography module is likely to undergo a major overhaul in the
near future, so don't get to tied down to its current interface.
We are more hopeful that we will be able to maintain nearly complete
backwards compatability in the other modules.
Only the Core, Image, and to a lesser extend Math modules have
reasonably complete unit and regression testing in place.
Support for alpha channels is vague in some places. The current
pixel math schema makes linear interpolation of pixel data (e.g.
gaussian filtering or image transformations) easy while making
other image math (e.g. gamma correction) harder. Other things,
such as the image statistics code, may be horribly confused by
images with alpha channels.
ConvolutionView and SeparableConvolutionView, used internally by
many of the filter functions, may produce unexpected behavior when
used to filter views that are already edge-extended. A workaround
is to rasterize your source image, including sufficient edge context,
into a temporary ImageView buffer prior to filtering.
CropView, used internally by the crop() function among other places,
does not properly support floating-point offsets in all cases
(notably when its rasterization function is in charge).
The ExifView in the Camera module does not report when a requested
field is missing.
Many features of individual image file formats are not supported.
For example, PNG files with fewer than 8 bits per channel are not
supported. The TIFF image reader does not take advantage of
colorimetric information included in the file when deducing the
file's pixel type.
Much of the code has not been properly tested under Windows/MSVC.
The Matrix outer product functions are disabled on that platform
due to compiler issues.
The Vision Workbench does not compile under Debian Linux with the
Debian packages for boost and LAPACK. We recommend installing boost
from source and installing LAPACK from the pre-packaged distribution
available on the Vision Workbench web site.