Browse Source

added unit tests for adaptive histogram equalization

pull/673/head
Brian Popow 7 years ago
parent
commit
05676ce5a6
  1. 43
      tests/ImageSharp.Tests/Processing/Normalization/HistogramEqualizationTests.cs
  2. 1
      tests/ImageSharp.Tests/TestImages.cs
  3. 2
      tests/Images/External
  4. BIN
      tests/Images/Input/Jpg/baseline/AsianCarvingLowContrast.jpg

43
tests/ImageSharp.Tests/Processing/Normalization/HistogramEqualizationTests.cs

@ -4,12 +4,15 @@
using SixLabors.ImageSharp.PixelFormats;
using SixLabors.ImageSharp.Processing;
using SixLabors.ImageSharp.Processing.Processors.Normalization;
using SixLabors.ImageSharp.Tests.TestUtilities.ImageComparison;
using Xunit;
namespace SixLabors.ImageSharp.Tests.Processing.Normalization
{
public class HistogramEqualizationTests
{
private static readonly ImageComparer ValidatorComparer = ImageComparer.TolerantPercentage(0.0456F);
[Theory]
[InlineData(256)]
[InlineData(65536)]
@ -68,5 +71,45 @@ namespace SixLabors.ImageSharp.Tests.Processing.Normalization
}
}
}
[Theory]
[WithFile(TestImages.Jpeg.Baseline.LowContrast, PixelTypes.Rgba32)]
public void Adaptive_SlidingWindow_15Tiles_WithClipping<TPixel>(TestImageProvider<TPixel> provider)
where TPixel : struct, IPixel<TPixel>
{
using (Image<TPixel> image = provider.GetImage())
{
var options = new HistogramEqualizationOptions()
{
Method = HistogramEqualizationMethod.AdaptiveSlidingWindow,
LuminanceLevels = 256,
ClipHistogram = true,
Tiles = 15
};
image.Mutate(x => x.HistogramEqualization(options));
image.DebugSave(provider);
image.CompareToReferenceOutput(ValidatorComparer, provider);
}
}
[Theory]
[WithFile(TestImages.Jpeg.Baseline.LowContrast, PixelTypes.Rgba32)]
public void Adaptive_TileInterpolation_10Tiles_WithClipping<TPixel>(TestImageProvider<TPixel> provider)
where TPixel : struct, IPixel<TPixel>
{
using (Image<TPixel> image = provider.GetImage())
{
var options = new HistogramEqualizationOptions()
{
Method = HistogramEqualizationMethod.AdaptiveTileInterpolation,
LuminanceLevels = 256,
ClipHistogram = true,
Tiles = 10
};
image.Mutate(x => x.HistogramEqualization(options));
image.DebugSave(provider);
image.CompareToReferenceOutput(ValidatorComparer, provider);
}
}
}
}

1
tests/ImageSharp.Tests/TestImages.cs

@ -135,6 +135,7 @@ namespace SixLabors.ImageSharp.Tests
public const string Testorig420 = "Jpg/baseline/testorig.jpg";
public const string MultiScanBaselineCMYK = "Jpg/baseline/MultiScanBaselineCMYK.jpg";
public const string Ratio1x1 = "Jpg/baseline/ratio-1x1.jpg";
public const string LowContrast = "Jpg/baseline/AsianCarvingLowContrast.jpg";
public static readonly string[] All =
{

2
tests/Images/External

@ -1 +1 @@
Subproject commit 69603ee5b6f7dd64114fc44d321e50d9b2d439be
Subproject commit 9a852d6fa566d5a88f989093f9430ee54f784e53

BIN
tests/Images/Input/Jpg/baseline/AsianCarvingLowContrast.jpg

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 KiB

Loading…
Cancel
Save