[Radiance-general] vignetting correction on a fish-eye image

kkonis at berkeley.edu kkonis at berkeley.edu
Mon Apr 5 18:24:30 PDT 2010


Dear list,

I am trying to implement a vignetting correction on a fish-eye image
taken with a rather inexpensive lens (Opteka 0.20 for Canon A570).

This is for a Post Occupancy Evaluation of an open plan workspace
using HDR at a number of workstations (n = ~15), paired with subjective
measures. (Thus the inexpensive camera + lens).

I am using Mehlika Inanici and Jim Galvin's method to derive a
polynomial from experimentation
to characterize the vignetting effect of my camera+lens at a given f-stop.

(EVALUATION OF HIGH DYNAMIC RANGE PHOTOGRAPHY
AS A LUMINANCE MAPPING TECHNIQUE, 2004)

"The vignetting effect is calculated as a polynomial function as
follows (x corresponds the pixel location):"
y = -1.28E -12 * x 4 + 3.43E - 09 * x3 - 3.38E - 06 * x2 +1.45E - 03 *
x + 7.70E - 01

Assuming the function that i derive is similar to the one above:

***I am curious how to develop a Radiance-based post-process from
this polynomial function to arrive at a script that will take a HDR
image and apply a vignette correction.


Below is Greg's implementation, but i am confused as to where to
apply/insert the polynomial function. (Or if an entirely different method is
being used here, since to me this is pretty cryptic).

#####################################################
# From NY Times acquisition cart (Sigma lens)

       pcomb -e 'sq(x):x*x' -e \
'SigmaVig5_6(deg) : 0.97 + (0.5 + atan(0.1*deg - 4)/PI)*(0.38 -
0.0134*deg)' \
               -e 'xne = x/xmax - .5; yne = y/ymax - .5' \
               -e "deg_cent = 90*sqrt(sq(2/$vfrac*xne) + sq(2/$vfrac*yne))" \
               -e 'corr = if(deg_cent-95, 0, 1.0/SigmaVig5_6(deg_cent))' \
               -e 'ro=corr*ri(1);go=corr*gi(1);bo=corr*bi(1)' \
               -o $hdrf \
               | pcompos -x $new_res[1] -y $new_res[2] \=00 - \
                       `ev "floor($new_res[1]/2)" "floor($new_res[2]/2)"` \
               > /tmp/corr$$.hdr


#####################################################

I would appreciate any guidance that anyone may have!

One suggestion that I have received is to create a "filter" image with
the same resolution as my uncorrected image. The filter image will have
numbers 1 in the middle (meaning no vignetting) and the numbers drop
towards the periphery as measured and recorded.

Then I would use pcomb to divide the original image with the "filter"
to correct for the light loss.

Any suggestions (sample code!) to create this filter image in Radiance
from the above polynomial
function would also be appreciated!

best,

Kyle Konis
Ph.D Student
UC Berkeley




More information about the Radiance-general mailing list