RSS

Category Archives: Smart Glasses

Link

 
Leave a comment

Posted by on June 16, 2014 in Computer Vision, Smart Glasses

 
Link

 
Leave a comment

Posted by on June 16, 2014 in Computer Vision, Smart Glasses

 

IISU fintertip position and unit

In IISU, the positions of five fingertips are provided as IDataHandle<Iisu.Data.Vector3[]>, which is a vector of Vector3.

Each Vector3 has three elements x, y, z which are different from those of joints from Kinect SDK or OpenNI.

wpid-IMG_20140310_103432.jpg

In other words, suppose that I place my hand in front of DS325 such as in the figure above.

If I move my finger to right, the value of x increases, move far away from my body the value of y increases and move up the value of z increases.

In short, for the case of above figure, to increase all the coordinate values of finger move the finger up-right far away from the body.

Note that, in IISU, y coordinate corresponds to the depth from DS325 to the finger while in OpenNI or Kinect SDK z corresponds to the depth from Kinect.

However, ToUnityVector3Array() function will take care of this inconsistency.

ToUnityVector3Array() swaps the y and z coordinate values and gives a vector of Unity Vector3s for that of IISU Vector3s.

 

The unit of coordinate values is meter.

That is, if my finger is located as 5cm left, 7mm up, 44cm far away with respect to the center of DS325 depth cam, the values of Iisu.Data.Vector3 for the finger are (-0.05, 0.44, 0.007). If this were the case for OpenNI, the values would be (-50, 7, 440), which are in the unit of millimeter.

 
Leave a comment

Posted by on March 10, 2014 in Smart Glasses

 

Interpupillary distance (IPD)

From : http://en.wikipedia.org/wiki/Interpupillary_distance

Wikipedia에 의하면 성인의 두 눈사이의 거리(mm)는 아래와 같은 분포를 가진다고 한다.  HMD calibration 한 결과 내 두 눈 사이의 거리는 64.4598 mm가 나왔다.

IPD values (mm) from 1988 Army Survey
Gender Sample
size
Mean Standard
deviation
Minimum Maximum Percentile
1st 5th 50th 95th 99th
Male 1771 64.7 3.7 52 78 57 59 65 71 74
Female 2205 62.3 3.6 52 76 55 57 62 69 71
 
Leave a comment

Posted by on February 3, 2014 in Misc, Smart Glasses

 

Softkinetic DS325의 depth와 RGB 카메라

ds325

위 그림과 같이 DS325를 정면에서 볼 때 왼쪽의 파리눈깔 처럼 생기고 동그랗게 튀어나온게 depth cam이고, 오른쪽에 약간 들어가서 톱니바퀴처럼 생긴게 RGB cam 이다.

두 카메라의 내부, 외부 파라미터는 C:\Program Files (x86)\SoftKinetic\DepthSenseSDK\samples\ConsoleDemo 의 샘플 프로젝트를 실행 시켰을 때, onNewDepthSample() 이라는 함수를 보면 알 수 있다.  즉, 각 기계마다 다른지 모르겠는데, 공장에서 찍어나올 때 calibration해서 프로그램에 심어 놓는거 같다.

두 카메라를 캘리브레이션 하는게 쉬운 일이 아니고, 시간이 촉박하므로 현재 쓰고 있는 DS325에 대해 함수를 불러서 읽어온 카메라 파라미터 값은 아래와 같다.  또한 C:\Program Files (x86)\SoftKinetic\DepthSenseSDK\doc\pdf\CameraModelDocumentation.pdf 에 의하면 extrinsic parameter (Rotation R, translation t)는 depth camera coordinates 상의 3D point Xd와 RGB camera coordinates 상의 3D point Xc를 다음과 같은 관계로 이어 준다고 한다.

Xc = R * Xd + t

근데, cx  cy가 정확히 이미지 사이즈의 절반인거 보면 공장에서 기계마다 각각 calibration한 거 같지는 않고, 그냥 이상적인 calibration parameter인 거 같다.

* Refer the function onNewDepthSample in C:\Program Files (x86)\SoftKinetic\DepthSenseSDK\samples\ConsoleDemo

* Refer the pdf file CameraModelDocumentation.pdf

– depth camera Intrinsics (DepthSense::IntrinsicParameters)
width    320
height    240
fx    224.50200
fy    230.49400
cx    160.00000
cy    120.00000
k1    -0.17010300
k2    0.14406399
k3    -0.047699399
p1    0.00000000
p2    0.00000000

– color camera Intrinsics (DepthSense::IntrinsicParameters)
width    640
height    480
fx    583.07898
fy    596.20300
cx    320.00000
cy    240.00000
k1    0.022575200
k2    -0.16266800
k3    0.18613800
p1    0.00000000
p2    0.00000000

– extrinsics (DepthSense::ExtrinsicParameters)
r11    0.99999738
r12    0.0012669859
r13    -0.0019156976
r21    0.0012539299
r22    -0.99997610
r23    -0.0068011540
r31    0.0019242687
r32    -0.0067987340
r33    0.99997503
t1    0.024492104
t2    -0.00050799217
t3    -0.00086258771

R =

[    r11    r12    r13    ]
[    r21    r22    r23    ]
[    r31    r32    r33    ]

t =

[    t1    ]
[    t2    ]
[    t3    ]

Note: The matrix returned in the StereoCameraParameters::extrinsics is not a proper rotation matrix as its determinant is -1 making it a matrix representing a rotation and a reflection transformation. Therefore, for the matrix to be a proper rotation matrix, the ExtrinsicParameters::r12, ExtrinsicParameters::r22 and ExtrinsicParameters::r32 coefficients should be multiplied by 1.0.

 
1 Comment

Posted by on January 29, 2014 in Smart Glasses

 

메타이오 샘플의 카메라 사이즈와 스크린사이즈 차이에 따른 오프셋 해결

메타이오 샘플 중에 Example_CustomRenderer 프로젝트 아래에 CameraImageRenderer.cpp 에 보면 draw라는 함수가 있는데 여기보면 landscape 모드 일때와 아닐때에 대해서 오픈지엘로 처리하는게 나와있음.  진작에 알았으면 참고할 걸

 
Leave a comment

Posted by on January 22, 2014 in Augmented Reality, Smart Glasses

 

Things to check when not working

  • main pc

    • DS325 컬러카메라가 작동하는지, 즉 카메라에 불이 들어오는지…  안들어오면 camera ID를 바꿔본다. (현재 0이면 1로, vice versa).  현재 내 컴에서 (0은 built-in한테 할당되니까) 1로 하면 됬었는데, 오랜만에 하니까 0으로 해야 되는 문제가 생겼음.  희한함.

  • remote pc
    • 키넥트는 데이터를 만들어 내는데, 메인에서는 연결이 안되었다고 나올 때….
      무선으로 연결되었으면, 같은 무선 AP에 연결되어 있는지 체크. 암튼 일단 ping test해서 두 컴간에 연결이 되는지 확인.
 
Leave a comment

Posted by on January 22, 2014 in Smart Glasses