Coder Social home page Coder Social logo

codeschmiedehgw / blitz Goto Github PK

View Code? Open in Web Editor NEW
1.0 3.0 0.0 6.93 MB

Bulk Loading and Interactive Time series Zonal analysis

License: GNU General Public License v3.0

Python 100.00%
bulk-loader image-processing image-viewer multiprocessing pyqt5 pyqtgraph python time-series-analysis

blitz's Introduction

BLITZ

BLITZ is an open-source image viewer specifically designed for "Bulk Loading and Interactive Time series Zonal analysis," developed at the INP Greifswald. It is optimized for handling extensive image series, a common challenge in diagnostic imaging and process control. Programmed primarily in Python and utilizing QT and PyQTGraph. BLITZ offers:

  • rapid loading of large image series
  • efficient performance scaling
  • versatile data handling options
  • user-friendly GUI
  • stable lookup tables for visual consistency
  • powerful matrix-based image processing capabilities, allowing for instant statistical calculations and image manipulations.

Download the Latest Release for Windows

Most recent release

GIF Animation showing the key features of BLITZ

(Click if animation is not playing) GIF_Animation

Compiling and Developing

It is recommended to use poetry for local development. After cloning this repository, create a virtual environment, install all dependencies and run the application.

$ git clone https://github.com/CodeSchmiedeHGW/BLITZ.git
$ cd BLITZ
$ poetry install
$ poetry run python -m blitz

Additional Resources

  • Visit INPTDAT for additional images or publishing your own.
  • You can find the original Example Dataset at INPTDAT as well.

License

BLITZ is licensed under the terms of the GNU General Public License version 3 (GPL-3.0). Details can be found in the LICENSE file.

blitz's People

Contributors

irkri avatar pimav avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar

blitz's Issues

Linux installation - Command not found after poetry install

Hi,

I'm trying to install BLITZ on Linux following the install instructions from the README.md file.
After a successful¹ installation BLITZ fails to run with a 'command not found error', as it can be seen in the code below.

¹

  • I'm using python 3.9.18 here (in a virtual environment), but the same was verified on another system running python 3.11
  • I had to change the version of PyQt5 to 5.15.2 in the pyproject.toml file because this looks to be the only version that poetry can install on Linux

(blitz) fellype@plasma:BLITZ$ poetry install
Updating dependencies
Resolving dependencies... (1.3s)

Package operations: 11 installs, 1 update, 0 removals

  • Updating packaging (23.2 /home/fellype/progs_nao_instalaveis/blitz/lib/python3.9/site-packages -> 23.2)
  • Installing llvmlite (0.40.1)
  • Installing numpy (1.24.4)
  • Installing pyqt5-sip (12.13.0)
  • Installing qtpy (2.4.1)
  • Installing natsort (8.4.0)
  • Installing numba (0.57.1)
  • Installing opencv-python (4.8.1.78)
  • Installing psutil (5.9.6)
  • Installing pyqt5 (5.15.2)
  • Installing pyqtgraph (0.13.3)
  • Installing qdarkstyle (3.2.3)

Writing lock file

Installing the current project: BLITZ (1.0.1)
(blitz) fellype@plasma:BLITZ$ poetry run BLITZ
Command not found: BLITZ
(blitz) fellype@plasma:BLITZ$ 

"Better" Export Function?

Das muß nicht unbedingt. Wenn man weiss wie es geht, (also unten über Export Button) kann man bereits die "Optimierten" Bilder exportieren.

Performance / GPU

These can be easily done:
pg.setConfigOptions(useNumba=True)
pg.setConfigOptions(useOpenGL=True)

this is a bit more complex:
(Maybe as an option to set in the ini File)
User needs to install cupy manually beforehands.
pg.setConfigOptions(useCupy=True) # Requires CUDA and CuPy ... Bad for small laptops

Normalization

We should change the normalization toolbox from pyqtgraph to our own version.
Some notes:

  • Their normalization always copies all the currently loaded (maybe masked) images before manipulating.
  • Something doesn't work with Subtraction and Divide.
  • Because only the shown images are manipulated, masking, flipping, transposing and all other operations cannot be combined with the current normalization.

Before implementing anything, what kind of normalization do we really need?

For Version X

PREFACE:
This section gives an overview about interesting features. They are not directly to be implemented, but rather be discussed first.

LUT:

  • autoscale feature (ie a button next to the LUT)
  • using normalization: HOR/ VERT are not changing, still showing the now normalized version.
  • Should stay constant when changing between min /mx and such

General (these are features to be discussed):

  • Use of Ini file or such to enable preconfig when loading
  • ROI could be user modifiable (like the measurement tool.)
  • Link to GITHUB and INP in Menubar
  • "OPEN" should refer to the current Path if Images / Video are already loaded
  • Timeline "cropping", so we can "only" show images from /to (i.e. 77 - 332 in a Set of 1000)
  • Save settings per folder: create a small (hidden) file if a folder (or file) is open for the first time. Here we can save dataset specifics, like crop region / Mask, LUT, for that specific dataset
  • Some kind of masking? Like loading a binary of same size?

GUI:

  • scroll through images when on timeline instead of zoom; Maybe enable CTRL or SHIFT or such for navigating

Long-term:

  • PCA Implementation
  • Image Subtraction and Divide are giving problems and are slow. Create our own Implementation with:
    • blur
    • opac / alpha
    • time shift
    • different paths (See #18 )

TODO for v1.0.0

BUGS:

  • Loading images with resize leads to image loading failure. -> FIX
  • When using Timeline Operation: horz / vert Profile is showing the original image Profile. not the timeline operation

Visualz / Handling:

  • make two containers (splitted vertical) on the right hand side. LUT should be visible all the time.
  • Manipulation "View" should be moved to "File". Mask probably as well.
  • Timeline Operation and LUT should be visible at the same time.

Features:

  • When clicking in timeline, keyboard arrows do not work! -> Make them!
  • Option: Load Color Images as grayscale

Performance:

  • Flip / Transpose takes time (Is Operation on full matrix -> only on the shown image; later on the matrix)
  • Active "Update ROI only on drop" per default, if images are bigger than 2 MPx
  • STD Calc is very heavy on MEM (Maybe not important)

Comments for v1.0.1

Feature:

  • "Busy" Signal (Something to show the user, we are still working) When Masking or ROI or other stuff takes a bit longer

Performance:
-Update on Drop should be activated by some other criteria. not matrix size alone, but rather ROI Size * Images < threshold

Haptics / Looks:

  • Current Path should be set to the folder the images were loaded from.
  • LUT and Options should be 50/50 % in height when starting. Also: switch places

Minor:

  • if ROI is deactivated, mouse(wheel) cant be used to navigate in timeline

For V1.0.2

  • Pop up window when doing cost intensiv stuff like: Loading and calculating
  • LUT / Options dialog 60 /40 or such
  • when using Normalization, H/V are not updated
  • ROI handles should be bigger as well
  • Mask has two handles in the lower right corner
  • Show "Calculating" Window only when its actually calculating. not when saved is loaded

Performance

  • Update on Drop should be activated by some other criteria. not matrix size alone, but rather ROI Size * Images < threshold
  • Do we recalculated mean / STD and such all the time? For big data this shouldbe stored.

GUI / Haptics / Looks

  • Current Path should be set to the folder the images were loaded from.
  • LUT and Options should be 70 (LUT)/30 % in height when starting. Also: switch places
  • Mask should be above View
  • Handles of Mask and Polygon should be bigger. They are hard to get via mouse.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.