4:3 output ratio
This commit is contained in:
		@ -27,6 +27,9 @@ sensor_pixel_size = 1.12 * 0.001 # mm
 | 
			
		||||
gopro_array_horizontal = 5312 # p
 | 
			
		||||
gopro_array_vertical   = 4648 # p
 | 
			
		||||
 | 
			
		||||
gopro_texture_horizontal = 3840 # p
 | 
			
		||||
gopro_texture_vertical   = 3360 # p
 | 
			
		||||
 | 
			
		||||
gopro_size_horizontal = gopro_array_horizontal * sensor_pixel_size
 | 
			
		||||
gopro_size_vertical   = gopro_array_vertical   * sensor_pixel_size
 | 
			
		||||
gopro_size_diagonal   = math.hypot(gopro_size_horizontal, gopro_size_vertical)
 | 
			
		||||
@ -70,12 +73,12 @@ print("linear focal: horizontal = %7.3f, vertical = %7.3f, diagonal = %7.3f (mm)
 | 
			
		||||
    rectilinear_focal_length_vertical,
 | 
			
		||||
    rectilinear_focal_length_diagonal))
 | 
			
		||||
 | 
			
		||||
rectilinear_radius = lambda angle,  focal_length: focal_length * math.tan(math.radians(angle))
 | 
			
		||||
rectilinear_angle  = lambda radius, focal_length: math.degrees(math.atan(radius / focal_length))
 | 
			
		||||
rectilinear_radius = lambda angle:  rectilinear_focal_length_vertical * math.tan(math.radians(angle))
 | 
			
		||||
rectilinear_angle  = lambda radius: math.degrees(math.atan(radius / rectilinear_focal_length_vertical))
 | 
			
		||||
 | 
			
		||||
rectilinear_fov_horizontal = 2.0 * rectilinear_angle(gopro_radius_horizontal, rectilinear_focal_length_vertical)
 | 
			
		||||
rectilinear_fov_vertical   = 2.0 * rectilinear_angle(gopro_radius_vertical,   rectilinear_focal_length_vertical)
 | 
			
		||||
rectilinear_fov_diagonal   = 2.0 * rectilinear_angle(gopro_radius_diagonal,   rectilinear_focal_length_vertical)
 | 
			
		||||
rectilinear_fov_horizontal = 2.0 * rectilinear_angle(gopro_radius_horizontal)
 | 
			
		||||
rectilinear_fov_vertical   = 2.0 * rectilinear_angle(gopro_radius_vertical)
 | 
			
		||||
rectilinear_fov_diagonal   = 2.0 * rectilinear_angle(gopro_radius_diagonal)
 | 
			
		||||
 | 
			
		||||
print("linear fov  : horizontal = %7.3f, vertical = %7.3f, diagonal = %7.3f (deg)" % (
 | 
			
		||||
    rectilinear_fov_horizontal,
 | 
			
		||||
@ -84,23 +87,41 @@ print("linear fov  : horizontal = %7.3f, vertical = %7.3f, diagonal = %7.3f (deg
 | 
			
		||||
 | 
			
		||||
print("\n--- shader parameters ---\n")
 | 
			
		||||
 | 
			
		||||
output_size_horizontal = 2.0 * rectilinear_radius(gopro_fov_horizontal * 0.5)
 | 
			
		||||
output_size_vertical   = gopro_size_vertical
 | 
			
		||||
 | 
			
		||||
output_scale_horizontal = output_size_horizontal / gopro_size_horizontal
 | 
			
		||||
 | 
			
		||||
print("""// parameters
 | 
			
		||||
const vec2 sensor_size = vec2(%.6f, %.6f);
 | 
			
		||||
const float equidistant_focal_length = %.6f;
 | 
			
		||||
const float rectilinear_focal_length = %.6f;""" % (
 | 
			
		||||
const float rectilinear_focal_length = %.6f;
 | 
			
		||||
const vec2 rectilinear_scale = vec2(%.6F, 1.0);""" % (
 | 
			
		||||
    gopro_size_horizontal, gopro_size_vertical,
 | 
			
		||||
    gopro_focal_length,
 | 
			
		||||
    rectilinear_focal_length_vertical)
 | 
			
		||||
    rectilinear_focal_length_vertical,
 | 
			
		||||
    output_scale_horizontal)
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
# print("\n--- filter parameters 4K ---\n")
 | 
			
		||||
#
 | 
			
		||||
# width_scale = rectilinear_focal_length_vertical / rectilinear_focal_length_horizontal
 | 
			
		||||
#
 | 
			
		||||
# output_height = 2160
 | 
			
		||||
# output_width  = int(round((output_height / gopro_array_vertical) * gopro_array_horizontal * width_scale))
 | 
			
		||||
#
 | 
			
		||||
# print("resize: width = %d, height = %d, ratio = %f" % (
 | 
			
		||||
#     output_width,
 | 
			
		||||
#     output_height,
 | 
			
		||||
#     output_width / output_height))
 | 
			
		||||
print("\n--- filters parameters ---\n")
 | 
			
		||||
 | 
			
		||||
output_ratio_horizontal = 4.0
 | 
			
		||||
output_ratio_vertical   = 3.0
 | 
			
		||||
 | 
			
		||||
output_crop_ratio      = output_ratio_vertical / (output_ratio_horizontal / output_scale_horizontal)
 | 
			
		||||
 | 
			
		||||
output_crop_horizontal = gopro_texture_horizontal
 | 
			
		||||
output_crop_vertical   = output_crop_horizontal * output_crop_ratio
 | 
			
		||||
 | 
			
		||||
print("crop  : width = %d, height = %d" % (
 | 
			
		||||
    output_crop_horizontal,
 | 
			
		||||
    round(output_crop_vertical)))
 | 
			
		||||
 | 
			
		||||
def print_output_array(array_vertical):
 | 
			
		||||
    array_horizontal = (array_vertical / output_ratio_vertical) * output_ratio_horizontal
 | 
			
		||||
    print("resize: width = %d, height = %d" % (
 | 
			
		||||
        round(array_horizontal / 4.0) * 4,
 | 
			
		||||
        array_vertical))
 | 
			
		||||
 | 
			
		||||
print_output_array(2160)
 | 
			
		||||
print_output_array(1080)
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user