How do I create and apply a vignetting correction mask?

14 views (last 30 days)
I am trying to correct for vignetting that appears in High Dynamic Range Images. In order to do so, I need to create some sort of vignetting correction mask that can be applied to the image in order to counteract the light falloff at the periphery of the image. I have an image of a uniform luminance surface that shows pixel vignetting, and the idea is to divide the entire image by the max pixel value to create an image where each pixel value is a ratio of the max value. In theory, if I divide the vignetted image by the newly created "ratio image", then the vignetting would be corrected. From reading other posts and answers, I am assuming I would have to convert the image to grayscale so that I am dealing with only one pixel value instead of the RGB values. If there is a way to do it without converting it to grayscale then that would be preferred. I know basic commands in matlab so any help would be greatly appreciated.
  1 Comment
Josh
Josh on 4 Mar 2014
I know that vignetting is also depends on aperture size, and I have all of the .jpeg and .RAW files used to compile the HDRI.

Sign in to comment.

Accepted Answer

Image Analyst
Image Analyst on 4 Mar 2014
No you do not have to convert to grayscale, but you do get a grayscale image because you do it one one color channel at a time. Essentially this:
% Divide the actual image by the modeled image.
correctedColorChannel = single(oneColorChannel) ./ single(noiselessBackgroundImage);
which is in the attached file. But first you have to create the model background image, which is created from your "blank shot" by the other attached file.
  1 Comment
Josh
Josh on 7 Mar 2014
Thank you for your quick response. I will try this and let you know how it works.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!