Jeniffer2 is a raw image processor written in Java. It offers
- a big choice of demosaicing algorithms
- the option to export to TIFF, JPEG or PNG
- tools to inspect metadata
- tools for comparing the results of different algorithms
It has been designed to be extensible (at least regarding demosaicing algorithms) and portable.
Jeniffer2 has been developed as part of three master theses at Tübingen University, which can be downloaded here.
Fun fact: JENIFFER stands for Java Enhanced Nef Image File Format EditoR. Version 2 is using the Adobe licensed open DNG format as input instead of the proprietary Nikon NEF format.
- User Manual (PDF, en)
- User Manual (PDF, de)
- Pre-Compiled JARs of GUI and CLI, and experimental stand-alone binaries
DNG processing library with a few tests.
CLI frontend for the library, for manual testing.
Distributable GUI frontend.
Shell-Scripts using the CLI and some example images to test the accuracy of the different algorithms and the performance of their implementation, and generate some plots from the collected data.
This java project uses Apache Maven as a build tool.
The language version specified in the project is 17, so you need JDK 17 or higher
(check with java -version
(note the single dash!) from the command line/shell
of your convenience).
Tip: On Debian-based Linux systems, you can install a specific java version via apt install openjdk-<version>-jdk
(at the time of writing, the latest stable version is 17).
For your convenience, you can build the project using make build
if you have CMake or something similar installed.
You need to have it installed in order to run the (hopefully) platform-independent cross-platform
package script with make package
, which uses the great warp-packer
to produce standalone binaries (*.bin
and *.exe
). A helper for this are the run-<os>.sh
and run.bat
files.
For the windows binary, it may happen that unpacking the archive fails. Then you need to manually go to C -> Users -> <Username> -> AppData -> Local
(hidden folder, setting to show hidden files can be found in the "View" Tab in the "Show/Hide" section in your explorer) and delete the warp
folder.
Note that this downloads the warp-packer
tool as well as JREs for each platform, although they are not committed to version control, they will not be re-downloaded if they already are present.
The following instructions assume you use Maven from the command line. You can of course run the same Maven Actions from your IDE, if supported.
Building the DNG reader
Switch to the dng
folder/project and run mvn install
to publish the package to your local repository, so that it
can be imported and used by the UI. If you want to run a specific Test, you can do so with mvn test -Dtest=*TestName
.
If you want to skip tests e.g. for trying something out visually, you can do mvn install -Dmaven.test.skip
.
Building the CLI
Switch to the cli
folder/project and run mvn [clean] package
.
Details in Sub-README.
Building the UI
Switch to the ui
folder/project and run mvn package
. The compiled JAR can be
found in the generated target
folder.
Run it with java -jar Jennifer2-<version>-jar-with-dependencies.jar
. A test
DNG file can be downloaded e.g.
here.
On MacOS, you max need to add the -XStartOnFirstThread
flag if you want to use GPU, like so:
java -XStartOnFirstThread -jar Jennifer2-<version>-jar-with-dependencies.jar
The Markdown files USER_MANUAL*.md
can be converted to PDF using pandoc.
The commands that need to be run are:
pandoc -f markdown -t latex -V linkcolor:lightblue -o USER_MANUAL.pdf USER_MANUAL.md
pandoc -f markdown -t latex -V linkcolor:lightblue -o USER_MANUAL.de.pdf USER_MANUAL.de.md
Alternatively, if you have Make available, you can simply run
make manual
Feel free to open an issue or pull request! There is currently one single maintainer to this project, so you may expect a response time of several days.
This project is probably too small for a formal code of conduct, but please be civil to each other and do not discriminate based on race, sexuality, gender or anything else.
Jeniffer2 has been developed under the supervision of Prof. Dr. Thomas Walter at Tübingen University.
Credits go to:
- Eugen Ljavin (who wrote the DNG processing and original AfterburnerFX/JavaFX app)
- Joachim Groß
- Michael Kessler
- Claudia Grosch
- Andreas Reiter (who added the more advanced demosaicing algorithms)
- Florian Kellner (who refactored the code, added comparison tools, experimental GPU support and setup+maintains this repo)
- This product includes DNG technology under license by Adobe.
- Dieses Produkt enthält die bei Adobe lizenzierte DNG-Technologie.