Java: ImageJ alternative - java

I'm looking for some kind of alternative to ImageJ (http://imagej.nih.gov/ij/). For those who don't know, ImageJ is great for analyzing and creating these tif files from scripts that the user writes. However I noticed that using it in a java project (using its jar) is pretty resource intensive. I was wondering if there was some alternative to it that was perhaps better written for developers (doesn't need a GUI but is more efficient with memory).

The ImgLib2 project is an N-dimensional processing library which was invented to overcome many of the fundamental limitations of ImageJ 1.x. Among other uses, it provides the underlying data model for ImageJ2, a new version of ImageJ for the next generation of image data. ImageJ2 also provides an "ImageJ Legacy" component that provides backwards compatibility with ImageJ1, including runtime patching so that the ImageJ1 API can run headless.
As for performance, ImageJ 1.x and ImgLib2 are both—in general—very resource efficient. If you have specific circumstances where you believe resources are being wasted, a separate question with further details (here or on the ImageJ mailing list) would be a good course of action.
Another programmer-friendly library is the Insight Toolkit (ITK), written in C++. It is also mature, N-dimensional and resource efficient.

Take a look at Marvin Image Processing Framework. Main aspects:
Pure Java framework.
Extensible via plug-ins SDK. Current plug-ins here.
Multithreaded image processing (multiple threads in the same image, in different regions).
Unit testing for image processing.
Camera and video file processing through Java CV.
Process video frames as easy as processing images.
Components for integrating with Swing (MarvinImagePanel and plug-ins parameters)
Suitable for server side processing in J2EE application.
Stable. Already used by companies and universities. Some publications here.
Some answers using Marvin on Stackoverflow:
A: How to detect a Christmas Tree?
A: how to merge Images and impose on each other
A: Coffee beans separation algorithm
A: Detecting multiple images in a single image
A: 2D Shape recognition algorithm - looking for guidance
A: How to find corner co-ordinates in this image?

Related

Are Unity's "MonoBehaviour Components" equivalent to systems from the Entity-Component-System design pattern?

I am working on making a very simple 2D game engine, and I am in the process of redoing my entities to work somewhat like Unity's system. I have been doing research on how the Entity-Component-System design pattern (ECS) works, and I am beginning to understand it better.
As I understand, a component in ECS only holds data and is not capable of doing anything but retain that data. These components are then used by systems which are used to read and manipulate their data.
This led me to question is if the MonoBehaviour scripts that are attached to a GameObject in Unity are technically systems and not components as they are called in the Unity editor?
If I am mistaken, I think it would be helpful for me to analyze true implementations of ECS. I am coding in Java, so if anyone has any examples of an ECS system implemented in Java or C#, that would be great as most of the examples I have seen were in C++ which is a bit more difficult for me to understand.
Thanks!
Unity doesn't strictly work via an ECS, despite using the term "Component." A Unity component, in the form of a MonoBehaviour, can have both data and system logic. Unity will, in future versions, be rolling out an ECS model.
If you'd like to use current Unity versions (2018.1 and below) and strictly adhere to an ECS methodology, I'd suggest looking into Entitas and their Unity Plugin. You can also choose to structure your code, assets, and scenes to conform to ECS principles but Entitas is very efficient and solves a lot of problems for you.
the mono system in unity can be called EC(entity-component) which is base on Object-oriented design.
the ECS(entity-component-system) is base on Data-oriented design.
there is both data and logic in a mono component.

External Voronoi library "Mesh": What is Sketch and Processing?

Question
This might be a too specific quesion but I figured I'd give it a shot. If it doesn't belong here, I apologize.
I've been looking for an external library that generates a Voronoi Diagram with edges and Regions.
I've had a look at simplevoronoi but it doesn't calculate regions so I figuered I'd continue looking.
I found Mesh made by Lee Bryon and I've tried to use it just like any other external library but it does produce an exception at compile time
Exception in thread "main" java.lang.NoClassDefFoundError: processing/core/PApplet
at megamu.mesh.IntArray.add(IntArray.java:21)
at megamu.mesh.Voronoi.<init>(Voronoi.java:88)
On the website the install guide reads
Install
Download Mesh
Unzip into Processing's libraries folder
Sketch → Import Library → mesh
Now my questions are: What is Processing? What is Sketch? And will I be able to use this library in my project somehow or can someone recommend a different one?
Solution (kind of)
In the end I tried to use a library called Java Power Voronoi Diagram made by Arlind Nocaj.
Processing is an environment/language which is based on Java. You can find more information about it here: http://processing.org/
As far as getting that library working, it might be fairly simple to port it. Processing's syntax is nearly identical to Java's. You'll have to make proper Java classes for everything if that hasn't already been done.
you can quickly generate a voronoi diagram in Processing (Development Environment) using a library called toxi. Here is an example, https://github.com/hamzeen/voronoi_image
P.S. Processing is a tiny development environment specially for artists (yet not restricted to them) to quickly prototype their ideas with minimal code (java) & it's based on java applets.

DICOM 3d display - Java 3D vs VTK

I'm going to work on implementing 3d display of dicom files and I'm wondering which technologies is easier to use: Java 3D or VTK?
I'm not very experienced programmer,but I've already created a DICOM viewer based on dcm4che open source library.
Any hints or experiences to share?
Most of my 3D modeling is Optical Coherence Tomography data that tends to be rather large. My experience has been a little backwards. The project started as a C++ project using x64 VTK and Qt. Folks in the lab weren't C++ people, so it got converted to Java which is used through Matlab, which the lab post-docs know.
Java VTK is really easy to use and has a lot of features, but I'm having some trouble with registering callback events for buttons and such with will be a deal breaker if it can't get resolved. This problem might dramatically effect how the UI is done, so keep that in mind.
Most of the C++ examples tend to convert to Java really quickly (except callbacks >.< ) so there is a plethora of examples. If you are going to use VTK, I highly recommend "The VTK User's Guide" by Kitware, Inc (ISBN: 978-1-930934-23-8), as it is an excellent overview of the API.
Good luck!

Android/PC GIS library wanted

I have a task to develop an application with some GIS-functions: rendering of the previously downloaded map (with different layers and in different modes), programmatic assignment of markers and tracks, a path searching. It must be implemented under Android and PC (Win) and must be able to work offline. So I need a library which provides capabilities specified above and satisfies some additional conditions.
If possible, cross-platform (i.e. with a common core and with a different GUI under PC/Android).
Free for commercial use or without requirement of any user license in addition to the developer license.
Open-source is preferable (GPL/LGPL/MIT-like is ideal).
Java API is preferable.
After some days of googling I came to the conclusion that such a thing didn’t exist at all. There are many open-source GIS products in Java but no one of them is Android-compatible. So my goal is to find a library with an ability to render some map region into the picture and an ability to tell me coordinates by the specified picture pixel. At least I can use different PC-only and Android-only products to develop two different applications parallely.
Please, can anybody suggest me anything applicable for my task. Maybe somebody has some experience in this area. Any information is appreciated.
Thanks a lot.
Whilst not a full GIS library I have used JTS to write code on both PC and android.
The Website is http://www.vividsolutions.com/jts/JTSHome.htm
Whilst the documentation is a little on the light side I have found that it isn't to hard to implement. Using standard drawing functions I have been able to set up some basic GIS applications and mapping functions.

Difference between OpenCV and OpenCL

Can anyone explain me what is the difference between OpenCV and OpenCL? What is suitable for Android image processing in Java?
OpenCL is a standard for large scale parallel processing, it can help image processing but it is very low level and is designed for simplify the way to take advantage of many cpu cores and gpu stream processors.
OpenCV is a library for computer vision, includes a lot of generic image processing routines and high level functions to support face recognition etc.
It is quite easy to have an eye on wikipedia or google with two terms.
Just to add another point, there are functions in OpenCV that are implemented using OpenCL. These can be called using the "ocl" modules. Have a look here: ocl documentation in OpenCV

Categories

Resources