Code Monkey home page Code Monkey logo

imagelab's Introduction

ImageLab source

ImageLab

License Gitter GitHub issues by-label

Introduction to the project:

ImageLab is a standalone tool which supports anyone to get started with image processing related concepts and techniques in an interactive, less logical way. So, this tool enables and also motivates the fresh users to understand how image processing concepts work by interacting with ImageLab. Moreover, for the users who are already comfortable with image processing tasks ImageLab offers a test environment before they move ahead with actual implementation or development.

Preview - Java App

demo

Preview - Electron App

Here, you can see the new design of ImageLab by using Blockly and ElectronJS.

Demo.Image.Lab.video.mp4

Apache 2.0 Licence

See the LICENSE file for details.

Supported Image Processing Operations

  • Basic Read/Write operation
  • Image Conversion
  • Image Smoothing
  • Geometric Transformation operation
  • Drawing operation
  • Filtering operation
  • Thresholding operation
  • Transformation operations
  • Contour operation
  • Miscellaneous operation
  • Histogram operation

Project Documentation

Complete setup guidelines and other details can be found in the project documentation.

Technologies

You need to setup following technologies in order to run this project and start contribution.

Technology Version
Java 1.8
JavaFX 1.8 JDK (inbuilt)
OpenCV 3.2.0
Apache Maven 3.6.3
Ruby 3.6.3
Jekyll 4.1.1
Electron 13.1.6
Blockly 6.20

Setup Guidelines - Java App

Clone the repository by pasting following command in your terminal.

git clone https://github.com/scorelab/ImageLab.git

Open the project in your preferred IDE. It will take a couple of minutes to sync with the project related maven dependencies.

Then navigate to the project directory ( imagelab_java ) in terminal and type following command to build the project.

mvn clean install 

To skip tests and run the project.

mvn install -Dmaven.test.skip=true

Once the project build is successful, in order to execute the project run following command in the terminal.

mvn exec:java

In case of "Failed during checkstyle execution" after firing mvm clean install Follow :

Modify pom.xml

mvn clean install --% -Dcheckstyle.skip

and then

mvn exec:java

Check the project documentation for more instructions.

Setup Guidelines - Electron App

Clone the repository by pasting following command in your terminal.

git clone https://github.com/scorelab/ImageLab.git

ImageLab uses ElectronJS. so we do some additional steps to get it compatible with our project:

To use Electron, you need to install Node.js from here. (We recommend that you use the latest LTS version available.)

To check that Node.js was installed correctly, type the following commands in your terminal client:

node -v
npm -v

Above commands should print the versions of Node.js and npm accordingly.

*Note: Since Electron embeds Node.js into its binary, the version of Node.js running your code is unrelated to the version running on your system.

Then you open your terminal and refer to the directory of /imagelab/imagelab_electron on your machine using cd command.

cd imagelab_electron/

Then, you start installing packages used in the project:

You can install all the npm packages once by running

npm install

Check the project documentation for more instructions.

imagelab's People

Contributors

1shubham7 avatar abdullahranginwala avatar aselarbd avatar chamodperera avatar charithccmc avatar deeppjp116 avatar dilumdesilva avatar hs05june avatar idl99 avatar impragya08 avatar ivantha avatar kaveeshadinamidu avatar malith-19 avatar mekaustubh28 avatar parthsingh29 avatar polahano avatar sahandisa avatar sivangbagri avatar sumedhe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

imagelab's Issues

Properties Form : Add Sliders instead of Text Fields to improve UX + remove exceptions

The current version of the ImageLab backend properties forms works upon text fields in most of the operators. it raised an exception when the text field got empty. It is easy to remove the exceptions and improve the UX by using sliders in javafx.scene
image

Also, it makes easy to make property changing task for an operator and make it easy for the end-user

Feature: adding Erosion to the filtering operations

Erosion is quite a similar process as dilation. But the pixel value computed here is minimum rather than the maximum in dilation. The image is replaced under the anchor point with that minimum pixel value.

With this procedure, the areas of dark regions grow in size and bright regions reduce. For example, the size of an object in the dark shade or black shade increases, while it decreases in the white shade or bright shade.

You can perform this operation on an image using the erode() method of the OpenCV imgproc class.

Check the project documentation for more information related to the project setup and contributions.

User Interface : Drawback of Fixed Size Processed Image

Operators like ImagePyramids(both Pyramids Up and Down) need variable image size(scale up or down) to show the scaling changes applied for the image. Fixed Image Size would be a barrier for that. To Resolve that ProcessedImageView.java should be updated accordingly.

User Interface: Adding Button for removing a specific filter

This feature can help the user in removing a specific filter. Till now, if the user has to remove the filter then he/she have to reset it which removes all the filter and the image itself due to which the user has to start all over again which is time-consuming.
2021-03-21

UI

Currently, the UI of ImageLab is not very interactive There is no exit, minimize button so every time the user has to force close the app.
2021-03-21

Updating README with new install instructions / Error in setting up

At the time I'm viewing readme, here's the install instructions -
image

Given that now there are electron and react renders of the app (alongwith original java one) (idk what to call the seperate directories "imagelab_react" , "imagelab_java" and "imagelab_electron" other than seperate renders of the app) , a simple mvn clean install in project directory doesn't work. It gives the following error -
image

When I changed my directory to /ImageLab/imagelab_java, it gave the following error -
image

[Updated]

Add image download button

At now when we click the execute command it shows the download window again and again. Instead of that add a download button (with icon) and integrate the image download operation with it.

Feature: adding bilateral filter to the filtering operations

the bilateral filter is one of the main filtering operations that allow you to do bilateral image applies to a filter. It performs this operation on an image using the medianBlur() method of the imgproc class. bilateralFilter() is the syntax of this method of the OpenCV imgproc class.

Currently, I'm looking forward to implementing this feature for the purpose of complete the filtering operation section on ImageLab.

Getting started with project ImageLab

Following higher-level tasks needs to be discussed and finalized.

  • Finalizing the proposed architecture and technologies for ImageLab
  • Finalizing the mockups related to the user interface of ImageLab
  • Imlpementing user interfacer
    • Implemeting tools panel
    • Implemeting building panel to drag and drop UI elements
    • Implemeting visualizing panel to display current output
    • Implemeting info pannel which shows errors and recommendations
  • Finalizing the features to be developed and start developement
    • Feat: implementing a UI element structure to invoke image processing with openCV
    • Feat: implementing imageLab core which communicates with openCV
    • Feat: implementing communication pipeline
  • Writing tests to evaluate developed features
  • Making project documentation
  • Updating project README with relevant information

Feature: simple thresholding to the thresholding operations.

Thresholding is a method of image segmentation, in general, it is used to create binary images. Thresholding is of two types namely, simple thresholding and adaptive thresholding.

We can perform a simple threshold operation on an image using the method threshold() of the Imgproc class.

Check the project documentation for more information related to the project setup and contributions.

ImageLab React - milestones for GSoC 2023

Following are the milestones for GSoC 2023

Milestone 1 (UI/UX Revamp)

  • Proof of concept for electron app built on top of react
  • Integrate react-blockly framework
  • Initialise new project
  • Rewrite UI components in React based on updated design
  • Migrate boilerplate code from original project
  • Connect the backend with the new UI

Milestone 2 (Add testing framework)

  • Finalize testing framework
  • Write unit and end to end tests for the React & Electron App

Milestone 3 (Implement video processing operators)

  • Implement the meanShift operator
  • Implement the camShift operator
  • Implement the Dense Optical flow operator
  • Implement the background subtraction operator

Milestone 4 (Implement neural network operators)

  • Implement the image-classification operator
  • Implement the Object Detection operator
  • Implement the Semantic Segmentation operator
  • Implement the Style Transfer operator
  • Implement the Pose Estimation operator
  • Configure import model block

Milestone 5 (Documentation)

  • Update the documentation based on the frameworks used
  • Update the Readme and contributing docs to comprehensively cover the entire electron project

ImageLab - extend the functionality milestones for GSoC 2021

Following higher-level milestones and tasks needs to be discussed and finalized in the GSoC 2021 under ImageLab - extend the functionality.

Milestone 1 - Architecture Improvements

  • Finalize the implementation of architecture changes to the code

Milestone 2 - Implementation of the OpenCV operators(Phase 01)

  • Implement Extended geometric transformation operators
  • Implement Extended filtering operators
  • Implement Drawing operators
  • Implement Morphological operators
  • Implement Sobel Derivation
  • Implement Transformation operators

Milestone 3 - Implementation of the OpenCV operators(Phase 02)

  • Implement Histogram operators
  • Implement Contour operators
  • Implement Miscellaneous operators
  • Implement Image Segmentation with Distance Transform and Watershed Algorithm
  • Export OpenCV Operation Stream as an illustration

Milestone 4 - Implementation of visualization pane and application section

  • Implement the visualization pane section using histograms
  • Implement the application section with predefined operator streams

Milestone 5 - Testing

  • Writing tests to evaluate developed features

Milestone 6 - Documentation

  • Updating the project documentation for newly created functionality
  • Updating project README with relevant information

Feature: adding Dilation to the filtering operations

Erosion and dilation are the two types of morphological operations. As the name implies, morphological operations are the set of operations that process images according to their shapes.

Based on the given input image a "structural element" is developed. This might be done in any of the two procedures. These are aimed at removing noise and settling down the imperfections, to make the image clear

You can perform the dilation operation on an image using the dilate() method of the OpenCV imgproc class.

Check the project documentation for more information related to the project setup and contributions.

Improve Image Lab UI/UX - GSoC 2021

GSoC 2021 Milestones

Phase 1

  • Designing a logo for ImageLab project
  • Designing a splash screen (loading screen)
  • Making a quick guide on the first use
  • Improving the project User Interface and implementing it
  • Adding night mode
  • Designing new block shapes and replacing all blocks with the new design
  • Adding zooming in the playground and also in preview pane.
  • Add save or don’t save pipeline option when closing the app.

Phase 2

  • Enhance the view of the project documentation.
  • Improve new way for unmergeable blocks.
  • Adding help section
  • Adding Info (About us) section
  • Providing availability for all image sizes
  • Adding history pane
  • Drag and drop in basket to remove a specific filter
  • Add (new pipeline) button
  • Package the application into an installable exe file in windows
  • Run with keyboard shortcut.

Here are some a picture shows my imagination about the new UI :

ImageLab UI

For detailed information you can check my proposal

Your feedbacks are much welcomed !

Feature: add Filled polygon operator to the drawing operations

Polygon is a figure with at least three straight sides and angles.OpenCV provides polygon drawing facility with Improc.fillPoly() method. Moreover, the operator enables to add custom points dynamically and it will generate the filled polygon accordingly.

Dark mode of Image Lab Electron

2023-03-13.13-16-21.mp4

The undo, redo, execute and reset buttons have dark colors in dark mode. They seem to camouflage with the background.

Feature: adding drawing operations

You can draw various shapes like Circle, Rectangle, Line, Ellipse, Polylines, Convex, Polylines, Polylines on an image using the respective methods of the org.opencv.imgproc package.

So, in this issue we expect you to add drawing operations to ImageLab.

Check the project documentation for more information related to the project setup and contributions.

User Interface: More Space for Preview Pane to Improve User Experience

Preview Pane plays a major role in ImageLab since it displays the processed image in the operator stream. The current solution has less space for the preview pane. it should spread more over the application to give more user experience and to provide a good learning experience
preview_pane

.

Feature: Apply Undo/Redo operation to the operator stream

Current ImageLab works with an operator pipeline to do the image processing tasks. If a user mistakenly adds an unwanted operator, he/she has to reset the whole pipeline. But, the feature Undo/Redo operation enables users to recover that action and go to the previous state. In order to do that task, DashboardControlller should be improved accordingly.
image

Feature: adding adaptive threshold to the thresholding operations

Adaptive thresholding is the method where the threshold value is calculated for smaller regions and therefore, there will be different threshold values for different regions.

In OpenCV, you can perform Adaptive threshold operation on an image using the method adaptiveThreshold() of the Imgproc class.

So, this issue expects contributors to add adaptive threshold operator to ImageLab.

Check the project documentation for more information related to the project setup and contributions.

Fix dependency issue

When installing the packages a dependency issue occur. Try to fix the issue by changing the dependency versions.

Screenshot 2023-02-23 at 23 49 06

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.