Browse Source

Some renaming and docs

pull/2739/head
James Jackson-South 2 years ago
parent
commit
a7edf1b41a
  1. 7
      src/ImageSharp/ColorProfiles/ColorConversionOptions.cs
  2. 22
      src/ImageSharp/ColorProfiles/KnownChromaticAdaptationMatrices.cs
  3. 4
      src/ImageSharp/ColorProfiles/KnownRgbWorkingSpaces.cs
  4. 8
      tests/ImageSharp.Tests/ColorProfiles/RgbAndCieXyzConversionTest.cs

7
src/ImageSharp/ColorProfiles/ColorConversionOptions.cs

@ -18,7 +18,7 @@ public class ColorConversionOptions
/// <summary>
/// Initializes a new instance of the <see cref="ColorConversionOptions"/> class.
/// </summary>
public ColorConversionOptions() => this.AdaptationMatrix = LmsAdaptationMatrix.Bradford;
public ColorConversionOptions() => this.AdaptationMatrix = KnownChromaticAdaptationMatrices.Bradford;
/// <summary>
/// Gets the memory allocator.
@ -38,15 +38,16 @@ public class ColorConversionOptions
/// <summary>
/// Gets the source working space used for companding in conversions from/to XYZ color space.
/// </summary>
public RgbWorkingSpace RgbWorkingSpace { get; init; } = RgbWorkingSpaces.SRgb;
public RgbWorkingSpace RgbWorkingSpace { get; init; } = KnownRgbWorkingSpaces.SRgb;
/// <summary>
/// Gets the destination working space used for companding in conversions from/to XYZ color space.
/// </summary>
public RgbWorkingSpace TargetRgbWorkingSpace { get; init; } = RgbWorkingSpaces.SRgb;
public RgbWorkingSpace TargetRgbWorkingSpace { get; init; } = KnownRgbWorkingSpaces.SRgb;
/// <summary>
/// Gets the transformation matrix used in conversion to perform chromatic adaptation.
/// <see cref="KnownChromaticAdaptationMatrices"/> for further information. Default is Bradford.
/// </summary>
public Matrix4x4 AdaptationMatrix
{

22
src/ImageSharp/ColorProfiles/LmsAdaptationMatrix.cs → src/ImageSharp/ColorProfiles/KnownChromaticAdaptationMatrices.cs

@ -6,19 +6,23 @@ using System.Numerics;
namespace SixLabors.ImageSharp.ColorProfiles;
/// <summary>
/// Matrices used for transformation from <see cref="CieXyz"/> to <see cref="Lms"/>, defining the cone response domain.
/// Provides matrices for chromatic adaptation, facilitating the adjustment of color values
/// under different light sources to maintain color constancy. This class supports common
/// adaptation transforms based on the von Kries coefficient law, which assumes independent
/// scaling of the cone responses in the human eye. These matrices can be applied to convert
/// color coordinates between different illuminants, ensuring consistent color appearance
/// across various lighting conditions.
/// </summary>
/// <remarks>
/// Matrix data obtained from:
/// Two New Von Kries Based Chromatic Adaptation Transforms Found by Numerical Optimization
/// S. Bianco, R. Schettini
/// DISCo, Department of Informatics, Systems and Communication, University of Milan-Bicocca, viale Sarca 336, 20126 Milan, Italy
/// https://web.stanford.edu/~sujason/ColorBalancing/Papers/Two%20New%20von%20Kries%20Based%20Chromatic%20Adaptation.pdf
/// Supported adaptation matrices include the Bradford, von Kries, and Sharp transforms.
/// These matrices are typically used in conjunction with color space conversions, such as from XYZ
/// to RGB, to achieve accurate color rendition in digital imaging applications.
/// </remarks>
public static class LmsAdaptationMatrix
public static class KnownChromaticAdaptationMatrices
{
/// <summary>
/// Von Kries chromatic adaptation transform matrix (Hunt-Pointer-Estevez adjusted for D65)
/// von Kries chromatic adaptation transform matrix (Hunt-Pointer-Estevez adjusted for D65)
/// </summary>
public static readonly Matrix4x4 VonKriesHPEAdjusted
= Matrix4x4.Transpose(new Matrix4x4
@ -36,7 +40,7 @@ public static class LmsAdaptationMatrix
});
/// <summary>
/// Von Kries chromatic adaptation transform matrix (Hunt-Pointer-Estevez for equal energy)
/// von Kries chromatic adaptation transform matrix (Hunt-Pointer-Estevez for equal energy)
/// </summary>
public static readonly Matrix4x4 VonKriesHPE
= Matrix4x4.Transpose(new Matrix4x4

4
src/ImageSharp/ColorProfiles/RgbWorkingSpaces.cs → src/ImageSharp/ColorProfiles/KnownRgbWorkingSpaces.cs

@ -1,4 +1,4 @@
// Copyright (c) Six Labors.
// Copyright (c) Six Labors.
// Licensed under the Six Labors Split License.
using SixLabors.ImageSharp.ColorProfiles;
@ -10,7 +10,7 @@ namespace SixLabors.ColorProfiles;
/// <summary>
/// Chromaticity coordinates based on: <see href="http://www.brucelindbloom.com/index.html?WorkingSpaceInfo.html"/>
/// </summary>
public static class RgbWorkingSpaces
public static class KnownRgbWorkingSpaces
{
/// <summary>
/// sRgb working space.

8
tests/ImageSharp.Tests/ColorProfiles/RgbAndCieXyzConversionTest.cs

@ -28,7 +28,7 @@ public class RgbAndCieXyzConversionTest
{
// Arrange
CieXyz input = new(x, y, z);
ColorConversionOptions options = new() { WhitePoint = Illuminants.D50, TargetRgbWorkingSpace = RgbWorkingSpaces.SRgb };
ColorConversionOptions options = new() { WhitePoint = Illuminants.D50, TargetRgbWorkingSpace = KnownRgbWorkingSpaces.SRgb };
ColorProfileConverter converter = new(options);
Rgb expected = new(r, g, b);
@ -61,7 +61,7 @@ public class RgbAndCieXyzConversionTest
{
// Arrange
CieXyz input = new(x, y, z);
ColorConversionOptions options = new() { WhitePoint = Illuminants.D65, TargetRgbWorkingSpace = RgbWorkingSpaces.SRgb };
ColorConversionOptions options = new() { WhitePoint = Illuminants.D65, TargetRgbWorkingSpace = KnownRgbWorkingSpaces.SRgb };
ColorProfileConverter converter = new(options);
Rgb expected = new(r, g, b);
@ -94,7 +94,7 @@ public class RgbAndCieXyzConversionTest
{
// Arrange
Rgb input = new(r, g, b);
ColorConversionOptions options = new() { TargetWhitePoint = Illuminants.D50, RgbWorkingSpace = RgbWorkingSpaces.SRgb };
ColorConversionOptions options = new() { TargetWhitePoint = Illuminants.D50, RgbWorkingSpace = KnownRgbWorkingSpaces.SRgb };
ColorProfileConverter converter = new(options);
CieXyz expected = new(x, y, z);
@ -127,7 +127,7 @@ public class RgbAndCieXyzConversionTest
{
// Arrange
Rgb input = new(r, g, b);
ColorConversionOptions options = new() { TargetWhitePoint = Illuminants.D65, RgbWorkingSpace = RgbWorkingSpaces.SRgb };
ColorConversionOptions options = new() { TargetWhitePoint = Illuminants.D65, RgbWorkingSpace = KnownRgbWorkingSpaces.SRgb };
ColorProfileConverter converter = new(options);
CieXyz expected = new(x, y, z);

Loading…
Cancel
Save