Given display set up parameters and object distance output the perceived image distance relative to display.
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
def objectDisparity(distance, params):
pix_obj = 1000.0*params['pix_size']*params['f']*params['IAD']/2/distance
return pix_obj
def virtualDepth(pixelDisparity, pixShift, params):
imageDisparity = pixelDisparity + pixShift
beta = params['disp_width']/params['disp_pix_width']
C = 2*imageDisparity*beta
D_image = params['disp_dist']*C/(params['IPD'] + C)
return D_image
# Specify camera parameters:
params = {
# Camera parameters
'f' : 1.87, #mm
'IAD' :0.17, #mm
'pix_size' : 1.34, #um/pixel
# Display parameters
'disp_width' : 500.0, #mm
'disp_dist' : 1000.0, #mm
'disp_pix_width' : 1920.0, #pixels
'IPD' : 64.0 #mm
}
pFar = objectDisparity(100, params)
pNom = objectDisparity(40, params)
pNear = objectDisparity(25, params)
print pFar, pNom, pNear
pixShift = -5
dFar = virtualDepth(pFar, pixShift, params)
dNom = virtualDepth(pNom, pixShift, params)
dNear = virtualDepth(pNear, pixShift, params)
print dFar, dNom, dNear
2.12993 5.324825 8.51972 -23.9152710113 2.6364633041 27.84594776