Piero V.

RealSense D400 and infrared streams

A while ago, I started working on a dataset I captured a few years ago with a Microsoft Kinect One.

I immediately realized the data looked much cleaner than the newer datasets I created with my Intel RealSense D435.

I had already noticed that, above a certain distance, the depth data was full of craters. I already knew the error is proportional to the squared distance, but for me, it was much bigger than expected. Therefore, I calibrated the sensors and now I stay closer to my targets during the acquisitions.

But for the last dataset I captured, I tried another strategy: I decided to save also the raw IR footage to process it offline.

Stereo vision

RealSense cameras are RGBD sensors: they provide simultaneously a color (RGB) and depth (D) stream.

There are several types of techniques to measure depth. For example, the original Kinect for the Xbox 360 uses “structured light”, and the Kinect One included a time-of-flight camera.

The RealSense D400 series is based on stereo vision, which works by matching the same point in frames captured by two different cameras. There is a relation between the displacement of this point (disparity), the relative position of the two cameras, and the depth. … [Leggi il resto]

My RGBD toy box

In the last few months, in my free time, I have been developing a small application to elaborate RGBD datasets capturing people. In particular, my goal is to create 3D scans of heads. I do not expect these models to be well-made or even usable without some processing, but I wonder if I can transform this data at least to starter models.

I first started to work with RGBD cameras during my internship at Altair. At the time, I built a small pipeline to reconstruct models based on Kinect Fusion.

Sadly, Kinect Fusion is an online method. The advantage is that it will give immediate feedback if it loses the camera tracking. But the disadvantage is that it needs a pretty powerful GPU. I have one on my desktop, but I took all my datasets using laptops.

Also, in my experience, getting a usable dataset with Kinect Fusion requires several attempts and time (the acquisition must proceed very slowly), which, generally speaking, is not always compatible with… people 😄️. They might move, or lose patience, etc etc… … [Leggi il resto]

Un tuffo nel passato

Devo ammettere di essere un po’ un accumulatore.

In tanti anni, non ho mai buttato via i miei computer vecchi, pur sapendo che realisticamente non li riaccenderò mai. Soprattutto quelli degli anni ‘90, che sono potenziali bombe a causa della piaga dei condensatori. Ma alla fine ho deciso di buttare via quelli che un tempo erano stati protagonisti della categoria muletto di questo sito.

Prima, però, ho deciso di creare un’immagine dei loro dischi. E, dato che c’ero, ho deciso di avviarle con Qemu per vedere cosa avevo lasciato dentro.

Il primo computer era dotato di un Pentium MMX. Probabilmente risaliva a circa il 1996, ma non sono troppo sicuro perché mi è stato donato da una conoscente di famiglia, che altrimenti lo avrebbe buttato. Se ben ricordo, aveva 64MB di RAM, che io avevo portato a 128MB (di più non supportava). Mi sembra che proprio per comprarla fossi andato per la prima volta alla fiera dell’elettronica di Pordenone. E quella volta avevo comprato anche la scheda wireless Edimax EW-7128g, che mi aveva fatto tribolare non poco. … [Leggi il resto]

IMAP downloader

Two weeks ago, I needed to mass-download a few IMAP mailboxes before migrating them to another provider.

Gist contains many scripts to do so, and I tried one of them, but it did not work as I wanted. I wanted to download all the IMAP folders, not only Inbox.

Therefore, I wrote my version of that script 😄️.

I used imapclient instead of the built-in imaplib because it is more Pythonic and handles all the tedious conversions between bytes, strings, and other types.

The center of the script is the process function. It connects to an IMAP server, queries the list of folders, and downloads all the messages from each one but trash and spam (but notice that the comparison is case-sensitive!).

client.fetch downloads all the messages you provide to it, which caused an OOM in my case. Therefore, I split the list with the message IDs into chunks. I had to write the batches function because I was running on Python 3.11. From Python 3.12, you can use itertools.batched instead. … [Leggi il resto]

FTTH TIM con OpenWrt e con Debian

Un mese fa, ho finalmente messo da parte il rame per la mia connessione a Internet per passare alla fibra ottica.

Come ad ogni passaggio, certe cose cambiano, altre rimangono le stesse.

La configurazione, grosso modo, è rimasta invariata. Fin dai tempi dell’ADSL Alice, TIM richiede l’uso del protocollo PPPoE, senza validare però username e password. Quelli che erano VPI 8 e VCI 35, sono diventati l’id VLAN 835 per FTTC e FTTH.

E proprio questo uso di VLAN rende un po’ più difficile la configurazione delle connessioni TIM.

Dopo la morte del mio secondo TD-W8970, ero passato ad un router generico con un modem in bridge connesso alla porta WAN. La VLAN veniva gestita dal modem, un Technicolor TG789vac v2 con firmware di iiNet.

Invece, con l’ONT fornitomi da TIM, un Sercomm FG1000R, la VLAN deve essere impostata nel router.

OpenWrt

Sul mio Cudy WR2100 mi è bastato modificare /etc/config/network in questo modo: … [Leggi il resto]