deve2912082ff
Adding/Updating baselines2ab1c0255b
Adding a md file022ebdaf1c
Adding a vtkImageDifference testffeacbe2ed
Fix vtkImageDifference issues Acked-by: Kitware Robot <kwrobot@kitware.com> Acked-by: buildbot <buildbot@kitware.com> Acked-by: Charles Gueunet <charles.gueunet@kitware.com> Merge-request: !9716
commit
9382d9eefb
@ -0,0 +1,8 @@
|
||||
# Fixing an impacting issue in vtkImageDifference
|
||||
|
||||
A impacting issue in vtkImageDifference has been fixed.
|
||||
Between vtk 9.1 and 9.2, an change has been made to vtkImageDifference
|
||||
that causes different image to be identified as not different
|
||||
depending on how the vtkImageDifference was configured.
|
||||
|
||||
This fix may causes some testing to start failing.
|
@ -0,0 +1 @@
|
||||
f63d1e9f84655024083b28bd6eaa238f0600dace14ed37e513cfda77d94e3c3ac7053b1d7d1866379aeda58720e766f526fe1c716c942d653c0081192f18d03a
|
@ -0,0 +1,142 @@
|
||||
/*=========================================================================
|
||||
|
||||
Program: Visualization Toolkit
|
||||
Module: ImageDifference.cxx
|
||||
|
||||
Copyright (c) Ken Martin, Will Schroeder, Bill Lorensen
|
||||
All rights reserved.
|
||||
See Copyright.txt or http://www.kitware.com/Copyright.htm for details.
|
||||
|
||||
This software is distributed WITHOUT ANY WARRANTY; without even
|
||||
the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
||||
PURPOSE. See the above copyright notice for more information.
|
||||
|
||||
=========================================================================*/
|
||||
// Test the vtkImageDifference class
|
||||
|
||||
#include "vtkImageDifference.h"
|
||||
#include "vtkMathUtilities.h"
|
||||
#include "vtkNew.h"
|
||||
#include "vtkPNGReader.h"
|
||||
#include "vtkTestUtilities.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <limits>
|
||||
|
||||
namespace
|
||||
{
|
||||
bool CheckErrors(vtkImageDifference* differenceFilter, double expectedError,
|
||||
double expectedThresholdedError, const std::string& info)
|
||||
{
|
||||
if (!vtkMathUtilities::FuzzyCompare(differenceFilter->GetError(), expectedError, 1e-8) ||
|
||||
!vtkMathUtilities::FuzzyCompare(
|
||||
differenceFilter->GetThresholdedError(), expectedThresholdedError, 1e-8))
|
||||
{
|
||||
std::cerr << std::setprecision(std::numeric_limits<double>::digits10);
|
||||
std::cerr << std::setprecision(17);
|
||||
std::cerr << "Unexpected vtkImageDifference errors with " << info << std::endl;
|
||||
std::cerr << "Expected error: " << expectedError << ", got: " << differenceFilter->GetError()
|
||||
<< " " << (expectedError != differenceFilter->GetError()) << std::endl;
|
||||
std::cerr << "Expected thresholded error: " << expectedThresholdedError
|
||||
<< ", got: " << differenceFilter->GetThresholdedError() << " "
|
||||
<< (expectedThresholdedError != differenceFilter->GetThresholdedError()) << std::endl;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
int ImageDifference(int argc, char* argv[])
|
||||
{
|
||||
char* fname1 = vtkTestUtilities::ExpandDataFileName(argc, argv, "Data/ImageDiff1.png");
|
||||
char* fname2 = vtkTestUtilities::ExpandDataFileName(argc, argv, "Data/ImageDiff2.png");
|
||||
|
||||
vtkNew<vtkPNGReader> reader1;
|
||||
reader1->SetFileName(fname1);
|
||||
reader1->Update();
|
||||
|
||||
vtkNew<vtkPNGReader> reader2;
|
||||
reader2->SetFileName(fname2);
|
||||
reader2->Update();
|
||||
|
||||
delete[] fname1;
|
||||
delete[] fname2;
|
||||
|
||||
vtkNew<vtkImageDifference> differenceFilter;
|
||||
differenceFilter->SetInputConnection(reader1->GetOutputPort());
|
||||
differenceFilter->SetImageConnection(reader2->GetOutputPort());
|
||||
|
||||
// Default param
|
||||
differenceFilter->Update();
|
||||
if (!::CheckErrors(
|
||||
differenceFilter, 10600.898039215839, 0.97124183006535825, "default parameters"))
|
||||
{
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
// Testing symmetric
|
||||
differenceFilter->SetInputConnection(reader2->GetOutputPort());
|
||||
differenceFilter->SetImageConnection(reader1->GetOutputPort());
|
||||
differenceFilter->Update();
|
||||
if (!::CheckErrors(
|
||||
differenceFilter, 10600.898039215839, 0.97124183006535825, "symmetric testing"))
|
||||
{
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
// Zero threshold
|
||||
differenceFilter->SetThreshold(0);
|
||||
differenceFilter->Update();
|
||||
if (!::CheckErrors(differenceFilter, 9342.9607843138092, 9342.9607843138092, "zero threshold"))
|
||||
{
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
// Higher average threshold
|
||||
differenceFilter->SetThreshold(105);
|
||||
differenceFilter->SetAverageThresholdFactor(1.);
|
||||
differenceFilter->Update();
|
||||
if (!::CheckErrors(
|
||||
differenceFilter, 10594.431372549172, 0.22614379084967323, "higher average threshold"))
|
||||
{
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
// No averaging
|
||||
differenceFilter->SetAverageThresholdFactor(0.5);
|
||||
differenceFilter->SetAveraging(false);
|
||||
differenceFilter->Update();
|
||||
if (!::CheckErrors(differenceFilter, 10600.898039215839, 0.97124183006535825, "no averaging"))
|
||||
{
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
// No shift
|
||||
differenceFilter->SetAveraging(true);
|
||||
differenceFilter->SetAllowShift(false);
|
||||
differenceFilter->Update();
|
||||
if (!::CheckErrors(differenceFilter, 9587.1254901961565, 1.1986928104575143, "no shift"))
|
||||
{
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
// Multi param
|
||||
differenceFilter->SetThreshold(0);
|
||||
differenceFilter->SetAveraging(false);
|
||||
differenceFilter->Update();
|
||||
if (!::CheckErrors(
|
||||
differenceFilter, 9587.1254901961565, 9587.1254901961565, "multiple parameters changes"))
|
||||
{
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
// Identical
|
||||
differenceFilter->SetInputConnection(reader1->GetOutputPort());
|
||||
differenceFilter->Update();
|
||||
if (!::CheckErrors(differenceFilter, 0., 0., "identical images"))
|
||||
{
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
|
||||
return EXIT_SUCCESS;
|
||||
}
|
@ -0,0 +1 @@
|
||||
6f14a3f8233cf495e8ee9f6cb73f5a65005205c9bc990a220b3ca796e5ef415dfc5ccb8a8aa89163c852db916c2acd62953b9655d9f51a87b32329cf483ea46a
|
@ -1 +1 @@
|
||||
c00399d5d0475dd85d6a65f51e5a3ccbb506c2976470750947900f69581a4ba4a73bcd6533d5823731eda5e67d64d606871762e548efe6824cdb2dd05cdfd128
|
||||
18eeb74ffc34aa56acbb93270759b9fa3330c337bd590fe7719412706c0bf12ddfafe075f9b9b8dada33956a91d80cc6b2309dccfb8baf4195c3bd239846759e
|
||||
|
@ -1 +1 @@
|
||||
9015c94269f3c4d7e3a9479b770088e517c6f6806edb9d661235ebd1e88ad4e314a8aac2e46cd86519be3a34cfeb4a71bd15c11565b369060f511bc1084200ca
|
||||
bf21dc2f47d4e467c1867853026955d70149f1b5efe918ad4e818ae01be00dcd3fc3191842a76707d1875c1cda52f0854191230883661d4cb69806f7065d9dcc
|
||||
|
@ -0,0 +1 @@
|
||||
d433e15a7e9bfb3b03eb5b5c73d3956782fd1f5662008ceb5180600202c87e4c47e541c4409c1bca5a6083183f3a005aeb70155c218a9977478ae9900d773963
|
@ -0,0 +1 @@
|
||||
2f6bf435136d567d6f9a4199f657073002f39d6c83dafac64223f6f6bb8d3af13cfe8c43f2e781695caff1f13019e02f58007f4d042c85c0eee3211f38758ce8
|
Loading…
Reference in new issue