First, we need to decide an algorithm for detecting the underexposed images. A simple algorithm will be something like calculating the average brightness of the original image (mean of the pixel intensities) and comparing it with a threshold. The images with average brightness below this threshold level will be underexposed and you can pre-process these images. The basic preprocessing I can think of is increasing the brightness and improving contrast. The functions like imadjust or adapthisteq can be used for the same.