# Converting pixel displacement into other unit?

How would anyone using OpenCV convert a displacement based on pixel convert it to mm or radians, or some other unit..

This forum is disabled, please visit https://forum.opencv.org

1

The first thing is you would need is to have some sort of calibration that tells you what the pixels in the image correspond to. This factor depends on your camera, lens and object distance and needs to be measured in a realistic imaging scenario.

For example if a 1 meter object exactly fits in a 512x512 pixel frame, your calibration would be (1000/512)=1.953 mm/pixel (or 0.512 pixel/mm). You can then convert pixel based displacements to real world displacements using this factor.

"You can then convert pixel based displacements to real world displacements using this factor. "

No you can't. Pixel distances correspond to angular distances. If you move to Points with fixed distance (e.g. 2 cm) from the center of your 1m`2 object to the edge, their pixel distance will decrease although their real world distance is the same.

1

...that would mean 45/1027=0.04 degrees/pixels (that's 0.00077 radians) angular resolution (call it *Alpha0*).

If you know the distance *D* of a point from the camera, calculate the distance in pixels from the image center (*Dc*=sqrt((x-xc)²+(y-yc)²)). The real world distance (*Dw*) of the point from the optical axis of the camera is:

```
Dw=D*sin(Dc*Alpha0)
```

To get the angular distance simply multiply Dc with Alpha0.

Alpha0 and Dc are easy to calculate, but to have the real world position, you need to know the distance from the camera.

Let's take a concrete example: your pixel close to the left edge, on the middle; coordinates: (12, 384). The middle of the screen is (512,384). Then the pixel distance between the middle of the screen and the point is Dc=500, the angular distance is 500*0.04=20 degrees.
If that point's distance from the camera is D=1m, then it is at 1*sin(500*0.04)=0.34m distance from the optical axis of the camera.

Asked: **
2015-03-04 06:30:21 -0500
**

Seen: **5,415 times**

Last updated: **Mar 04 '15**

OpenCV DescriptorMatcher matches

Conversion between IplImage and MxArray

Video On Label OpenCV Qt :: hide cvNamedWindows

Problems using the math.h class with OpenCV (c++, VS2012)

How to reduce false positives for face detection

Area of a single pixel object in OpenCV

build problems for android_binary_package - Eclipse Indigo, Ubuntu 12.04

Can't compile .cu file when including opencv.hpp

Using OpenCV's stitching module, strange error when compositing images

Copyright OpenCV foundation, 2012-2018. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.