|
9 | 9 | MomentFeatureExtractor, \
|
10 | 10 | PsnrFeatureExtractor, SsimFeatureExtractor, MsSsimFeatureExtractor, \
|
11 | 11 | VifFrameDifferenceFeatureExtractor, \
|
12 |
| - AnsnrFeatureExtractor, VmafIntegerFeatureExtractor |
| 12 | + AnsnrFeatureExtractor, PypsnrFeatureExtractor, VmafIntegerFeatureExtractor, \ |
| 13 | + PypsnrMaxdb100FeatureExtractor |
13 | 14 | from vmaf.core.asset import Asset
|
14 | 15 | from vmaf.core.result_store import FileSystemResultStore
|
15 | 16 |
|
@@ -626,6 +627,147 @@ def test_run_psnr_fextractor_proc(self):
|
626 | 627 | self.assertAlmostEqual(results[0]['PSNR_feature_psnr_score'], 27.645446604166665, places=8)
|
627 | 628 | self.assertAlmostEqual(results[1]['PSNR_feature_psnr_score'], 31.87683660416667, places=8)
|
628 | 629 |
|
| 630 | + def test_run_pypsnr_fextractor(self): |
| 631 | + |
| 632 | + ref_path, dis_path, asset, asset_original = set_default_576_324_videos_for_testing() |
| 633 | + |
| 634 | + self.fextractor = PypsnrFeatureExtractor( |
| 635 | + [asset, asset_original], |
| 636 | + None, fifo_mode=True, |
| 637 | + result_store=None |
| 638 | + ) |
| 639 | + self.fextractor.run(parallelize=True) |
| 640 | + |
| 641 | + results = self.fextractor.results |
| 642 | + |
| 643 | + self.assertAlmostEqual(results[0]['Pypsnr_feature_psnry_score'], 30.755063979166664, places=4) |
| 644 | + self.assertAlmostEqual(results[0]['Pypsnr_feature_psnru_score'], 38.449441057158786, places=4) |
| 645 | + self.assertAlmostEqual(results[0]['Pypsnr_feature_psnrv_score'], 40.9919102486235, places=4) |
| 646 | + self.assertAlmostEqual(results[1]['Pypsnr_feature_psnry_score'], 60.0, places=4) |
| 647 | + self.assertAlmostEqual(results[1]['Pypsnr_feature_psnru_score'], 60.0, places=4) |
| 648 | + self.assertAlmostEqual(results[1]['Pypsnr_feature_psnrv_score'], 60.0, places=4) |
| 649 | + |
| 650 | + def test_run_pypsnr_fextractor_10bit(self): |
| 651 | + |
| 652 | + ref_path, dis_path, asset, asset_original = set_default_576_324_10bit_videos_for_testing() |
| 653 | + |
| 654 | + self.fextractor = PypsnrFeatureExtractor( |
| 655 | + [asset, asset_original], |
| 656 | + None, fifo_mode=True, |
| 657 | + result_store=None |
| 658 | + ) |
| 659 | + self.fextractor.run(parallelize=True) |
| 660 | + |
| 661 | + results = self.fextractor.results |
| 662 | + |
| 663 | + self.assertAlmostEqual(results[0]['Pypsnr_feature_psnry_score'], 30.780573260053277, places=4) |
| 664 | + self.assertAlmostEqual(results[0]['Pypsnr_feature_psnru_score'], 38.769832063651364, places=4) |
| 665 | + self.assertAlmostEqual(results[0]['Pypsnr_feature_psnrv_score'], 41.28418847734209, places=4) |
| 666 | + self.assertAlmostEqual(results[1]['Pypsnr_feature_psnry_score'], 72.0, places=4) |
| 667 | + self.assertAlmostEqual(results[1]['Pypsnr_feature_psnru_score'], 72.0, places=4) |
| 668 | + self.assertAlmostEqual(results[1]['Pypsnr_feature_psnrv_score'], 72.0, places=4) |
| 669 | + |
| 670 | + def test_run_pypsnr_fextractor_10bit_b(self): |
| 671 | + |
| 672 | + ref_path, dis_path, asset, asset_original = set_default_576_324_10bit_videos_for_testing_b() |
| 673 | + |
| 674 | + self.fextractor = PypsnrFeatureExtractor( |
| 675 | + [asset, asset_original], |
| 676 | + None, fifo_mode=True, |
| 677 | + result_store=None |
| 678 | + ) |
| 679 | + self.fextractor.run(parallelize=True) |
| 680 | + |
| 681 | + results = self.fextractor.results |
| 682 | + |
| 683 | + self.assertAlmostEqual(results[0]['Pypsnr_feature_psnry_score'], 32.57145231892744, places=4) |
| 684 | + self.assertAlmostEqual(results[0]['Pypsnr_feature_psnru_score'], 39.03859552689696, places=4) |
| 685 | + self.assertAlmostEqual(results[0]['Pypsnr_feature_psnrv_score'], 41.28060001337217, places=4) |
| 686 | + self.assertAlmostEqual(results[1]['Pypsnr_feature_psnry_score'], 72.0, places=4) |
| 687 | + self.assertAlmostEqual(results[1]['Pypsnr_feature_psnru_score'], 72.0, places=4) |
| 688 | + self.assertAlmostEqual(results[1]['Pypsnr_feature_psnrv_score'], 72.0, places=4) |
| 689 | + |
| 690 | + def test_run_pypsnr_fextractor_12bit(self): |
| 691 | + |
| 692 | + ref_path, dis_path, asset, asset_original = set_default_576_324_12bit_videos_for_testing() |
| 693 | + |
| 694 | + self.fextractor = PypsnrFeatureExtractor( |
| 695 | + [asset, asset_original], |
| 696 | + None, fifo_mode=True, |
| 697 | + result_store=None |
| 698 | + ) |
| 699 | + self.fextractor.run(parallelize=True) |
| 700 | + |
| 701 | + results = self.fextractor.results |
| 702 | + |
| 703 | + self.assertAlmostEqual(results[0]['Pypsnr_feature_psnry_score'], 32.577817940053734, places=4) |
| 704 | + self.assertAlmostEqual(results[0]['Pypsnr_feature_psnru_score'], 39.044961148023255, places=4) |
| 705 | + self.assertAlmostEqual(results[0]['Pypsnr_feature_psnrv_score'], 41.28696563449846, places=4) |
| 706 | + self.assertAlmostEqual(results[1]['Pypsnr_feature_psnry_score'], 84.0, places=4) |
| 707 | + self.assertAlmostEqual(results[1]['Pypsnr_feature_psnru_score'], 84.0, places=4) |
| 708 | + self.assertAlmostEqual(results[1]['Pypsnr_feature_psnrv_score'], 84.0, places=4) |
| 709 | + |
| 710 | + def test_run_pypsnr_fextractor_16bit(self): |
| 711 | + |
| 712 | + ref_path, dis_path, asset, asset_original = set_default_576_324_16bit_videos_for_testing() |
| 713 | + |
| 714 | + self.fextractor = PypsnrFeatureExtractor( |
| 715 | + [asset, asset_original], |
| 716 | + None, fifo_mode=True, |
| 717 | + result_store=None |
| 718 | + ) |
| 719 | + self.fextractor.run(parallelize=True) |
| 720 | + |
| 721 | + results = self.fextractor.results |
| 722 | + |
| 723 | + self.assertAlmostEqual(results[0]['Pypsnr_feature_psnry_score'], 32.579806240311484, places=4) |
| 724 | + self.assertAlmostEqual(results[0]['Pypsnr_feature_psnru_score'], 39.046949448281005, places=4) |
| 725 | + self.assertAlmostEqual(results[0]['Pypsnr_feature_psnrv_score'], 41.288953934756215, places=4) |
| 726 | + self.assertAlmostEqual(results[1]['Pypsnr_feature_psnry_score'], 108.0, places=4) |
| 727 | + self.assertAlmostEqual(results[1]['Pypsnr_feature_psnru_score'], 108.0, places=4) |
| 728 | + self.assertAlmostEqual(results[1]['Pypsnr_feature_psnrv_score'], 108.0, places=4) |
| 729 | + |
| 730 | + def test_run_pypsnr_fextractor_16bit_custom_max_db(self): |
| 731 | + |
| 732 | + ref_path, dis_path, asset, asset_original = set_default_576_324_16bit_videos_for_testing() |
| 733 | + |
| 734 | + self.fextractor = PypsnrFeatureExtractor( |
| 735 | + [asset, asset_original], |
| 736 | + None, fifo_mode=True, |
| 737 | + result_store=None, |
| 738 | + optional_dict={'max_db': 100.0} |
| 739 | + ) |
| 740 | + self.fextractor.run(parallelize=True) |
| 741 | + |
| 742 | + results = self.fextractor.results |
| 743 | + |
| 744 | + self.assertAlmostEqual(results[0]['Pypsnr_feature_psnry_score'], 32.579806240311484, places=4) |
| 745 | + self.assertAlmostEqual(results[0]['Pypsnr_feature_psnru_score'], 39.046949448281005, places=4) |
| 746 | + self.assertAlmostEqual(results[0]['Pypsnr_feature_psnrv_score'], 41.288953934756215, places=4) |
| 747 | + self.assertAlmostEqual(results[1]['Pypsnr_feature_psnry_score'], 100.0, places=4) |
| 748 | + self.assertAlmostEqual(results[1]['Pypsnr_feature_psnru_score'], 100.0, places=4) |
| 749 | + self.assertAlmostEqual(results[1]['Pypsnr_feature_psnrv_score'], 100.0, places=4) |
| 750 | + |
| 751 | + def test_run_pypsnr_fextractor_maxdb100_16bit(self): |
| 752 | + |
| 753 | + ref_path, dis_path, asset, asset_original = set_default_576_324_16bit_videos_for_testing() |
| 754 | + |
| 755 | + self.fextractor = PypsnrMaxdb100FeatureExtractor( |
| 756 | + [asset, asset_original], |
| 757 | + None, fifo_mode=True, |
| 758 | + result_store=None, |
| 759 | + ) |
| 760 | + self.fextractor.run(parallelize=True) |
| 761 | + |
| 762 | + results = self.fextractor.results |
| 763 | + |
| 764 | + self.assertAlmostEqual(results[0]['Pypsnr_maxdb100_feature_psnry_score'], 32.579806240311484, places=4) |
| 765 | + self.assertAlmostEqual(results[0]['Pypsnr_maxdb100_feature_psnru_score'], 39.046949448281005, places=4) |
| 766 | + self.assertAlmostEqual(results[0]['Pypsnr_maxdb100_feature_psnrv_score'], 41.288953934756215, places=4) |
| 767 | + self.assertAlmostEqual(results[1]['Pypsnr_maxdb100_feature_psnry_score'], 100.0, places=4) |
| 768 | + self.assertAlmostEqual(results[1]['Pypsnr_maxdb100_feature_psnru_score'], 100.0, places=4) |
| 769 | + self.assertAlmostEqual(results[1]['Pypsnr_maxdb100_feature_psnrv_score'], 100.0, places=4) |
| 770 | + |
629 | 771 |
|
630 | 772 | if __name__ == '__main__':
|
631 | 773 | unittest.main(verbosity=2)
|
0 commit comments