### Objectives

This project is comprised of several components and thus has a number of key objectives.

- Take as input any user-specified RGB source image that is polluted with haze.
- Accurately determine which areas are polluted with haze.
- Dehaze the image using the dark channel prior.
- Complete all computation in a reasonable amount of time (under 30 seconds for an 800x600 pixel image, if possible).

The main approach that we took to solve the problem of creating code that would improve on performance that the previous Dark Channel method is bilateral filters.

A series of bilateral filters were used to complete our algorithm. Specifically, a three-filter system was used: median filter, bilateral filter and joint bilateral filter. The following algorithm was used from [3] to implement this three-step process.

- Calculate the min components W(x) of I(x) and estimate the atmospheric light A
- Yielding initial atmospheric mask V(x) using median filtering (Eq. 5);
- Filtering W(x) using bilateral filter to get the reference image R(x) (Eq. 6)>
- Filtering V(x) taking R(x) as the reference image to receive corrected atmospheric scattering light VR(X) (Eq. 7)
- Calculate the transmission t(x) (Eq. 3) (same as dark channel prior step 3)
- Get the recovered image J(x).