Imaging
The imaging framework provides different functionality in the context of image processing and computer vision. For this there are many image processing related implementations in the project but also connection classes to other frameworks (e.g. OpenCV) to extend its functionality.
Get a detailed overview on our maven site.
Getting Started
The project is structured into multiple submodules. API builds the base module which contains the domain classes as well
as the interfaces. The core module builds the base implementation with pure java functionality. In addition
to these two modules there are modules for connecting to other frameworks for imagej, nd4j, opencv, openimaj, pdfbox, tesseract and microsoft-cognitive-services. These modules are
wrappers for functionality that is provided in either of these libraries.
To use the Imaging project you simply need to add the required dependencies like:
<dependency>
<groupId>science.aist.imaging</groupId>
<artifactId>api</artifactId>
<version>${imaging.version}</version>
</dependency>
Examples
A simple example using the Core module (1) creates an image using the ImageFactoryFactory
and (2) draws a circle at a given
position.
ImageWrapper<short[][][]> image = ImageFactoryFactory.getImageFactory(short[][][].class).getImage(100, 100, ChannelType.Greyscale);
DrawCircle<short[][][]> draw = new DrawCircle<>();
draw.setColor(new double[]{1});
draw.accept(image, new JavaPoint2D(5, 5));
A more advanced example is shown in the following code snippet, that shows the module interoperability of the Imaging project based on the GenericImageFunction
. Note: GenericImageFunction
casts its input image, and the result of the wrapped function if necessary, which affects its resource requirements.
AistCVLoader.loadShared();
Random rand = new Random(768457);
ImageWrapper<double[][][]> input = ImageFactoryFactory.getImageFactory(double[][][].class).getRandomImage(10, 10, ChannelType.RGB, rand, 0, 255, true);
OpenCVThresholdFunction thresholdFunction = new OpenCVThresholdFunction();
GenericImageFunction<double[][][], double[][][], Mat, Mat> function = new GenericImageFunction<>(thresholdFunction, Mat.class, double[][][].class);
ImageWrapper<double[][][]> thresholdResult = function.apply(input);
FAQ
If you have any questions, please checkout our FAQ section.
Contributing
First make sure to read our general contribution guidelines.
Licence
Copyright (c) 2020 the original author or authors.
DO NOT ALTER OR REMOVE COPYRIGHT NOTICES.
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this
file, You can obtain one at https://mozilla.org/MPL/2.0/.
The following code is under different licence and copyright:
Licence | Filepaths |
---|
MIT see LICENSE_MIT_JDIEMKE | api/src/main/java/science/aist/imaging/api/domain/twodimensional/JavaTriangle2D |
MIT see LICENSE_MIT_KIERS | core/src/test/java/science/aist/imaging/service/core/pointprocessing/GrahamConvexHull |
Apache see LICENSE_APACHE | tesseract/tessdata/* |
Research
If you are going to use this project as part of a research paper, we would ask you to reference this project by citing
it.