Skip to content
Snippets Groups Projects
Forked from Matthieu Muller / sicom_image_analysis_project
Source project has a limited visibility.

Image analysis course SICOM 3A - Project

1. Introduction

As a final exam, this project aims to evaluate 3A SICOM students.

Students will work individually, and each student must submit its work (report and code) as a marge request on Gitlab by Tuesday, June 6.

2. Presentation

Many commercial RGB cameras use a technology called Color Filters Array (CFA). This is an array of red, green or blue filters overlaid over the sensors, typically arranged in periodic patterns. The incident light is consequently filtered by each filter, before being captured by the sensor. The usual image acquisition process uses a predetermined CFA pattern to assign a color to each pixel of the sensor. Here are the two configurations that are explored in this project:

alt text

Because of the filters the pixels on the sensor will only acquire one color (being red, green or blue). This leads to a raw acquisition that is a gray-scale image. Example:

alt text

The goal of this project is to perform demosaicking: recover all the missing colors for each pixel. This way we will recover the full RGB image.

We propose you to reconstruct 4 images (you can find them in the images folder of this project). These images are from the open dataset of the National Gallery of Art, USA, which can be found here. To reconstruct these images we provide you the forward operator, modeling the effect of a CFA camera with 2 different CFA patterns:either Bayer of Quad Bayer pattern. This operation is described in src/forward_operator.py.

3. How to proceed?

All of the images to reconstruct have the same size (1024x1024) and are RGB. You have to use methods seen during this semester to recover a fully colored RGB image using only the raw acquisition (gray-scale image) and the forward operator.

4. Some hints to start

We provide in src/methods/baseline a basic interpolation image which can help you to start. These methods are described in the PhD Thesis Model Based Signal Processing Techniques for Nonconventional Optical Imaging Systems and the user's manual Pyxalis Image Viewer (see references). You can also find in the academic litterature techniques (interpolation, inverse problem, machine learning, etc) that solves demosaicking.

The time of computations might be very long depending of your machine. To verify that your method works, try to work with smaller test images.

5. Project repository

The project has the following organization:

sicom_image_analysis_project/
├─.gitignore                   # Git's ignore file
├─images/                      # All images you need to reconstruct
├─main.ipynb                   # A notebook to experiment with the code
├─output/                      # The output folder where you can save your reconstruction
├─README.md                    # Readme, contains all information about the project
├─readme_imgs/                 # Images for the Readme
├─requirements.txt             # Requirement file for packages installation
└─src/                         # All of the source files for the project
  ├─reconstruct.py             # File containing the main reconstruction fonction
  ├─checks.py                  # File containing some sanity checks
  ├─forward_model.py           # File containing the CFA operator
  ├─utils.py                   # Some utilities
  └─methods/
    ├─baseline/                # Example of demosaicking
    └─template/                # Template of your project (to be copied)

Copy src/methods/template and rename it with your name. You are expected to write your own code in new files inside src/methods/your_name, and call them in the src/methods/your_name/reconstruct.py file. You are not allowed to modify any file outside of src/methods/your_name apart from main.ipynb, see instructions bellow.

Please have a look in src/methods/baseline, your projet should work in the same way.

6. Instructions:

Each student will fork this Git repository on its own account. You will then work in your own version of this repository.

To submit your work you just need to create a merge request in Gitlab (see here for a detailed explanation). This merge request will only encompass the changes made to src/methods/your_name, without main.ipynb. Because the merge request will only create src/methods/your_name there will not be any conflicts between each student's project.

Along with your code you must submit a report as a pdf file with the name name.pdf inside the folder src/methods/your_name.

The code and the report must be written in English.

6.1. The report:

Your report must be a pdf file written in English and should not be longer than 5 pages. In this file you are asked to explain:

  1. The problem statement, show us that you've understood the project.
  2. The solution that you've chosen, explaining the theory.
  3. With tools that you've built show us that your solution is relevant and working
  4. Results, give us your results of the images img_1, img_2, img_3, img_4.
  5. Conclusion, take a step back about your results. What can be improved?

6.2. The code:

  • You should first copy the folder src/methods/template and rename it with your name. It is in this folder that you will work, nothing else should be modified apart from main.ipynb for experimenting with the code.
  • You will add as many files you want in this folder but the only interface to run your code is run_reconstruction in src/methods/your_name. You can modify this function as you please, as long as it takes in argument the image to reconstruct (y), the name of the CFA (cfa) and returns a demosaicked image.
  • You can use all the functions defined in the project, even the ones that you should not modify (utils.py, forward_model.py, etc).
  • Your code must be operational through run_reconstruction, as we will test it on new and private images.
  • The notebook provides a working bench. It should not be included in the merge request, it is just a work document for you.
  • Comment your code when needed.

7. Supervisors

8. References

  • NGA: website
  • Model Based Signal Processing Techniques for Nonconventional Optical Imaging Systems: website
  • Pyxalis: website