That would work but it's quite crude. You could try creating a mask for the well exposed parts of each image and do a weighted sum.
Something like this
imgList =
SortBy[ImageMeasurements[#, "Mean"] &][Image[MyImageList, "Real"]];
ratios = ConstantArray[1/2, Length[imgList]];
compensations = 1 / FoldList[Times, 1, 1/ratios];
midexposure = Map[
normalExposure[#, {.5, .3}] &,
ColorConvert[imgList, "Grayscale"]
];
normalizedmasks = normalizeImages[midexposure];
scaled = ImageMultiply @@@
Transpose[{imgList, normalizedmasks, compensations}];
ImageAdd[scaled]
Where normalizeImages
makes sure the total across the masks for each pixel is 1
normalizeImages[images_] :=
With[
{
tot = ImageAdd @@ images,
l = Length[images]
},
(Image`ImageDivide[#1, tot] &) /@ images
]
And normalExposure weights the pixels according to a Gaussian distribution around 0.5 (or whatever you want)
normalExposure[img_, {mean_, sigma_}] :=
Image`ImageExp[ImageMultiply[
Image`ImagePower[ImageMultiply[
ImageSubtract[img,
mean], 1/sigma], 2], -1]]
If you don't like the result you can experiment with different weighting functions.