Camera undistortion model

DaKenpachi
Pioneer

Camera undistortion model

Hey guys from SRWorks,

 

can you please tell me what kind of distortion model you used? I just don´t get it from the code...
In your UE plugin you use this to get some kind of undistortion map from the API itself:

ViveSR_GetParameterFloatArray(FSRWorksModule::Get().MODULE_ID_SEETHROUGH, ViveSR::SeeThrough::Param::UNDISTORTION_MAP_L, &UndistortionMap_L);
ViveSR_GetParameterFloatArray(FSRWorksModule::Get().MODULE_ID_SEETHROUGH, ViveSR::SeeThrough::Param::UNDISTORTION_MAP_R, &UndistortionMap_R);

and later use that map for undistorting the image:

float undistortedX = undistortionMap[(int)eye][idx * 4 + 2] - undistortedCx[(int)eye];
float undistortedY = undistortionMap[(int)eye][idx * 4 + 3] - undistortedCy[(int)eye];

But what is the content of the map? It does not look like the OpenCV camera calibration model, so I just dont get it =/

liyi_zheng
Pioneer

Re: Camera undistortion model

Are intrinsic and extrinsic parameters what you actually want?

DaKenpachi
Pioneer

Re: Camera undistortion model

No, I want to undestand the code...

Because this is the current documentation of the api:ViveSR_Api_Map_noComment.JPGNo comment

 

ViveSR_Api_Get_noComment.JPGno comment either

 so you just get a huge array of whatever?...

 

LS_Tpowell
Pioneer

Re: Camera undistortion model

I 100% agree with you on the lack of documentation part.

These are things that desperately need documentation.

My only assumption thus far is that this is for getting the camera matrix you would need to apply undistortPoints to the distorted image in order to undistort it.

It would be nice if there were documentation to confirm or deny it.
DaKenpachi
Pioneer

Re: Camera undistortion model

To my understanding right now, undistortMap is a huge array, where the 5th and 6th "channel" is the LookUpTable for mapping X and Y values. (like here, chapter: Undistortion, 2. using remapping).

 

I mean, from indexing alone, this can never be a camera matrix, if it´s size is at least

maxIndex = w * h * 4 + 3

But if it is - why isn´t it just the LUT for mapping? What is the data in the other channels? An why would it be so complecated to use it (I mean, in this form you can´t even use opencv remap function directly)....

LS_Tpowell
Pioneer

Re: Camera undistortion model

Did you ever get this resolved?

@Jad @Dario

DaKenpachi
Pioneer

Re: Camera undistortion model

No, I´ve stopped working with SRWorks.

 

My goal was to replace the camera, but use parts of the SRWorks plugin just with the videostream of the other camera. It did not work out well, because the plugin is really confusing and complicated....

 

Recently I bought a Zed Mini from Stereolabs, which has its own working SDK and UE plugin, attached it to the HMD and it works just fine Smiley Wink

 

 

LS_Tpowell
Pioneer

Re: Camera undistortion model


@DaKenpachi wrote:

No, I´ve stopped working with SRWorks.

 

My goal was to replace the camera, but use parts of the SRWorks plugin just with the videostream of the other camera. It did not work out well, because the plugin is really confusing and complicated....

 

Recently I bought a Zed Mini from Stereolabs, which has its own working SDK and UE plugin, attached it to the HMD and it works just fine Smiley Wink

 

 


This actually looks pretty interesting, is there native C++ development support or is it only plugins for the well known game engines. Our product is already feature complete and for the most part done, but I'm not happy with the low resolution and the really low quality depth information, are these things you feel were addressed well by the zed? SDK documentation quality? Sorry, I hope you don't mind me picking your brain on this one.