Skip to content

MuteJester/Simple_Image_Processing_Library

Repository files navigation

Commits Stargazers Issues MIT License LinkedIn


Logo

SIPL - Image Processing Library

A Plug And Play Solution For Working With Images And Image Processing
Explore the docs »

Created Using SIPL · View Demo · Report Bug · Request Feature

Table of Contents

About The Project

There are more then a few great Image Handlers and Image Processing librarys available on GitHub, however, I didn't find one that really suit my needs, the need to simply drag a file into my project folder and start coding ,a library with straightforward method names so it can be used without searching to much the web or reading a whole insturction manual so I created this simple plug and play library. I want to create an Image Handaling,Processing and Analysis library so efficient and simple that it'll be the last one you ever need.

Here's why SIPL:

  • Your time should be focused on algorithms,developing something amazing,not learning shortened method names of a library
  • You shouldn't install a huge amount of external dependencies to your project - SIPL has no external dependencies !
  • You should be able to read any code written using SIPL and clrealy understand whats going on from the method names
  • You have an understanding on how to use SIPL on one language ? , you know how to use SIPL on all supported languages !

Of course, for the time being the library is still under development so still it will not serve all projects since your needs may be different then what the library currently supports for you language or even at all . functions and features will be added in the near future. You may also suggest changes by forking this repo and creating a pull request or opening an issue.

Built Using

Getting Started

This is an example of how you may give instructions on setting up your project locally. To get a local copy up and running follow these simple example steps.

Notice

  • C++ Version-

    Version 1.0 SIPL can be used just by adding to your project all the header files and CPP files located in the SIPL Core folder. including only the core of the library will allow you to use all core features and methods without the added functionality of the subclasses. the main core provides all needed tools for image processing, analysis, and handling. SIPL-C++ works best with .jpg format, the infrastructure used to load image binary data was recently updated for better performance as for now, SIPL uses the stb load/write lib to load image data to memory and to write processed data back to drive.

    Version 2.0 Faster,Memory Efficient,And Much More User Friendly , SIPL 2.0 Released(30/5/2020) ! keep in mind instructions for version 1.0 slightly different becuase of updates and upgrades that were made in the core structure. The SIPL Pixel Matrix Logic is still the same only method names and calls changed.

    To Use Version 2.0 all you need is to drag and drop the SIPL_CPP header files from Here to your project folder ,and include ONLY Cpp_SIPL.h, and you are ready to code!

    the infrastructure used to load image binary data still uses the stb load/write lib to load image data to memory and to write processed data back to drive.

    visual studio users if getting security error while compiling
    please add _CRT_SECURE_NO_WARNINGS to your preprocessor definitions setting

!Important! all sub-libraries and functionality relay on the Core files always include the core folder first!.

  • Java Version-

    SIPL can be used by adding to your projects /src folder the "Image" java class file located under the Java folder. adding the the class file will allow you to use all core features and methods without the added functionality of the subclasses. the main core provides all needed tools for image processing, analysis, and handling

  • Python Version- SIPL can be used by adding to your projects folder the "SIPL_Python.py" file located under the Python folder. adding the the py file will allow you to import all core features and methods without the added functionality of the subclasses. the main core provides all needed tools for image processing, analysis, and handling

Detailed tutorials about how to work with SIPL can be found in the wiki tab of this repository

Installation

  1. Download The Corresponding Files From The Repository Folder Of Required Language
  1. Copy All Classes/Files Into Your Projects /src or /main Folder
  2. You Are Ready To Code!

Usage

Face Detection (Real-Time Parametric)

Logo

SIPL Offers A Real-Time face detection algorithm which is parametric ,meaning theres is no machine learning involved in this spesific algorithm ,it tries to detect a face by color difference stated by the user. The success rate of the algorithm depends on the parameters passed to the function and they are individual for each image!.

Image Color Segmentation

Logo

SIPL Offers A Quick Algorithm For Image Color Segmentation Using K Means, useful for color variance reduction

Figure Detection

Logo

SIPL Offers A Real-Time figure detection algorithm which is parametric like the face detection algorithm ,meaning it will detect figures by user given parameters , different parameters will result in different results !

Current Features

some features may be under development for some languages (java version has all the features stated at all time)

Basic Image Handling

  • Loading/Creating/Writing Images
  • Cropping/Scaling
  • Single Pixel Modification
  • Spatial Rotation
  • Image View (Using SIPL's Local GUI Window)

Drawing Functionality

  • Shape Drawing (Cirlce,Rectangle,Triangle) - Fill/No-Fill
  • Line Drawing
  • Text Drawing

Processing Functionality

  • Thresholding
  • Color Flooring
  • Edge_Detection
  • Kernel Convolution
  • Image Convolution
  • Feature_Matching
  • Average Palette Detection
  • Image Segmentation
  • Image Paddings
  • Dithering
  • Circle Packing
  • Channel Controlling
  • Color Space Conversions
  • Noise Addition/Creation
  • Bit Plane Slicing
  • Blob Farming
  • Difference Measurement
  • Connected Components Labeling

Image Transformations

  • Power/Log /Negative Transformations
  • Fourier Transformation

Histogram Functionality

  • Localy View / Export Channel Histogram
  • Histogram Equalization
  • Histogram Correction (Linear,Power,Log)

    Image Arithmetics

  • Addition
  • Subtraction
  • Multiplication
  • Division
  • Logic Operations (OR,AND,XOR,NOT,AND-NOT)
  • Set Operations (Union,Complement,Intersection)

Plotting Templates Supported

  • Scatter Plot
  • Bar Plot
  • Stem Plot
  • Line Plot
  • Pie Plot
  • Histogram

Mathematical Utilities

  • Complex Number Handling
  • Matrix Handaling
  • Complex Matrix Operations
  • Statistical Calculations
  • Random Number/Color/Sequance Generation
  • Linear Calculations (Distances/Interpolations)

Library Local GUI

  • Frame Refreshing (For Game/ Video / Animation Creation)
  • 3D Ploting And Interaction
  • Image Viewing

Contributing

Contributions are what make the open-source community such a powerful place to create new ideas, inspire, and make progress. Any contributions / ideas / requests you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/GreatIdea)
  3. Commit your changes (git commit -m 'Add some HelpfulFeature')
  4. Push to the Branch (git push origin feature/GreatIdea)
  5. Open a Pull Request

License

Distributed under the MIT License. See LICENSE for more information.

Contact

Your Name - Thomas Konstantin - thomaskon90@gmail.com

Project Link: https://github.com/MuteJester/Simple_Image_Processing_Library