Dear Joshua,
the command pcomb allow you to do that. However, there are some caveats
to be aware of:
1) The center of the image in the meaning of x_max / 2, y_max / 2 is not
(exactly) the centre of the lens. There is no perfectly aligned camera,
the optical axis will almost never pass the sensor exactly in its
center. So your "zero" coordinates will be at x_max / 2 + x_off, y_max /
2 + y_off.
2) Do you have any information how uniform your sphere actually is?
Relying on the uniformity of the source for such calibrations seams to
be a bit risky, unless the uncertainties are known.
Neglecting these, with pcomb, you can create an image describing the
vignetting such that for each pixel you have the ratio of pixel values
pv_observed / pv_uniform, with this ration being expected as one for the
centre and decreasing towards the edges. In this example, I avoid all
calculations regarding the fall-off from an image center, instead this
would simply divide the uncorrected image pixel-wise by the "reference
image", with all pixels having the value pv_max. You can get pv_max
using e.g. rvu, which allows you to select an area and get the average
of the contained pixel values.
1) create a "reference image" of uniform pixel values pv_max as
"measured" at the centre of your image, e.g. using rvu (replace <max_x>
<max_y> by the resolution of your images, and use your readings at the
image centre instead of 1,1,1 when assigning ro, go and bo):
pcomb -x <max_x> -y <max_y> -e 'ro=1; go=1; bo=1' > reference.hdr
2) create a correction frame, where pixel values are pv_observed /
pv_max (so ration of observed pixel value when taking a picture of the
sphere / pixel value measured at centre):
pcomb -e 'ro=ri(1)/ri(2); go=gi(1)/gi(2); bo=bi(1)/bi(2)' -o
observed.hdr -o reference.hdr > correction.hdr
3) you may delete the reference frame now...
rm reference.hdr
4) apply the correction by dividing each uncorrected image you have by
the correction frame:
pcomb -e 'ro=ri(1)/ri(2); go=gi(1)/gi(2); bo=bi(1)/bi(2)' -o
uncorrected.hdr -o correction.hdr > corrected.hdr
It is a bit paranoid but I got used to add the -o to all calls of pcomb
- just in case I had exposure corrections applied to my images. It has
been a while that I did such pixel corrections, so I hope I did not do
anything wrong here, but basically this approach works well if you can
rely on the readings for the image centre.
Cheers, Lars.
Dear List,
I am looking to find a method for correcting vignetting occurring in
HDR images using radiance as part of an undergraduate research study.
I am using a Uniform Luminance Sphere to create a uniformly lit
background in order to create a reference image.
I have used radiance to create the HDR images, and I am wondering if
there is a way to take the HDR image and divide each pixel intensity
by that of its optical center. This would create an image/mask of
fractional pixel values that can be divided into another image to
correct for the cameras specific vignetting.
Other suggestions would be greatly appreciated as well.
Thanks,
Josh
--
*Joshua Wilson*
4th year Architectural Engineering Student (Lighting/Electrical)
Durham School of Architectural Engineering and Construction
UNL College of Engineering (Omaha Campus)
[email protected] <mailto:[email protected]>
_______________________________________________
HDRI mailing list
[email protected]
http://www.radiance-online.org/mailman/listinfo/hdri