module Tracksperanto::UVCoordinates

For Syntheyes, zero is at the optical center of the image, and goes positive right and up. The corners get the [-1..1] coordinates respectively. Since Tracksperanto works in absolute pixels we need to convert to and from these cords. Note that Syntheyes actually assumes the center of the first pixel to be at -1,1 so a small adjustment is necessary to maintain subpixel accuracy.

Public Instance Methods

absolute_to_uv(abs_x, abs_y, w, h) click to toggle source

Convert absolute X and Y values off the BL corner into Syntheyes UV coordinates

# File lib/tracksperanto/uv_coordinates.rb, line 9
def absolute_to_uv(abs_x, abs_y, w, h)
  [convert_to_uv(abs_x, w), convert_to_uv(abs_y, h) * -1]
end
convert_from_uv(uv_value, absolute_side) click to toggle source

Convert Syntheyes UV value into absolute pixel value off the BL corner

# File lib/tracksperanto/uv_coordinates.rb, line 19
def convert_from_uv(uv_value, absolute_side)
  # Account for the fact that Syntheyes assumes the
  # pixel values to be at the center of the pixel
  abs_value = (((uv_value.to_f / 2.0) + 0.5) * (absolute_side.to_f - 1)) + 0.5
end
convert_to_uv(abs_value, absolute_side) click to toggle source

Convert absolute pixel value off the BL corner into Syntheyes UV coordinate

# File lib/tracksperanto/uv_coordinates.rb, line 14
def convert_to_uv(abs_value, absolute_side)
  uv_value = (((abs_value.to_f - 0.5) / (absolute_side.to_f - 1)) - 0.5) * 2.0
end