Welcome to uavster's blog

Readying a MacBook Pro M2 Max for Tensorflow

I was looking for a development laptop that would let me prototype rather big ML models locally. Life will have me moving across countries in the next months, and I would like to avoid depending [...]

I ended up getting myself a MacBook Pro M2 Max. Apple silicon is very power-efficient, and, most importantly, its shared memory architecture gives the GPU access to the entire RAM. In my case, that's [...]

Making Tensorflow work with Apple silicon can be straightforward... if you know how to. Hopefully, this post will save someone the time I spent troubleshooting.

According to this Apple Developer guide, you need four things:

TutorialsTroubleshooting Technologies: TensorFlowApple SiliconCondaPython

Ultrafast switching between OpenCV versions

OpenCV 3.0.0-alpha came out recently with exciting new functionalities. I was keen to give a try in particular to the new 3D reconstruction functions, so I downloaded, built and installed OpenCV 3.0.0-alpha [...]

CVswitch allows you to take snapshots of OpenCV installations and switch between them at light speed. It is open-source and I am releasing it under the GPL 3 license on GitHub [...]

Some people might think that the correct way of working on my experiment without affecting my client's project would be installing version 3 in its own directory and making my experiment point there. [...]

Open SourceProductivityScripting Technologies: LinuxOpenCVBash

The relative pose problem: A chronology

I have been investing some time in reading about the relative pose problem during the last weeks. My aim is to develop a monocular SLAM system for mobile devices, as part of my Perceptive [...]

We have two images of the same 3D scene from two different viewpoints. There is a set of scene points that appears in both images and we know which point in image 1 corresponds to which point in image [...]

Whereas this problem might look pretty modern in the first instance —a product of the digital age, the era of 3D graphics and augmented reality—, it turns out to be century-old. As I found [...]

Computer VisionVisual landmarksState estimationSLAMVisual OdometryRelative pose problem

Boosting color-based tracking

Tracking an object over a video sequence is a classic problem in Computer Vision. A tracking algorithm looks for the object at every new frame, given a model of the object. This model holds information [...]

There are tons of tutorials on color-based tracking that use the histogram back-projection to find those pixels in the image that are most likely to be object pixels. Then, they use MeanShift [...]

After normalization, each bin value in the color histogram expresses the probability that a pixel has a color in bin B, given that it is a pixel of object O. We can express this as the conditional probability [...]

Computer VisionOpen SourceTutorials... Technologies: OpenCVC++

Measuring heart rate with a smartphone camera

There are some apps out there that can read your heart rate with a smartphone camera. No need for external pulsometers. The procedure is simple: you press the smartphone camera lens gently with your finger [...]

It is time to open your photo app and observe what happens when you cover the camera with your finger. The frame is not black but slightly red. The ambient light is traveling through your finger tissues [...]

The experiments in this post were done offline. I recorded the videos with an iPhone 4S and copied them to my laptop. Then, I processed them with Matlab. The full code is available here [...]

Computer VisionTutorialsSignal processing Technologies: iPhoneMatlabFast Fourier Transform

Attitude estimation on iPhone

Stand up and close your eyes. If you have superpowers and managed to memorize this text before doing so, you'll be now reading it in your mind. Now, try to walk straight for two meters towards somewhere [...]

In order to know their spatial orientation and keep balance, robots use Inertial Measurement Units (IMU). They are composed of accelerometers, gyroscopes and, sometimes, magnetometers that measure linear [...]

Thanks to MicroElectroMechanical Systems (MEMS), the components in an IMU today can be embedded into chip-like casings and consume very low power. This opened the door some years ago to the inclusion of [...]

Autonomous RoboticsTutorialsState estimation... Technologies: OpenCViOSiPhone...

Getting started with Computer Vision on iPhone

I still remember my first mobile phone back in 1998. It was an Alcatel One Touch Easy. You could do thousands of things with it: calling your parents, calling your girlfriend, calling your friends, calling [...]

Ok, let's get serious. Needless to say, today's smartphones are orders of magnitude more powerful than my old Alcatel thanks to Moore's law. In fact, they are becoming powerful enough to execute [...]

Since a few months ago, I had programmed computer vision software for desktop machines and laptops. I always thought of trying with Android or other mobile operating system, but never had time to really [...]

Computer VisionTutorialsExperiments Technologies: LinuxOpenCViOS...

We got two awards in IMAV 2012!

Home, sweet home. My luggage is laying on the floor, as exhausted as me. I arrived yesterday from Braunschweig, Germany, but went straight to bed for a mandatory energy charge. I slept for an insane number [...]

1) Special Award for the "Best Automatic Performance"
2) 2nd place in the Indoor Flight Dynamics Challenge

According to the organization, our drone was the first one in the history of the competition to pass the challenge without any human intervention, entirely on its own. This is the reason [...]

My colleague Jesús Pestana did an amazing job with the position estimation and high-level controllers (trajectory and mission). My contributions were the software framework, visual speed estimation, [...]

Computer VisionAutonomous RoboticsUnmanned Vehicles... Technologies: LinuxOpenCVC++...