HyperBlend is a new type of hyperspectral image simulator based on Blender.

Overview

HyperBlend version 0.1.0

This is the HyperBlend leaf spectra simulator developed in Spectral Laboratory of University of Jyväskylä. You can use and modify this software under MIT licence.

Currently, HyperBlend can only simulate point-spectrometer-like spectral data. It needs actual measured reflectance and transmittance data which it tries to replicate.

Installing

Clone the repository to some location on your machine. Create a python environment by running conda env create -n hb --file hb_env.yml in yor anaconda command prompt when in project root directory. Use your favourite IDE for editing and running the code (developed using PyCharm). Command line build and run is untested, but it should work as well.

You will also need open-source 3D-modeling and rendering software Blender, which you can download and install from (blender.org). At least versions 2.8x and 2.9x should work (developed on version 2.93.5). Change your Blender executable path to constants.py.

Working principle

The measured reflectances and transmittances look like this:

wavelength [nm] reflectance transmittance
400 0.21435 0.26547
401 0.21431 0.26540
... ... ...

We call this the target. Reflectance and transmittance values represent the fraction of reflected and transmitted light so both values are separately bound to closed interval [0,1] and their sum cannot exceed 1.

We use a Blender scene with a rectangular box that represents a leaf. The material of the leaf has four adjustable parameters: absorption particle density, scattering particle density, scattering anisotropy, and mix factor. These control how the light is scattered and absorbed in the leaf material.

For each wavelength in the target, we adjust the leaf material parameters until the modeled reflectance and transmittance match the target values.

Usage

The entry point of the software is __main__.py file. For testing the software without actual data, run

from src import presets

presets.optimize_default_target()

that uses hard-coded test spectrum of a leaf.

The base element of the software is a measurement set identified by set_name, which consists of one or more samples identified by sample_id. To initialize a new set, initialize an Optimization object which will create a directory structure for given set_name under optimization directory.

To use real measured data, you should use

data.toml_handling.write_target(set_name:str, data, sample_id=0)

where data is a list of wavelength, reflectance, transmittance 3-tuples (or lists). This will write the data to disk in human-readable toml-formatted form that the rest of the code can understand.

Now you can start the optimization process. To summarize a simple use case in one snippet:

from src.optimization import Optimization
from data import toml_handlling as TH

data = [[400, 0.21435, 0.26547], [401, 0.21431, 0.26540]]
set_name = 'test_set'

o = Optimization(set_name)
TH.write_target(set_name, data, sample_id=0)
o.run_optimization()

The results are written onto disk in the set's directory as toml files and plotted to .png images.

Project structure, i.e., where to find stuff

Descriptions of the most important files.

  • optimization Optimization results and targets are stored here in set-wise sub-directories.
  • src Top level source code package.
    • __main__.py Entrypoint of the software.
    • constants.py Mainly names of things that should not be changed unless you are sure what you are doing. With the exception of path to Blender executable that you have to change to match your installation.
    • optimization.py Optimization work is done here.
    • plotter.py Responsible for plotting the results.
    • presets.py Default runnable example with hard-coded spectral values.
    • data Package responsible for data structure. Making changes in here will likely result in failure to read old optimization results.
      • file_handling.py Creation and removal of files and directories. Data structure reduction and expansion for more convenient file sharing.
      • file_names.py Knows all filenames in the project. Generator-parser pairs.
      • path_handling.py Knows the most important paths used in the project. Some paths may still need to be generated manually.
      • toml_handling.py Writing and reading of result data files.
    • rendering Package responsible for calling Blender.
    • utils Package containing miscellaneous utility modules.
  • bs_render_single.py Blender render script file.
  • scene_leaf_material.blend Bender scene file that is run by the bs_render_single.py.
You might also like...
Program to export all new icons from the latest Fortnite patch

Assets Exporter This program allows you to generate all new icons of a patch in png! Requierements Python =3.8 (installed on your computer) If you wa

An open source image editor which can manipulate an image in many ways!

Image Editor - An open source image editor which can manipulate an image in many ways! If you need any more modes in repo or I

Image enhancing model for making a blurred image to be somehow clearer than before

This is a very small prject which helps in enhancing the images by taking a Input images. This project has many features like detcting the faces and enhaning the faces itself and also a feature which enhances the whole image

Easily turn large sets of image urls to an image dataset. Can download, resize and package 100M urls in 20h on one machine.
Easily turn large sets of image urls to an image dataset. Can download, resize and package 100M urls in 20h on one machine.

img2dataset Easily turn large sets of image urls to an image dataset. Can download, resize and package 100M urls in 20h on one machine. Also supports

A pure python implementation of the GIMP XCF image format. Use this to interact with GIMP image formats
A pure python implementation of the GIMP XCF image format. Use this to interact with GIMP image formats

Pure Python implementation of the GIMP image formats (.xcf projects as well as brushes, patterns, etc)

Image Reading, Metadata Conversion, and Image Writing for Microscopy Images in Python

AICSImageIO Image Reading, Metadata Conversion, and Image Writing for Microscopy Images in Pure Python Features Supports reading metadata and imaging

This app finds duplicate to near duplicate images by generating a hash value for each image stored with a specialized data structure called VP-Tree which makes searching an image on a dataset of 100Ks almost instantanious
This app finds duplicate to near duplicate images by generating a hash value for each image stored with a specialized data structure called VP-Tree which makes searching an image on a dataset of 100Ks almost instantanious

Offline Reverse Image Search Overview This app finds duplicate to near duplicate images by generating a hash value for each image stored with a specia

Quickly 'anonymize' all people in an image. This script will put a black bar over all eye-pairs in an image

Face-Detacher Quickly 'anonymize' all people in an image. This script will put a black bar over all eye-pairs in an image This is a small python scrip

Fast Image Retrieval is an open source image retrieval framework

Fast Image Retrieval is an open source image retrieval framework release by Center of Image and Signal Processing Lab (CISiP Lab), Universiti Malaya. This framework implements most of the major binary hashing methods, together with both popular backbone networks and public datasets.

Comments
  • Usage of the program

    Usage of the program

    Hi!

    Thanks for this implementation, I have been looking to run it since a couple of days but I can't get it to be done. Is there any tutorial or instructions for somebody who is new to this type of software (and blender)? I tried running bs_render_single.py from IDE, from Conda Prompt, and from blender itself, but nothing seems to work.

    Also, I tried to run main.py from windows cmd, from my IDE, and from Conda prompt, but it throws errors in references. I tried changing all the references to match what is being called, but I end up with an error that some files (and the directory optimization) does not exist. Tried to run code from the readme, but still can't get to work.

    Would be very helpful if somebody can help me through some basic follow up on how to run this implementation.

    Best regards!

    opened by fieterovich 12
Releases(v0.2.0)
  • v0.2.0(Nov 28, 2022)

    This is the second released version of HyperBlend on our way towards a full canopy scale vegetation simulator. HyperBlend is developed in Spectral Laboratory of University of Jyväskylä by Kimmo Riihiaho (kimmo.a.riihiaho at jyu.fi).

    Version 0.2.0 will break many things in the previous version. Don't expect simulations created in 0.1.0 to work. Also the folder structure and some constants have been reorganized and renamed.

    Main improvements in this version:

    1. Simulation speed 200 times faster (simulation accuracy decreases 2-4 times)
      • You can still use the old simulation method if you need maximum accuracy
    2. Incorporation of the PROSPECT leaf model
      • You can now use PROSPECT parameters such as water thickness and chlorophyll content
      • It is fairly simple to plug in any other leaf model you would like. Just follow how our local prospect module does it, and you should be fine
    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Nov 11, 2021)

    This is the first release of HyperBlend. This release only demonstrates the usability of Blender in simulating hyperspectral reflectance and transmittance properties of plant leaves. Future releases will add more useful functionalities to the software.

    Created by @11kaks

    Source code(tar.gz)
    Source code(zip)
Owner
SILMAE
Spectral Imaging Laboratory for Multidisciplinary Analysis and Expertise
SILMAE
TRREASURE_IMAGE is python lib by which you can hide anything in a .jpg image with Command-Line Interface[cli] feature

TRREASURE_IMAGE TRREASURE_IMAGE is a python third-party library with Command-Line Interface[cli] feature. Table of Contents General Info Python librar

Fatin Shadab 3 Jun 07, 2022
a lite weight photo editor written in python for day to day photo editing!

GNU-PhotoShop A lite weight Photo editing Program (currently CLI only) written in python3 for day to day photo editing. Disclaimer : Currently we don'

Kunal Sharma 5 May 30, 2022
Python QR Code image generator

Pure python QR Code generator Generate QR codes. For a standard install (which will include pillow for generating images), run: pip install qrcode[pil

Lincoln Loop 3.5k Dec 31, 2022
Generates images of calendar month tables and can paste them onto suitable photos.

📆 calendizer README Generates images of calendar month tables and can paste them onto suitable photos. A quick way to make your own calendar for prin

Sean Ryan 2 Dec 14, 2022
PyGram Instagram-like image filters.

PyGram Instagram-like image filters. Usage First, import the client: from filters import * Instanciate a filter and apply it: f = Nashville("image.jp

Ajay Kumar Nagaraj 102 Feb 21, 2022
DrawBot is a powerful, free application for macOS that invites you to write Python scripts to generate two-dimensional graphics

DrawBot is a powerful, free application for macOS that invites you to write Python scripts to generate two-dimensional graphics.

Frederik Berlaen 344 Jan 06, 2023
Easy to use Python module to extract Exif metadata from digital image files.

Easy to use Python module to extract Exif metadata from digital image files.

ianaré sévi 719 Jan 05, 2023
HCaptcha solver using requests and an image recognition package!

HCaptcha solver using requests and an image recognition package! Report Bug · Request Feature Features Image recognition Requests base

dropout 6 Oct 22, 2021
Conversion of Image, video, text into ASCII format

asciju Python package that converts image to ascii Free software: MIT license

Aju Tamang 11 Aug 22, 2022
Fast batch image resizer and rotator for JPEG and PNG images.

imgp is a command line image resizer and rotator for JPEG and PNG images.

Terminator X 921 Dec 25, 2022
missing-pixel-filler is a python package that, given images that may contain missing data regions (like satellite imagery with swath gaps), returns these images with the regions filled.

Missing Pixel Filler This is the official code repository for the Missing Pixel Filler by SpaceML. missing-pixel-filler is a python package that, give

SpaceML 11 Jul 19, 2022
Clip Bing Maps backgound as RGB geotif image using center-point from vector data of a shapefile and Bing Maps zoom

Clip Bing Maps backgound as RGB geotif image using center-point from vector data of a shapefile and Bing Maps zoom. Also, rasterize shapefile vectors as corresponding label image.

Gounari Olympia 2 Nov 22, 2021
A python program to generate ANSI art from images and videos

ANSI Art Generator A python program that creates ASCII art (with true color support if enabled) from images and videos Dependencies The program runs u

Pratyush Kumar 12 Nov 08, 2022
A drop-in replacement for django's ImageField that provides a flexible, intuitive and easily-extensible interface for quickly creating new images from the one assigned to the field.

django-versatileimagefield A drop-in replacement for django's ImageField that provides a flexible, intuitive and easily-extensible interface for creat

Jonathan Ellenberger 490 Dec 13, 2022
A simple image-level annotation tool supporting multi-channel images for napari.

napari-labelimg4classification A simple image-level annotation tool supporting multi-channel images for napari. This napari plugin was generated with

4 May 16, 2022
CadQuery is an intuitive, easy-to-use Python module for building parametric 3D CAD models.

A python parametric CAD scripting framework based on OCCT

1.9k Dec 30, 2022
The friendly PIL fork (Python Imaging Library)

Pillow Python Imaging Library (Fork) Pillow is the friendly PIL fork by Alex Clark and Contributors. PIL is the Python Imaging Library by Fredrik Lund

Pillow 10.4k Dec 31, 2022
imgAnalyser - Un script pour obtenir la liste des pixels d'une image correspondant à plusieurs couleurs

imgAnalyser - Un script pour obtenir la liste des pixels d'une image correspondant à plusieurs couleurs Ce script à pour but, à partir d'une image, de

Théo Migeat 1 Nov 15, 2021
Img-to-ascii-art - Converter of image to ascii art

img-to-ascii-art Converter of image to ascii art Latest Features. Intoducing Col

1 Dec 31, 2021
A ray tracing render implemented using Taichi language.

A ray tracing render implemented using Taichi language.

Mingrui Zhang 45 Oct 23, 2022