Hi apologies in advance if this (optics & image-process) is not where I should post this question. Thanks for the help!
I'm required to make a jig that measures the divergence angle of a collimated beam. The setup is straightforward as shown below.
- The single-mode fiber optic cable, collimator & NIR camera are the only components that cannot be changed
- Using the camera's SDK, i'm using my python script to capture the beam profile's image and apply scipy curve_fit function to calculate the beam divergence
- Currently, I get the desired beam divergence angle only if spot image (grainy pattern) is taken ~40mm away from the plano-convex len's focal point OR if image is at focal point but severely saturated (flat-top profile)
Here's some of fundamental concepts, pre image & post image to illustrate.
My main problem/concern is:
I keep getting a grainy beam profile and I don't think it's reliable to check for beam divergence. I've searched online but I never come across this profile before. At first, we thought the profile is due to the uneven layer of phosphor coating that's on the CCD array. However, Edmund Optics said that "The phosphor coatings are usually very even but the emissivity of each phosphor atom would not be same hence is it common to get a grainy image."
Not taking the image at the focal point is technically wrong isn't it? Since it's going against the formula $\theta_{1} = \frac{y_{2}}{f}$ (using small angle approx. & Optical Invariant $y_{2} \theta_{2} = y_{1} \theta_{1}$)
Should I apply pixel binning on the image to 'force' it into a gaussian profile? Maybe have an R-Squared threshold to ensure minimum similarity. Or will this cause the result to be too inaccurate
I tried cropping the image and applying Gaussian Fit on it but I got a very weird result.
Thus, what should I do to get the desired beam divergence? At the very least, a sensible result.