# Does flat surface detection and orientation require special hardware to compute?

Modern augmented reality platforms such as Google's ARCore and Apple's ARKit seem to only operate on mobile devices, I'm guessing, because their underlying algorithms require specialized hardware that is typically available on these devices (accelerometers, gyroscopes, etc.). Since this hardware isn't available on laptops/desktops, I'm guessing these libraries would never be able to work off of mobile platforms.

Having said that I'm wondering if the following AR/image processing "capabilities" can be achieved via algorithms that do not require such specialized hardware:

• Flat surface detection inside an image or video; and
• Orientation/angle of the camera view inside an image or video

Meaning, if I am given an image or video (set of sequential images), can I detect flat surfaces in that media without specialized hardware (as in, on a Linux box running on server or PC)? Same goes for orientation/angle determination (meaning, determining the (x,y,z) coordinates of the camera within the "domain" of the image/video and determining which angles its pointed towards)?

Modern augmented reality platforms such as Google's ARCore and Apple's ARKit seem to only operate on mobile devices,...

They only make sense on such devices.

... I'm guessing these libraries would never be able to work off of mobile platforms.

• Flat surface detection inside an image or video

For anything to be detected by a computer vision algorithm it has to be in contrast to its environment. If not, then extraneous information would have to be used that does make contrast, e.g. obtain images in different wavelengths.

Provided that surfaces are in contrast to their surroundings it is possible to reconstruct 3D geometry (e.g. multiple surfaces coming together forming one object), by obtaining more than one images around the object of interest.

If a surface is flat, its orientation can also be be detected easily with a marker anyway.

• Orientation/angle of the camera view inside an image or video

This is called "Simultaneous Localisation and Mapping (SLAM)", it can be done with or without a marker (usually, when the camera is used as a sensor in robotics, it is done without a marker) and there are lots of libraries already on places like github that you can look for inspiration or further details of their inner workings.

Hope this helps.