Thanks for the explanation and completely understand the constraints. Detection of the binary fiducial is working better than expected without correction.
The camera is mounted in the ceiling 20ft in the air so have a fairly large area being covered which helps.
Yesterday printed a 3'x3" chessboard target and treating the 175 degree fisheye camera as a pinhole camera the image correction isnt bad. Helps to be 20ft in the air looking down. Trying to avoid image correction of a fish eye at a local field of view to keep FPS high.
Using the bounds of detected fiducial to determine heading(fiducial is on a robot) it appears to be very accurate when placing the fiducial based on construction lines for the concrete floor that in theory are square.
Ultimate goal is accurate location of fiducial plus heading for indoor robot navigation that is big and fast. Will do some testing today of corrected location using pin hole camera for error estimation.
Given that the current heading of the fiducial appears to be accurate near the outer edges if undistored coordinate correction maintains accuracy then should be able to solve the location problem. Should be easy enough to survey the actual x, y locations as a grid in the field of view and build a map for the location correction.
This is all running on a $50 jetson nano 2g with 4k+ image using gstreamer. Have large area to cover in a warehouse so trying to minimize costs of the overhead camera grid. Want to detect robot location as well as humans and other moving objects below.
Thanks again for boofcv and showing what Java can do in image processing running on a low resource embedded system.