Labs

Every interactive widget from the articles, on its own page. 36 of them. Each one takes an idea you can only half-check by reading and puts its inputs under your hand, which is the fastest way to find out whether you actually understood it.

Nothing is saved and nothing is sent anywhere — every lab runs in your browser. Each page links back to the article the lab was built for.

The image itself

Pixels, colour and the one operation every filter is made of.

One colour per photosite

Throw away two thirds of the colour, then guess it back.

from /sensing-colour-the-bayer-cfa

Hitting the colour a meter measured

Drag the gains and watch ΔE against 22 metered patches.

from /how-close-is-your-colour

Sixteen by twelve real pixels

Hover a pixel, read its index and its three numbers.

from /an-image-is-an-array

Sampling, and the pattern you get instead

Sample a wave too coarsely and a different wave comes back.

from /sampling-the-pixel-grid

Compression, encoded live

Move the quality slider and read a real file size.

from /image-file-formats-and-compression

A photosite filling up

Photons in, electrons collected, one integer out.

from /from-photons-to-counts

The curve between light and code value

Bend the response curve and watch the photograph follow.

from /the-camera-response-curve

Merging a bracket into radiance

Weight the exposures and watch the merged scene converge.

from /high-dynamic-range-imaging

2D convolution, cell by cell

Slide a 3×3 kernel over an 8×8 grid and watch the arithmetic.

from /2d-convolution-on-images

Kernels on a real image

Edit the nine weights and see the filter change the photo.

from /2d-convolution-on-images

One colour, three coordinate systems

Drag R, G, B and read the same colour as grayscale and HSV.

from /image-formation-and-color-spaces

Cutting an object out by colour

Six numbers — the exact ones you would pass to cv2.inRange.

from /image-formation-and-color-spaces

Pixels to a centroid

Paint a binary mask and watch its area and centre of mass move.

from /dip-cv-graphics-timeline