Blog

Learn computer vision by running it: explainers, interactive demos, runnable Python & C++, and honest benchmarks. Newest first.

Models & Detection
·21 min read Intermediate

A Traffic Camera in a Simulated New York: Exact Labels at 0.75 s a Frame

A pole camera at a real Harlem junction, rendered by the Valdrada simulator on one desktop GPU: every car and pedestrian comes with its box, its mask, its depth and how much of it is hidden, at 0.75 s per labelled frame when four cameras share a capture. What it took to run headless on Linux, what a simulated label does and does not tell you, how far a COCO detector gets on it, and a recording format that lets the same code read a real camera later.

object-detectionrf-detrsynthetic-databenchmark
Read more →
Fundamentals
·10 min read Intermediate

Lowe's Ratio Test: Matching Features You Can Trust

How SIFT matches points between two photos: pair each descriptor with its nearest neighbour, then keep the pair only when the second-nearest is clearly farther. On the Barcelona harbour pair, scored against a homography fitted by a different detector, the ratio test at 0.75 keeps 440 matches of which 420 are right; an absolute distance threshold tuned to keep the same 440 gets 391 right. Built in NumPy and checked against OpenCV's BFMatcher.

featuresgeometryfundamentals
Read more →
Fundamentals
·14 min read Intermediate

Scale Space and the Difference of Gaussians

Scale space is a stack of copies of a photo, each blurred a little more, which lets a detector find features of every size and say how big each one is. Discs of radius 4, 8 and 16 px answer most strongly at a blur of 2.77, 5.61 and 11.34 px, close to r/√2; subtracting neighbouring blurs reproduces the scale-normalized Laplacian with a correlation of 0.99; and on a harbour photo SIFT's 9 octaves give each point a size that halves when the photo does.

featuresgeometryfundamentals
Read more →
Fundamentals
·12 min read Intermediate

The SIFT Descriptor: 128 Numbers per Keypoint

How SIFT describes the neighbourhood of a keypoint with 128 numbers that come out the same in another photo: gradient histograms on a 4×4 grid, turned to the keypoint's own direction, normalized and clipped. Each step tested by removing it on a photo of Barcelona harbour: without the direction, matches against a copy turned 45° fall from 1,927 correct to 0; without normalization, a contrast change takes them from 907 to 146.

featuresgeometryfundamentals
Read more →
Fundamentals
·14 min read Intermediate

How SIFT Finds Keypoints: Extrema, Refinement, Orientation

How SIFT turns a stack of blurred photos into a short list of points it can find again: every point that beats its 26 neighbours, a sub-pixel fit, a contrast test, an edge test and a direction for each survivor. Built from scratch on a photo of Barcelona harbour, where 7,053 candidates become 2,896 points and 3,510 keypoints, and checked against OpenCV keypoint for keypoint.

featuresgeometryfundamentals
Read more →
Fundamentals
·14 min read Intermediate

What Makes a Good Keypoint? Repeatability, Measured

A good keypoint is one a detector finds again in another photo of the same scene, in the same place and at the same size. Measured on a harbour photo under known turns, zooms, blur and noise: on position alone Harris corners and SIFT points come back about equally often, and which one leads depends on the tolerance; what SIFT adds is a size that follows the zoom, which takes correct matches across a 2× zoom from 1 to 294.

featuresgeometryfundamentals
Read more →
Edge Deployment
·26 min read Intermediate

EmbeddingGemma 2 Video Search on a Laptop iGPU

Google's open EmbeddingGemma 2 finds the right clip for a sentence 22 times out of 23, fully offline, at 2.3 s per clip on the Intel Iris Xe inside a laptop with OpenVINO INT8. Then the same vectors are asked which way time runs: a clip and its reverse land at cosine 0.997, and neither EmbeddingGemma 2 nor VideoPrism, a model built for video, can tell them apart.

openvinoIntelSoftwareInnovatoredge-aiquantization
Read more →
Edge Deployment
·15 min read Intermediate

3D Vehicle Detection on a Laptop iGPU

UrbanOmniDetect-2 draws a 3D box around every vehicle from one uncalibrated camera and places it on a top-down map of the road. On the Intel Iris Xe inside a 12th-gen laptop, quantized to INT8 with OpenVINO and with its final layer kept in float, the medium model runs at 33 ms per frame (30 fps), and its box corners stay within 0.4 px of the original model on two traffic cameras.

openvinoIntelSoftwareInnovatoredge-aiquantization
Read more →
Fundamentals
·15 min read Intermediate

Boundary Detection: Finding Lines and Circles with the Hough Transform

How to find straight lines and circles in an image without being told where they are, and why the same method works for any shape you can write as an equation. One pipeline, from image to grey to edges to votes to the best shapes, run on the lane markings of a highway and the balls on a pool table, and checked against what a person drew by hand.

image-processingedge-detectionfundamentals
Read more →