DEV Community

Cover image for LUMEN - Full stack image analysis tool
Piyush Baraskar
Piyush Baraskar

Posted on

LUMEN - Full stack image analysis tool

Lemme share a half-baked project of mine LUMEN, which I am currently working on.

LUMEN - Full Stack Image Data Analyzer
(will share the link after completing)

It's primarily a learning project, not a platform/SaaS or something.

The basic idea:
The basic idea is simple: give LUMEN an image, and it extracts different properties from it and stores the analysis as structured data.

Working:
The image is first loaded using PIL and converted into a NumPy array. LUMEN then performs different types of analysis, including:

  • Image dimensions
  • dtype, std
  • min/max, mean
  • RGB channel statistics
  • Histograms and intensity distribution
  • Perceptual brightness
  • Contrast, Sharpness / blur
  • Colorfulness, Dominant colors
  • Exposure, Entropy
  • Duplicate detection

For duplicate detection, I use SHA-256 hashing. The image is hashed and the resulting hash can be used to identify identical files and group duplicates.

Also using pytest to test the analysis functions.

Database side -
Made a persistence layer using PostgreSQL + SQLAlchemy.
The idea is to store the analyzed images and their results as structured records.

For example, an image can have information such as:

  • ID
  • filename
  • dimensions
  • file information
  • analysis timestamp

And the analysis can contain things like:

  • mean brightness
  • standard deviation
  • minimum / maximum values
  • RGB channel statistics
  • quality metrics

SQLAlchemy ORM is used to represent DB tables as Python models.

Backend — (Work in progress)
The backend is being built with FastAPI,

FastAPI receives the image/request, the analysis engine processes it and the results are validated and structured, and the relevant data is persisted in PostgreSQL.

And the frontend will be made later and then deployment......✌🏼

Still work in progress, but this is where LUMEN is currently at, rn making the backend part :)

Top comments (0)