Programmatically generating over/under exposed pictures

5 次查看(过去 30 天)
Is there a simple way to introduce realistic over-exposure / under-exposure distortion in images? That is, synthetically over/under expose images such that the resulting distorted pictures are very close to what a camera would generate.
I could think of shifting the mean of the entire image in all three color channels. For example: if we consider a test image (I),
OE = I+75;
UE = I-50;
OE will be globally much brighter with certain regions white-washed. But this is a global operator. I am wondering if there is a way to locally introduce these distortions in the images, such that the distortion appears realistic. Is there something in MATLAB / Python that achieves this?

回答(1 个)

Kushagr Gupta
Kushagr Gupta 2016-12-19
There are various ways in which local exposure distortions can be introduced to an image.
One of the ways would be:
  1. Create a binary mask of the same size as the original image.
  2. Randomly choose size and location of patches (rectangular are the easiest, would just need to select the indexes in a matrix)
  3. Assign some value (say 75 for over exposed) and add the binary mask to the original image.
  4. This can be done in a loop and the randomness would help in creating different distortions for each image if need be.
In terms of code, taking an example, it would look like:
I=(imread('coins.png'))
Imask = zeros(size(I));
Imask = uint8(zeros(size(I)));
Imask(20:40,60:90)=75;
imshow(I+Imask)
This is just an illustrative example and should serve as a starting point.

类别

Help CenterFile Exchange 中查找有关 Read, Write, and Modify Image 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by