Log in or register to post comments

Camera intrinsic parameter

April 17, 2012 - 7:39am #7

Hello,
it's possible to get camera parameter intrinsic parameter??(calibration values)

Thank you.

Re: Camera intrinsic parameter

April 17, 2012 - 8:03am #6

Yes but not through the Unity Extension API, you'll need to use one of the native SDK's. See QCAR::CameraCalibration in the API documentation.

Re: Camera intrinsic parameter

April 17, 2012 - 8:08am #5

It's possible to add a Call to DLL in CameraDevice.cs and it will works??

In fact i have optical flow information, it's pixel system coordinate.
I guess i need camera intrinsic parameter to convert in virtual ar camera?

Thank you.

Re: Camera intrinsic parameter other idea

April 17, 2012 - 9:12am #4

Could you tell me if this solution can work:

I have my unity game with libQCAR.a.

My game already call an ios external lib.

What i need it's to get camera intrinsic parameter.

So if i compile my external lib with libQCAR.a and add the headers files from SDK iOS, add a external function to get camera calibration, then i remove libQCAR.a and put only my lib (which is linked with libQCAR.a) in unity iOS directory.

Should it works?

Thank you.

Re: Camera intrinsic parameter

April 17, 2012 - 6:19pm #3

I think there's a good chance this will work... The native CameraDevice is a singleton, so you should be able to access it once Unity has finished initializing to get the camera calibration. Please note this hasn't been tested!

I'll add a request to expose these parameters in Unity for future versions.

- Kim

Re: Camera intrinsic parameter

April 18, 2012 - 1:52am #2

Ok well it works :)
Thank you.

Another question.
I have a optical flow translation computation.
Moreover i use a gyroscope to get current orientation of my device.

So what i need it's to compute the conversion of pixel optical flow translation to camera coordinate and then i translate my camera with this current rotation.

What i do is :

		float f_x = this.cameraCalib.fx;
		float f_y = this.cameraCalib.fy;
		float c_x = this.cameraCalib.pointx;
		float c_y = this.cameraCalib.pointy;


		Vector3 pimage = new Vector3(opticalflow.x * f_x, opticalflow.y * f_y, f_x);
		Matrix4x4 K = new Matrix4x4();
		K.m00 = f_x; K.m01 = 0; K.m02 = c_x; K.m03 = 0;
		K.m10 = 0; K.m11 = f_y; K.m12 = c_y; K.m13 = 0;
		K.m20 = 0; K.m21 = 0; K.m22 = 1; K.m23 = 0;
		K.m30 = 0; K.m31 = 0; K.m32 = 0; K.m33 = 1;
		Vector4 pcamera = Matrix4x4.Inverse(K) * new Vector4(pimage.x, pimage.y, pimage.z, 1);
                // then i subtract pcamera with the same calcul for pimage = (0,0,0)

But it seems don't works, can you tell me if the calcul is correct, the translation is not enough.

Thank you.

Re: Camera intrinsic parameter

April 18, 2012 - 4:09pm #1

Sorry, we're outside of my domain at this point :) Perhaps someone else in the community can lend a hand?

- Kim

Log in or register to post comments