Please complete this task as part of your GSoC 2018 application when applying for matching tasks/ideas.
This challenge is mandatory if you apply for T763.
---
1. Write a C/CPP program for loading a RAW12 image (link here) into the memory - separate the 4 channels (in memory - 8 bits). Output the intensity values of the first 5x5 (square tile) R, G, G, B channels.
2. Save the channels (separately) as valid image files (8 bits per pixel) named appropriately without use of any external libraries (e.g. openJPG/lodePNG). (Hint: PPM file format).
3. Debayer the CFA data (in memory using nearest neighbour / bilinear) - output the image as a valid image file (8-bit, without use of any external library).
Additional task (for frame server project):
4. Save the debayered RGB image as a BMP file format (without use of any external libraries)
Additional points (if you do one / some / all of the following):
1. Use cmake for building the C/CPP program
2. Abide by the C/CPP coding guidelines (link to be given here)
3. If you can load part of your program as a dynamic library (.so file)
**Collected information:**
- RAW12: https://wiki.apertus.org/index.php/RAW12
- Bayer Pattern: https://en.wikipedia.org/wiki/Bayer_filter
- 12bit conversion: https://stackoverflow.com/questions/33768206/convert-2-bytes-into-12-bit-number
- 12bit conversion (SIMD not required): https://stackoverflow.com/questions/15443868/fastest-way-to-convert-12bit-image-to-16bit-image
- [Processing RAW images in MATLAB](https://rcsumner.net/raw_guide/RAWguide.pdf) (useful as overview; we are not asking for color-correct output)
- Debayering: https://en.wikipedia.org/wiki/Demosaicing
**GSoC 2018 applicant code for review:**
**Note:** Using or improving upon existing code is permitted but, in the event that code authored by someone else is used, the code's original author must be credited.
To get in touch with any mentor check the [[ https://www.apertus.org/GSoC-2019-Mentor-Contact-List | Mentor Contact List]].