예제 #1
0
        private double GetMetrics(Image <Pixel32> fipImage, Image <Pixel32> iplImage)
        {
            if (fipImage.Width != iplImage.Width || fipImage.Height != iplImage.Height)
            {
                throw new Exception("Result images have different size. Something went really wrong");
            }

            int margin       = 2;
            int marginWidth  = fipImage.Width - 2 * margin;
            int marginHeight = fipImage.Height - 2 * margin;

            return(ErrorMetrics.MSE(fipImage, iplImage, margin, margin, marginWidth, marginHeight));
        }
        private async void LaunchMetrics(Image <Pixel32> originalImage, Image <Pixel32> resultImage)
        {
            view.Busy = true;
            try
            {
                var result = await Task.Run(() =>
                {
                    var mse  = ErrorMetrics.MSE(originalImage, resultImage);
                    var psnr = ErrorMetrics.PSNR(originalImage, resultImage);
                    return(Tuple.Create(mse, psnr));
                });

                view.ShowMetrics(result.Item1, result.Item2);
            }
            catch (Exception e)
            {
                view.ShowException(e);
            }
            finally
            {
                view.Busy = false;
            }
        }