Beispiel #1
0
        public void CorrectParse()
        {
            var histogramService = new HistogramSorterService();

            // Get the directory in which the test files are contained.
            var pathToHistogramFiles = $"{Directory.GetCurrentDirectory()}/../../../{TestFilesFolder}";

            // Parse the files in the test directory.
            var parseOutput = histogramService.ParseHistograms(pathToHistogramFiles);

            var testFileNames =
                Directory
                .GetFiles(pathToHistogramFiles)
                .Select(Path.GetFileNameWithoutExtension)
                .ToList();

            var imageIds =
                parseOutput
                .Select(histogram => histogram.ImageId)
                .ToList();

            Assert.True(testFileNames.Count == NumberOfHistogramsInTestFolder);
            Assert.True(testFileNames.Count == parseOutput.Count);
            foreach (var testFileName in testFileNames)
            {
                Assert.Contains(testFileName, imageIds);
            }

            foreach (var colorHistogram in parseOutput)
            {
                Assert.True(colorHistogram.RedHistogram.Count == 16);
                Assert.True(colorHistogram.GreenHistogram.Count == 16);
                Assert.True(colorHistogram.BlueHistogram.Count == 16);
            }
        }
        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            var configService       = new GlobalConfigService();
            var globalConfig        = configService.LoadConfig(Configuration);
            var userSessionsManager = new UserSessionsManager();

            var labelsService    = new LabelSorterService();
            var histogramService = new HistogramSorterService();

            var imageLabelsPath     = Configuration["FilePaths:ImageLabelsPath"];
            var colorHistogramsPath = Configuration["FilePaths:ColorHistogramFiles"];

            var imageLabelsWrapper = new LoadedImageLabelsWrapper(labelsService.ParseLabels(imageLabelsPath));
            var histogramsWrapper  = new LoadedHistogramsWrapper(histogramService.ParseHistograms(colorHistogramsPath));

            services.AddSingleton(globalConfig);
            services.AddSingleton(configService);
            services.AddSingleton(userSessionsManager);
            services.AddSingleton(labelsService);
            services.AddSingleton(histogramService);
            services.AddSingleton(imageLabelsWrapper);
            services.AddSingleton(histogramsWrapper);

            services.AddRazorPages();
        }
        public void CorrectClosestHistogramTest()
        {
            var histogramService = new HistogramSorterService();
            var histogram1       = new ColorHistogram(
                "randomId1",
                new List <double> {
                0.1
            },
                new List <double> {
                0.1, 0.2
            },
                new List <double> {
                0.1, 0.2, 0.3
            }
                );
            var histogram2 = new ColorHistogram(
                "randomId2",
                new List <double> {
                0.1
            },
                new List <double> {
                0.1, 0.2
            },
                new List <double> {
                0.1, 0.2, 0.2
            }
                );
            var histogram3 = new ColorHistogram(
                "randomId3",
                new List <double> {
                0.1
            },
                new List <double> {
                0.1, 0.1
            },
                new List <double> {
                0.1, 0.2, 0.4
            }
                );
            var selectedHistograms = new List <ColorHistogram> {
                histogram1, histogram2, histogram3
            };
            var comparisonMap = histogramService.CreateHistogramComparisonMap(selectedHistograms);

            selectedHistograms.RemoveAt(0);

            var closestIndex = histogramService.FindTheClosestHistogramIndex(
                "randomId1",
                selectedHistograms,
                comparisonMap
                );

            Assert.True(closestIndex == 0);
        }
Beispiel #4
0
        public void CorrectDifferenceTest()
        {
            var histogramService = new HistogramSorterService();

            var histogram1 = new ColorHistogram(
                "randomId1",
                new List <double> {
                0.1
            },
                new List <double> {
                0.1, 0.2
            },
                new List <double> {
                0.1, 0.2, 0.3
            }
                );
            var histogram2 = new ColorHistogram(
                "randomId2",
                new List <double> {
                0.1
            },
                new List <double> {
                0.1, 0.2
            },
                new List <double> {
                0.1, 0.2, 0.3
            }
                );
            var difference = histogramService.HistogramDifferenceSum(histogram1, histogram2);

            Assert.True(difference == 0);

            var histogram3 = new ColorHistogram(
                "randomId3",
                new List <double> {
                0.1
            },
                new List <double> {
                0.1, 0.1
            },
                new List <double> {
                0.1, 0.2, 0.2
            }
                );

            difference = histogramService.HistogramDifferenceSum(histogram1, histogram3);
            Assert.True(difference - 2 * Math.Pow(0.1, 2) < 0.001);
        }
 public ImagePresentation(
     GlobalConfig globalConfig,
     UserSessionsManager userSessionsManager,
     LoadedImageLabelsWrapper imageLabelsWrapper,
     LoadedHistogramsWrapper histogramsWrapper,
     LabelSorterService labelSorterService,
     HistogramSorterService histogramSorterService
     )
 {
     _globalConfig           = globalConfig;
     _userSessionsManager    = userSessionsManager;
     _imageLabelsWrapper     = imageLabelsWrapper;
     _histogramsWrapper      = histogramsWrapper;
     _labelSorterService     = labelSorterService;
     _histogramSorterService = histogramSorterService;
 }
Beispiel #6
0
        public void IncorrectArgumentImageSelection()
        {
            var histogramService     = new HistogramSorterService();
            var pathToHistogramFiles = $"{Directory.GetCurrentDirectory()}/../../../{TestFilesFolder}";
            var colorHistograms      = histogramService.ParseHistograms(pathToHistogramFiles);

            try
            {
                histogramService.SelectRandomImages(NumberOfTestImagesForArgumentExc, colorHistograms);
            }
            catch (ArgumentException)
            {
                Assert.True(true);
            }
            catch (Exception)
            {
                Assert.True(false);
            }
        }
Beispiel #7
0
        public void IncorrectRangeTest()
        {
            var histogramService = new HistogramSorterService();

            var histogram1 = new ColorHistogram(
                "randomId1",
                new List <double> {
                0.1
            },
                new List <double> {
                0.1, 0.2
            },
                new List <double> {
                0.1, 0.2, 0.3
            }
                );
            var histogram2 = new ColorHistogram(
                "randomId2",
                new List <double> {
                0.1, 0.2
            },
                new List <double> {
                0.1, 0.2
            },
                new List <double> {
                0.1, 0.2, 0.3
            }
                );

            try
            {
                histogramService.HistogramDifferenceSum(histogram1, histogram2);
            }
            catch (ArgumentException)
            {
                Assert.True(true);
            }
            catch (Exception)
            {
                Assert.True(false);
            }
        }
Beispiel #8
0
        public void CorrectImageSelection()
        {
            var histogramService     = new HistogramSorterService();
            var pathToHistogramFiles = $"{Directory.GetCurrentDirectory()}/../../../{TestFilesFolder}";
            var colorHistograms      = histogramService.ParseHistograms(pathToHistogramFiles);

            var presentedImages =
                histogramService.SelectRandomImages(NumberOfImagesToPresent, colorHistograms);

            Assert.True(presentedImages.Count == NumberOfImagesToPresent);
            for (var i = presentedImages.Count - 1; i >= 0; i--)
            {
                for (var j = i - 1; j >= 0; j--)
                {
                    Assert.True(
                        presentedImages[i].ImageId != presentedImages[j].ImageId,
                        $"{presentedImages[i].ImageId} matches {presentedImages[j].ImageId}"
                        );
                }
                presentedImages.RemoveAt(i);
            }
        }
        public void CorrectSortTest()
        {
            var histogramService = new HistogramSorterService();
            var histogram1       = new ColorHistogram(
                "randomId1",
                new List <double> {
                0.1
            },
                new List <double> {
                0.1, 0.2
            },
                new List <double> {
                0.1, 0.2, 0.3
            }
                );
            var histogram2 = new ColorHistogram(
                "randomId2",
                new List <double> {
                0.1
            },
                new List <double> {
                0.1, 0.2
            },
                new List <double> {
                0.1, 0.2, 0.2
            }
                );
            var histogram3 = new ColorHistogram(
                "randomId3",
                new List <double> {
                0.1
            },
                new List <double> {
                0.1, 0.1
            },
                new List <double> {
                0.1, 0.2, 0.4
            }
                );
            var histogram4 = new ColorHistogram(
                "randomId4",
                new List <double> {
                0.2
            },
                new List <double> {
                0.2, 0.1
            },
                new List <double> {
                0.1, 0.2, 0.3
            }
                );
            var selectedHistograms = new List <ColorHistogram> {
                histogram1, histogram2, histogram3, histogram4
            };
            var comparisonMap = histogramService.CreateHistogramComparisonMap(selectedHistograms);

            var sortedHistograms = histogramService.SortSelectedHistograms(
                2,
                2,
                comparisonMap,
                selectedHistograms
                );

            Assert.True(true);
        }
Beispiel #10
0
        public void CorrectComparisonMapTest()
        {
            var histogramService = new HistogramSorterService();
            var histogram1       = new ColorHistogram(
                "randomId1",
                new List <double> {
                0.1
            },
                new List <double> {
                0.1, 0.2
            },
                new List <double> {
                0.1, 0.2, 0.3
            }
                );
            var histogram2 = new ColorHistogram(
                "randomId2",
                new List <double> {
                0.1
            },
                new List <double> {
                0.1, 0.2
            },
                new List <double> {
                0.1, 0.2, 0.2
            }
                );
            var histogram3 = new ColorHistogram(
                "randomId3",
                new List <double> {
                0.1
            },
                new List <double> {
                0.1, 0.1
            },
                new List <double> {
                0.1, 0.2, 0.4
            }
                );
            var selectedHistograms = new List <ColorHistogram> {
                histogram1, histogram2, histogram3
            };
            var comparisonMap = histogramService.CreateHistogramComparisonMap(selectedHistograms);

            Assert.True(comparisonMap.Count == 6);
            Assert.True(
                comparisonMap[new HistogramComparisonKeys("randomId1", "randomId2")] - Math.Pow(0.1, 2) < 0.001
                );
            Assert.True(
                comparisonMap[new HistogramComparisonKeys("randomId2", "randomId1")] - Math.Pow(0.1, 2) < 0.001
                );
            Assert.True(
                comparisonMap[new HistogramComparisonKeys("randomId1", "randomId3")] - 2 * Math.Pow(0.1, 2) < 0.001
                );
            Assert.True(
                comparisonMap[new HistogramComparisonKeys("randomId3", "randomId1")] - 2 * Math.Pow(0.1, 2) < 0.001
                );
            Assert.True(
                comparisonMap[new HistogramComparisonKeys("randomId2", "randomId3")] - (Math.Pow(0.1, 2) + Math.Pow(0.2, 2)) < 0.001
                );
            Assert.True(
                comparisonMap[new HistogramComparisonKeys("randomId3", "randomId2")] - (Math.Pow(0.1, 2) + Math.Pow(0.2, 2)) < 0.001
                );
        }