Skip to content

One Framework to rule them all, One Framework to find them, One Framework to bring them all and in the darkness bind them. - The ring's inscription, translated, adapted.

License

MPL-2.0 and 3 other licenses found

Licenses found

MPL-2.0
LICENSE
Apache-2.0
LICENSE_APACHE
MIT
LICENSE_MIT_JDIEMKE
MIT
LICENSE_MIT_KIERS
Notifications You must be signed in to change notification settings

FHOOEAIST/imaging

imaging

Imaging

DOI License: MPL 2.0 GitHub release javadoc Maven Central

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> <!-- alternatives core, nd4j, openimaj, imagej, opencv, pdfbox, tesseract, microsoft-cognitive-services -->
    <version>${imaging.version}</version> <!-- e.g. 1.0.0 -->
</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.

// (1) Create a new image
ImageWrapper<short[][][]> image = ImageFactoryFactory.getImageFactory(short[][][].class).getImage(100, 100, ChannelType.Greyscale);

// (2) Draw on the image
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.

// (1) Load OpenCV DLLs
AistCVLoader.loadShared();

// (2) Create a random input image for the test
Random rand = new Random(768457);
ImageWrapper<double[][][]> input = ImageFactoryFactory.getImageFactory(double[][][].class).getRandomImage(10, 10, ChannelType.RGB, rand, 0, 255, true);

// (3) Prepare the function to be applied (Note: it is implemented for OpenCV only!)
OpenCVThresholdFunction thresholdFunction = new OpenCVThresholdFunction();
GenericImageFunction<double[][][], double[][][], Mat, Mat> function = new GenericImageFunction<>(thresholdFunction, Mat.class, double[][][].class);

// (4) Apply the function (Note: on a non-OpenCV image)
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.

DOI

Additionally, this work was used in the following publications:

About

One Framework to rule them all, One Framework to find them, One Framework to bring them all and in the darkness bind them. - The ring's inscription, translated, adapted.

Topics

Resources

License

MPL-2.0 and 3 other licenses found

Licenses found

MPL-2.0
LICENSE
Apache-2.0
LICENSE_APACHE
MIT
LICENSE_MIT_JDIEMKE
MIT
LICENSE_MIT_KIERS

Stars

Watchers

Forks

Packages

No packages published

Languages