- Typo fix: Kernal has been replaced by
Kernel
across 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 receivesFloat
s instead ofInt
s- Slight optimization for
getFloatingPixel()
, avoids recursive call for out-of-bounds coordinates - Fixed
paintPixel
andpaintFloatingPixel
multiplying 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
drawEllipse
calls
- 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
IntPoint2D
andPoint2D
- Added
Array2D.clone()
- Added
Array2D.toString()
- Added
Array2D.row()
andArray2D.column()
- Added haxedef
vision_fancy_array_access
, allowing more conciseArray2D
reading/writing - Fixed critical error with
Array2D
get & 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
ByteArrays
are now pre-filled with0
- Added many colors to
Color.hx
- Off-white, Sepia, and 50+ more... - Added haxedef to fix
hl/c
compilation of classColor.hx
- Added
ArrayTools
, contains several function moved fromMathTools
Related to Arrays. - Added
MathTools
trigonometric 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
'sMatrix
variation, as it is no longer relevant - Clarified parameter names in
MathTools
' compatibility functions - Added return types to all
MathTools
functions - Fixed
ImageTools.addToScreen()
not considering alpha - Fixed canvas to image conversion not considering alpha
- Slight fix for file-name in
ImageTools.saveToFile
on web - Fixed
ImageTools.toShape()
referencingopenfl
when targetingflash
- Renamed
Gaussian
->Gauss
- Renamed
Laplacian
->Laplace
- Added
GaussJordan
for matrix inversion - Added
BilinearInterpolation.interpolateMissingPixels()
for filling in of missing pixels in images - Added
Cramer
for solving systems of linear equations - Fixed
Radix.sort
not supporting negative numbers withInt
andInt64
- Added
MatrixOperationError
- Added
WebResponseError
- Removed double mention of pixel position in
OutOfBounds
exception
- 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
LibraryRequired
to support dependencies and more accurate library inclusion methods
- Added
Int16Point2D
- An abstract over a 32-bit integer. - Added
UInt16Point2D
- Same abstract, but coordinates range from0
to65535
- Added
Color.makeRandom()
- Fixed
Line2D.toString()
returning each point 4 times - Exposed
Ray2D.point
and 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
DivideByZero
errors 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
&Image
elements - Added from/to casting methods for HaxeUI's
Image
element 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
4
to11
- 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()
resettingalpha
to1
- 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.underlying
setter 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 implementedRobertsCross
algorithm. - Added
laplacianEdgeDiffOperator()
- Added
laplacianOfGaussianEdgeDetection()
- Added
bilateralDenoise()
, using the newly implementedBilateralFilter
algorithm. - Added
saltAndPepperNoise()
- Added
dropOutNoise()
- Added
whiteNoise()
- Optimized
perwittEdgeDiffOperator()
- Added
Array2D
- Added
ImageFormat
for image saving. - Added
WhiteNoiseRange
for 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 amin
and amax
. - Added
MathTools.raise()
, which raises a given1D
array/vector into a2D
array/matrix - Added
ImageTools.getNeighborsOfPixelIter()
, which returns a for-loop friendly iterator over the neighboring pixels. - Added full
ImageTools.loadFromFile
support on sys targets. This change allows you to load images from URLs in a cross platform fashion. - Fixed
MathTools.average
,MathTools.median
For C#. Fixed overload resolution failures getting thrown.
- Added
LibraryRequired
, thrown when a method/field depends on a missing library. - Added
ImageSavingFailed
. - Added
ImageLoadingFailed
- Fixed
VisionThread
preventing compilation on some targets. That had to do with that sys target not allowing multithreading.