From 689957c80bef6b7d68d00514ab6dd2e91074af7d Mon Sep 17 00:00:00 2001 From: "nissim.hadar" Date: Mon, 20 Nov 2017 08:11:19 -0800 Subject: [PATCH] Created RGB to monochrome filters. --- tools/auto-tester/src/ITKImageComparer.cpp | 36 ++++++++++++---------- tools/auto-tester/src/ITKImageComparer.h | 16 ++++++++-- tools/auto-tester/src/ImageComparer.h | 2 +- tools/auto-tester/src/Test.cpp | 6 ++-- 4 files changed, 37 insertions(+), 23 deletions(-) diff --git a/tools/auto-tester/src/ITKImageComparer.cpp b/tools/auto-tester/src/ITKImageComparer.cpp index fd0e71a339..c39f41db2d 100644 --- a/tools/auto-tester/src/ITKImageComparer.cpp +++ b/tools/auto-tester/src/ITKImageComparer.cpp @@ -12,26 +12,28 @@ #include #include -#include -#include +#include -float ITKImageComparer::compareImages(QString file1, QString file2) const { - using PixelType = itk::RGBPixel; - using ImageType = itk::Image; +ITKImageComparer::ITKImageComparer() { + // These are smart pointers that do not need to be deleted + actualImageReader = ReaderType::New(); + expectedImageReader = ReaderType::New(); +} - using ReaderType = itk::ImageFileReader; - using WriterType = itk::ImageFileWriter; +float ITKImageComparer::compareImages(QString actualImageFilename, QString expectedImageFilename) const { + actualImageReader->SetFileName(actualImageFilename.toStdString().c_str()); + expectedImageReader->SetFileName(expectedImageFilename.toStdString().c_str()); - ReaderType::Pointer reader = ReaderType::New(); - WriterType::Pointer writer = WriterType::New(); - - reader->SetFileName(file1.toStdString().c_str()); - writer->SetFileName("D:/pics/loni.jpg"); - - ImageType::Pointer image = reader->GetOutput(); - writer->SetInput(image); - - writer->Update(); + // Images are converted to monochrome for comparison + using MonochromePixelType = unsigned char; + using MonochromeImageType = itk::Image; + using FilterType = itk::RGBToLuminanceImageFilter; + + FilterType::Pointer actualImageToMonochrome = FilterType::New(); + FilterType::Pointer expectedImageToMonochrome = FilterType::New(); + actualImageToMonochrome->SetInput(actualImageReader->GetOutput()); + expectedImageToMonochrome->SetInput(expectedImageReader->GetOutput()); + return 0.0; } diff --git a/tools/auto-tester/src/ITKImageComparer.h b/tools/auto-tester/src/ITKImageComparer.h index 616bbbfe03..ff1b4347a7 100644 --- a/tools/auto-tester/src/ITKImageComparer.h +++ b/tools/auto-tester/src/ITKImageComparer.h @@ -12,11 +12,23 @@ #include "ImageComparer.h" -#include +#include class ITKImageComparer : public ImageComparer { public: - float compareImages(QString file1, QString file2) const final; + ITKImageComparer(); + float compareImages(QString actualImageFilename, QString expectedImageFilename) const final; + +private: + static const unsigned int Dimension{ 2 }; + + using RGBPixelType = itk::RGBPixel; + using RGBImageType = itk::Image; + + using ReaderType = itk::ImageFileReader; + + ReaderType::Pointer actualImageReader; + ReaderType::Pointer expectedImageReader; }; #endif // hifi_ITKImageComparer_h diff --git a/tools/auto-tester/src/ImageComparer.h b/tools/auto-tester/src/ImageComparer.h index c00c8b7e76..bec99c619e 100644 --- a/tools/auto-tester/src/ImageComparer.h +++ b/tools/auto-tester/src/ImageComparer.h @@ -14,7 +14,7 @@ class ImageComparer { public: - virtual float compareImages(QString file1, QString file2) const = 0; + virtual float compareImages(QString actualImageFilename, QString expectedImageFilename) const = 0; }; #endif // hifi_ImageComparer_h diff --git a/tools/auto-tester/src/Test.cpp b/tools/auto-tester/src/Test.cpp index 59511f7c8c..aa724aeb50 100644 --- a/tools/auto-tester/src/Test.cpp +++ b/tools/auto-tester/src/Test.cpp @@ -57,10 +57,10 @@ void Test::evaluateTests() { } // The number of images in each list should be identical - if (expectedImages.length() != resultImages.length()) { + if (expectedImages.length() != actualImages.length()) { messageBox.critical(0, "Test failed", - "Found " + QString::number(resultImages.length()) + " images in directory" + + "Found " + QString::number(actualImages.length()) + " images in directory" + "\nExpected to find " + QString::number(expectedImages.length()) + " images"); exit(-1); @@ -72,7 +72,7 @@ void Test::evaluateTests() { bool success{ true }; bool keepOn{ true }; for (int i = 0; keepOn && i < expectedImages.length(); ++i) { - float error = itkImageComparer.compareImages(expectedImages[i], actualImages[i]); + float error = itkImageComparer.compareImages(actualImages[i], expectedImages[i]); if (error > THRESHOLD) { mismatchWindow.setTestFailure(TestFailure{ error, // value of the error (float)