Am 23.02.2016 um 10:00 schrieb Michael Koch:

I found a bug in the documentation of the lenscorrection filter:
https://www.ffmpeg.org/ffmpeg-all.html#lenscorrection

It's written there "0.5 means no correction" for the coefficients k1 and k2. This can't be right, or the formula is wrong. It's obvious that the formula makes no correction if k1=k2=0.

The remarks "0.5 means no correction" in the documentation are wrong. This can easily be tested:

ffmpeg -i input.png -vf lenscorrection=k1=0.5:k2=0.5 output.png
It's clearly visible that the output is not the same as the input.

ffmpeg -i input.png -vf lenscorrection=k1=0:k2=0 output.png
Now the output is the same as the input. It is clear that 0 means no correction.

But unfortunately this isn't the only error in the documentation. I haven't yet found out which formula is actually used in the lenscorrection filter, but one thing is absolutely sure: It's not the formula from the documentation.


After spending many hours with this problem, finally I figured out what's going on.
This is the formula from the documentation:
r_src = r_tgt * (1 + k1 * (r_tgt / r_0)^2 + k2 * (r_tgt / r_0)^4)

The formula is correct, but it must be clarified that it describes the behaviour of the lens. It does not describe the behaviour of the lenscorrection filter.
r_src is the radial coordinate in object space.
r_tgt is the radial coordinate in the image, which was taken with a distorted lens.

The behaviour of the lenscorrection filter can be described by the inverse of the above function. However the inverse function is difficult to derive. For the simplified case k2=0 I found a solution: r_tgt = 2 * sqrt(1 / (3 * k1)) * sinh(arcsinh(r_src / (2 * k1 * sqrt(1 / (3 * k1)) ^ 3)) / 3)

Michael
_______________________________________________
ffmpeg-user mailing list
ffmpeg-user@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-user

Reply via email to