IME: Image Manipulation and Enhancement

IME: Image Manipulation and Enhancement
  • By: Ankit Sinha & Rajat Bisht
  • Full stack project done during the course work in Northeastern University
  • Github Link will be shared on request (Email)

This is a command line based application for image processing that loads in images from a given path and then operates on it. A variety of operations are supported in this application including load, save, applying filters, modifying the image, etc. Supported image types include PPM, JPG and PNG formats.

Design of this Application follows MVC design which uses 3 different entities namely, Model, View and Controller. Each of these entities encapsulate different aspect of the application.

  • View: currently we have implemented a CLI (Command liner Interface) which can load, save images at desired paths.
  • Model: Model is implementing the image processing operations in the back-end of the application.
  • Controller: all the supported operations including loading and saving of files, image-operations, etc. are implemented in the controller. As the name suggests, this entity controls the flow of this application.

1] Model:

In this project, we have created an Image object containing a 3-channel image matrix stored in a 3-Dimensional integer array. This private variable can then be operated upon by methods to do the following operations:

  • Breaking the image into multiple types of component images like Red component, Green-component, Blue-component, Intensity-greyscale component, Value-greyscale component and Luma-greyscale component.
  • Flipping the Image along vertical axis or horizontal axis.
  • brighten or darken the image.
  • combining Red, Green and Blue channel pixel of three different images to create a new image.
  • Blur or Sharpen an image using kernel filter.
  • applying a 'Sepia' filter on the image.

2] Controller:

In this application, we have provided the user with the following operations:

  • load [path/of/the/image] [reference-name] : load an image form the path and refer to it as 'reference-name' from now on in this application session.
  • save [path/of/the/image] [reference-name] : save the image referred in this application session as 'reference-name' at the given path.
  • run <script.file>: load the given script file and execute the commands listed.
  • help : provides the list of commands at the user's disposal.

Other than the list above, image processing methods described in the model are also controlled by the controller. Controller keeps track of the reference names by creating a hash-map of object names and reference names pair.

3] View:

View is a simple CLI implementation used to take in inputs. No outputs are displayed using the current implementation of the view.

4] Tests:

A list of tests are provided for developers who intend to extend the current design while maintaining the back-compatibility. All the methods are fully tested and accurately implemented. These tests file can also be used to understand the input and output design architecture used for communicating between the Model, Controller and View.


Images of Working Application


© 2024 Ankit Sinha & Rajat Bisht. All content, including images, is either created or owned by me. Unauthorized use is prohibited.