Most users should probably start with the tutorials before diving into the documentation for individual packages. Much of JuliaImages' functionality comes from composing very basic operations that are not always available in other environments, and the tutorials will make this workflow clearer.
🚧This section documents the individual components that form the JuliaImages ecosystem. The ones marked with a
* are available via
using Images, but you can also use packages individually. Below, they're grouped into broad categories, then ordered alphabetically so you can start with whatever you are interested in most.
- Low-level core packages
- ColorTypes.jl*, Colors.jl* and ColorVectorSpace.jl* provides pixel-level definitions and functions.
- FixedPointNumbers.jl* provides several data types (e.g.,
N0f8) for image storage usage.
- ImageCore.jl* provides various basic and convenient views, traits and functions to support image processing algorithms.
- Traits and utilities
- ImageAxes.jl* supports AxisArrays.jl* to endow the axes with "meaning".
- ImageMetadata.jl* is a simple package providing utilities for working with images that have metadata attached.
- 🚧 ImageDraw.jl let you draw shapes on an image.
- ImageDistances.jl* is a Distances.jl wrapper for images.
- OffsetArrays.jl supports arrays with arbitrary indices offsets.
- MappedViews.jl provides lazy in-place transformations of arrays.
- PaddedViews.jl* add virtual padding to the edges of an array. It also allows you to composite multiple images together.
- TestImages.jl provides several "standard" test images.
- Image visulization are supported by various packages
- Image saving and loading are supported by packages under JuliaIO
- high-level algorithms
- DitherPunk.jl provides various image dithering operations.
- ImageBinarization.jl provides various image binarization algorithms.
- ImageContrastAdjustment.jl* supports image contrast enhancement and manipulation.
- ImageMorphology.jl* provides several morphological operations for image processing.
- ImageFiltering.jl* supports basic filtering operations.
- ImageFeatures.jl is a package for identifying and characterizing "keypoints" (salient features) in images.
- ImageQualityIndexes.jl* provides several image quality assessment indexes, e.g., PSNR and SSIM.
- ImageTransformations.jl* provides functions related to geometric transformations.
- ImageSegmentation.jl provides several image segmentation algorithms.
- ImageInpainting.jl provides image inpainting algorithms in Julia
For package developers,
Images.jl is usually a large dependency to be included in the
deps section of your
Project.toml. Hence it is recommended to add only
ImageCore together with the exact sub-packages you need. You can use
@which to find out the exact package and file a method/function belongs to.
JuliaImages is not a closed ecosystem; it works nicely with many other packages outside of JuliaImages. The following is an incomplete list of third-party packages that are widely used together with
- Augmentor.jl provides several basic image augmentation operations for image-related machine learning tasks.
- Flux.jl is a deep learning toolbox in Julia.
There are also some other packages outside JuliaImages that you might want to take a look at:
- MIRT.jl the Michigan Image Reconstruction Toolbox. As its name indicates, it is a toolbox to solve image reconstruction problems.
- ImageClipboard.jl enables you to copy&paste image from/to your clipboard.
- ImagePhaseCongruency.jl provides a set of frequency-domain filters based on phase congruency.
- ImageProjectiveGeometry.jl is a self-contained package for computer vision tasks related to projective geometry.