Ever wondered what a test card is for? TV signals are encoded in the YUV or YCbCr color spaces. A vectorscope is just the CbCr or UV part of the signal in 2D. Running a SMTPE test card through the scope gives you a zigzag pattern where it visits the center of each primary box in a specific order.
Pekka Väänänen
@pekkavaa.bsky.social
Avid reader, computer graphics fan and atmospheric jungle beats enjoyer. Demoscene: cce/Peisik. Blog at https://30fps.net/
What do you call the act of inserting an element to a sorted list? "Insort" of course... A snippet of a guide in the Python language docs.
An interesting insider view from the SGI side to Nintendo 64's development and launch: steveshepard.com/blog/making-...
"Kodak Lab notebook entry showing Bayer Pattern" en.wikipedia.org/wiki/Bryce_B...
Bryce Bayer - Wikipedia
Bryce Edward Bayer (/ˈbaɪər/; pronounced BYE-er, August 15, 1929[1] – November 13, 2012) was an American scientist who invented the Bayer filter pattern,[1] which is used in most modern color digital…
en.wikipedia.org
Another good find from Bouman's image processing course: CIELAB DeltaE is intended for comparing larges swathes of color, not individual pixels. Source: engineering.purdue.edu/~bouman/ece6...
Useful dithering (digital halftoning) related notes: engineering.purdue.edu/~bouman/ece6... They are from Charles A. Bouman's Spring 2026 "Digital Image Processing I" course, Purdue University.
engineering.purdue.edu
I've read that newspaper-like halftone patterns are laid out in a 45-degree angle because the human eye is less sensitive to that than to straight grid lines. But wouldn't a simpler explanation be that newspaper photos of streets and buildings have straight lines, so a rotated pattern works better?
The Mona Lisa mapped to the Commodore 64 palette by taking only pixel lightness into account. Two algorithms: N-Convex (left) always tries to dither the result while in Knoll's algorithm (right) dither strength can be tuned.
A new article: Revisiting Yliluoma’s ordered dither algorithm 30fps.net/pages/revisi... It's a deep dive to a single "color selection algorithm" used for ordered dithering. Nothing groundbreaking but I did uncover a neat simplified version that works OK. It's technical but with visual examples.
Trying to finish a new blog post on ordered dithering. It's been _so_ much work but I think it's turning out really interesting.
An incredible blog post on ordered dithering in color. Perhaps I shared this before but it deserves to be seen: matejlou.blog/2023/12/06/o...
Ordered Dithering with Arbitrary or Irregular Colour Palettes
Introduction Hello. I have recently been spending a lot of time dithering. In image processing, dithering is the act of applying intentional perturbations or noise in order to compensate for the in…
matejlou.blog
My new hobby: Taking holiday photos with multiple exposures to create fake GDC slides afterwards.
Really love this project and article - a handmade early-mid-90s-ish FPS. The procedural pixel art "gibbing" and particle effects are pretty cool, among other stuff staniks.github.io/articles/cat...
Catlantean 3D - Making Graphics Like It's 1993
A deep dive into the asset creation pipeline for Catlantean 3D.
staniks.github.io
A computer history question: Why didn't VGA support a 256-color 640x400 mode even though a frame would fit in 256 KB memory? I can see a business reason (the IBM 8514/A high-end card introduced at the same time) but is there a known technical justification for not having such a mode?
A new article on my website about a small thing that has bothered me for a long time: Should you normalize RGB values by 255 or 256? 30fps.net/pages/255-vs...
I uploaded a few historical text files related to color quantization and dithering. It's easy to forget how difficult it was to read up on the latest research without the internet. Well, it still is but for different reasons😅 paletteprogramming.com/archive/
Palette Programming: Invent Your Own Color Reduction Algorithm
A book and website about color reduction algorithms for retro computer graphics.
paletteprogramming.com
Now this is a bold typeface for a paper title. "Quantization" by Allen Gersho. IEEE Communications Society Magazine, September 1977.
Applying Floyd-Steinberg dithering (with serpentine scan order) to constant grey images creates interesting artifacts. Inspired by a 2001 paper by Victor Ostromoukhov who brute forced optimal weights for each level based in a similar experiment. The paper: perso.liris.cnrs.fr/victor.ostro...
New article: Single-pass palette refinement and ordered dithering 30fps.net/pages/bayer-... It's a method that modifies the online k-means algorithm to produce an ordered dithering pattern as a side effect. The result is closer to pleasant glitch aesthetics than a proper dithering replacement.
The "popularity" color quantizer is one of the simplest: find the K most used unique colors in the image. That's the palette. I was surprised how well it works when K=256 and the image is reduced to 4-bits per channel before. Even transparencies look kinda OK.
I will not continue to work on this so I might just share the URL. I just wanted to pack everything about a palette onto one view: palettarium.color.pizza
Came across this handy matrix of accurate but integer-only bit depth conversion formulas: threadlocalmutex.com?p=48
Fast and Accurate Color Depth Conversion – threadlocalmutex.com
When converting between low-bit color color formats (R4G4B4A4, R5G6B6, R8G8B8A8, and so on), the conversion routines used often don't map to the nearest color channel values in the target bit depth.…
threadlocalmutex.com
A cool plot from "A Simple and Efficient Error-Diffusion Algorithm" by Victor Ostromoukhov, 2001. They show how the classic Floyd-Steinberg error diffusion can't always produce a pattern with the blue noise (no clumping) property. Paper: perso.liris.cnrs.fr/victor.ostro...
Always a delight to see science being done on a 2 MHz 6502. From "On the Statistical Analysis of Dirty Pictures" by Julian Besag, 1986.
Why not blend gradually between ordered dither (top) and error diffusion (bottom)? Such a cool idea. Example image by Viktor Massalogin github.com/bntre/dither...
I researched Google's squoosh.app image compression tool's palette code and it's a vendored copy of libimagequant, but what's more interesting is that the code also supports ZX Spectrum color limits! github.com/GoogleChrome...
New blog post: A Decade of Slug This talks about the evolution of the Slug font rendering algorithm, and it includes an exciting announcement: The patent has been dedicated to the public domain. terathon.com/blog/decade-...
I tried using an octree for color quantization with the help of a 1996 Dr Dobbs article: jacobfilipp.com/DrDobbs/arti... It was quite a hassle, doesn't work that well (at least my version), and isn't as fast as I expected. On the right: sklearn's bottom-up clustering for comparison.