1. The color of 3_1.bmp does not look right. Please write your own program to make the color look more natural. You could try different methods to make it look better. Explain the final method you use and how it works. (30 points)

Hint: For example, you might think there is one color that seems overwhelming, or maybe some colors are not strong enough. You can play with the colors to figure out how to make the image look better….

an image which the color does not look right a more natural image

2. You have two low-quality images (3_2.jpg, 3_3.jpg) that you want to enhance. You will exam the following three general histogram-based enhancement algorithms:

a. Linear stretching;

One simple way to do linear stretching is, for example, if majority of original image’s brightness (V channel in HSV or I channel is HSI) values fall into range X to Y, we could define a linear function that map from X---Y to 0---255. Note: Linear stretching may not work well for some images if their original dynamic range is already in 0-255. b. Histogram equalization;

c. Histogram specification.

For each image and each method, please submit the original and the new image after processing. For the original and new images, please also include their histogram and cdf plots for you to get a better understanding of what’s going on with these processing in regard with the image histogram. Compare the effects of these methods. For each image, please comment on the effects and pick up the best method for that image in your opinion. (70 points)

Hints:

1. You need to implement your own functions for linear stretching, histogram equalization, and specification. You may find these commands helpful: rgb2hsv, hsv2rgb, subplot, imshow, cumsum, imhist.

2. You may want to convert the image to HSV first before taking any operations; specifically, you want to process the V channel (value, i.e., intensity) only. After the V channel is altered, you want to combine it with the original H and S channels and convert it back to RGB.

3. For histogram equalization, compute pdf and cdf first and then use the cdf as the transform function. You can use command imhist to help you get the image histogram and then use command cumsum to get the cdf from histogram, but please DON’T use command histeq to directly perform histogram equalization.

4. For histogram specification, you may specify any histogram to get the best result. Note that if you specify the target histogram as a uniform distribution, you’re doing histogram equalization. You can also try a normal distribution as the specified histogram to get the transform function and see how the result turns out. Use command normpdf to generate a normally distributed sequence in MATLAB. Use command help normpdf to see how to use this function to generate a desired normally distributed histogram. Remember this histogram has 256 bins.