- Added
Image.copyImageFrom
- Added
ImageFormat.JPEG,ImageFormat.VISION
- Added
ImageTools.loadFromFile(synchronous version) - Added
ImageTools.loadFromBytes - Added
ImageTools.loadFromURL - Added
ImageTools.exportToBytes - Added
ImageTools.exportToFile - Deprecated
ImageTools.saveToFilein favor ofImageTools.exportToFile
- New Subdirectory inside the
visionpackage for cleaner image format conversions - Added
ImageIO- reads/writes images from/to different formats/frameworks - Added support for
jpegencoding for non-js platforms usingformat
- Added
tint() - Added
filterForColorChannel() - Added
kmeansPosterize() - Added
kmeansGroupImageColors() - Added
simpleImageSimilarity()
- Added
toArray() - Fixed regression in
Image.paintPixel()wherealphawasn't considered correctly
- Added
ColorChannel.hxenum - Added proper credit for
Color.hx - Added
Color.fromFloat() - Added
Color.distanceBetween() - Added
Color.differenceBetween() - Added
Color.getAverage() - Added
ByteArray.from()Overload forInt64 - Added
Matrix2D.getAverage
- Fixed
ArrayToolsmin/max/average/medianmethods MathToolsmin/max/average/mediannow referenceArrayTools- Added
ArrayTools.distinct() - Added
ArrayTools.flatMap() - Added
ArrayTools.distanceTo() - Added
MathTools.SQRT2 - Added
MathTools.SQRT3 - Added
MathTools.toFloatforInt64
- Added
KMeansclass for kmeans color clustering - Fixed
Radixnot supporting number types correctly - Fixed
Cramernot consideringvision_quietand added informative error messages - Added
ImageHashingclass. The following hashing methods are implemented:ahashphash
- Added
InvalidCramerSetuoexception - Added
InvalidCramerCoefficientsMatrixexception
- Typo fix: Kernal has been replaced by
Kernelacross the entire library
- Added
affineTransform() - Added
projectiveTransform() - Added
fisheyeDistortion() - Added
barrelDistortion() - Added
pincushionDistortion() - Added
smooth() - Added
posterize() - Added
sepia() - Added
pixelate() - Added
vignette()
- Added
rotate() hasPixel()now receivesFloats instead ofInts- Slight optimization for
getFloatingPixel(), avoids recursive call for out-of-bounds coordinates - Fixed
paintPixelandpaintFloatingPixelmultiplying color's alpha channels incorrectly - Added
center(), returns a point representing the center of the image - Added
pixelToRelative()&relativeToPixel(), converts between pixel and relative coordinates for an image - Added
copyViewFrom() - Added
fillEllipse() - Fixed ellipses drawing incorrectly in some
drawEllipsecalls
- Added
Matrix2D- for better representation of transformation matrices. supports:getDeterminant(),getTrace()invert()- Mathematical operations (
+,-,*and/) - Matrix generation function (
ROTATION,SHEAR,TRANSLATION,SCALE,REFLECTION,PERSPECTIVE,DEPTH,IDENTITY) - Pretty printing of
Matrix2D - And more convenient functions
- Added
Point3D- Representation of 3D point. - Documented
IntPoint2DandPoint2D - Added
Array2D.clone() - Added
Array2D.toString() - Added
Array2D.row()andArray2D.column() - Added haxedef
vision_fancy_array_access, allowing more conciseArray2Dreading/writing - Fixed critical error with
Array2Dget & set methods - Added
ByteArray.from, for conversion of arbitrary values toByteArray - Added
ByteArray.resize() - Added
ByteArray.concat() - Added
ByteArray.getBytes()andByteArray.setBytes() - Added
ByteArray.getUInt32()andByteArray.setUInt32() - Added
ByteArray.isEmpty() - Added
ByteArray.toArray() - Argument added to
ByteArray's constructor,fillWith ByteArraysare now pre-filled with0- Added many colors to
Color.hx- Off-white, Sepia, and 50+ more... - Added haxedef to fix
hl/ccompilation of classColor.hx
- Added
ArrayTools, contains several function moved fromMathToolsRelated to Arrays. - Added
MathToolstrigonometric functions using degrees:sind()cosd()tand()cotand()cosecd()secd()
- Added
MathTools.distanceBetweenPoints()forPoint3D - Added
MathTools.parseFloat()for compatibility - Added
MathTools.parseBool()for comfort :) - Added
MathTools.factorial() - Added
MathTools.gamma() - Removed
MathTools.flatten'sMatrixvariation, as it is no longer relevant - Clarified parameter names in
MathTools' compatibility functions - Added return types to all
MathToolsfunctions - Fixed
ImageTools.addToScreen()not considering alpha - Fixed canvas to image conversion not considering alpha
- Slight fix for file-name in
ImageTools.saveToFileon web - Fixed
ImageTools.toShape()referencingopenflwhen targetingflash
- Renamed
Gaussian->Gauss - Renamed
Laplacian->Laplace - Added
GaussJordanfor matrix inversion - Added
BilinearInterpolation.interpolateMissingPixels()for filling in of missing pixels in images - Added
Cramerfor solving systems of linear equations - Fixed
Radix.sortnot supporting negative numbers withIntandInt64
- Added
MatrixOperationError - Added
WebResponseError - Removed double mention of pixel position in
OutOfBoundsexception
- Improved
SimpleLineDetector's line filtering, reporting should be a bit better
- Fixed documentation on some classes
- Fixed compile error on
c++,cppia&c# - Added
distanceTo()method toPoint2D&IntPoint2D
- Tweaked
Vision.simpleLine2DDetection(), should report less overlapping lines
- Added Bitwise operators
|,&and^ - Floating pixel operations are now safe - Using out-of-bounds coordinates won't throw an error.
- Added
movePixel(), allows moving a pixel from inside the image to another position, while resetting the old position. variations:moveSafePixel()moveFloatingPixel()
- Fixed
Image.drawLine()hanging in certain scenarios - Fixed inaccuracies in Image's view implementation, off-by-one pixels bugs should be fixed
- Fixed
getSafePixel(),setSafePixel() - Removed
fromColorByteArrayAndData()Due to buggy behavior - Added
fromBytes()andtoBytes()for easier cross-frameworking - Optimized
from2DArray()andto2DArray() - Improved doc comment for private static field
Image.OFFSET
- Renovated
LibraryRequiredto support dependencies and more accurate library inclusion methods
- Added
Int16Point2D- An abstract over a 32-bit integer. - Added
UInt16Point2D- Same abstract, but coordinates range from0to65535 - Added
Color.makeRandom() - Fixed
Line2D.toString()returning each point 4 times - Exposed
Ray2D.pointand updated documentation - Added multiple get & set methods to
ByteArray:getUInt8()setUInt8()getInt8()setInt8()
- Added
Line2D.intersect() - Added
Line2D.distanceTo() - Added
Ray2D.distanceTo()
- Fixed Bilinear interpolation failing with some aspect ratios
- Added
Gaussian.create2DKernalOfSize() - Added
Gaussian.create1DKernalOfSize() - Added
Gaussian.fastBlur, Optimized Version ofVision.gaussianBlur(). More Bare-Bones - Deprecated
Gaussian.createXxXKernal()Functions - Deprecated
Gaussian.createKernalOfSize()in favor ofGaussian.create2DKernalOfSize()
- Added
MathTools.isBetweenRange() - Added
MathTools.getClosestPointOnRay2D() - Added
MathTools.distanceBetweenRays2D() - Fixed
MathTools.distanceFromPointOnRay2D() - Fixed
MathTools.clamp()
- Added
ImageView.toString() - Added
PixelFormat- Vision now supports importing/exporting different pixel formats! supports RGB, BGR and their different alpha position variants.
- Implemented
ImageTools.saveToFile()for JS - Fixed
ImageTools.saveToFile()saving incorrectly on sys targets - Fixed
ImageTools.loadFromFile()loading incorrectly on sys targets
- Fix
DivideByZeroerrors on PHP when usingColor.divide() - Fix Histograms simply not working
- Optimized
image.paintPixel() - Fixed
image.stamp(), should now respect alpha values.
- Slight optimization for
simpleLine2DDetection()
- Added from/to casting methods for JS
Canvas&Imageelements - Added from/to casting methods for HaxeUI's
Imageelement andImageData
- Added triangulation methods for drawing on images (Thanks Nanjizal)
- Fixed LibraryRequired errors being inaccurate on Ceramic
- Added
MathTools.cropDecimal()
- Optimized algorithm's pixel looping method
Vision.grayscale()Now accepts an addition, optional, parameter, replacingvision_better_grayscale.
- Image's byte offset changed from
4to11 - Added
image.stamp()- draw an image on top of another image - Added
image.view- easy access for getting & setting the currently set image view - Added
image.forEachPixelInView()- allows iterating over only the pixels inside the current view - Added
image.hasView() - Added
image.getView() - Added
image.setView() - Added
image.removeView() - Added
image.hasPixelInView()- allows checking whether or not the given pixel is inside a given/the image's view - Added
image.setFloatingPixel() - Added
image.setSafePixel() - Added
image.paintFloatingPixel() - Added
image.paintSafePixel() - Fixed
Image.paintPixel()resettingalphato1 - Fixed
Image.resize()not working with Nearest-Neighbor
- Added
vision.ds.ImageView- manipulate a section of the image without having to copy/paste pixels! - Added
vision.ds.ImageViewShape - Changed
Color.grayscale()'s signature to accept an optional, extra variable. That variable enable/disables better grayscaling. - Added
Color.blackOrWhite()
- Fixed
Image.underlyingsetter failing withvision_allow_resize
- Fixed forced dependency on
format - Added more documentation for
ImageTools - Fixed
MathTools.clamp() - Optimized
MathTools.boundInt()
- Added
erode() - Added
dilate() - Added
combine() - Added
robertEdgeDiffOperator(), using the newly implementedRobertsCrossalgorithm. - Added
laplacianEdgeDiffOperator() - Added
laplacianOfGaussianEdgeDetection() - Added
bilateralDenoise(), using the newly implementedBilateralFilteralgorithm. - Added
saltAndPepperNoise() - Added
dropOutNoise() - Added
whiteNoise() - Optimized
perwittEdgeDiffOperator()
- Added
Array2D - Added
ImageFormatfor image saving. - Added
WhiteNoiseRangefor different white noise types (2-bit, 16-bit...) - Added
Kernal2D.LaplacianPositive - Added
Kernal2D.LaplacianNegative - Added
Color.from8Bit()to get a gray color out of a single, 8-bit color channel. - Optimized
Image.clone()
- Added
MathTools.clamp(), which keeps a given number between aminand amax. - Added
MathTools.raise(), which raises a given1Darray/vector into a2Darray/matrix - Added
ImageTools.getNeighborsOfPixelIter(), which returns a for-loop friendly iterator over the neighboring pixels. - Added full
ImageTools.loadFromFilesupport on sys targets. This change allows you to load images from URLs in a cross platform fashion. - Fixed
MathTools.average,MathTools.medianFor C#. Fixed overload resolution failures getting thrown.
- Added
LibraryRequired, thrown when a method/field depends on a missing library. - Added
ImageSavingFailed. - Added
ImageLoadingFailed
- Fixed
VisionThreadpreventing compilation on some targets. That had to do with that sys target not allowing multithreading.