I am trying to get my Hikvision Panovu image of a sportsfield to look like a standard camera image, similar to what would be seen with a Veo solution / traditional camera.
This is what the image would ideally look like with a little bit of zoom. Note the players are all upright and it looks “correct” and not skewed with the far end of the field in line with the horizon.
veo sample image
The original image looks like this (same field but other side). This is a 180 degree panoramic image from a Hikvision camera as found here.
It provides the following output natively.
hikvision native view
I have had some luck converting the image with ffmpeg using the v360 filter. Note there is a downward tilt meaning I have to apply some yaw to correct it.
v360=input=fisheye:output=rectilinear:ih_fov=180:iv_fov=87.5:d_fov=87.5:pitch=20:yaw=5:w=3840:h=2160
And this gets the following output:
deskewed v360 image
So the challenge here to make the original image flat/equirect but to address the skew such that:
- the players are orientated “upright”
- the far sideline of the field looks like a straight line in line with the horizon
- the image quality is preserved as best as possible
With these cameras the image is 32MP so there is the opportunity to do an ePTZ into the area of interest.
I suspect v360 isnt the right choice here and it is some remap-style filter, or perhaps I am best going across to gstreamer or similar.
I tried an ffmpeg v360 filter and it partially works, but the players are still skewed because the top of the image is not wide enough. The issue can possibly be solved by correctly applying a couplex perspective filter, but I think this will only mask the issue and perspective requires a complex filter that hasn’t worked for me so far.
Willy62 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.