ROS node implementing low light image enhancement. The output image will have the same header as the input image. The node will run at the parameterized rate, always processing the latest image. In the event computation speed cannot keep up with the desired rate, additional images will be dropped.
To build and run an example, enter your catkin workspace and execute the following
cd src
git clone https://github.com/unr-arl/image_brighten_ros
cd ..
catkin build -DCMAKE_BUILD_TYPE=Release
source devel/setup.bash
roslaunch image_brighten image_brighten.launch topic_image_input:=/yourcam/imagetopicname
The node will create a new topic under '[...]/bright'. We provide example ROSBAGs to allow the convenient testing of the method and its performance.
Motivated by the method described in:
Dong, X., Wang, G., Pang, Y., Li, W., Wen, J., Meng, W. and Lu, Y., 2011, July. Fast efficient algorithm for enhancement of low lighting video. In 2011 IEEE International Conference on Multimedia and Expo (pp. 1-6). IEEE.
And as discussed in an associated Mathworks example, this node implements the following steps:
- Step 1: Invert the input image.
- Step 2: Apply haze removal to the inverted image.
- Step 3: Invert the enhanced image.
To speed-up, the method performs rescaling internally. As detailed in the paper and link above, this process is valid as the histogram of pixel-wise inversion of low-light images is very similar to the histogram of hazy images. This in turn implies that we can use haze remove methods to enhance low-light images.
The following parameters allow to tune the algorithm to achieve the desired performance and computational load.
- enable_dyn_reconf : Enables or Disables Dynamic Reconfiguration.
- topic_image_input : Image topic to which the node subscribes.
- topic_image_output : Image topic to which the node publishes.
- enable_dehaze : If disabled, node will publish resized image.
- max_process_freq : Node will process images at a maximum of this frequency. Images received before the previous image is finished processing will be dropped. Otherwise the node will always take the latest image.
- scale_factor : Pre Proccessing scale factor, the image resolution will be dropped by this factor before any processing takes place.
- dark_ch_scale : Scale factor applied before calculating the average dark channel value.
- transmission_scale : Scale factor applied before calculating transmission image.
- dehaze_radius : The neighborhood radius to be used to find the dark channel prior.
- dehaze_omega : See Dark Channel Prior.
- dehaze_t0 : See Dark Channel Prior.
- dehaze_r : Guided Filter Neighbor Radius.
- dehaze_eps : See Guided Filter.
- dehaze_filter_resize_factor : Resize factor for guided filter. Filter results are applied at the input resolution.
We provide two example ROSBAGs with dark image data to allow the testing of the method.
GPU Implementation Coming Soon!
To develop this software package we relied or took inspiration from the implementations in:
He, K., Sun, J. and Tang, X., 2012. Guided image filtering. IEEE transactions on pattern analysis and machine intelligence, 35(6), pp.1397-1409.
He, K., Sun, J. and Tang, X., 2010. Single image haze removal using dark channel prior. IEEE transactions on pattern analysis and machine intelligence, 33(12), pp.2341-2353.
Dong, X., Wang, G., Pang, Y., Li, W., Wen, J., Meng, W. and Lu, Y., 2011, July. Fast efficient algorithm for enhancement of low lighting video. In 2011 IEEE International Conference on Multimedia and Expo (pp. 1-6). IEEE.
You can contact us for any question or remark: