# RozK # Computes fisheye removal parameters for GoPro 11+, 4:3 ratio, Max SuperView, # keeping the vertical FOV and widening the frame to preserve the diagonal FOV # https://www.bobatkins.com/photography/technical/field_of_view.html # https://community.gopro.com/s/article/HERO11-Black-Mini-Digital-Lenses-FOV-Information?language=fr import math frame_width = 4 frame_height = 3 input_ratio = frame_width / frame_height input_vertical_fov = 108.0 input_diagonal_fov = 169.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 = 8 / 7 output_pixel_ratio = 1.0 / (output_horizontal_length / input_vertical_length) print("Output FOV = %f" % output_diagonal_fov) print("Output Ratio = %f" % output_pixel_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))