Image Processing Engine with GUI

Overview

Image Processing Engine with GUI

Imperial College London Department of Computing Third Year Software Engineer Group Project Supervisor: Dr. Pancham Shukla Currently under development.

Original Overview Histogram Equalization
ori histeq
Depth Estimation Style Transfer
depth styletransfer

How to Use

Since it is still under development, we have not yet packaged the software into a single bundle (e.g. dmg/exe/deb). Thus you have to have a JDK 17 environment. Simply run ./gradlew run and it will start the application, or use Intellij to open the project and configure the runner to be gradle with the run command.

Development Process & Dependencies

Feature Overview

This is an open-source image processing software built for scientific/research purposes. We include most common features that might be used frequently in researches or professional photo editing such as inverse color, greyscale, as well as advanced features such as neural style transfer and depth estimation. We also support different viewing methods, pipeline/import/export the sequence of processing, batch processing. Below is a list of features with detailed descriptions.

Basic Processing Features

  • Inverse Color
  • Greyscale
  • Black and White
  • Flip horizontally or vertically
  • Rotation
  • Contrast
  • Color Adjustment (RGB and HSV)

Advanced Processing Features

  • Edge Detection
  • Sharpen
  • Neural Style Transfer
  • Blur
  • Frequency Filtering
  • Color Space Conversion
  • Histogram Equalization
  • Blending
  • Salt & Pepper Noise
  • Depth Estimation
  • Water Mark
  • Denoise
  • False Coloring
  • Steganography
  • Visualization of Neural Network\
  • Posterize
  • Rescaling

More Features

  • Support for different views: Slider and Parallel View
  • Support for batch processing
  • Support for multi-threaded processing
  • Support import/expore sequences of operations

Known Issues

  • Rotation might lower the quality of image
Comments
  • Import image

    Import image

    • [x] Added a button Open.. to let user browse which image they want to open in the main GUI window
    • [x] Added a new fragment class ImportImage so a window will pop up when Open.. is clicked
    • [x] The new window has a textfield to allow user input file path directly or by selecting files from clicking browse.. button on the right, then press OK button to commit
    • [x] The file selector popped up from browse.. button now supports *.png, *.bmp, *.jpeg and *.jpg file extension (can be extended later)
    • [x] Added try.. except.. block to handle exceptions if file path is invalid or image failed to open
    opened by mihane-ichinose 6
  • IP-22 & IP-23 & IP-34 - Fix minor bugs and add spinner to show slider value dynamically

    IP-22 & IP-23 & IP-34 - Fix minor bugs and add spinner to show slider value dynamically

    • [x] Forced button width in basic actions (Inverse Color, Greyscale, Flip Horizontal, Flip Vertical), these buttons have long labels so the window could abbreviate them when load up (Invers..., etc.), if other tabs are clicked, the labels will show up all and the middle border will move to the right, causing image moving to the right as well. Now fixed.
    • [x] Add slider value as integer to the right hand side of the slider itself, showing corresponding value clearly to users.
    • [x] Use spinner instead of label so user can also adjust the slider by input values in the spinner
    opened by mihane-ichinose 3
  • Major Refactor - Project Structure

    Major Refactor - Project Structure

    Major Project Refactor

    Moved ALL functionalities/features to EngineModel which performs all logical operations for the image engine. Controllers from now on should only handle Events and then call appropriate methods in the model.

    Note that there can be more than 1 model and more than 1 controller as long as their functions do not overlap (see PAC or HMVC patterns).

    WIP

    • [x] Tony's pipeline migration
    • [x] Steven's branch
    opened by hoangvu01 3
  • Improve transformations list

    Improve transformations list

    • [x] override toString for transformations so that display names in “Transformations” are meaningful
    • [x] Full history support
      • [x] ability to click a step in “Transformations” and go back to that state
      • [x] Undo now does not clear history
      • [x] Add ability to redo a previous step
    opened by danieldeng2 2
  • IP-74-Parallel Image View

    IP-74-Parallel Image View

    • [x] Added a top bar in image panel to toggle between sliders and parallel view.
    • [x] The image views in parallel view can adjust their widths based on width of the image panel.
    • [x] Fixed alignment of the horizontal slider to make it look nicer.
    • [x] Removed export parallel view.
    opened by mihane-ichinose 1
  • IP 29 Rescale Methods

    IP 29 Rescale Methods

    Methods

    • [x] Point (Nearest Neighbour)
      • [x] PointWithZero (Filled zeros when sample is not available at that site)
    • [x] Bilinear
    • [x] Bicubic ~- [ ] Spline~
    • [x] Lanczos ~- [ ] Jinc~
    • [x] Lagrange

    UI (@zhao-xuan Please help 😭)

    • [x] Basic UI control in Filters tab
    • [x] Scroll scaled image
    enhancement 
    opened by JoeyTeng 1
  • fix(slider-with-spinner): NPE: issue introduced in #33

    fix(slider-with-spinner): NPE: issue introduced in #33

    NPE when user delete number in any spinner in filter tabs (like RGB)

    Introduced in f3b073f83ae7436773fb25fa43ee989728d7be43 in #33 Should use doubleSpinner the factored out component rather than raw spinner

    bug 
    opened by JoeyTeng 1
  • IP-56: Compare image by dragging the slider at the bottom (also you can save it)

    IP-56: Compare image by dragging the slider at the bottom (also you can save it)

    • [x] Now add a slider at the bottom of the image, it will drag a vertical line to compare between the processed image and the original one.
    • [x] Fixed bug 1: Slider can now update its max value everytime new image is imported so it now works normally on every new image, before the value is locked to the initial image when program loads up.
    • [x] Fixed bug 2: Slider now move back to initial state (rightmost) when new image is imported, filter, colouring applied.
    • [x] Add feature in the top bar menu to allow user save their images in parallel mode. Simply click Export parallel to save in current state.

    Some improvements can have in the future:

    • Add a vertical slider so a region can be shown as original image, or user may want to compare vertically.
    • Give a selection whether user want LHS or RHS be original image (and top or bottom, if previous one implemented).
    • Add a spinner just like in filter panel so user can adjust the position of the line by value.
    opened by mihane-ichinose 1
  • IP-15-add-HSV-filter

    IP-15-add-HSV-filter

    • Add sliders for hue, saturation and brightness
    • Add 'Adjust' and 'Reset' buttons
    • Centralise the sliders and make it possible for RGB factors to be greater than 1 image image
    opened by HenryHu2000 1
  • instruction pipelines

    instruction pipelines

    image processing commands are now stored in linkedlist, one command in each pipeline stage. processing is finished by passing image iteratively through all pipeline stages each time select or deselect an operation result in pass source image again from start of the pipeline

    opened by xu-shitong 1
  • Ip 77 visualize convolution

    Ip 77 visualize convolution

    Uploading 屏幕快照 2021-12-19 00.35.37.png…

    Implemented visualization of CNN's each layer's output.

    • [x] support importing any torch layers with output more than 2 dimentions
    • [x] support export to json file
    opened by xu-shitong 0
  • Rules

    Rules

    • [ ] Before making changes, post it in Jira at least (better to say in WhatsApp group as well)
    • [ ] Branch out your own branch, do not work on other's branch directly. Use git rebase or cherrypick to catch up with other's branch
    • [ ] Don't merge directly to master, merge to develop (in MOST cases)
    • [ ] At least 3 people should review the PR before merging. After you've done your review, use the Submit review function in PR or just leave a comment below at least.

    Naming Strategies

    • [ ] Branch Name: <Jira-code>-<whatever-you-want-to-put>
      • Example: IP-1-image-loading
      • Note that the IP should be capitalised
    documentation 
    opened by JoeyTeng 0
Owner
null
Kotlin Symbol Processing (KSP) sample project

Kotlin Symbol Processing (KSP) Sample Project Sample annotation processor created with Kotlin Symbol Processing (KSP) API. The repository supplements

Pavlo Stavytskyi 33 Dec 23, 2022
Mocking for Kotlin/Native and Kotlin Multiplatform using the Kotlin Symbol Processing API (KSP)

Mockative Mocking for Kotlin/Native and Kotlin Multiplatform using the Kotlin Symbol Processing API (KSP). Installation Mockative uses KSP to generate

Mockative 121 Dec 26, 2022
A simple GUI frontend for the norns docker environment

This is a simple GUI frontend for the norns docker environment. It displays the virtual norns UI using the screenshot server and exposes OSC controls.

Will Winder 4 Jul 30, 2022
A multifunctional Android RAT with GUI based Web Panel without port forwarding.

AIRAVAT A multifunctional Android RAT with GUI based Web Panel without port forwarding. Features Read all the files of Internal Storage Download Any M

The One And Only 336 Dec 27, 2022
BindsAdapter is an Android library to help you create and maintain Adapter class easier via ksp( Kotlin Symbol Processing).

BindsAdapter BindsAdapter is an Android library to help you create and maintain Adapter class easier via ksp( Kotlin Symbol Processing). Installation

Jintin 5 Jul 30, 2022
Simplify the processing of sealed class/interface

shiirudo Generates DSL to simplify processing branching by when expressions in sealed class/interface. Setup Refer to the KSP quickstart guide to make

KeitaTakahashi 2 Nov 1, 2022
An Android Image compress library, reduce's the size of the image by 90% without losing any of its pixels.

Image Compressor An Android image compress library, image compressor, is small and effective. With very little or no image quality degradation, a comp

Vinod Baste 11 Dec 23, 2022
A sample skeleton backend app built using Spring Boot kotlin, Expedia Kotlin Graphql, Reactive Web that can be deployed to Google App Engine Flexible environmennt

spring-kotlin-gql-gae This is a sample skeleton of a backend app that was built using: Spring Boot(Kotlin) Reactive Web Sprinng Data R2DBC with MYSQL

Dario Mungoi 7 Sep 17, 2022
A Hello World and Template for the KorGe game engine

Korge Hello World and Template This is a Hello World and Template for the KorGe game engine. Using gradle with kotlin-dsl. You can open this project i

Kiet 0 May 1, 2022
Candroid Browser is a replacement web browser for Candroid. It is designed to replace the AOSP browser, but not Google Chrome. It will be based on a privacy friendly WebKit engine fork.

Candroid Browser Candroid Browser is a replacement web browser for Candroid. It is designed to replace the AOSP browser, but not Google Chrome. It wil

Sean P. Myrick V19.1.7.2 3 Dec 22, 2022
My own approach to what I think an Android MVVM project with Clean Architecture should look like with Dagger-Hilt as Dependency Injector engine

MVVM Project Hilt Introducción Este proyecto es mi visión particular, ni mejor ni peor (sólo una más) que cualquier otra aproximación a lo que yo enti

Antonio Fdez. Alabarce 7 Dec 16, 2022
sharex image uploader using ktor

ktor-sharex-uploader uploader zdjec napisany w kotlinie przy uzyciu ktor pobierak gotowa jarka jest do pobrania tutaj config apki konfiguracje apki ma

Michał 11 Jun 10, 2022
A webapp which generates a simple Discord profile banner image in real-time which shows user's status and activity.

DiscordProfileBanner This tool generates a Discord profile banner image in realtime. I wrote it for use in my AniList profile. An example in action: H

Quanta 11 Oct 17, 2022
An image manipulation library for Kotlin

Sketch An image manipulation library for Kotlin. Sketch doesn't require any external installation like OpenCV or OCR and can be used right away. It's

Eugene R. 40 Oct 30, 2022
Search image app [Adanian Labs Interview], Android developer role

Pixar This is App shows you Images from the Pixabay API Table of Contents Functionalities Approach Screenshots How To Setup Libraries Used Author Info

Abdulfatah Mohamed 2 Dec 20, 2022
Android SDK development environment Docker image

AndroidSDK Android SDK development environment Docker image Goals It contains the complete Android SDK enviroment, is able to perform all regular Andr

Jing Li 1k Dec 30, 2022
KotlinScript that generate Reel from a given image, text and audio

ReelScriot KotlinScript that generate Reel from a given image, text and audio 80f4ea39-a7da-4f21-b0ff-7a17836a1cd0.mp4 6691b51d-d7a3-4915-ae41-8bec400

Chetan Gupta 2 Dec 6, 2022
AndroidPhotoFilters aims to provide fast, powerful and flexible image processing instrument for creating awesome effects on any image media.

PhotoFiltersSDK PhotoFiltersSDK aims to provide fast, powerful and flexible image processing instrument for creating awesome effects on any image medi

Zomato 2.5k Dec 30, 2022
AndroidPhotoFilters aims to provide fast, powerful and flexible image processing instrument for creating awesome effects on any image media.

PhotoFiltersSDK PhotoFiltersSDK aims to provide fast, powerful and flexible image processing instrument for creating awesome effects on any image medi

Zomato 2.5k Dec 23, 2022
Little image processing library

Poliwhirl Description This is a small image processing library done to find good color for icon background. It uses CIEDE2000 to determine what colors

Anton Potapov 24 Sep 7, 2022