Two series of labs. Image Processing covers the classical toolkit, following the textbooks most courses use: histograms, filters, the frequency domain, morphology. Computer Vision builds a convolutional network from the sliding window up to the problem I actually work on: finding animals that do not want to be found. Each lab is a single page you open and play with. No install, no notebook, no account.
Follows Gonzalez & Woods, Digital Image Processing (4th edition), section by section, with Burger & Burge, Digital Image Processing: An Algorithmic Introduction, alongside. Every lab takes your own image: drop one in and turn the dials.
How a continuous scene becomes a grid of integers. Drop the bit depth until false contours appear, undersample until gratings alias, compare nearest, bilinear and bicubic interpolation, paint pixels to see 4- and 8-adjacency, then split a photograph into RGB, CMYK and HSI and slice it by colour.
Operations that look at one pixel at a time. Count a histogram by hand, bend a transfer curve and watch every pixel follow it, build histogram equalization from the cumulative sum, then let Otsu choose a threshold.
Operations that look at a neighbourhood. Type your own kernel and watch every product, compare box and Gaussian blur, see why the median beats the mean on salt-and-pepper noise, sharpen until it clips, and find edges with Sobel.
Every image is a sum of waves. Build one by clicking in an empty spectrum, read a photograph’s spectrum point by point, swap magnitude and phase, see why an ideal filter rings, and notch periodic noise out by hand.
Undo known damage and measure how close you got. Estimate a noise PDF from a flat patch, flip the contraharmonic's Q and watch it fail, model motion and turbulence blur, see inverse filtering explode, then tame it with Wiener and constrained least squares.
Treat a binary image as a set and probe it with a shape. Paint your own set and structuring element and watch erosion and dilation cell by cell, clean noise with opening and closing, fill holes and extract objects one iteration at a time, reconstruct without seeds, and flatten uneven lighting with the top-hat.
See why noise ruins second derivatives, step through Marr–Hildreth and Canny stage by stage, find straight lines by voting in the Hough accumulator, finally threshold the uneven page with a moving average, then grow, cluster and flood regions.
Start here if the course is image processing. Lab 03’s hand-made filters are exactly what the Convolution Lab in the next series turns into learned weights.
From the sliding window up to camouflaged object detection, the problem I work on in research.
What a convolutional layer actually does. Step the window across the input by hand, watch the arithmetic as it happens, then run the same kernel over a real image.
Classifying every pixel instead of the whole image. Drag two masks apart and watch IoU and Dice disagree, switch U-Net's skip connections off to find out what they were doing, then train a real two-layer network in the page and measure which loss actually finds a camouflaged shape.
Walk up a backbone one stage at a time and watch resolution trade against context. Measure what a pretrained encoder really buys — the answer is not what you were told. Then widen the receptive field with dilation instead of downsampling, and gate a skip connection so it stops forwarding the whole background.
Self-attention worked through by hand on a handful of patches, then the jump to vision transformers and what changes when a model can look anywhere at once.
The problem this whole series was built to reach. Why a boundary that barely exists breaks the metrics from lab 02, what SINet's search-and-identify split is for, and where the field currently stands.
These labs are meant to be walked in order, since each one assumes the last. If you only have an hour, the Convolution Lab on its own is still the thing most people are missing.