Homework 1: Color Transfer between Images
The goal of this assignment is to implement the color transfer paper [1] and develop a system that can transfer the color characteristics from one image to another. This system can be used to correct/change the color in an image by choosing an appropriate target image and transferring its color characteristics to the source image.   

This assignment needs to be finished using Python. You can follow our tutorial to install Python with OpenCV. We also provide a skeleton code for you to begin with. To test your implementation, we provide two samples that include input images and the results. All these files can be found in this folder.

You are required to implement the color transfer using the l color space. If you aim to get all the points, you also need to implement the color transfer in the RGB and CIECAM97s spaces.

For this homework, you can use APIs from OpenCV to load and save images. No other OpenCV APIs can be used. You are free to use any numpy APIs.

Grading policy:

1. This homework assignment has 100 points in total, including 90 points for the l color space and 5 points for each of the other two color spaces. This homework will contribute 15% to your final grade.

2. We will run your code on a few examples to generate the color transfer results. Your grade will be calculated based on the difference between your results and the reference results. If the root-mean-square error (RMSE) is less than 0.5, you will get all the points. Otherwise we will use the following equation to calculate your grade g = max(G(1 - (e - 0.5) * 0.3), 0) where G is the total number of points and e is the RMSE of your results. G is 90 for color transfer in the l color space and is 5 for each of the other two spaces. We will sum up the points for your implementation as your final grade for this homework.

[1] Color transfer between images. Erik Reinhard, Michael Ashikhmin, Bruce Gooch, and Peter Shirley.
IEEE Computer Graphics and Applications.21(5), 2001: 34 - 41.

Submission:

The homework is due 4:30 pm, January 23. No late submission will be accepted. You should submit "color_transfer.py" to lizhan@pdx.edu. No other files should be submitted.