diff --git a/compute_gopro_8-7_wide_hypersmooth-off.py b/compute_gopro_8-7_wide_hypersmooth-off.py new file mode 100644 index 0000000..141ae18 --- /dev/null +++ b/compute_gopro_8-7_wide_hypersmooth-off.py @@ -0,0 +1,34 @@ +# RozK +# Computes fisheye removal parameters for GoPro 11+, 8:7 ratio, without hypersmooth, +# keeping the vertical FOV and widening the frame to preserve the diagonal FOV + +# https://community.gopro.com/s/article/HERO11-Black-Mini-Digital-Lenses-FOV-Information?language=fr + +import math + +frame_width = 8 +frame_height = 7 + +input_vertical_fov = 108.0 +input_diagonal_fov = 156.0 + +input_vertical_length = math.radians(input_vertical_fov * 0.5) +input_diagonal_length = math.radians(input_diagonal_fov * 0.5) + +output_horizontal_length = math.sqrt((input_diagonal_length ** 2) / (input_vertical_length ** 2)) +output_diagonal_length = math.hypot(output_horizontal_length, input_vertical_length) +output_diagonal_fov = math.degrees(math.atan(output_diagonal_length)) * 2.0 + +output_ratio = output_horizontal_length / input_vertical_length + +print("Output FOV = %f" % output_diagonal_fov) +print("Output Ratio = %f" % output_ratio) +print("= Resolutions =====================") + +def width_rounded_8(height): + width = int(round(height * output_ratio)) + return ((width + 4) // 8) * 8 + +print("HD = %i x 720" % width_rounded_8(720)) +print("Full HD = %i x 1080" % width_rounded_8(1080)) +print("4K = %i x 2160" % width_rounded_8(2160))