Pixel operations and intensity transformations

Project goal

Images get degraded through various processes. How do you enhance the visual quality of degraded images using various point intensity transformations?

Project description

There are two major classes of spatial transformations: intensity transformations, and spatial filtering. This project involves image enhancement through pixel intensity transformations. These transformations change the value of a pixel by considering only its value.

You are given a set of images some of which need enhancement through pixel intensity transformations. Additionally, you need to produce images with specified characteristics (e.g., negative of an image, bit-plane images of an image, binarized images). Pixel intensity transformation functions to consider are the log, power-law/gamma, linear, piecewise-linear, arithmetic operations (image addition, subtraction, multiplication/division), set operations (complementation, union, intersection, difference), thresholding, and logical operations on binary images (AND, OR, NOT, XOR).

You may add additional images to the pool of given images. If you add your own images, please ensure that they are not copyrighted.

High-level solution steps

  1. By design, this is an open-ended project. Your team need to make several decisions about various aspects of this project.

  2. A simple Graphical User Interface (GUI) is the best way to make the various intensity transformation functions available to end users.

  3. Group the operations into the following categories:

    • Image negative
    • Bit-plane images
    • Log transformation
    • Power-law/gamma transformation
    • Linear and piecewise-linear transformations
    • Image arithmetic operations
    • Image set operations
    • Binarization/thresholding
    • Logical operations on binary images
  4. When the user selects image negative operation, your application should prompt the user for the name of the input image. Equivalently, the application may enable the user to navigate to a directory and specify an image in that directory.

  5. For power-law/gamma transformation, in addition to the source image, the application should prompt the user to provide values for the \(c\) and \(\gamma\) parameters.

  6. Similar considerations apply for the other operations.

  7. Terminate the application when the user presses q on the keyboard. Equivalently, your GUI may provide a button to terminate the application.

  8. Your application should provide an option to save images that result from any of the above operations. Prompt the user for a file name.

Running/testing the solution

Invoke your solution with the following commands:

  1. pixel_ops -h displays information about how to use the solution.
  2. pixel_ops to start the application

Reflecting on the learning experience and teamwork

Reflect on your solution to the problem and the learning experience through this project. Trust building, connectedness, and psychological safety are the foundational elements of teamwork. Reflect on the team dynamic experienced in this project.

Team member contribution/effort assessment

Use the following rubric to rate yourself and your teams members on a scale of 1 to 5 about their individual contribution to the project (a rating of 1 being poor and 5 being outstanding). Also, please provide rationale for each rating.

Self-assessment Assess team member 1 Assess team member 2
Responsibilities/ Performance Rating Rationale Rating Rationale Rating Rationale
Attended classes and group meetings
Initiated communication and interaction with group members
Contributed and committed to the group project
Provided comments and feedback in group work
Demonstrated a positive attitude towards to the project
Any other comments

Rubric for self-assessment and grading

Use the following rubric for self-assessment and peer grading. Also, the instructor will use the same rubric for grading the project. The final grade for the project will be based on scores from the self-assessment, peer-grading and instructor grading.

Good Fair Poor
Conformance to Specifications (40 points) The program works correctly and meets all of the specifications. (40 points). The program works correctly but implements less than 50% of the specifications. (30 points) The program produces incorrect results or does not compile. (10 points)
Data Structures and Algorithms (20 points) Appropriate and efficient data structures and algorithms are used. (20 points) The data structures and algorithms used get the job done but they are neither a natural fit nor efficient. (10 points) Solution is based on brute force approach. No consideration is given to selection of suitable data structures and algorithms. (5 points)
Testing (20 points) Coverage of test cases is comprehensive. Following information is provided for test cases: inputs, expected results, pass/fail, and remarks.(20 points) Coverage of test cases is low. Test case documentation is incomplete. (10 points) Cursory treatment of testing. No documentation of test cases. (5 points)
Coding (10 points) The code is compact without sacrificing readability and understandability. (10 points) The code is fairly compact without sacrificing readability and understandability. (5 points) The code is brute force and unnecessarily long. (2 points)
Readability (5 points) The code is well organized and very easy to follow. (5 points) The code is readable only by someone who knows what it is supposed to be doing. (3 points) The code is poorly organized and very difficult to read. (1 points)
Documentation (5 points) The code is self-documenting and obviates the need for elaborate documentation. It is well written and clearly explains what the code is accomplishing and how. (5 points) The documentation is simply comments embedded in the code with some simple header comments separating functions/methods. (3 points) The documentation is simply comments embedded in the code and does not help the reader understand the code. (2 points)


Back to course home