version 1.0

 - First release

version 2.1
 - Introduction of configure options
	--with-fann (when FANN is installed, needed for pkclassify_nn)
	--with-las (when LIBLAS is installed, needed for pklas2img)
 - Introduction of new utilities, now includes:
	pkascii2img
	pkclassify_nn
	pkcreatect
	pkcrop
	pkdiff
	pkdumpimg
	pkdumpogr
	pkegcs
	pkextract
	pkfillnodata
	pkfilter
	pkgetmask
	pkinfo
	pklas2img
	pkmosaic
	pkndvi
	pkpolygonize
	pkreclass
	pksetmask
	pksieve
	pkstat
	pkstatogr
version 2.2
	bug fixes
version 2.3
	bug fixes
version 2.4
 - configure.ac
	gdal 1.8 required for pkextract (member function Centroid in OGRMultiPolygon)
	New configure options (--enable instead of --with)
	--enable-fann (when FANN is installed, needed for pkclassify_nn)
	--enable-las (when LIBLAS is installed, needed for pklas2img)
	--enable-nlopt (when NLOPT is installed, needed for pksensormodel and pkgetchandelier)
 - OptFactory.h (added)
	factory class for nlopt::opt (selecting algorithm via string)
 - OptionPk
	changed layout of help info to Markdown format as input for Doxygen
 - Filter2d
	support filtering of matrix (doit with Vector2d arguments) (to create DTM according to P. Bunting)
 - FileReaderLas
	support class filters
 - ImgReaderGdal.h
	support of polygons in readData
 - ImgReaderGdal.cc
	in addition to internal setNoData member variable, also support GDALSetNoData
 - ImgWriterGdal.cc
	in addition to internal setNoData member variable, also support GDALSetNoData
 - ImgWriterOGR.h
	renamed ascii2shape to ascii2ogr, support csv file in ascii2ogr
 - ImgWriterOgr.cc
	renamed ascii2shape to ascii2ogr, support csv file in ascii2ogr
 - pkcrop
	changed default option for color table to empty vector
 - pkinfo
	support of nodata value when calculating histogram and image statistics
	options min and max are now set with -min (--min) and -max (--max)
	option min and max now per default empty and can be set individually for calculating histogram
	segmentation fault with option -ct if no color table was defined
	default value of x_opt empty (no longer -1 to read entire line)
 - pkfilter
	bug solved in update of progress bar
	support of standard deviation
	default empty classes
	bug solved in down option: spatial resolution was not stored properly
	directional morphological filtering now supports multiple angles
 - pkgetmask
	options min and max are now set with -min (--min) and -max (--max)
 - pkstatogr
	options min and max are now set with -min (--min) and -max (--max)
 - pkclassify_svm
	do not output input file if no input data was defined in verbose mode
	update of header information
	adding some short options
	support of polygon ogr input file
 - pkclassify_nn
	support of cross validation
	adding some short options
 - pkfs_svm (added)
	feature selection utility for svm classification
 - pkfs_nn (added)
	feature selection utility for nn classification
 - pkopt_svm (added)
	optimization utility for svm classification (optimize ccost and gamma using NLOPT)
 - pkascii2ogr
	utility to create simple vector files from coordinates in ASCII file (points or polygon)
 - pksensormodel
	utility to model pushbroom sensor (with optimization of boresight angles using NLOPT)
 - pkascii2ogr
	support csv input file
 - pklas2img
	support DTM according to Bunting (slightly adapted version of Chang2003, including a median filter after morphological operator)
 - Doxyfile
	support doxygen to document code
 - doc
	directory for doxy input files

version 2.4.1
 - pkfilterascii
	filter spectra in ASCII file (including wavelet transform)
 - pkfilter
	discrete wavelet transform (dwtForward, dwtInverse, dwtQuantize)
 - pkclassify_svm
	priors for input vector file
	todo: take priors into account for cross validation
	ordering of labels before training
 - pkclassify_nn
	priors for input vector file
	todo: take priors into account for cross validation
	ordering of labels before training
version 2.4.2
 - general
	removed using namespace std from header files
 - clean up of using namespace std in header files
 - apps/Makefile.am
	add GSL_LIBS to AM_LDFLAGS and LDADD
	todo: remove redundancy in AM_LDFLAGS and LDADD
 - PosValue.h
	remove using namespace std;
 - StatFactory.h
	 (interpolateUp): adapt to new version of GSL library, which does not support extrapolation. Currently no real extrapolation, but just solved by repeating first/last values
 - FileReaderAscii
	corrected error for constructor with fieldseparator argument
	corrected type for npos (should be size_t)
 - pkcrop
	changed projection option to -a_srs conform to gdal utilities
 - pkmosaic
	changed projection option to -a_srs conform to gdal utilities
 - pkascii2img
	changed projection option to -a_srs conform to gdal utilities
 - pkascii2ogr
	changed projection option to -a_srs conform to gdal utilities
 - pkdiff
	introduced short option -m for mask
 - pkinfo
	bug fixed with -min and -max in hist (thanks to Giuseppe Amatuli for noticing)
	changed projection option to -a_srs conform to gdal utilities
 - pkfilter
	new methods for scrambling and shifting images
	update help info for support of of even kernel sizes
 - Filter2d
	added support for even kernel sizes
 - pkstatogr
	make histogram more similar to pkstat with support of relative option
 - pklas2img
	correct for wrong include path for FileReaderLas.h (lasclasses instead of fileclasses)
	changed projection option to -a_srs conform to gdal utilities
 - pkfillnodata
	default maximum distance changed from 3 to 0 (infinity)
 - pkclassify_nn.h
	support reading ogr files with single feature (one band only: "B" or "Band")
 - pkclassify_nn.cc
	changed create_sparse to create_spare_array due to error in FANN...
	option -n for number of neurons
	cross validation parameter can not be 1
 - pkfs_nn.cc
	cross validation parameter can not be 1
	solved some bugs
 - pkclassify_svm.cc
	cross validation parameter can not be 1
 - pkopt_svm.cc
	cross validation parameter can not be 1
 - pkfs_svm.cc
	cross validation parameter can not be 1
	- pkstat.cc->pkstatascii.cc
	renamed to pkstatascii.cc to avoid confusion with raster data (e.g., pkinfo --stat)
	support of transposed output

version 2.4.3
 - StatFactory.h
	corrected bug in interpolateUp (in case x_out < x_in)
 - pkclassify_nn
	option msknodata and nodata to set nodata value in mask and classified image
 - pkclassify_svm
	option msknodata and nodata to set nodata value in mask and classified image
 - pkcrop
	option nodata to set nodata value
 - pkdiff
	option nodata to set nodata value
 - pkenhance
	option nodata to set nodata value
 - pkgetmask
	option nodata to set nodata value
 - pkinfo
	option nodata to set nodata value
 - pklas2img
	option nodata to set nodata value
 - pkndvi
	option nodata to set nodata value
 - pkreclass
	option nodata to set nodata value
 - pksetmask
	option nodata to set nodata value
 - pkdumpimg
	option srcnodata and dstnodata to set nodata value in source and destination image
 - pkmosaic
	option srcnodata and dstnodata to set nodata value in source and destination image
 - pkextract
	option msknodata to set nodata value in mask
 - pksetmask
	option msknodata to set nodata value in mask

version 2.5
 - ImgReaderOgr
	support sqlite: read training file with small case band names b0, b1, ...
 - ImgReaderGdal and ImgWriterGdal
	re-design of geotransform
 - ImgReaderGdal
	support of scaling and offset for reading raster bands
 - pkextract
	support other ogr file formats than ESRI Shape (e.g, using option -f SQLite)
	support multiple layers
	deprecated cbox and rbox
 - pkdiff
	support other ogr file formats than ESRI Shape (e.g, using option -f SQLite)
	support multiple layers
 - pkeditogr
	support other ogr file formats than ESRI Shape (e.g, using option -f SQLite)
	support multiple layers
 - Filter2d.h
	renamed mask to nodata
 - pkinfo
	hist: corrected nan when min=max
	min and max changed to src_min and src_max (limit source values for histogram)
	support for options -min and -max in addition to minmax (-mm): show min and max independently
 - pkstatascii
	min and max changed to src_min and src_max (limit source values for histogram)
	support for options -min and -max in addition to minmax (-mm): show min and max independently
 - pkfilter
	corrected bug in 2d wavelet transform forward and inverse
	renamed mask to nodata
 - pkndvi
	changed minmax option to min and max. Min and max values now apply to scaled values
 - pklas2img
	moved post filtering to pkfilterdem
	changed some option names
 - pkfilterdem
	new utility (moved from pklas2ig)

version 2.5.1
 - pkinfo
	-stats instead of -stat to be conform to gdalinfo
	bin values match actual values in case nbin=max-min+1
 - pkstatascii
	bin values match actual values in case nbin=max-min+1
 - pkstatogr
	bin values match actual values in case nbin=max-min+1
 - pkextract
	support sum rule
 - pkfilter
	support of density filter
	debug down option (forgot to adapt xres and yres)
	no automatic normalization user provided filter taps
 - pkcrop
	correct bounding box when dx_opt and dy_opt are set
 - pksieve
	retain nodata in pksieve when mask is set
version 2.5.2
 - configure script: GDAL>=1.10.0 is required for pkdiff
 - programs ported to windows and GUI with Qt
	removed underscore for QProcess in Windows
 - algorithms
	ConfusionMatrix.h: must find exact match in getClassIndex
 - pkinfo
	distinct long options
 - pkclassify_svm -> pksvm
	removed underscore for QProcess in Windows
 - pkclassify_nn -> pkann
	removed underscore for QProcess in Windows
 - pkregression_nn -> pkregann
	removed underscore for QProcess in Windows
 - pkfs_svm -> pkfssvm
	removed underscore for QProcess in Windows
 - pkfs_nn -> pkfsann
	removed underscore for QProcess in Windows
 - pkopt_svm -> pkoptsvm
	removed underscore for QProcess in Windows
 - pkmosaic -> pkcomposite
	name was confusing as also compositing is supported (unlike gdal_merge.py and gdalwarp)
	resample option similar to pkcrop
	option cb|cband (composite band) instead of rb|rband (ruleband)
 - version control for libraries
	thanks to suggestion of Francesco Paolo Lovergine
 - subdirectory pktools for include headers
	thanks to suggestion of Francesco Paolo Lovergine
 - pklas2img
	support for compressed point cloud (LAZ) files
 - pkextract
	support for median rule and pointOnSurface
	redesign to optimize vector polygon processing
	removed option for masking, introduced srcnodata and bndnodata
	(more testing is needed)
version 2.5.3
 - pklas2img
	libLAS 1.8.0 support (ticket #42951)
 - myfann_cpp.h
	Fix build failure on ARM due to va_list usage in myfann_cpp.h


version 2.5.4
 - pkinfo
	Support multiple input bands when calculating statistics
 - pkfilter
	Support filtering and statistics in spectral domain (see ticket #43252)
	Support different padding strategies (currently only supported for spectral/temporal filtering)
	Renamed "majority" to "mode" for majority voting filter
 - pkextract
	bug fix for proportion rule
	support standard deviation rule (stdev) for polygon features (ticket #43193)
	support overwrite vector files (ticket #43194)
	support statistic rules (mean, stdev, median, etc.) for point features by taking into account buffer (default= 3 by 3 pixels). If option -polygon is set, output ogr features are polygons defining the buffer.
	changed names for maximum and minumum rule to max and min respectively
	new options -rand and -grid to support simple random sampling and systematic grid (do not provide sample vector dataset)
 - ImgWriteOgr
	overwrite existing ogr datasets per default

version 2.6.1
 - API
	Filter.h support nodata values
 - pkfilter
	Declare nodata option as double (see ticket #43500)
	Support nodata values for filtering in spectral/temporal domain (see ticket #43713)
	make use of memory buffer vsimem for morphological closing and opening instead of tmp file
 - pkextract
	extracting with absolute threshold (negative value) was selecting 1 extra sample unit
	debug: removed (redundant?) SetGeometry after SetFrom when readFeature was of appropriate geometry type. This caused wrong polygons in output vectro dataset
 - pksvm
	support for mask in geo coordinates (does not need to be in same dimensions as input raster dataset, only in same projection)
 - pkann
	support for mask in geo coordinates (does not need to be in same dimensions as input raster dataset, only in same projection)

version 2.6.2
 - documentation
	minor bug fixes, thanks to patches introduced by Bas Couwenberg
 - pkdiff
	support double data types for input and mask
	support new option -reg to calculate regression between input and reference
	support of duplicate option -b to select band in reference image
	always use first band in mask image instead of using band defined in option -b
 - command line help info (change request #43845)

version 2.6.3
 - configuration of autotools
	add doc directory in release tarballs (ticket #44484)
 - pksvm
	solved bug in mask handling
 - pkann
	solved bug in mask handling
 - pkcomposite
	Advanced option -file supports two modes: 1 (total number of files used) and 2 (sequence number of selected file)
	No default for option -srcnodata
	Support of stdev composite rule (ticket #)
 - pkstat
	New utility for calculating statistics on raster datasets (regression, histograms, etc.)
	minor documentation fixes (ticket #44486)
	support histogram with multiple inputs (sum the values in each bin)
 - pkinfo
	Removed hist from pkinfo (now in pkstat)
 - pkdiff
	support double data types for input, but cast to unsigned short in case of accuracy assessment
 - pkkalman
	minor documentation fixes (ticket #44486)
 - pkextract
	support for percentile rule (ticket #108771)
	close virtual vector writer dataset before opening reader dataset (random and grid sampling)
 - pklas2img
	support for percentile composite rule
 - pkfilter
	solved bug in spectral response filtering
	family_opt was not processed for command line argument
 - pksetmask
	option mskband
 - added GUI processing in QGIS

version 2.6.4
 - ConfusionMatrix.h
	namespace confusionmatrix
	support ascii and latex output
 - Filter.cc
	do not remove line from buffer stack if dimY==1
 - pkextract
	circ option half pixel shift
	polygon buffer was not created with point or centroid
 - pkdumpogr
	support field separator as option (feature request #108834)
	check for empty input (feature request #108836)
 - pkcomposite
	check for empty input
	image2geo was in assert (did not work in Win Release mode)
	support mask
	support extent to cutline
 - pkdiff
	support ascii and latex output for confusion matrix
 - pkfilter
	bug in close and open vsimem virtual driver does not support metadata
 - pkcrop
	support mask
	support extent to cutline
	support start and end band sequence
 - pksvm
	support vector mask to cutline (change request #108835)
	support start and end band sequence
 - pkann
	support vector mask to cutline (change request #108835)
	support start and end band sequence
 - FeatureSelector.h
	compilation error due to redeclaration with default arguments
	patch from Bas Couwenberg (ticket #45416)

version 2.6.5
 - GTiff default output image format for all applications
 - ImgReaderOgr.h patch for gdal 2.0 (ticket #46270), thanks to Bas Couwenberg
 - ImgReaderOgr.cc
	patch for gdal 2.0 (ticket #46270), thanks to Bas Couwenberg
	read features (bands) in readDataImageOgr should be [bB][0-9]
 - ImgWriterOgr.h patch for gdal 2.0 (ticket #46270), thanks to Bas Couwenberg
 - ImgWriterOgr.cc patch for gdal 2.0 (ticket #46270), thanks to Bas Couwenberg
 - cmake support, thanks to Peter Bunting and Kris Vanhoof
 - StatFactory
	minimum and maximum values in case of nodata (initial value)
	erase nodata values when calculating percentiles
 - pkextract
	support automatically retrieval of classes in case of mode, proportion and count rule
	support count (-r count) extraction rule similar to proportion (change request #108902)
 - pklas2img
	support for scan angle rank (change request #108901)
	support for minimum and maximum scan angle rank (change request #108901)
 - pkcomposite
	performace gain: keep all input images open and read line for all inputs at once. Warning for large number of input: 1) memory issues, 2) GDAL_MAX_DATASET_POOL_SIZE which defaults to 100 3) restriction in Linux: number of file handles that can be opened by a process is generally limited to 1024.
 - pkstatprofile
	Calculate statistical functions on temporal/spectral profile (multi-band rater dataset), replaces some functionality in pkfilter -dz 1. Supports multiple functions to produced multi-band output

version 2.6.6
 - pkcrop
	support -align option to align output bounding box to input image
 - pkcrop
	support -align option to align output bounding box to first input image
 - pkkalman
	bug loop icol beyond limits and start counting from jcol (ticket #46880)
 - ImgRasterGdal
	new base class for ImgReaderGdal and ImgWriterGdal
 - ImgUpdaterGdal
	new class for reading GDAL raster datasets in update mode
 - ImgReaderGdal
	derived from base class ImgRasterGdal
 - ImgWriterGdal
	derived from base class ImgRasterGdal
 - pkkalman
	first release
	support multi-band input and output
 - pkextract
	skip file if not within extent boundaries
 - pklas2img
	repair readNextPoint segfault
	support of absmin and absmax rules
	support of spacing attribute

version 2.6.7
	- pkextract deprecated: split into pkextractimg and pkextractogr
	- pkextractogr: extract OGR vector dataset sample from raster dataset supporting multiple rules
	- pkextractimg
		extract raster dataset sample from raster dataset
		support for change request sr#108995 (collect random samples with absolute threshold)
		bug #47257 extract class label 0
	- pkoptsvm: removed dependency from nlopt library. Only grid search supported.
	- configure.ac: removed option to enable nlopt
	- CMakeLists.txt: removed option to enable nlopt
