PitchHut
Log in / Sign up
uniform-grayscale-image
7 views
Colorful images that maintain their essence in grayscale.
Pitch

This innovative algorithm transforms RGB images while ensuring they appear uniform in grayscale, preserving visual essence without losing identity. By leveraging HSV color space to maintain hue fidelity, we craft vibrant visuals that retain their character even in monochrome. Experience a seamless blend of color and clarity with our groundbreaking approach.

Description

This project focuses on converting RGB images into a new RGB format that retains a uniform appearance when transformed into grayscale. Typically, converting a color image to grayscale results in variance in shades, which can hinder understanding of the image's content. This innovative algorithm endeavors to create a uniform grayscale output by maintaining the color quality of the original image.

Comparison of RGB and Grayscale Images
Here's how a standard RGB image and its grayscale counterpart look:

RGB ImageGrayscale Image
RGB imageGray image

In contrast, when we apply our unique algorithm to convert the image, we achieve:

Converted RGB ImageGrayscale Image
Converted RGB imageGray image

Background

To establish a baseline, we utilize OpenCV's grayscale conversion methodology. This standard method relies on the NTSC formula for RGB to grayscale conversion:

$$ Y = 0.299 R + 0.587 G + 0.114 B $$

This formula acknowledges the human perception of brightness across the red, green, and blue color spectrum. The RGB color space can be envisioned as a 3D cube, where the axes represent each color channel ranging from 0 (black) to 255 (white).

RGB color cube

As we cut through the RGB cube, each plane represents a different gray value. A video illustrating how the gray value varies while traversing through this cube is available for visualization:

https://github.com/user-attachments/assets/51312ecf-7053-47c0-99c7-64fbc5562365

Our aim is to ensure that the RGB values not only maintain the color integrity but also align with the target grayscale value derived from the original image.

The Algorithm

The target grayscale value is computed as the average of the grayscale values across the original image:

$$ Y_{goal} = rac{1}{n} egin{bmatrix} 0.299 & 0.587 & 0.114
R_0 & R_1 & R_2 & \dots & R_n \ G_0 & G_1 & G_2 & \dots & G_n \ B_0 & B_1 & B_2 & \dots & B_n \end{bmatrix} egin{bmatrix} 1 & 1 & 1 \end{bmatrix} $$

In an optimal scenario, we would scale the RGB values by a factor to match this target grayscale value:

$$ egin{bmatrix} R
G
B \end{bmatrix} = s egin{bmatrix} R_0 \ G_0 \ B_0 \end{bmatrix} \ Y_{goal} = egin{bmatrix} 0.299 & 0.587 & 0.114 \end{bmatrix}egin{bmatrix} R \ G \ B \end{bmatrix} $$

However, often the adjusting of RGB values leads to exceeding the 255 limit, resulting in a shift in hue. In such cases, we adopt a more advanced approach that preserves the hue.

By moving the RGB point within specific directional vectors, we balance the required transformation while ensuring color consistency. The intersection of these movements enables us to achieve our grayscale goals without loss of hue:

$$ egin{bmatrix} R
G
B \end{bmatrix} =a egin{bmatrix} R_0 \
G_0 \
B_0 \end{bmatrix} + b egin{bmatrix} 1 \
1 \
1 \end{bmatrix} $$

This dual freedom leads to a nuanced control over the color transformation and a pleasing final result.

To delve deeper into the mathematics governing this transformation, including the nullspace considerations, constraints, and achieving an optimal solution, refer to the detailed algorithmic breakdown within the repository.

This project empowers developers and researchers to manipulate image properties in a novel way, creating visually appealing and uniform grayscale representations from colorful images.