I doubt homographies can model this type of distortion. homographies are for plane-to-plane projections. this however involves all kinds of trigonometry.
something like calibrateCamera
might be needed. ordinarily, distortion for lenses is modeled as a polynomial over the radius, and then used to correct the picture (“undistortion”, maybe using cv::remap
). you might need something along those lines.
you said you can raytrace this. that’s good for exploring the situation.
I’ll assume that you care about the surface of the solid black cylinder.
assuming you have enough control over the ray tracing, remove all lighting and media effects, and apply to the cylinder a dummy “texture” with given (u,v) coordinates (or equivalent mechanism), and have that mapped to your image plane.
you might need the inverse of that, i.e. given coordinates on the cylinder, where on the image plane that point is mapped to, so you can map an actual image back to the cylinder.
thanks to the lens effect of the oil cylinder, I guess this will introduce blur… or not, if you stick with simple raytracing. I don’t have a good grasp of the situation.