RSS Daily tech news
  • Room-temperature quantum breakthrough freezes motion without cooling
    ETH Zurich scientists have levitated a tower of three nano glass spheres using optical tweezers, suppressing almost all classical motion to observe quantum zero-point fluctuations with unprecedented precision. Achieving 92% quantum purity at room temperature, a feat usually requiring near absolute zero, they have opened the door to advanced quantum sensors without costly cooling.
  • Tiny gold “super atoms” could spark a quantum revolution
    Scientists have found that microscopic gold clusters can act like the world’s most accurate quantum systems, while being far easier to scale up. With tunable spin properties and mass production potential, they could transform quantum computing and sensing.
  • Scientists unveil bioplastic that degrades at room temperature, and outperforms petroplastics
    Plastic pollution is a mounting global issue, but scientists at Washington University in St. Louis have taken a bold step forward by creating a new bioplastic inspired by the structure of leaves. Their innovation, LEAFF, enhances strength, functionality, and biodegradability by utilizing cellulose nanofibers, outperforming even traditional plastics. It degrades at room temperature, can be […]
  • Building electronics that don’t die: Columbia's breakthrough at CERN
    Deep beneath the Swiss-French border, the Large Hadron Collider unleashes staggering amounts of energy and radiation—enough to fry most electronics. Enter a team of Columbia engineers, who built ultra-rugged, radiation-resistant chips that now play a pivotal role in capturing data from subatomic particle collisions. These custom-designed ADCs not only survive the hostile environment inside CERN […]
  • Digital twins are reinventing clean energy — but there’s a catch
    Researchers are exploring AI-powered digital twins as a game-changing tool to accelerate the clean energy transition. These digital models simulate and optimize real-world energy systems like wind, solar, geothermal, hydro, and biomass. But while they hold immense promise for improving efficiency and sustainability, the technology is still riddled with challenges—from environmental variability and degraded equipment […]
  • Quantum tunneling mystery solved after 100 years—and it involves a surprise collision
    For the first time ever, scientists have watched electrons perform a bizarre quantum feat: tunneling through atomic barriers by not just slipping through, but doubling back and slamming into the nucleus mid-tunnel. This surprising finding, led by POSTECH and Max Planck physicists, redefines our understanding of quantum tunneling—a process that powers everything from the sun […]

HSV color chart for vallejo paint

by Florius
A digital image showing 28 acrylic paint bottles organized in a black plastic rack by color gradient. To the right is a 3D HSV color model represented as a transparent cylinder with a vertical grayscale axis and colored spheres floating inside, depicting paint positions in hue, saturation, and value space.

I own a 3D printer and regularly create items such as figurines and busts, which I then paint. For this, I use a collection of 28 colors from the Vallejo Model Color range. To store these paints, I have a rack organized into 3 rows and 16 columns.

Table of Contents

The objective of this article is to analyze the colors within my paint palette in order to identify an underlying structure that can inform a systematic and visually coherent arrangement. If achieving that means purchasing one or two additional colors, I’m happy to do so.

In this post, I’ll walk you through the basic idea behind the model I’m using. Starting with the Red-Green-Blue (RGB) color scheme, we can map the color of the paints into a 3D structure using the HSV (Hue, Saturation, Value) color model. Below, you’ll find an interactive 3D visualization showing where each of my paints lies within this HSV space.

Once the HSV model is introduced, I proceed to analyze the distribution of the colors using two techniques: histograms to explore value distributions, and K-Means clustering to identify natural groupings within the palette. If you are interested in what else I wrote on this topic, see my posts on K-Means Clustering for Colors and my latest post on Sorting Vallejo colors with Machine Learning.

From RGB to the HSV

Every digital color can be represented by combining Red (R), Green (G), and Blue (B) light. Each channel ranges from 0 (no intensity) to 255 (full intensity). For example, pure red is written as (255, 0, 0), white as (255, 255, 255) and black as (0, 0, 0). Instead of writing RGB values in decimal, it’s also common to use hexadecimal notation, where 255 is written as FF and 60 as 3C. Using this format, yellow—being a mix of red and green at full intensity—is represented as #FFFF00.

While RGB is widely used, a more intuitive way to describe color is through the HSV color model, which stands for Hue, Saturation, and Value. Sometimes “Brightness” is used in place of “Value”, but in this context, both refer to the same thing: the highest of the RGB components, or Cmax.

Figure 1. Illustration of the HSV color wheel, where hue is represented by the angle around the circle, and saturation by the distance from the center outward.
Figure 1. Illustration of the HSV color wheel, where hue is represented by the angle around the circle, and saturation by the distance from the center outward.

Before converting RGB to HSV, the RGB values are normalized to the range [0,1] by dividing each component by 255 (i.e., R’= R/255, and similar for G’ and B’). Based on these normalized values, we define:

\[
\begin{aligned}
C_{\text{max}} &= \max(R’, G’, B’) \\
C_{\text{min}} &= \min(R’, G’, B’) \\
\Delta &= C_{\text{max}} – C_{\text{min}}
\end{aligned}
\]

Hue

Hue describes the type of color and is computed based on which RGB component is the largest. It’s defined as:

\[
H =
\begin{cases}
0^\circ, & \Delta = 0 \\
60^\circ \times \left( \frac{G’ – B’}{\Delta} \bmod 6 \right), & C_{\text{max}} = R’ \\
60^\circ \times \left( \frac{B’ – R’}{\Delta} + 2 \right), & C_{\text{max}} = G’ \\
60^\circ \times \left( \frac{R’ – G’}{\Delta} + 4 \right), & C_{\text{max}} = B’
\end{cases}
\]

Note: If two components are tied for the maximum, the standard approach is to choose based on the order: R’ > G’ > B’.

Saturation

Saturation measures how vivid the color is:

\[
S =
\begin{cases}
0, & C_{\text{max}} = 0 \\
\frac{\Delta}{C_{\text{max}}}, & \text{otherwise}
\end{cases}
\]

Value

Value (or brightness) corresponds to the highest RGB component:

\[V=C_{max}\]

HSV model

Hue in the HSV model is measured in degrees from 0° to 360°, forming a circular spectrum—red appears at both 0° and 360°. In the 2D representation of the hue-saturation plane, hue corresponds to the angle around the circle, while saturation is the radial distance from the center: fully saturated colors lie on the edge, and desaturated colors (grays) lie near the center.

To represent value, the model adds a third dimension. This creates a cylinder, where vertical position represents brightness: the bottom of the cylinder corresponds to black (value = 0), and the top represents full brightness (value = 1). Each horizontal slice of the cylinder at a given brightness level forms a 2D hue-saturation circle.

Fig. 2. A 3D cylindrical representation of the HSV model. The third component, value (brightness), is represented by the height of the cylinder. This image shows only horizontal slices (circles) at intervals of 0.2 along the value axis.
Fig. 2. A 3D cylindrical representation of the HSV model. The third component, value (brightness), is represented by the height of the cylinder. This image shows only horizontal slices (circles) at intervals of 0.2 along the value axis.

Figure 2 shows these horizontal slices taken at intervals of 0.2 in brightness. As brightness decreases, colors become darker and more muted, eventually blending into black. Thus, the full 3D HSV model is best visualized as a cylinder, where:

  • Hue is the angle around the vertical axis,
  • Saturation is the distance from the center axis outward,
  • Value is the height along the vertical axis.

This cylindrical form helps visualize how colors shift in hue, become more or less vivid (saturation), and change in brightness—all in a single geometric structure.

While the HSV model is naturally represented as a cylinder due to the circular nature of hue, it’s also possible to visualize the hue-saturation plane as a 2D rectangular grid, with hue on the horizontal axis (0–360° or normalized 0–1) and saturation on the vertical axis (0–1). In this projection, the circular structure of hue is lost—colors at 0° and 360° appear on opposite ends, as shown in Figure 3—but it remains a useful way to analyze and personally views better than seeing it on the inside of a colored cylinder.

Fig. 3. A linear gradient of hue values from 0° to 360°, with saturation and value fixed at their maximum (1), showing the full pure color spectrum.
Fig. 3. A linear gradient of hue values from 0° to 360°, with saturation and value fixed at their maximum (1), showing the full pure color spectrum.

Analysis of Vallejo Game Colors

My dataset consists of the 28 colors from the Vallejo Game Color set. These colors were converted into hexadecimal codes using the website encycolorpedia.com, which matches Vallejo’s color codes with their closest digital equivalents, to see which colors I have, I refer you to the interactive Figure at the top of this page. One thing I noticed is that the brightness on the digital results appears slightly lower for nearly all the colors—this could be due to my display settings, so please take the data with a grain of salt. Nevertheless, the dataset provides a solid basis for analysis.

Color distribution

Using Python’s “Colorsys” library, I converted the hexadecimal color codes into HSV and plotted the colors based on their hue and saturation. Figure 4 (left) shows this 2D distribution, where each point represents one of the 28 colors from the set. The color bar at the top illustrates the full hue spectrum at maximum saturation and brightness, providing a reference for how pure hues vary across the range.

Figure 4 (right) extends this to a 3D HSV representation. In this plot, hue and saturation remain on the horizontal axes, while the vertical axis now reflects the value (or brightness) of each color—capturing the full HSV distribution of the palette.

Fig. 4. (Left) A 2D plot of hue versus saturation, showing all paint colors as individual data points. (Right) A 3D HSV plot illustrating hue, saturation, and value for all colors in the palette.
Fig. 4. (Left) A 2D plot of hue versus saturation, showing all paint colors as individual data points. (Right) A 3D HSV plot illustrating hue, saturation, and value for all colors in the palette.

Clustering in Color Space

Based on the distribution of our colors, several characteristics of the palette become apparent—best visualized using histograms. A histogram, as shown in Figure 5,  is a graphical representation of the frequency distribution of continuous numerical data, showing how often different values occur within a defined range. Figure 5 displays histograms for all three components of the HSV model.

Fig. 5. Histograms showing the distribution of the HSV model components: hue (left), saturation (middle), and value (right).
Fig. 5. Histograms showing the distribution of the HSV model components: hue (left), saturation (middle), and value (right).

Several insights can be drawn from these graphs:

  • Over half of the colors in my palette fall within the hue range below 0.2.
  • Most of the colors have a saturation below 50%, with the exception of the yellows and orange-reds.
  • The value (brightness) distribution appears to be relatively balanced.

However, not all colors were perfectly translated into hex codes by the reference website. This is especially evident for colors with both low saturation and low brightness—these appear so dark that their hue becomes nearly indistinguishable, making it difficult to assign a precise color classification.

While the histograms provide insight into how values are distributed along each individual HSV axis, they do not capture how hue, saturation, and value interact together in each color. This is where clustering adds value: it considers all three components simultaneously, revealing multidimensional relationships that are otherwise hidden in one-dimensional histograms.

I am using a clustering technique called K-Means Clustering. K-Means is an iterative algorithm that groups data points—in this case, paint colors in HSV space—into clusters based on similarity. The algorithm identifies the optimal cluster centers (centroids) and assigns each data point to the nearest centroid. This effectively reduces the color space into a set of representative groups, which are easier to interpret visually and analytically (see Figure 6).

Fig. 6. K-Means clustering applied to the HSV color dataset, revealing four distinct clusters of colors.
Fig. 6. K-Means clustering applied to the HSV color dataset, revealing four distinct clusters of colors.

The histograms show that a majority of hues fall below 0.2, and that many paints are low in saturation or value. K-Means confirms this, but adds contextual structure: instead of simply knowing many paints are low in value, we now see that some form distinct clusters with low hue and low value (Cluster 2), or low hue and high value (Cluster 1). Furthermore, K-Means isolates a group of higher-hue paints (Cluster 3: greens, blues, violets), helping visually separate the small number of outliers that the histogram alone wouldn’t emphasize.

Conclusion

Through this analysis, I’ve gained a clearer understanding of my color palette and how my paints naturally group into four distinct clusters. While this structural insight is helpful, it also led me to rethink my assumptions.

Previously, I believed I had made a mistake by buying too many browns and other warm tones—colors that seemed to overcrowd the lower end of the hue spectrum. But this process reminded me of something important: I bought those colors because I needed them. They served a purpose in the models I painted, even if they didn’t balance perfectly in a color wheel or clustering plot.

So rather than rushing to “fill gaps” in the HSV space or buying new colors just to create a more even or aesthetically pleasing distribution, I now see more value in embracing the palette I already have. The goal shouldn’t be to force a sense of order, but to find it in what already works for me.

Looking ahead, I plan to build on this approach in a more practical way. In my next post, I’ll analyze the color compositions of paintings, miniatures, or real-world references that I find visually compelling. By extracting the color distributions from those images, I hope to identify which tones are actually beneficial additions to my palette.

If you read this far, and have questions on how I made these graphs, do contact me here.

Florius

Hi, welcome to my website. I am writing about my previous studies, work & research related topics and other interests. I hope you enjoy reading it and that you learned something new.

More Posts

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.