Piero V.

Seasonic G360, MSI boards and "CPU failures"

Ten years ago, or so, I bought my first external hard drive. At a certain point, one of my cats dropped it. So I switched to a networked RAID 1 with a modified GoflexNet at the beginning of 2016.

That escalated more when, in 2018, I built a PC to replace it. The GoflexNet was quite good, but its CPU was a bottleneck for file transfers. Also, I was a bit worried about the quality of the power supply: I used a cheap LED transformer for over two years 😅️.

I bought a Celeron G3930, the less powerful but also the cheapest processor of the Kaby Lake microarchitecture. I wanted a recent (for the time) CPU because of the improved power efficiency. It is not as good as ARM, but it is acceptable to me. I paired it with an MSI B250 Pro-VD motherboard and 4GB of 2133MHz memory.

The most expensive part was the power supply: a Seasonic SSR-360GP, the littlest member of the G series. It cost more than twice the price of the CPU. But it has good reviews on many sites.

So, I was remarkably surprised when one year ago the system stopped running because of it! … [Leggi il resto]

exFAT: occhio al cluster size

Contestualizzazione

Di recente, ho aiutato una persona che conosco a risolvere un problema con dei file di sistema di Windows corrotti. Speravo fosse la volta buona che riuscissi a risolvere un problema con sfc. Invece, dopo una giornata di tentativi, ho deciso di procedere con la formattazione e confermare l’inutilità di quegli strumenti 😓️.

Abbiamo colto l’occasione per cambiare l’HDD con un’SSD e quindi ci siamo trovati con un lento disco da 500GB in più tra le mani. Così abbiamo deciso di usarlo per creare un backup da mettere via e sperare che non serva mai usare.

500GB non sono molti, sicuramente non è abbastanza per poter fare versionamenti. Anzi, i dati originali sono un po’ più di 500GB, quindi sapevamo in partenza che sarebbe servito fare dei sacrifici. Ma avere una copia del genere è sempre meglio che avere un disco e non usarlo o svenderlo.

Ci sono mille modi di fare un backup, ma ho deciso di tenere le cose semplici, e fare un rsync -a delle directory da copiare. Detto schiettamente: se mai dovesse servire, vorrebbe dire che tutti gli altri sistemi “più seri” avrebbero fallito. E doversi preoccupare di come recuperare i dati sarebbe solamente l’ennesimo problema… … [Leggi il resto]

PyElas

Recently, I started experimenting with stereo vision.

It is a technique to produce depth maps using images captured by close positions. Then, with these maps, it is possible to create 3D representations.

The core of this workflow is the matching algorithm, which takes pairs of post-processed images and creates a “disparity” map. The disparity is the distance between a point in the two images. Depth and disparity are inverses, so it is easy to switch from one to the other.

OpenCV contains some stereo matching algorithms, but they produced a lot of noise. So I looked for another library, and I found libelas.

It is a GPLv3 C++/MATLAB library with many parameters to tune, but I could not find a Python version. My options were to switch to C++ or to port it by myself. I chose the latter, hoping that also others can benefit from it 🙂️.

Long story short, I published my first package on PyPI: PyElas.

How to use it

You can install it using pip. Then you just have to do this: … [Leggi il resto]

On acquiring 3D models of people

For my Master’s degree thesis, I dove into acquiring static objects with a RGBD sensor. Eventually, I decided to use the Kinect Fusion algorithm, which produced decent results.

I found this topic fascinating, so I continued on my own, but in another direction: acquiring people. So, in the last few months, I have been experimenting with scanning myself and my friends with a Microsoft Kinect One.

Conditioned by my previous results, initially, I tried with point clouds.

Deformation graph approach

One approach I found in several papers consists in:

  1. acquiring only a few scans (from 6-8 points of view), with the person as still as they can;
  2. performing a rough global alignment;
  3. running ICP to improve the rigid alignment locally;
  4. downsampling the point cloud to build a deformation graph;
  5. resolving an optimization problem;
  6. deforming the denser point clouds.

Reaching point 3 is not trivial because people move. ICP can be very unforgiving, and in some cases, you also need some luck to obtain good results at this stage.

For downsampling (Point 4), I used Open3D’s voxelization followed by averaging point coordinates. I do not know how this can influence the final results compared to something like a clustering algorithm. … [Leggi il resto]

Una Fenice che torna al passato

Questione di desideri…

15 anni fa, desideravo diventare uno sviluppatore web: ero affascinato da questo mondo e avrei voluto farne parte anche io. Un po’ alla volta ho imparato a usare gli strumenti necessari e creai il mio primo sito.

12 anni fa, ho realizzato che non bastava fare delle pagine web e basta, ma dovevano avere uno scopo. Ho anche realizzato che fare sia il contenuto, che tutto il sistema per gestirlo era un lavoro enorme e le mie competenze non ne erano all’altezza. Sono quindi passato a dei CMS: Flatpress, DokuWiki e altri.

Dopo 6 mesi, poi ho deciso di tenere solo il blog, ma a parte qualche cambiamento di grafica, è rimasto così per 10 anni.

Poi, 2 anni fa, cercavo un tirocinio per l’Università e volevo che il sito potesse dare una panoramica nonché reseoconto cronografico dei miei progetti. Ne ho aprofittato per dare una rinnovata: già da diverso tempo non mi trovavo più con PHP, avevo deciso di abbandonare Flatpress e volevo che il risultato fosse più professionale. Sono passato così a Python, in particolare Django, per il backend, più un Bootstrap leggermente personalizzato per il frontend. … [Leggi il resto]