From 7a28d9a98e0054a49ec4967ae6ee341692497709 Mon Sep 17 00:00:00 2001 From: Unknown <850576570@qq.com> Date: Sun, 23 Dec 2018 09:27:00 +0800 Subject: [PATCH] Added evaluating code referenced in DeepVideoDeblurring. https://github.com/shuochsu/DeepVideoDeblurring/issues/3 --- evaluate/evaluate.m | 86 + evaluate/evaluate_align.m | 93 + evaluate/evaluation_code/MAD_index.m | 656 ++++ evaluate/evaluation_code/README.txt | 65 + evaluate/evaluation_code/dftregistration.m | 212 ++ evaluate/evaluation_code/eval_image.m | 106 + .../evaluation_code/get_best_metric_value2.m | 18 + .../metrix_mux/configure_metrix_mux.m | 88 + .../metrix_mux/get_name_cell_metrix_mux.m | 55 + .../metrix_mux/index.html | 305 ++ .../metrix_mux/metrix/compile_metrix_vsnr.m | 59 + .../metrix/ifc/ifcvec_release/distsub_est_M.m | 70 + .../metrix/ifc/ifcvec_release/ifcvec.m | 132 + .../metrix/ifc/ifcvec_release/ind2wtree.m | 13 + .../metrix/ifc/ifcvec_release/readme.txt | 62 + .../ifc/ifcvec_release/refparams_vecgsm.m | 52 + .../metrix_mux/metrix/metrix_ifc.m | 42 + .../metrix_mux/metrix/metrix_mse.m | 42 + .../metrix_mux/metrix/metrix_mssim.m | 42 + .../metrix_mux/metrix/metrix_nqm.m | 55 + .../metrix_mux/metrix/metrix_psnr.m | 44 + .../metrix_mux/metrix/metrix_snr.m | 45 + .../metrix_mux/metrix/metrix_ssim.m | 42 + .../metrix_mux/metrix/metrix_uqi.m | 42 + .../metrix_mux/metrix/metrix_vif.m | 42 + .../metrix_mux/metrix/metrix_vifp.m | 42 + .../metrix_mux/metrix/metrix_vsnr.m | 42 + .../metrix_mux/metrix/metrix_wsnr.m | 42 + .../metrix_mux/metrix/mssim/mssim_index.m | 129 + .../metrix/mssim/ssim_index_modified.m | 271 ++ .../metrix/nqm/ImageQuality/cmaskn.m | 23 + .../metrix_mux/metrix/nqm/ImageQuality/ctf.m | 13 + .../metrix_mux/metrix/nqm/ImageQuality/dm.m | 32 + .../metrix/nqm/ImageQuality/gthresh.m | 13 + .../metrix_mux/metrix/nqm/ImageQuality/nqm.m | 149 + .../metrix/nqm/ImageQuality/nqm_modified.m | 242 ++ .../metrix/nqm/ImageQuality/weight_freq_csf.m | 35 + .../metrix/nqm/ImageQuality/wsnr_new.m | 60 + .../nqm/ImageQuality/wsnr_new_modified.m | 89 + .../metrix_mux/metrix/ssim/ssim_index.m | 195 ++ .../metrix_mux/metrix/uqi/img_qi.m | 118 + .../metrix/vif/vifp_release/readme.txt | 56 + .../metrix/vif/vifp_release/vifp_mscale.m | 99 + .../metrix/vif/vifvec_release/ind2wtree.m | 13 + .../metrix/vif/vifvec_release/readme.txt | 60 + .../vif/vifvec_release/refparams_vecgsm.m | 52 + .../metrix/vif/vifvec_release/vifsub_est_M.m | 70 + .../metrix/vif/vifvec_release/vifvec.m | 135 + .../metrix_mux/metrix/vsnr/horse.JP2.bmp | Bin 0 -> 263222 bytes .../metrix_mux/metrix/vsnr/horse.NOZ.bmp | Bin 0 -> 263222 bytes .../metrix_mux/metrix/vsnr/horse.bmp | Bin 0 -> 263222 bytes .../metrix_mux/metrix/vsnr/imdwt.m | 11 + .../metrix/vsnr/imdwt_cpp/compile_imdwt.m | 2 + .../vsnr/imdwt_cpp/compile_imdwt_modified.m | 49 + .../vsnr/imdwt_cpp/ginclude/gbuffer.cpp | 143 + .../metrix/vsnr/imdwt_cpp/ginclude/gbuffer.h | 3016 +++++++++++++++++ .../vsnr/imdwt_cpp/ginclude/gbufferlist.cpp | 32 + .../vsnr/imdwt_cpp/ginclude/gbufferlist.h | 353 ++ .../metrix/vsnr/imdwt_cpp/ginclude/gfile.h | 189 ++ .../vsnr/imdwt_cpp/ginclude/gstepsizes.cpp | 28 + .../vsnr/imdwt_cpp/ginclude/gstepsizes.h | 131 + .../vsnr/imdwt_cpp/ginclude/gtransform.cpp | 28 + .../vsnr/imdwt_cpp/ginclude/gtransform.h | 406 +++ .../metrix/vsnr/imdwt_cpp/ginclude/gtypes.h | 230 ++ .../vsnr/imdwt_cpp/ginclude/gwavelift.cpp | 29 + .../vsnr/imdwt_cpp/ginclude/gwavelift.h | 515 +++ .../vsnr/imdwt_cpp/ginclude/gwavelist.cpp | 28 + .../vsnr/imdwt_cpp/ginclude/gwavelist.h | 434 +++ .../metrix/vsnr/imdwt_cpp/imdwt.cpp | 95 + .../metrix_mux/metrix/vsnr/imdwt_modified.m | 80 + .../metrix_mux/metrix/vsnr/readme.txt | 28 + .../metrix_mux/metrix/vsnr/vsnr.m | 309 ++ .../metrix_mux/metrix/vsnr/vsnr_demo.m | 29 + .../metrix_mux/metrix/vsnr/vsnr_modified.m | 387 +++ .../metrix_mux/metrix_mux.m | 157 + .../metrix_mux/preprocess_metrix_mux.m | 148 + .../metrix_mux/test_metrix_mux.m | 72 + .../metrix_mux/utilities/dwt2d/bior53.m | 53 + .../metrix_mux/utilities/dwt2d/bior97.m | 66 + .../metrix_mux/utilities/dwt2d/dwt2d.m | 114 + .../metrix_mux/utilities/dwt2d/idwt2d.m | 119 + .../utilities/matlabPyrTools/ChangeLog | 430 +++ .../utilities/matlabPyrTools/Contents.m | 107 + .../utilities/matlabPyrTools/MEX/-MacReadMe | 1 + .../matlabPyrTools/MEX/.AppleDouble/.Parent | Bin 0 -> 589 bytes .../utilities/matlabPyrTools/MEX/.FBCIndex | Bin 0 -> 258048 bytes .../MEX/.FBCLockFolder/.FBCSemaphoreFile | Bin 0 -> 6 bytes .../matlabPyrTools/MEX/Makefile-linux | 39 + .../matlabPyrTools/MEX/Makefile-ml6-linux | 39 + .../utilities/matlabPyrTools/MEX/Makefile-osx | 39 + .../matlabPyrTools/MEX/Makefile-solaris | 38 + .../matlabPyrTools/MEX/Makefile-sun4 | 39 + .../utilities/matlabPyrTools/MEX/convolve.c | 325 ++ .../utilities/matlabPyrTools/MEX/convolve.h | 55 + .../utilities/matlabPyrTools/MEX/corrDn.c | 145 + .../utilities/matlabPyrTools/MEX/corrDn.c~ | 151 + .../utilities/matlabPyrTools/MEX/corrDn.dll | Bin 0 -> 49664 bytes .../utilities/matlabPyrTools/MEX/corrDn.mex | Bin 0 -> 53067 bytes .../utilities/matlabPyrTools/MEX/corrDn.mex4 | Bin 0 -> 140703 bytes .../matlabPyrTools/MEX/corrDn.mexglx | Bin 0 -> 26678 bytes .../utilities/matlabPyrTools/MEX/corrDn.mexlx | Bin 0 -> 22398 bytes .../matlabPyrTools/MEX/corrDn.mexmac | Bin 0 -> 26224 bytes .../matlabPyrTools/MEX/corrDn.mexsol | Bin 0 -> 29556 bytes .../matlabPyrTools/MEX/corrDn.\302\265" | Bin 0 -> 95744 bytes .../matlabPyrTools/MEX/corrDn.\302\265.exp" | 1 + .../matlabPyrTools/MEX/corrDn.\302\265.rsrc" | 0 .../matlabPyrTools/MEX/corrDn.\317\200.4" | 0 .../utilities/matlabPyrTools/MEX/edges-orig.c | 494 +++ .../utilities/matlabPyrTools/MEX/edges.c | 647 ++++ .../utilities/matlabPyrTools/MEX/histo.c | 140 + .../utilities/matlabPyrTools/MEX/histo.c~ | 146 + .../utilities/matlabPyrTools/MEX/histo.dll | Bin 0 -> 8192 bytes .../utilities/matlabPyrTools/MEX/histo.mex | Bin 0 -> 2828 bytes .../utilities/matlabPyrTools/MEX/histo.mex4 | Bin 0 -> 14698 bytes .../utilities/matlabPyrTools/MEX/histo.mexglx | Bin 0 -> 8934 bytes .../utilities/matlabPyrTools/MEX/histo.mexlx | Bin 0 -> 6401 bytes .../utilities/matlabPyrTools/MEX/histo.mexmac | Bin 0 -> 26068 bytes .../utilities/matlabPyrTools/MEX/histo.mexsol | Bin 0 -> 7304 bytes .../matlabPyrTools/MEX/histo.\302\265" | Bin 0 -> 73980 bytes .../matlabPyrTools/MEX/histo.\302\265.exp" | 1 + .../matlabPyrTools/MEX/histo.\302\265.rsrc" | 0 .../matlabPyrTools/MEX/histo.\317\200.4" | 0 .../utilities/matlabPyrTools/MEX/innerProd.c | 52 + .../matlabPyrTools/MEX/innerProd.dll | Bin 0 -> 41984 bytes .../matlabPyrTools/MEX/innerProd.mexglx | Bin 0 -> 17704 bytes .../matlabPyrTools/MEX/innerProd.mexlx | Bin 0 -> 4479 bytes .../matlabPyrTools/MEX/innerProd.mexmac | Bin 0 -> 21600 bytes .../matlabPyrTools/MEX/innerProd.mexsol | Bin 0 -> 3948 bytes .../utilities/matlabPyrTools/MEX/pointOp.c | 126 + .../utilities/matlabPyrTools/MEX/pointOp.c~ | 132 + .../utilities/matlabPyrTools/MEX/pointOp.dll | Bin 0 -> 34816 bytes .../utilities/matlabPyrTools/MEX/pointOp.mex | Bin 0 -> 2536 bytes .../utilities/matlabPyrTools/MEX/pointOp.mex4 | Bin 0 -> 12472 bytes .../matlabPyrTools/MEX/pointOp.mexglx | Bin 0 -> 8677 bytes .../matlabPyrTools/MEX/pointOp.mexlx | Bin 0 -> 6167 bytes .../matlabPyrTools/MEX/pointOp.mexmac | Bin 0 -> 26064 bytes .../matlabPyrTools/MEX/pointOp.mexsol | Bin 0 -> 6872 bytes .../utilities/matlabPyrTools/MEX/pointOp.o | Bin 0 -> 4636 bytes .../matlabPyrTools/MEX/pointOp.\302\265" | Bin 0 -> 73639 bytes .../matlabPyrTools/MEX/pointOp.\302\265.exp" | 1 + .../matlabPyrTools/MEX/pointOp.\302\265.rsrc" | 0 .../matlabPyrTools/MEX/pointOp.\317\200.4" | 0 .../utilities/matlabPyrTools/MEX/range2.c | 56 + .../utilities/matlabPyrTools/MEX/range2.c~ | 62 + .../utilities/matlabPyrTools/MEX/range2.dll | Bin 0 -> 33792 bytes .../utilities/matlabPyrTools/MEX/range2.mex | Bin 0 -> 1181 bytes .../utilities/matlabPyrTools/MEX/range2.mex4 | Bin 0 -> 10318 bytes .../matlabPyrTools/MEX/range2.mexglx | Bin 0 -> 6933 bytes .../utilities/matlabPyrTools/MEX/range2.mexlx | Bin 0 -> 4683 bytes .../matlabPyrTools/MEX/range2.mexmac | Bin 0 -> 25960 bytes .../matlabPyrTools/MEX/range2.mexsol | Bin 0 -> 4660 bytes .../utilities/matlabPyrTools/MEX/range2.o | Bin 0 -> 2404 bytes .../matlabPyrTools/MEX/range2.\302\265" | Bin 0 -> 70932 bytes .../matlabPyrTools/MEX/range2.\302\265.exp" | 1 + .../matlabPyrTools/MEX/range2.\302\265.rsrc" | 0 .../matlabPyrTools/MEX/range2.\317\200.4" | 0 .../utilities/matlabPyrTools/MEX/upConv.c | 195 ++ .../utilities/matlabPyrTools/MEX/upConv.c~ | 201 ++ .../utilities/matlabPyrTools/MEX/upConv.dll | Bin 0 -> 51200 bytes .../utilities/matlabPyrTools/MEX/upConv.mex | Bin 0 -> 53570 bytes .../utilities/matlabPyrTools/MEX/upConv.mex4 | Bin 0 -> 142295 bytes .../matlabPyrTools/MEX/upConv.mexglx | Bin 0 -> 27798 bytes .../utilities/matlabPyrTools/MEX/upConv.mexlx | Bin 0 -> 23430 bytes .../matlabPyrTools/MEX/upConv.mexmac | Bin 0 -> 30320 bytes .../matlabPyrTools/MEX/upConv.mexsol | Bin 0 -> 31148 bytes .../utilities/matlabPyrTools/MEX/upConv.o | Bin 0 -> 7460 bytes .../matlabPyrTools/MEX/upConv.\302\265" | Bin 0 -> 97060 bytes .../matlabPyrTools/MEX/upConv.\302\265.exp" | 1 + .../matlabPyrTools/MEX/upConv.\302\265.rsrc" | 0 .../matlabPyrTools/MEX/upConv.\317\200.4" | 0 .../utilities/matlabPyrTools/MEX/wrap.c | 281 ++ .../utilities/matlabPyrTools/MEX/wrap.o | Bin 0 -> 5476 bytes .../utilities/matlabPyrTools/README | 55 + .../utilities/matlabPyrTools/TUTORIALS/README | 18 + .../matlabPyrTools/TUTORIALS/matlabPyrTools.m | 145 + .../matlabPyrTools/TUTORIALS/pyramids.m | 903 +++++ .../utilities/matlabPyrTools/binomialFilter.m | 18 + .../utilities/matlabPyrTools/blur.m | 28 + .../utilities/matlabPyrTools/blurDn.m | 59 + .../utilities/matlabPyrTools/buildGpyr.m | 82 + .../utilities/matlabPyrTools/buildLpyr.m | 109 + .../utilities/matlabPyrTools/buildSCFpyr.m | 90 + .../matlabPyrTools/buildSCFpyrLevs.m | 73 + .../utilities/matlabPyrTools/buildSFpyr.m | 102 + .../utilities/matlabPyrTools/buildSFpyrLevs.m | 63 + .../utilities/matlabPyrTools/buildSpyr.m | 61 + .../utilities/matlabPyrTools/buildSpyrLevs.m | 37 + .../utilities/matlabPyrTools/buildWpyr.m | 100 + .../utilities/matlabPyrTools/cconv2.m | 50 + .../utilities/matlabPyrTools/clip.m | 32 + .../utilities/matlabPyrTools/corrDn.m | 67 + .../utilities/matlabPyrTools/einstein.pgm | Bin 0 -> 65596 bytes .../utilities/matlabPyrTools/entropy2.m | 31 + .../utilities/matlabPyrTools/factorial.m | 16 + .../utilities/matlabPyrTools/feynman.pgm | Bin 0 -> 65593 bytes .../utilities/matlabPyrTools/histo.m | 58 + .../utilities/matlabPyrTools/histoMatch.m | 35 + .../utilities/matlabPyrTools/ifftshift.m | 15 + .../utilities/matlabPyrTools/imGradient.m | 48 + .../utilities/matlabPyrTools/imStats.m | 41 + .../utilities/matlabPyrTools/innerProd.m | 12 + .../utilities/matlabPyrTools/kurt2.m | 24 + .../utilities/matlabPyrTools/lplot.m | 43 + .../utilities/matlabPyrTools/lpyrHt.m | 11 + .../utilities/matlabPyrTools/maxPyrHt.m | 25 + .../utilities/matlabPyrTools/mean2.m | 7 + .../utilities/matlabPyrTools/mkAngle.m | 32 + .../utilities/matlabPyrTools/mkAngularSine.m | 42 + .../utilities/matlabPyrTools/mkDisc.m | 61 + .../utilities/matlabPyrTools/mkFract.m | 36 + .../utilities/matlabPyrTools/mkGaussian.m | 58 + .../utilities/matlabPyrTools/mkImpulse.m | 25 + .../metrix_mux/utilities/matlabPyrTools/mkR.m | 32 + .../utilities/matlabPyrTools/mkRamp.m | 47 + .../utilities/matlabPyrTools/mkSine.m | 67 + .../utilities/matlabPyrTools/mkSquare.m | 89 + .../utilities/matlabPyrTools/mkZonePlate.m | 33 + .../utilities/matlabPyrTools/mod_modified.m | 19 + .../utilities/matlabPyrTools/modulateFlip.m | 19 + .../utilities/matlabPyrTools/namedFilter.m | 71 + .../utilities/matlabPyrTools/nextFig.m | 19 + .../utilities/matlabPyrTools/pgmRead.m | 59 + .../utilities/matlabPyrTools/pgmWrite.m | 120 + .../utilities/matlabPyrTools/pixelAxes.m | 70 + .../utilities/matlabPyrTools/pointOp.m | 28 + .../utilities/matlabPyrTools/pwd2path.m | 6 + .../utilities/matlabPyrTools/pyrBand.m | 11 + .../utilities/matlabPyrTools/pyrBandIndices.m | 24 + .../utilities/matlabPyrTools/pyrLow.m | 12 + .../utilities/matlabPyrTools/range2.m | 18 + .../utilities/matlabPyrTools/rconv2.m | 50 + .../utilities/matlabPyrTools/rcosFn.m | 45 + .../utilities/matlabPyrTools/reconLpyr.m | 83 + .../utilities/matlabPyrTools/reconSCFpyr.m | 87 + .../utilities/matlabPyrTools/reconSFpyr.m | 108 + .../utilities/matlabPyrTools/reconSFpyrLevs.m | 69 + .../utilities/matlabPyrTools/reconSpyr.m | 96 + .../utilities/matlabPyrTools/reconSpyrLevs.m | 46 + .../utilities/matlabPyrTools/reconWpyr.m | 148 + .../utilities/matlabPyrTools/setPyrBand.m | 32 + .../utilities/matlabPyrTools/shift.m | 15 + .../utilities/matlabPyrTools/showIm.m | 221 ++ .../utilities/matlabPyrTools/showLpyr.m | 202 ++ .../utilities/matlabPyrTools/showSpyr.m | 188 + .../utilities/matlabPyrTools/showWpyr.m | 204 ++ .../utilities/matlabPyrTools/skew2.m | 21 + .../utilities/matlabPyrTools/sp0Filters.m | 72 + .../utilities/matlabPyrTools/sp1Filters.m | 91 + .../utilities/matlabPyrTools/sp3Filters.m | 121 + .../utilities/matlabPyrTools/sp5Filters.m | 110 + .../utilities/matlabPyrTools/spyrBand.m | 34 + .../utilities/matlabPyrTools/spyrHigh.m | 10 + .../utilities/matlabPyrTools/spyrHt.m | 16 + .../utilities/matlabPyrTools/spyrLev.m | 24 + .../utilities/matlabPyrTools/spyrNumBands.m | 20 + .../utilities/matlabPyrTools/steer.m | 68 + .../utilities/matlabPyrTools/steer2HarmMtx.m | 71 + .../utilities/matlabPyrTools/subMtx.m | 21 + .../utilities/matlabPyrTools/upBlur.m | 52 + .../utilities/matlabPyrTools/upConv.m | 80 + .../utilities/matlabPyrTools/var2.m | 17 + .../utilities/matlabPyrTools/vectify.m | 8 + .../utilities/matlabPyrTools/wpyrBand.m | 39 + .../utilities/matlabPyrTools/wpyrHt.m | 15 + .../utilities/matlabPyrTools/wpyrLev.m | 30 + .../utilities/matlabPyrTools/zconv2.m | 41 + evaluate/evaluation_code/imshift.m | 69 + evaluate/evaluation_code/myrgb2gray.m | 110 + evaluate/evaluation_code/shiftmatrix.m | 34 + evaluate/evaluation_code/start_eval_image.m | 79 + evaluate/evaluation_code/vec.m | 7 + my_run_pred.sh | 52 + run_model.sh | 9 +- 273 files changed, 22041 insertions(+), 4 deletions(-) create mode 100644 evaluate/evaluate.m create mode 100644 evaluate/evaluate_align.m create mode 100644 evaluate/evaluation_code/MAD_index.m create mode 100644 evaluate/evaluation_code/README.txt create mode 100644 evaluate/evaluation_code/dftregistration.m create mode 100644 evaluate/evaluation_code/eval_image.m create mode 100644 evaluate/evaluation_code/get_best_metric_value2.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/configure_metrix_mux.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/get_name_cell_metrix_mux.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/index.html create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/compile_metrix_vsnr.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/ifc/ifcvec_release/distsub_est_M.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/ifc/ifcvec_release/ifcvec.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/ifc/ifcvec_release/ind2wtree.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/ifc/ifcvec_release/readme.txt create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/ifc/ifcvec_release/refparams_vecgsm.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/metrix_ifc.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/metrix_mse.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/metrix_mssim.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/metrix_nqm.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/metrix_psnr.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/metrix_snr.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/metrix_ssim.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/metrix_uqi.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/metrix_vif.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/metrix_vifp.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/metrix_vsnr.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/metrix_wsnr.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/mssim/mssim_index.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/mssim/ssim_index_modified.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/cmaskn.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/ctf.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/dm.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/gthresh.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/nqm.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/nqm_modified.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/weight_freq_csf.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/wsnr_new.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/wsnr_new_modified.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/ssim/ssim_index.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/uqi/img_qi.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifp_release/readme.txt create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifp_release/vifp_mscale.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifvec_release/ind2wtree.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifvec_release/readme.txt create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifvec_release/refparams_vecgsm.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifvec_release/vifsub_est_M.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifvec_release/vifvec.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/horse.JP2.bmp create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/horse.NOZ.bmp create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/horse.bmp create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/compile_imdwt.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/compile_imdwt_modified.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gbuffer.cpp create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gbuffer.h create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gbufferlist.cpp create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gbufferlist.h create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gfile.h create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gstepsizes.cpp create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gstepsizes.h create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gtransform.cpp create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gtransform.h create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gtypes.h create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gwavelift.cpp create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gwavelift.h create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gwavelist.cpp create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gwavelist.h create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/imdwt.cpp create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_modified.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/readme.txt create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/vsnr.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/vsnr_demo.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/vsnr_modified.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix_mux.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/preprocess_metrix_mux.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/test_metrix_mux.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/dwt2d/bior53.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/dwt2d/bior97.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/dwt2d/dwt2d.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/dwt2d/idwt2d.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/ChangeLog create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/Contents.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/-MacReadMe create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/.AppleDouble/.Parent create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/.FBCIndex create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/.FBCLockFolder/.FBCSemaphoreFile create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/Makefile-linux create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/Makefile-ml6-linux create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/Makefile-osx create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/Makefile-solaris create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/Makefile-sun4 create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/convolve.c create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/convolve.h create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.c create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.c~ create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.dll create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.mex create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.mex4 create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.mexglx create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.mexlx create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.mexmac create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.mexsol create mode 100644 "evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.\302\265" create mode 100644 "evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.\302\265.exp" create mode 100644 "evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.\302\265.rsrc" create mode 100644 "evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.\317\200.4" create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/edges-orig.c create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/edges.c create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.c create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.c~ create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.dll create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.mex create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.mex4 create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.mexglx create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.mexlx create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.mexmac create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.mexsol create mode 100644 "evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.\302\265" create mode 100644 "evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.\302\265.exp" create mode 100644 "evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.\302\265.rsrc" create mode 100644 "evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.\317\200.4" create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/innerProd.c create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/innerProd.dll create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/innerProd.mexglx create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/innerProd.mexlx create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/innerProd.mexmac create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/innerProd.mexsol create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.c create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.c~ create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.dll create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.mex create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.mex4 create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.mexglx create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.mexlx create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.mexmac create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.mexsol create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.o create mode 100644 "evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.\302\265" create mode 100644 "evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.\302\265.exp" create mode 100644 "evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.\302\265.rsrc" create mode 100644 "evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.\317\200.4" create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.c create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.c~ create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.dll create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.mex create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.mex4 create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.mexglx create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.mexlx create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.mexmac create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.mexsol create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.o create mode 100644 "evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.\302\265" create mode 100644 "evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.\302\265.exp" create mode 100644 "evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.\302\265.rsrc" create mode 100644 "evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.\317\200.4" create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.c create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.c~ create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.dll create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.mex create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.mex4 create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.mexglx create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.mexlx create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.mexmac create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.mexsol create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.o create mode 100644 "evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.\302\265" create mode 100644 "evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.\302\265.exp" create mode 100644 "evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.\302\265.rsrc" create mode 100644 "evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.\317\200.4" create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/wrap.c create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/wrap.o create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/README create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/TUTORIALS/README create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/TUTORIALS/matlabPyrTools.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/TUTORIALS/pyramids.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/binomialFilter.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/blur.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/blurDn.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildGpyr.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildLpyr.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSCFpyr.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSCFpyrLevs.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSFpyr.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSFpyrLevs.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSpyr.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSpyrLevs.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildWpyr.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/cconv2.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/clip.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/corrDn.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/einstein.pgm create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/entropy2.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/factorial.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/feynman.pgm create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/histo.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/histoMatch.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/ifftshift.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/imGradient.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/imStats.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/innerProd.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/kurt2.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/lplot.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/lpyrHt.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/maxPyrHt.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mean2.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkAngle.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkAngularSine.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkDisc.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkFract.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkGaussian.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkImpulse.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkR.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkRamp.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkSine.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkSquare.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkZonePlate.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mod_modified.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/modulateFlip.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/namedFilter.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/nextFig.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pgmRead.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pgmWrite.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pixelAxes.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pointOp.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pwd2path.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pyrBand.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pyrBandIndices.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pyrLow.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/range2.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/rconv2.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/rcosFn.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconLpyr.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconSCFpyr.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconSFpyr.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconSFpyrLevs.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconSpyr.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconSpyrLevs.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconWpyr.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/setPyrBand.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/shift.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/showIm.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/showLpyr.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/showSpyr.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/showWpyr.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/skew2.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/sp0Filters.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/sp1Filters.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/sp3Filters.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/sp5Filters.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/spyrBand.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/spyrHigh.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/spyrHt.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/spyrLev.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/spyrNumBands.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/steer.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/steer2HarmMtx.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/subMtx.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/upBlur.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/upConv.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/var2.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/vectify.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/wpyrBand.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/wpyrHt.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/wpyrLev.m create mode 100644 evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/zconv2.m create mode 100644 evaluate/evaluation_code/imshift.m create mode 100644 evaluate/evaluation_code/myrgb2gray.m create mode 100644 evaluate/evaluation_code/shiftmatrix.m create mode 100644 evaluate/evaluation_code/start_eval_image.m create mode 100644 evaluate/evaluation_code/vec.m diff --git a/evaluate/evaluate.m b/evaluate/evaluate.m new file mode 100644 index 0000000..d966ce3 --- /dev/null +++ b/evaluate/evaluate.m @@ -0,0 +1,86 @@ + +%% Clean +clear +close all + +%% Parameters +date = '1220'; +alignments = {'_nowarp','_homography','_OF'};%{'_nowarp','_homography','_OF'}; +outputDir = 'E:\projects\DeepVideoDeblurring\outImg'; +outputFolderPrefix = [date '_validating_model2_symskip_nngraph2_deeper']; +gtDir = 'E:\projects\DeepVideoDeblurring\dataset\quantitative_datasets'; +global frameExt +frameExt = '.jpg'; + +%% Scan videos +outputFolders = {}; +for alignment = alignments + outputFolders{end+1} = [outputFolderPrefix,alignment{1}]; +end +outputFolders = fullfile(outputDir,outputFolders); +% videoNames = {}; +% for outputFolder = outputFolders +% videoNames{end+1} = dir(outputFolder{1}); +% maskFolders = [videoNames{end}.isdir]; +% videoNames{end} = videoNames{end}(maskFolders); +% videoNames{end} = videoNames{end}(3:end); +% videoNames{end} = {videoNames{end}.name}; +% end + +validset = {'IMG_0030' 'IMG_0049' 'IMG_0021' '720p_240fps_2' 'IMG_0032' ... +'IMG_0033' 'IMG_0031' 'IMG_0003' 'IMG_0039' 'IMG_0037'};% from git rep DeepVideoDeburring + +%% Evaluate PSNR +align2PSNRs = zeros(length(alignments),length(validset)+1); +for iAlignment = 1:length(alignments) + alignment = alignments{iAlignment}; + + %% scan validset frames + frameDirs = scanFrames(outputFolders{iAlignment},gtDir,validset); + + %% evaluate PSNR + for iVideo = 1:size(frameDirs,1) + avgPSNR = 0; + nFrame = size(frameDirs,2); + parfor iFrame = 1:nFrame + gtFrameDir = frameDirs{iVideo,iFrame,1}; + outputFrameDir = frameDirs{iVideo,iFrame,2}; + gt = imread(gtFrameDir); + output = imread(outputFrameDir); + scores = evaluate_align(gt,output,'PSNR'); + avgPSNR = avgPSNR+scores.PSNR; +% scores = metrix_mux(gt,output,'PSNR'); +% avgPSNR = avgPSNR+scores; + end + avgPSNR = avgPSNR/nFrame; + align2PSNRs(iAlignment,iVideo) = avgPSNR; + fprintf('video %d/%d done!\n',iVideo,size(frameDirs,1)) + end + +end +align2PSNRs(:,end) = mean(align2PSNRs(:,1:length(validset)),2) + +%% functions +function frameDirs = scanFrames(outputFolder,gtDir,videoNames) +global frameExt +% for all videos +disp('Scanning frames...'); +frameDirs = {}; +iFrameAll = 1; +for iVideo = 1:length(videoNames) + videoName = videoNames{iVideo}; + outputFrameFolder = fullfile(outputFolder,videoName); + outputFrameNames = dir(fullfile(outputFrameFolder,['*',frameExt])); + outputFrameNames = {outputFrameNames.name}; + gtFrameFolder = fullfile(gtDir,videoName,'GT'); + gtFrameNames = dir(fullfile(gtFrameFolder,['*',frameExt])); + gtFrameNames = {gtFrameNames.name}; + for iFrame = 1:length(outputFrameNames) + frameDirs{iVideo,iFrame,1} = [gtFrameFolder,'/',gtFrameNames{iFrame}]; + frameDirs{iVideo,iFrame,2} = [outputFrameFolder,'/',outputFrameNames{iFrame}]; + iFrameAll = iFrameAll+1; + end + fprintf('Found %d frames, video %d/%d\n',iFrameAll-1,iVideo,length(videoNames)) +end +fprintf('Found %d frames\n',iFrameAll-1) +end \ No newline at end of file diff --git a/evaluate/evaluate_align.m b/evaluate/evaluate_align.m new file mode 100644 index 0000000..0e15c1c --- /dev/null +++ b/evaluate/evaluate_align.m @@ -0,0 +1,93 @@ +function scores = evaluate_align(groundTruth,deblurred,metric) +% BENCHMARK_EVAL_IMAGE computes various quality measures given +% a deblurred image and the corresponding ID, i.e. you have to +% provide the image and kernel number +% +% Michael Hirsch and Rolf Koehler (c) 2012 + +addpath(genpath('image_quality_algorithms')) + +% ----------------------------------------------------------------- +% Check that input images are 8bit. +% To use the image quality assessment algorithms the images have to be in 8 +% bit, with a maximum value of 255, so not normalized. +% ----------------------------------------------------------------- +if ( ~isa(deblurred, 'uint8') || size(deblurred,3)~=3 ) + error('Input image has to be a color image of type uint8!'); +end + +% z will denote the estimated, i.e. deblurred image +z = double(deblurred); + +% Create constant image which will act as a mask +c = ones(size(deblurred)); + +% Initialize containers for quality measures +mse = []; +mssim = []; +vif = []; +ifc = []; +psnr = []; +mad = []; + + +% ================================================================= +% compute the image quality measure score +% ----------------------------------------------------------------- + + +% Load ground truth image, denoted by x +x = double(groundTruth); +xf = fft2(mean(x,3)); + +% Scale image intensity +zs = (sum(vec(x.*z)) / sum(vec(z.*z))) .* z; +zf = fft2(mean(zs,3)); + +% Estimate shift by registering deblurred to ground truth image +[output Greg] = dftregistration(xf, zf, 1); +shift = output(3:4); + +% Apply shift +cr = imshift(double(c), shift, 'same'); +zr = imshift(double(zs), shift, 'same'); +xr = x.*cr; + +% Compute various quality measures +switch metric + case 'MSE' + mse = [mse metrix_mux(xr, zr, 'MSE')]; + case 'MSSIM' + mssim = [mssim metrix_mux(xr, zr, 'MSSIM')]; + case 'VIF' + vif = [vif metrix_mux(xr, zr, 'VIF')]; + case 'IFC' + ifc = [ifc metrix_mux(xr, zr, 'IFC')]; + case 'PSNR' + psnr = [psnr metrix_mux(xr, zr, 'PSNR')]; + case 'MAD' + MAD_temp = MAD_index(xr, zr); + mad = [mad MAD_temp.MAD]; +end + + +% ================================================================= +% Save results +% ----------------------------------------------------------------- +switch metric + case 'MSE' + scores.MSE = mse; + case 'MSSIM' + scores.MSSIM = mssim; + case 'VIF' + scores.VIF = vif; + case 'IFC' + scores.IFC = ifc; + case 'PSNR' + scores.PSNR = psnr; + case 'MAD' + scores.MAD = mad; +end + +return + diff --git a/evaluate/evaluation_code/MAD_index.m b/evaluate/evaluation_code/MAD_index.m new file mode 100644 index 0000000..939b2ac --- /dev/null +++ b/evaluate/evaluation_code/MAD_index.m @@ -0,0 +1,656 @@ +function [index map gabors] = MAD_index( ref_img, dst_img, thresh ) +% MAD_INDEX Compute Perceived Difference of two images +% index = MAD_INDEX(ref_img, dst_img) where ref_img and dst_img are +% uint8 images and dst_img is a distorted version of ref_img +% returns the similarity score for the reference and distorted image as +% a structure: +% index.MAD: the difference score, higher means more different +% index.LO : the difference score based on assumption that distortions +% are highly visible (low quality image) +% index.HI : the difference score based on assumption that distortions +% are diffcult to see (high quality image) +% index.sig: blending parameter used to mix HI and LO into MAD score +% +% [index map] = MAD_INDEX(ref_img, dst_img) also returns maps used +% in calculating the scores: +% map.LO: returns an estimate of perceived annoyance of the highly +% visible distortion artifacts as an image the same size as the inputs +% map.HI: returns an estimate of the visibility of artifacts in the image +% as an image the same size as the inputs + +% Author: Eric Larson +% Department of Electrical and Computer Engineering +% Oklahoma State University, 2008 +% University Of Washington Seattle, 2009 +% Image Coding and Analysis Lab + +% 2008: Eric Larson, MAD code creation +% 2009: Eric Larson, Added mex file support +% 2010: (april) Releasing beta version of code +% 2010: (june) Fixed constant of 200 on d_detect +% 2010: (november) Fixed output gabor handling and non integer input images +% 2011: (september) Mad is now faster! + +if( nargin == 0 ) + %error( 'No valid input given. Please provide images or image names.' ); + index = hi_index; + return; +elseif( ~isinteger( ref_img ) && ~isfloat( ref_img )) + % read in the image names + ref_img = imread( ref_img ); + dst_img = imread( dst_img ); +end + +% Parameterize the input +% Initializations +index.LO = -1; +index.HI = -1; +index.MAD = -1; +map.LO = zeros( size( ref_img ) ); +map.HI = zeros( size( ref_img ) ); +map.sig = -1; + +% Ready data for processing +if( ndims( ref_img ) == 3 ) + ref_img = myrgb2gray( ref_img ); +end + +if( ndims( dst_img ) == 3 ) + dst_img = myrgb2gray( dst_img ); +end + +ref = double( ref_img ); +dst = double( dst_img ); + +% Calculate high quality index +% Calculate low quality index + +[index.HI map.HI] = hi_index( ref_img, dst_img ); + +if nargout >= 3 + [index.LO map.LO gabors] = lo_index( ref, dst ); +else + [index.LO map.LO] = lo_index( ref, dst ); +end + +% Combine outputs using sigmoid blend +if( nargin > 3 ) + thresh1 = thresh(1); + thresh2 = thresh(2); +else + thresh1 = 2.55; + thresh2 = 3.35; +end +b1 = exp(-thresh1/thresh2); +b2 = 1/(log(10)*thresh2); + +sig = 1 ./ ( 1 + b1*index.HI^b2 ) ; +index.sig = sig; +index.MAD = ( index.LO^(1-sig) .* index.HI.^(sig) ); + +% Not used, reserved for future version of MAD +%[map.ADAPT map.ALPHA index.SMAD] = adapt_map(map,[thresh1 thresh2]); +% profile off +% profile report + +end + +%=========================================== +% OTHER FUNCTIONS +%------------------------------------------- + +%----------------------------------------------------- +function [I mp imgs] = hi_index( ref_img, dst_img ) +% Calculate the high quality index by calculating the masking map and +% then approximating the local statistics, using filtering. +% Author: Eric Larson +% Department of Electrical and Computer Engineering +% Oklahoma State University, 2008 +% Image Coding and Analysis Lab + +% Masking/luminance parameters +k = 0.02874; +G = 0.5 ; % luminance threshold +C_slope = 1; % slope of detection threshold +Ci_thrsh= -5; % contrast to start slope, rather than const threshold +Cd_thrsh= -5; % saturated threshold +ms_scale= 1; % scaling constant +if(nargin==0)% for debug only, + I={'collapsing (mask) and raw lmse',... + 'using c code',... + 'using log scale',... + 'two norm',... + sprintf('Ci = %.2f',Ci_thrsh),... + sprintf('Cslope = %.2f',C_slope),... + sprintf('Cd = %.2f',Cd_thrsh),... + sprintf('G = %.2f',G),... + 'LO QUALITY',... + }; + return; +end +% log(Contrast of ref-dst) vs. log(Contrast of reference) +% / +% / +% / _| <- Cslope +% / +%----------+ <- Cdthresh (y axis height) +% /\ +% || +% Ci thresh (x axis value) + +% TAKE TO LUMINANCE DOMAIN USING LUT +if isinteger(ref_img) + LUT = 0:1:255; %generate LUT + LUT = k .* LUT .^ (2.2/3); + ref = LUT( ref_img + 1 ); + dst = LUT( dst_img + 1 ); +else % don't use the speed up + ref = k .* ref_img .^ (2.2/3); + dst = k .* dst_img .^ (2.2/3); +end + +[M N] = size( ref ); + +% ACCOUNT FOR CONTRAST SENSITIVITY +csf = make_csf( M, N, 32 )'; +ref = real( ifft2( ifftshift( fftshift( fft2( ref ) ).* csf ) ) ); +dst = real( ifft2( ifftshift( fftshift( fft2( dst ) ).* csf ) ) ); +refS = ref; +dstS = dst; + +% Use c code to get fast local stats +[std_2 std_1 m1_1] = ical_std( dst-ref, ref ); + +BSIZE = 16; + +Ci_ref = log(std_1./m1_1); % contrast of reference (also a measure of entropy) +Ci_dst = log(std_2./m1_1); % contrast of distortions (also a measure of entropy) +Ci_dst( find( m1_1 < G ) ) = -inf; + +msk = zeros( size(Ci_dst) ); +idx1 = find( (Ci_ref > Ci_thrsh) ... + & (Ci_dst > (C_slope * (Ci_ref - Ci_thrsh) + Cd_thrsh) ) ); +idx2 = find( (Ci_ref <= Ci_thrsh) & (Ci_dst > Cd_thrsh) ); + +msk(idx1) = ( Ci_dst( idx1 ) - (C_slope * (Ci_ref( idx1 )-Ci_thrsh) + Cd_thrsh) ) ./ ms_scale; +msk(idx2) = ( Ci_dst( idx2 ) - Cd_thrsh ) ./ ms_scale; +%= ( Contrast of heavy Dst - 0.75 * Contrast Ref ) / normalize +%= ( Contrast of low Dst - Threshold ) / normalize + +% Use lmse and weight by distortion mask +win = ones( BSIZE ) ./ BSIZE^2; + +% Michael Hirsch: replaced imfilter with filter2 which is shipped +% with MATLAB -> no need for image toolbox +%lmse = ( imfilter( ( double(ref_img) - double(dst_img) ).^2, ... +% win, 'symmetric', 'same', 'conv' ) ); +lmse = ( filter2( win, ( double(ref_img) - double(dst_img) ).^2, 'same' ) ); + +mp = msk .* lmse; + +% kill the edges +mp2 = mp( BSIZE+1:end-BSIZE-1, BSIZE+1:end-BSIZE-1); + +I = norm( mp2(:) , 2 ) ./ sqrt( length( mp2(:) ) ) .* 200; + +if( nargout > 2) + imgs.ref = refS; + imgs.dst = dstS; +end + + +end +%----------------------------------------------------- + +% %----------------------------------------------------- +function [I mp gabors] = lo_index( ref, dst ) +% Calculate the low quality index by calculating the Gabor analysis and +% then the local statistics, +% Author: Eric Larson +% Department of Electrical and Computer Engineering +% Oklahoma State University, 2008 +% Image Coding and analysis lab + + +% Decompose using Gabor Analysis +gabRef = gaborconvolve( double( ref ) ); +gabDst = gaborconvolve( double( dst ) ); + +[M N] = size( gabRef{1,1} ); +O = size( gabRef, 1 ) * size( gabRef, 2 ); +s = [0.5 0.75 1 5 6]; +mp = zeros( M, N ); +s = s./sum(s(:)); + + +if( nargout == 3) + gabors.dst = zeros( M, N, 5*4*3 ); + gabors.ref = zeros( M, N, 5*4*3 ); +end + +im_k = 0; +BSIZE = 16; +for gb_i = 1:5 + for gb_j = 1:4 + + im_k = im_k + 1; + fprintf('%d ',im_k) + + if( nargout == 3 ) + [gabors.ref(:,:,3*(im_k-1)+1), gabors.ref(:,:,3*(im_k-1)+2), gabors.ref(:,:,3*(im_k-1)+3)] ... + = ical_stat( abs( gabRef{gb_i,gb_j} ) ); + + [gabors.dst(:,:,3*(im_k-1)+1), gabors.dst(:,:,3*(im_k-1)+2), gabors.dst(:,:,3*(im_k-1)+3)] ... + = ical_stat( abs( gabDst{gb_i,gb_j} ) ); + + else + % otherwise keep memory footprint to a minimum + [std.ref, skw.ref, krt.ref] ... + = ical_stat( abs( gabRef{gb_i,gb_j} ) ); + [std.dst, skw.dst, krt.dst] ... + = ical_stat( abs( gabDst{gb_i,gb_j} ) ); + + mp = mp + s(gb_i) .* ( abs( std.ref - std.dst )... std + + 2.*abs( skw.ref - skw.dst )... skew + + abs( krt.ref - krt.dst ) ); % kurtosis + end + end +end + +fprintf('\n ') + +% kill the edges +mp2 = mp( BSIZE+1:end-BSIZE-1, BSIZE+1:end-BSIZE-1); + +I = norm( mp2 (:), 2 ) / sqrt( length( mp2(:) ) ) ; +% = norm of statistical diff map / ( root image size * normalization ) +end +%----------------------------------------------------- +% %----------------------------------------------------- +% function [I mp gabors] = lo_index( ref, dst ) +% % Calculate the low quality index by calculating the Gabor analysis and +% % then the local statistics, +% % Author: Eric Larson +% % Department of Electrical and Computer Engineering +% % Oklahoma State University, 2008 +% % Image Coding and analysis lab +% +% % Decompose using Gabor Analysis +% gabRef = gaborconvolve( double( ref ) ); +% gabDst = gaborconvolve( double( dst ) ); +% [M N] = size( gabRef{1,1} ); +% O = size( gabRef, 1 ) * size( gabRef, 2 ); +% s = [0.5 0.75 1 5 6]; +% mp = zeros( M, N ); +% mp_cell = cell(5*4,1); +% s = s./sum(s(:)); +% NAR = nargout; +% +% if( NAR == 3) +% % gabors.dst = zeros( M, N, 5*4*3 ); +% % gabors.ref = zeros( M, N, 5*4*3 ); +% gabors_dst1 = cell(5*4,1); +% gabors_dst2 = cell(5*4,1); +% gabors_dst3 = cell(5*4,1); +% gabors_ref1 = cell(5*4,1); +% gabors_ref2 = cell(5*4,1); +% gabors_ref3 = cell(5*4,1); +% end +% +% % im_k = 0; +% BSIZE = 16; +% % for gb_i = 1:5 +% % for gb_j = 1:4 +% % im_k = im_k + 1; +% if( NAR == 3 ) +% parfor it=1:20 +% im_k = it; +% gb_j = mod(it-1,4)+1; +% gb_i = (it - gb_j)/4 + 1; +% fprintf('%d ',im_k) +% % [gabors.ref(:,:,3*(im_k-1)+1), gabors.ref(:,:,3*(im_k-1)+2), gabors.ref(:,:,3*(im_k-1)+3)] ... +% % = ical_stat( abs( gabRef{gb_i,gb_j} ) ); +% [gabors_ref1{it} gabors_ref2{it} gabors_ref3{it}] = ical_stat( abs( gabRef{gb_i,gb_j} ) ); +% +% % [gabors.dst(:,:,3*(im_k-1)+1), gabors.dst(:,:,3*(im_k-1)+2), gabors.dst(:,:,3*(im_k-1)+3)] ... +% % = ical_stat( abs( gabDst{gb_i,gb_j} ) ); +% [gabors_dst1{it} gabors_dst2{it} gabors_dst3{it}] = ical_stat( abs( gabDst{gb_i,gb_j} ) ); +% end +% else +% parfor it=1:20 +% im_k = it; +% gb_j = mod(it-1,4)+1; +% gb_i = (it - gb_j)/4 + 1; +% fprintf('%d ',im_k) +% % otherwise keep memory footprint to a minimum +% [std_ref, skw_ref, krt_ref] ... +% = ical_stat( abs( gabRef{gb_i,gb_j} ) ); +% [std_dst, skw_dst, krt_dst] ... +% = ical_stat( abs( gabDst{gb_i,gb_j} ) ); +% +% mp_cell{it} = s(gb_i) .* ( abs( std_ref - std_dst )... std +% + 2.*abs( skw_ref - skw_dst )... skew +% + abs( krt_ref - krt_dst ) ); % kurtosis +% end +% end +% +% % Process variables after parfor! +% if( NAR == 3) +% gabors.dst = zeros( M, N, 5*4*3 ); +% gabors.ref = zeros( M, N, 5*4*3 ); +% for im_k=1:20 +% gabors.ref(:,:,3*(im_k-1)+1) = gabors_ref1{im_k}; +% gabors.ref(:,:,3*(im_k-1)+2) = gabors_ref2{im_k}; +% gabors.ref(:,:,3*(im_k-1)+3) = gabors_ref3{im_k}; +% gabors.dst(:,:,3*(im_k-1)+1) = gabors_dst1{im_k}; +% gabors.dst(:,:,3*(im_k-1)+2) = gabors_dst2{im_k}; +% gabors.dst(:,:,3*(im_k-1)+3) = gabors_dst3{im_k}; +% end +% else +% for it=1:20 +% mp = mp + mp_cell{it}; +% end +% end +% +% fprintf('\n ') +% +% % kill the edges +% mp2 = mp( BSIZE+1:end-BSIZE-1, BSIZE+1:end-BSIZE-1); +% +% I = norm( mp2 (:), 2 ) / sqrt( length( mp2(:) ) ) ; +% % = norm of statistical diff map / ( root image size * normalization ) +% end +% %----------------------------------------------------- + +%----------------------------------------------------- +function [res] = make_csf(x, y, nfreq) +[xplane,yplane]=meshgrid(-x/2+0.5:x/2-0.5, -y/2+0.5:y/2-0.5); % generate mesh +plane=(xplane+1i*yplane)/y*2*nfreq; +radfreq=abs(plane); % radial frequency + +% We modify the radial frequency according to angle. +% w is a symmetry parameter that gives approx. 3 dB down along the +% diagonals. +w=0.7; +s=(1-w)/2*cos(4*angle(plane))+(1+w)/2; +radfreq=radfreq./s; + +% Now generate the CSF +csf = 2.6*(0.0192+0.114*radfreq).*exp(-(0.114*radfreq).^1.1); +f=find( radfreq < 7.8909 ); csf(f)=0.9809+zeros(size(f)); + +res = csf; +end +%----------------------------------------------------- +% +% %----------------------------------------------------- +% function EO = gaborconvolve( im ) +% % GABORCONVOLVE - function for convolving image with log-Gabor filters +% % +% % Usage: EO = gaborconvolve(im, nscale, norient ) +% % +% % For details of log-Gabor filters see: +% % D. J. Field, "Relations Between the Statistics of Natural Images and the +% % Response Properties of Cortical Cells", Journal of The Optical Society of +% % America A, Vol 4, No. 12, December 1987. pp 2379-2394 +% % Notes on filter settings to obtain even coverage of the spectrum +% % dthetaOnSigma 1.5 +% % sigmaOnf .85 mult 1.3 +% % sigmaOnf .75 mult 1.6 (bandwidth ~1 octave) +% % sigmaOnf .65 mult 2.1 +% % sigmaOnf .55 mult 3 (bandwidth ~2 octaves) +% % +% % Author: Peter Kovesi +% % Department of Computer Science & Software Engineering +% % The University of Western Australia +% % pk@cs.uwa.edu.au www.cs.uwa.edu.au/~pk +% % +% % May 2001 +% % Altered, 2008, Eric Larson +% +% nscale = 5; %Number of wavelet scales. +% norient = 4; %Number of filter orientations. +% minWaveLength = 3; %Wavelength of smallest scale filter. +% mult = 3; %Scaling factor between successive filters. +% sigmaOnf = 0.55; %Ratio of the standard deviation of the +% %Gaussian describing the log Gabor filter's transfer function +% %in the frequency domain to the filter center frequency. +% %Orig: 3 6 12 27 64 +% wavelength = [minWaveLength ... +% minWaveLength*mult ... +% minWaveLength*mult^2 ... +% minWaveLength*mult^3 ... +% minWaveLength*mult^4 ]; +% +% dThetaOnSigma = 1.5; %Ratio of angular interval between filter orientations +% % and the standard deviation of the angular Gaussian +% % function used to construct filters in the +% % freq. plane. +% +% +% [rows cols] = size( im ); +% imagefft = fft2( im ); % Fourier transform of image +% +% EO = cell( nscale, norient ); % Pre-allocate cell array +% +% % Pre-compute to speed up filter construction +% +% x = ones(rows,1) * (-cols/2 : (cols/2 - 1))/(cols/2); +% y = (-rows/2 : (rows/2 - 1))' * ones(1,cols)/(rows/2); +% radius = sqrt(x.^2 + y.^2); % Matrix values contain *normalised* radius from centre. +% radius(round(rows/2+1),round(cols/2+1)) = 1; % Get rid of the 0 radius value in the middle +% % so that taking the log of the radius will +% % not cause trouble. +% +% % Precompute sine and cosine of the polar angle of all pixels about the +% % centre point +% +% theta = atan2(-y,x); % Matrix values contain polar angle. +% % (note -ve y is used to give +ve +% % anti-clockwise angles) +% sintheta = sin(theta); +% costheta = cos(theta); +% clear x; clear y; clear theta; % save a little memory +% +% thetaSigma = pi/norient/dThetaOnSigma; % Calculate the standard deviation of the +% % angular Gaussian function used to +% % construct filters in the freq. plane. +% % The main loop... +% for o = 1:norient, % For each orientation. +% fprintf('.'); +% angl = (o-1)*pi/norient; % Calculate filter angle. +% +% % Pre-compute filter data specific to this orientation +% % For each point in the filter matrix calculate the angular distance from the +% % specified filter orientation. To overcome the angular wrap-around problem +% % sine difference and cosine difference values are first computed and then +% % the atan2 function is used to determine angular distance. +% +% ds = sintheta * cos(angl) - costheta * sin(angl); % Difference in sine. +% dc = costheta * cos(angl) + sintheta * sin(angl); % Difference in cosine. +% dtheta = abs(atan2(ds,dc)); % Absolute angular distance. +% spread = exp((-dtheta.^2) / (2 * thetaSigma^2)); % Calculate the angular filter component. +% +% for s = 1:nscale, % For each scale. +% +% % Construct the filter - first calculate the radial filter component. +% fo = 1.0/wavelength(s); % Centre frequency of filter. +% rfo = fo/0.5; % Normalised radius from centre of frequency plane +% % corresponding to fo. +% % logGabor = exp( (-(log(radius/rfo)).^2) / (2 * log(sigmaOnf)^2) ); +% logGabor = exp( (-(log(radius/rfo)).^2) / (2 * log(sigmaOnf)^2) ); +% logGabor( round(rows/2+1), round(cols/2+1) ) = 0; % Set the value at the center of the filter +% % back to zero (undo the radius fudge). +% +% filter = fftshift( logGabor .* spread ); % Multiply by the angular spread to get the filter +% % and swap quadrants to move zero frequency +% % to the corners. +% +% % Do the convolution, back transform, and save the result in EO +% EO{s,o} = ifft2( imagefft .* filter ); +% +% +% end % ... and process the next scale +% +% end % For each orientation +% +% end +% %----------------------------------------------------- +function EO = gaborconvolve( im ) + +% GABORCONVOLVE - function for convolving image with log-Gabor filters +% +% Usage: EO = gaborconvolve(im, nscale, norient ) +% +% For details of log-Gabor filters see: +% D. J. Field, "Relations Between the Statistics of Natural Images and the +% Response Properties of Cortical Cells", Journal of The Optical Society of +% America A, Vol 4, No. 12, December 1987. pp 2379-2394 +% Notes on filter settings to obtain even coverage of the spectrum +% dthetaOnSigma 1.5 +% sigmaOnf .85 mult 1.3 +% sigmaOnf .75 mult 1.6 (bandwidth ~1 octave) +% sigmaOnf .65 mult 2.1 +% sigmaOnf .55 mult 3 (bandwidth ~2 octaves) +% +% Author: Peter Kovesi +% Department of Computer Science & Software Engineering +% The University of Western Australia +% pk@cs.uwa.edu.au www.cs.uwa.edu.au/~pk +% +% May 2001 +% Altered, 2008, Eric Larson +% Altered precomputations, 2011, Eric Larson + +nscale = 5; %Number of wavelet scales. +norient = 4; %Number of filter orientations. +minWaveLength = 3; %Wavelength of smallest scale filter. +mult = 3; %Scaling factor between successive filters. +sigmaOnf = 0.55; %Ratio of the standard deviation of the +%Gaussian describing the log Gabor filter's transfer function +%in the frequency domain to the filter center frequency. +%Orig: 3 6 12 27 64 +wavelength = [minWaveLength ... + minWaveLength*mult ... + minWaveLength*mult^2 ... + minWaveLength*mult^3 ... + minWaveLength*mult^4 ]; + +dThetaOnSigma = 1.5; %Ratio of angular interval between filter orientations +% and the standard deviation of the angular Gaussian +% function used to construct filters in the +% freq. plane. + + +[rows cols] = size( im ); +imagefft = fft2( im ); % Fourier transform of image + +EO = cell( nscale, norient ); % Pre-allocate cell array + +% Pre-compute to speed up filter construction +x = ones(rows,1) * (-cols/2 : (cols/2 - 1))/(cols/2); +y = (-rows/2 : (rows/2 - 1))' * ones(1,cols)/(rows/2); +radius = sqrt(x.^2 + y.^2); % Matrix values contain *normalised* radius from centre. +radius(round(rows/2+1),round(cols/2+1)) = 1; % Get rid of the 0 radius value in the middle +radius = log(radius); +% so that taking the log of the radius will +% not cause trouble. + +% Precompute sine and cosine of the polar angle of all pixels about the +% centre point + +theta = atan2(-y,x); % Matrix values contain polar angle. +% (note -ve y is used to give +ve +% anti-clockwise angles) +sintheta = sin(theta); +costheta = cos(theta); +clear x; clear y; clear theta; % save a little memory + +thetaSigma = pi/norient/dThetaOnSigma; % Calculate the standard deviation of the +% angular Gaussian function used to +% construct filters in the freq. plane. +rows = round(rows/2+1); +cols = round(cols/2+1); +% precompute the scaling filters +logGabors = cell(1,nscale); +for s = 1:nscale % For each scale. + + % Construct the filter - first calculate the radial filter component. + fo = 1.0/wavelength(s); % Centre frequency of filter. + rfo = fo/0.5; % Normalised radius from centre of frequency plane + % corresponding to fo. + tmp = -(2 * log(sigmaOnf)^2); + tmp2= log(rfo); + logGabors{s} = exp( (radius-tmp2).^2 /tmp ); + + logGabors{s}( rows, cols ) = 0; % Set the value at the center of the filter + % back to zero (undo the radius fudge). +end + + +% The main loop... +for o = 1:norient, % For each orientation. + fprintf('.'); + angl = (o-1)*pi/norient; % Calculate filter angle. + + % Pre-compute filter data specific to this orientation + % For each point in the filter matrix calculate the angular distance from the + % specified filter orientation. To overcome the angular wrap-around problem + % sine difference and cosine difference values are first computed and then + % the atan2 function is used to determine angular distance. + + ds = sintheta * cos(angl) - costheta * sin(angl); % Difference in sine. + dc = costheta * cos(angl) + sintheta * sin(angl); % Difference in cosine. + dtheta = abs(atan2(ds,dc)); % Absolute angular distance. + spread = exp((-dtheta.^2) / (2 * thetaSigma^2)); % Calculate the angular filter component. + + for s = 1:nscale, % For each scale. + + filter = fftshift( logGabors{s} .* spread ); % Multiply by the angular spread to get the filter + % and swap quadrants to move zero frequency + % to the corners. + + % Do the convolution, back transform, and save the result in EO + EO{s,o} = ifft2( imagefft .* filter ); + + + end % ... and process the next scale + +end % For each orientation + +end +% function [mp alpha I] = adapt_map( map, thresh ) +% +% if( ndims(map.LO) == 1 ) +% hi = map.HI; +% lo = map.LO; +% else +% hi = sum( map.HI, 3 ) ./ 3; +% lo = map.LO; +% end +% +% b1 = exp( -thresh(1)/thresh(2) ); +% b2 = 1 / ( log(10)*thresh(2) ); +% +% alpha = 1 ./ ( 1 + b1 .* (abs(hi).^b2) ); +% +% mp = hi.^(alpha) .* lo.^(1-alpha); +% +% BSIZE = 16; +% mp2 = mp( BSIZE+1:end-BSIZE-1, BSIZE+1:end-BSIZE-1); +% I = mean( mp2 (:) ) ; +% end +% +% %----------------------------------------------------- +% function s = stdmod( block ) +% +% [a b] = size( block ); +% b11 = block( 1:a/2 , 1:b/2 ); +% b12 = block( 1:a/2 , b/2+1:b ); +% b21 = block( a/2+1:a, 1:b/2 ); +% b22 = block( a/2+1:a, b/2+1:b ); +% +% s = min( [ std( b11(:) ), std( b12(:) ), ... +% std( b21(:) ), std( b22(:) )] ); +% end +% %----------------------------------------------------- \ No newline at end of file diff --git a/evaluate/evaluation_code/README.txt b/evaluate/evaluation_code/README.txt new file mode 100644 index 0000000..957b1eb --- /dev/null +++ b/evaluate/evaluation_code/README.txt @@ -0,0 +1,65 @@ +================================================================= +This README File explains how to change and call the +start_eval_image.m script to evaluate the (PSNR) scores of your +deblurred images. + +ECCV 2012, Recording and playback of camera shake: +benchmarking blind deconvolution with a real-world database +Rolf Koehler, Michael Hirsch, Betty Mohler, Bernhard Schölkopf, +Stefan Harmeling + +corresponding author: rolf.koehler[ATAT]tuebingen.mpg.de +================================================================= + + +================================================================= +HOW TO SAVE AND NAME DEBLURRED IMAGES. +----------------------------------------------------------------- + * Deblurred images should be saved in a lossless format, e.g. 'png'. + * Specify the path where you moved the evaluation scripts, + the path where the deblurred images are saved to + the name of the deblurred images and + the img format, e.g. MYPATH = '~/EvalDeblur' + DEBLPATH = '~/deblurFolder' + DEBLNAME = 'Muller' + IMGEXT = 'png' + * NOTE: The deblurred images should be named in the following way + DEBLNAME{img_No}_{Kernel_No}.IMGEXT + e.g. Muller3_8.png (for image 3, Kernel 8) + + +================================================================= +HOW TO CALL THE .m SCRIPT = HOW TO GET THE PSNR SCORE OF AN IMAGE +----------------------------------------------------------------- + * copy the downloaded 48 GroundTruth$i_$j.mat files into the folder + groundTruthMatFiles + * in start_eval_image.m specify the path where you moved the evaluation scripts, + the name of the deblurred images and the + img format, e.g. MYPATH = '~/EvalDeblur' + DEBLPATH = '~/deblurFolder' + DEBLNAME = 'Muller' + IMGEXT = 'png' + * specify the metric you want to use (for the ECCV Paper only the + 'PSNR' metric was used. For the journal version also other metrics + will be used. + * Define the image numbers which you want to evaluate + * you can also define the images which you want to exclude, in case + you do not want to compute the score for all 4 * 12 images + + +================================================================= +RESULTS +----------------------------------------------------------------- +Each deblurred image is compared with around 200 ground truth images. +So in total you get for each deblurred image around 200 scores. +start_eval_image.m returns only a struct with the best score for each +deblurred image. + + +================================================================= +QUESTIONS? +----------------------------------------------------------------- +If any questions remained, we'll try to answer them: +rolf.koehler[ATAT]tuebingen.mpg.de + + diff --git a/evaluate/evaluation_code/dftregistration.m b/evaluate/evaluation_code/dftregistration.m new file mode 100644 index 0000000..386efb7 --- /dev/null +++ b/evaluate/evaluation_code/dftregistration.m @@ -0,0 +1,212 @@ + + +function [output Greg] = dftregistration(buf1ft,buf2ft,usfac) +% function [output Greg] = dftregistration(buf1ft,buf2ft,usfac); +% Efficient subpixel image registration by crosscorrelation. This code +% gives the same precision as the FFT upsampled cross correlation in a +% small fraction of the computation time and with reduced memory +% requirements. It obtains an initial estimate of the crosscorrelation peak +% by an FFT and then refines the shift estimation by upsampling the DFT +% only in a small neighborhood of that estimate by means of a +% matrix-multiply DFT. With this procedure all the image points are used to +% compute the upsampled crosscorrelation. +% Manuel Guizar - Dec 13, 2007 + +% Portions of this code were taken from code written by Ann M. Kowalczyk +% and James R. Fienup. +% J.R. Fienup and A.M. Kowalczyk, "Phase retrieval for a complex-valued +% object by using a low-resolution image," J. Opt. Soc. Am. A 7, 450-458 +% (1990). + +% Citation for this algorithm: +% Manuel Guizar-Sicairos, Samuel T. Thurman, and James R. Fienup, +% "Efficient subpixel image registration algorithms," Opt. Lett. 33, +% 156-158 (2008). + +% Inputs +% buf1ft Fourier transform of reference image, +% DC in (1,1) [DO NOT FFTSHIFT] +% buf2ft Fourier transform of image to register, +% DC in (1,1) [DO NOT FFTSHIFT] +% usfac Upsampling factor (integer). Images will be registered to +% within 1/usfac of a pixel. For example usfac = 20 means the +% images will be registered within 1/20 of a pixel. (default = 1) + +% Outputs +% output = [error,diffphase,net_row_shift,net_col_shift] +% error Translation invariant normalized RMS error between f and g +% diffphase Global phase difference between the two images (should be +% zero if images are non-negative). +% net_row_shift net_col_shift Pixel shifts between images +% Greg (Optional) Fourier transform of registered version of buf2ft, +% the global phase difference is compensated for. + +% Default usfac to 1 +if exist('usfac')~=1, usfac=1; end + +% Compute error for no pixel shift +if usfac == 0, + CCmax = sum(sum(buf1ft.*conj(buf2ft))); + rfzero = sum(abs(buf1ft(:)).^2); + rgzero = sum(abs(buf2ft(:)).^2); + error = 1.0 - CCmax.*conj(CCmax)/(rgzero*rfzero); + error = sqrt(abs(error)); + diffphase=atan2(imag(CCmax),real(CCmax)); + output=[error,diffphase]; + +% Whole-pixel shift - Compute crosscorrelation by an IFFT and locate the +% peak +elseif usfac == 1, + [m,n]=size(buf1ft); + CC = ifft2(buf1ft.*conj(buf2ft)); + [max1,loc1] = max(CC); + [max2,loc2] = max(max1); + rloc=loc1(loc2); + cloc=loc2; + CCmax=CC(rloc,cloc); + rfzero = sum(abs(buf1ft(:)).^2)/(m*n); + rgzero = sum(abs(buf2ft(:)).^2)/(m*n); + error = 1.0 - CCmax.*conj(CCmax)/(rgzero(1,1)*rfzero(1,1)); + error = sqrt(abs(error)); + diffphase=atan2(imag(CCmax),real(CCmax)); + md2 = fix(m/2); + nd2 = fix(n/2); + if rloc > md2 + row_shift = rloc - m - 1; + else + row_shift = rloc - 1; + end + + if cloc > nd2 + col_shift = cloc - n - 1; + else + col_shift = cloc - 1; + end + output=[error,diffphase,row_shift,col_shift]; + +% Partial-pixel shift +else + + % First upsample by a factor of 2 to obtain initial estimate + % Embed Fourier data in a 2x larger array + [m,n]=size(buf1ft); + mlarge=m*2; + nlarge=n*2; + CC=zeros(mlarge,nlarge); + CC(m+1-fix(m/2):m+1+fix((m-1)/2),n+1-fix(n/2):n+1+fix((n-1)/2)) = ... + fftshift(buf1ft).*conj(fftshift(buf2ft)); + + % Compute crosscorrelation and locate the peak + CC = ifft2(ifftshift(CC)); % Calculate cross-correlation + [max1,loc1] = max(CC); + [max2,loc2] = max(max1); + rloc=loc1(loc2);cloc=loc2; + CCmax=CC(rloc,cloc); + + % Obtain shift in original pixel grid from the position of the + % crosscorrelation peak + [m,n] = size(CC); md2 = fix(m/2); nd2 = fix(n/2); + if rloc > md2 + row_shift = rloc - m - 1; + else + row_shift = rloc - 1; + end + if cloc > nd2 + col_shift = cloc - n - 1; + else + col_shift = cloc - 1; + end + row_shift=row_shift/2; + col_shift=col_shift/2; + + % If upsampling > 2, then refine estimate with matrix multiply DFT + if usfac > 2, + %%% DFT computation %%% + % Initial shift estimate in upsampled grid + row_shift = round(row_shift*usfac)/usfac; + col_shift = round(col_shift*usfac)/usfac; + dftshift = fix(ceil(usfac*1.5)/2); %% Center of output array at dftshift+1 + % Matrix multiply DFT around the current shift estimate + CC = conj(dftups(buf2ft.*conj(buf1ft),ceil(usfac*1.5),ceil(usfac*1.5),usfac,... + dftshift-row_shift*usfac,dftshift-col_shift*usfac))/(md2*nd2*usfac^2); + % Locate maximum and map back to original pixel grid + [max1,loc1] = max(CC); + [max2,loc2] = max(max1); + rloc = loc1(loc2); cloc = loc2; + CCmax = CC(rloc,cloc); + rg00 = dftups(buf1ft.*conj(buf1ft),1,1,usfac)/(md2*nd2*usfac^2); + rf00 = dftups(buf2ft.*conj(buf2ft),1,1,usfac)/(md2*nd2*usfac^2); + rloc = rloc - dftshift - 1; + cloc = cloc - dftshift - 1; + row_shift = row_shift + rloc/usfac; + col_shift = col_shift + cloc/usfac; + + % If upsampling = 2, no additional pixel shift refinement + else + rg00 = sum(sum( buf1ft.*conj(buf1ft) ))/m/n; + rf00 = sum(sum( buf2ft.*conj(buf2ft) ))/m/n; + end + error = 1.0 - CCmax.*conj(CCmax)/(rg00*rf00); + error = sqrt(abs(error)); + diffphase=atan2(imag(CCmax),real(CCmax)); + % If its only one row or column the shift along that dimension has no + % effect. We set to zero. + if md2 == 1, + row_shift = 0; + end + if nd2 == 1, + col_shift = 0; + end + output=[error,diffphase,row_shift,col_shift]; +end + +% Compute registered version of buf2ft +if (nargout > 1)&&(usfac > 0), + [nr,nc]=size(buf2ft); + Nr = ifftshift([-fix(nr/2):ceil(nr/2)-1]); + Nc = ifftshift([-fix(nc/2):ceil(nc/2)-1]); + [Nc,Nr] = meshgrid(Nc,Nr); + Greg = buf2ft.*exp(i*2*pi*(-row_shift*Nr/nr-col_shift*Nc/nc)); + Greg = Greg*exp(i*diffphase); +elseif (nargout > 1)&&(usfac == 0) + Greg = buf2ft*exp(i*diffphase); +end +return + +function out=dftups(in,nor,noc,usfac,roff,coff) +% function out=dftups(in,nor,noc,usfac,roff,coff); +% Upsampled DFT by matrix multiplies, can compute an upsampled DFT in just +% a small region. +% usfac Upsampling factor (default usfac = 1) +% [nor,noc] Number of pixels in the output upsampled DFT, in +% units of upsampled pixels (default = size(in)) +% roff, coff Row and column offsets, allow to shift the output array to +% a region of interest on the DFT (default = 0) +% Recieves DC in upper left corner, image center must be in (1,1) +% Manuel Guizar - Dec 13, 2007 +% Modified from dftus, by J.R. Fienup 7/31/06 + +% This code is intended to provide the same result as if the following +% operations were performed +% - Embed the array "in" in an array that is usfac times larger in each +% dimension. ifftshift to bring the center of the image to (1,1). +% - Take the FFT of the larger array +% - Extract an [nor, noc] region of the result. Starting with the +% [roff+1 coff+1] element. + +% It achieves this result by computing the DFT in the output array without +% the need to zeropad. Much faster and memory efficient than the +% zero-padded FFT approach if [nor noc] are much smaller than [nr*usfac nc*usfac] + +[nr,nc]=size(in); +% Set defaults +if exist('roff')~=1, roff=0; end +if exist('coff')~=1, coff=0; end +if exist('usfac')~=1, usfac=1; end +if exist('noc')~=1, noc=nc; end +if exist('nor')~=1, nor=nr; end +% Compute kernels and obtain DFT by matrix products +kernc=exp((-i*2*pi/(nc*usfac))*( ifftshift([0:nc-1]).' - floor(nc/2) )*( [0:noc-1] - coff )); +kernr=exp((-i*2*pi/(nr*usfac))*( [0:nor-1].' - roff )*( ifftshift([0:nr-1]) - floor(nr/2) )); +out=kernr*in*kernc; +return diff --git a/evaluate/evaluation_code/eval_image.m b/evaluate/evaluation_code/eval_image.m new file mode 100644 index 0000000..55b5142 --- /dev/null +++ b/evaluate/evaluation_code/eval_image.m @@ -0,0 +1,106 @@ +function scores = eval_image(deblurred,img,kernel,metric) +% BENCHMARK_EVAL_IMAGE computes various quality measures given +% a deblurred image and the corresponding ID, i.e. you have to +% provide the image and kernel number +% +% Michael Hirsch and Rolf Koehler (c) 2012 + +addpath(genpath('image_quality_algorithms')) + +% ----------------------------------------------------------------- +% Check that input images are 8bit. +% To use the image quality assessment algorithms the images have to be in 8 +% bit, with a maximum value of 255, so not normalized. +% ----------------------------------------------------------------- +if ( ~isa(deblurred, 'uint8') || size(deblurred,3)~=3 ) + error('Input image has to be a color image of type uint8!'); +end + +% load in .mat containing Ground Truth images +load(sprintf('groundTruthMatFiles/GroundTruth%d_%d.mat', ... + img,kernel)); + +% z will denote the estimated, i.e. deblurred image +z = double(deblurred); + +% Create constant image which will act as a mask +c = ones(size(deblurred)); + +% Initialize containers for quality measures + mse = []; + mssim = []; + vif = []; + ifc = []; + psnr = []; + mad = []; + +N = size(GroundTruth,4); +idGt = 1:N; + +% For whatever reason ground truth image of (1,3) is missing + if img == 1 && kernel == 3 + idGt = [1:29,31:198]; + end + +% ================================================================= +% compute the image quality measure score +% ----------------------------------------------------------------- +for j = idGt + fprintf(['Processing motive %d of 4, kernel %d of 12, image %d ' ... + 'of %d for metric %s \n'], img, kernel,j, N,metric); + + % Load ground truth image, denoted by x + x = double(GroundTruth(:,:,:,j)); + xf = fft2(mean(x,3)); + + % Scale image intensity + zs = (sum(vec(x.*z)) / sum(vec(z.*z))) .* z; + zf = fft2(mean(zs,3)); + + % Estimate shift by registering deblurred to ground truth image + [output Greg] = dftregistration(xf, zf, 1); + shift = output(3:4); + + % Apply shift + cr = imshift(double(c), shift, 'same'); + zr = imshift(double(zs), shift, 'same'); + xr = x.*cr; + + % Compute various quality measures + switch metric + case 'MSE' + mse = [mse metrix_mux(xr, zr, 'MSE')]; + case 'MSSIM' + mssim = [mssim metrix_mux(xr, zr, 'MSSIM')]; + case 'VIF' + vif = [vif metrix_mux(xr, zr, 'VIF')]; + case 'IFC' + ifc = [ifc metrix_mux(xr, zr, 'IFC')]; + case 'PSNR' + psnr = [psnr metrix_mux(xr, zr, 'PSNR')]; + case 'MAD' + MAD_temp = MAD_index(xr, zr); + mad = [mad MAD_temp.MAD]; + end +end + +% ================================================================= +% Save results +% ----------------------------------------------------------------- +switch metric + case 'MSE' + scores.MSE = mse; + case 'MSSIM' + scores.MSSIM = mssim; + case 'VIF' + scores.VIF = vif; + case 'IFC' + scores.IFC = ifc; + case 'PSNR' + scores.PSNR = psnr; + case 'MAD' + scores.MAD = mad; +end + +return + diff --git a/evaluate/evaluation_code/get_best_metric_value2.m b/evaluate/evaluation_code/get_best_metric_value2.m new file mode 100644 index 0000000..2208e41 --- /dev/null +++ b/evaluate/evaluation_code/get_best_metric_value2.m @@ -0,0 +1,18 @@ +function val = get_best_metric_value2(score,metric,img,kernel) + +switch metric + case 'MSE' + val = abs(min(score(:))); + case 'PSNR' + val = abs(max(score(:))); + case 'MSSIM' + val = abs(max(score(:))); + case 'MAD' + val = abs(min(score(:))); + case 'IFC' + val = abs(max(score(:))); + case 'VIF' + val = abs(max(score(:))); +end + +return \ No newline at end of file diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/configure_metrix_mux.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/configure_metrix_mux.m new file mode 100644 index 0000000..ded6c31 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/configure_metrix_mux.m @@ -0,0 +1,88 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% FUNCTION: configure_metrix_mux +%%% +%%% INPUTS: NONE +%%% +%%% OUTPUTS: NONE +%%% +%%% CHANGES: Sets the Matlab path variable to include folders that execute +%%% quality metric computation routines contained in the MeTriX MuX +%%% package, and compiles any non-Matlab code used for faster +%%% computation. Specifically, the routine searches for any .m file +%%% in the 'metrix' folder starting with the prefix +%%% 'compile_metrix_' and executes it. +%%% +%%% NOTES: This routine is the universal setup command for the MeTriX MuX +%%% package. All configuration operations for the package are +%%% accomplished by calling +%%% +%%% >> configure_metrix_mux +%%% +%%% from the Matlab prompt. +%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Author: Matthew Gaubatz +%%% Version: 1.0 +%%% Date: 01/05/2007 +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Copyright (c) 2007 Visual Communications Lab, Cornell University +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Permission to use, copy, modify, distribute and sell this software +%%% and its documentation for any purpose is hereby granted without fee, +%%% provided that the above copyright notice appear in all copies and +%%% that both that copyright notice and this permission notice appear +%%% in supporting documentation. VCL makes no representations about +%%% the suitability of this software for any purpose. +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% DISCLAIMER: +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% The code provided hereunder is provided as is without warranty +%%% of any kind, either express or implied, including but not limited +%%% to the implied warranties of merchantability and fitness for a +%%% particular purpose. The author(s) shall in no event be liable for +%%% any damages whatsoever including direct, indirect, incidental, +%%% consequential, loss of business profits or special damages. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +function configure_metrix_mux + +%%% +%%% add MeTriX MuX routines to the Matlab path +%%% +fprintf('Setting MeTriX MuX path...'); +configure_metrix_mux_name = 'configure_metrix_mux.m'; +configure_metrix_mux_path = which( configure_metrix_mux_name ); +metrix_mux_path = configure_metrix_mux_path( 1:end-length( configure_metrix_mux_name ) ); +path( genpath(metrix_mux_path), path ); +savepath; +fprintf('[Done!]\n'); + +%%% +%%% create list of compilation routines +%%% +fprintf('Compiling list of compilations routines...'); +compile_file_list = dir('metrix/compile_metrix_*.m'); +fprintf('%i found...', length(compile_file_list)); +fprintf('[Done!]\n'); + +%%% +%%% execute compilation routines +%%% +fprintf('Executing compilation routines...\n'); +for k = 1:length(compile_file_list) + + %%% + %%% removing the '.m' from each compilation file + %%% name to retrieve the routine to be invoked + %%% + compile_command_k = compile_file_list(k).name(1:end-2); + fprintf('%i - %s\n', k, compile_command_k ); + feval( compile_command_k ); + +end +fprintf('[Done!]\n'); + +test_metrix_mux; diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/get_name_cell_metrix_mux.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/get_name_cell_metrix_mux.m new file mode 100644 index 0000000..944f685 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/get_name_cell_metrix_mux.m @@ -0,0 +1,55 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% FUNCTION: get_name_cell_metrix_mux +%%% +%%% INPUTS: NONE +%%% +%%% OUTPUTS: A cell containg the names of all metrix indicator strings +%%% associated with metrics supported by the MeTriX MuX +%%% package. +%%% +%%% CHANGES: NONE +%%% +%%% NOTES: If support for an additional algorithm is added, an appropriate +%%% indicator string should be added using this routine. +%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Author: Matthew Gaubatz +%%% Version: 1.1 +%%% Date: 01/05/2007 +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Copyright (c) 2007 Visual Communications Lab, Cornell University +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Permission to use, copy, modify, distribute and sell this software +%%% and its documentation for any purpose is hereby granted without fee, +%%% provided that the above copyright notice appear in all copies and +%%% that both that copyright notice and this permission notice appear +%%% in supporting documentation. VCL makes no representations about +%%% the suitability of this software for any purpose. +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% DISCLAIMER: +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% The code provided hereunder is provided as is without warranty +%%% of any kind, either express or implied, including but not limited +%%% to the implied warranties of merchantability and fitness for a +%%% particular purpose. The author(s) shall in no event be liable for +%%% any damages whatsoever including direct, indirect, incidental, +%%% consequential, loss of business profits or special damages. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +function metrix_name_cell = get_name_cell_metrix_mux + +metrix_name_cell{1} = 'mse'; +metrix_name_cell{2} = 'psnr'; +metrix_name_cell{3} = 'ssim'; +metrix_name_cell{4} = 'mssim'; +metrix_name_cell{5} = 'vsnr'; +metrix_name_cell{6} = 'vif'; +metrix_name_cell{7} = 'vifp'; +metrix_name_cell{8} = 'uqi'; +metrix_name_cell{9} = 'ifc'; +metrix_name_cell{10} = 'nqm'; +metrix_name_cell{11} = 'wsnr'; +metrix_name_cell{12} = 'snr'; diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/index.html b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/index.html new file mode 100644 index 0000000..731361a --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/index.html @@ -0,0 +1,305 @@ + + + + +MetriX MuX Home Page + + + + + + + +=====================================================
+MeTriX MuX Visual Quality Assessment Package README (v. 1.1)      Version 1.1 has been released! To read more about this version, click here. +
+=====================================================
+
+1. Introduction: WHAT MeTriX MuX is, and WHO should use it. +

+2. Installation: HOW to obtain and configure MeTriX MuX. +

+3. Instructions: HOW to use MeTriX MuX. +

+4. Organization: HOW the files in the package are structured. +

+5. Modification: WHAT has been done to code written by other researchers. +

+6. Information: WHERE users can learn more about visual quality assessment algorithms. +

+7. Invitation: WHERE to send comments or feedback, which is encouraged! +

+8. Modernization: WHICH bugs have been fixed, and what features have been added (versioning information). +

+
+ + +===============
+1. INTRODUCTION
+===============
+
+MeTriX MuX is a Matlab package that implements wrapper code for a variety of visual quality assessment algorithms. A visual quality assessment algorithm is a function that assesses the difference between an original image and a distorted version of the image. The algorithms involved in this package, for the most part, were designed to operate on two images of the same size. If the images are not the same size, then the algorithms included herein do not necessarily apply. +

+Please notice that the quality assessment algorithms included in this package are the product of the devout research and hard work of many different researchers. The authors of this particular package are not in any way trying to take credit for any of the algorithms. In fact, many of these hard working researchers have made code available that computes the respective quality assessment algorithms, for which the authors are extremely grateful. As a result, almost all of the quality assessment code that appears in this package in its original form. +

+The only contribution of this package, if anything, is wrapper code. The intent of the authors is to make a large number of quality assessment algorithms accessible through a common interface, and to facilitate error condition checks such that it should be possible to apply any quality assessment algorithm with any pair of images. Back when Ezra Cornell was working on image quality assessment, he dropped this gem, which has become our M.O.: +

+"I would create a Matlab-based image quality assessment package such that any two images can be compared with any quality assessment algorithm on any platform [running Matlab R14 or higher]." +

+Who should use MeTriX MuX? If you are already quite skilled in the art, and have formed opinions regarding what algorithms are useful for what tasks, perhaps this package is not of interest. On the other hand, if you are curious about how a visual quality assessment algorithm might be applied to a particular problem, and you would like to throw a handful of approaches at the problem with minimal effort, then MeTriX MuX is for you! +

+
+ +
+===============
+2. INSTALLATION
+===============
+
+1. Download
http://foulard.ece.cornell.edu/gaubatz/metrix_mux/metrix_mux_1.1.zip.
+2. Extract the contents of this file to your hard drive.
+3. Obtain a copy of Matlab R14 or higher.
+4. Start Matlab, and set your directory to the newly extracted 'metrix_mux' folder.
+5. Run the +
+configure_metrix_mux script. +That is, at the prompt, type +

+
>> configure_metrix_mux +

+Presumably, if you are reading this file, you have at least completed steps 1 and 2 successfully. All the configuration script does is update the Matlab path and run some MEX-file building routines. If the +
configure_metrix_mux routine completes successfully, the package should "just work". Earlier versions of Matlab may be supported eventually, and some may even work now, but this release of the package is only geared towards Matlab releases 14 and up. +

+
+ + +===============
+3. INSTRUCTIONS
+===============
+
+1. Read an image into Matlab.
+2. Read a distorted version of that image into Matlab.
+3. Call the
metrix_mux function, with the original image as the first argument, the distorted image as the second argument, and a descriptor representing which algorithm to use to compare them for the third argument.
+

+The following snippet of code illustrates how, for example, the package should be used to compare 'lena.png' with a distorted version of the same image, 'lena_messed_up.png', using structural similarity index to measure the difference between the two. +

+
>> reference_image = double( imread('lena.png') );
+>> distorted_image = double( imread('lena_messed_up.png') );
+>> distorted_ssim_index = metrix_mux( reference_image, distorted_image, 'SSIM' );

+
+IMPORTANT NOTE: This package expects that input image data is scaled as it would be in a typical image file, that is, that the digital values of the pixels fall in the range [0,255]. If the input images are not of the class double, they will be converted to that class before the assessment algorithm is applied. Bounds checking is not performed by this package to avoid accessing each pixel before applying an assessment algorithm. +

+The algorithms currently supported by this package, and their associated indicators, are listed in the table below: +

+ + + + + + + + + + + + + + +
algorithm      indicator string
mean-squared-error      'MSE'
peak signal-to-noise-ratio      'PSNR'
structural similarity index      'SSIM'
multi-scale SSIM index      'MSSIM'
visual signal-to-noise ratio      'VSNR'
visual information fidelity      'VIF'
pixel-based VIF      'VIFP'
universal quality index      'UQI'
information fidelity criterion      'IFC'
noise quality measure      'NQM'
weighted signal-to-noise ratio      'WSNR'
signal-to-noise ratio      'SNR'
+

+There is an "advanced" mode of use that is as follows. Some of the algorithms require an image to be a certain size in order to function properly. Normally, the package performs this preprocessing automatically, but if you are inclined to use the same image for several different comparisons, you can call the preprocessing routine,
+preprocess_metrix_mux, explicitly to prevent the preprocessing routine from doing the same operation multiple times for the same image: +

+
>> reference_image = imread('lena.png') );
+>> reference_image = preprocess_metrix_mux( reference_image );
+>> distorted_image = imread('lena_messed_up.png');
+>> distorted_image = preprocess_metrix_mux( distorted_image );
+>>
+>> distorted_ssim_index = metrix_mux( reference_image, distorted_image, 'SSIM' );
+>> distorted_psnr = metrix_mux( reference_image, distorted_image, 'PSNR' );
+>>
+>> really_distorted_image = imread('lena_really_messed_up.png');
+>> really_distorted_ssim_index = metrix_mux( reference_image, really_distorted_image, 'SSIM' );

+
+In this case, since the "really" distorted image is only used during one comparison, there is nothing gained by manually calling the preprocessing routine, so it is not called. Also, each image is converted to the double class by the preprocess_metrix_mux routine. +In the previous example above, this conversion was not necessary. This preprocessing routine is applied to each image that is passed to the metrix_mux function. If no further preprocessing is required, however, this routine has no effect. +
+
+ANOTHER IMPORTANT NOTE: Please be very aware of what the preprocessing function does, even if you do not intend to call it explicitly. If 'IFC','VIF','VSNR' or 'WSNR' are to be applied, the image is symmetrically extended in both dimensions until each dimension is a multiple of 32 and is at least 128. If the image is a color image, regardless of algorithm is to be applied, the image is converted to a grayscale representation. (Future releases may support color images, but the present version does not.) +

+
+ +
+===============
+4. ORGANIZATION
+===============
+
+The files included in this package are organized into the following structure. Folder are indicated with '+' signs, and files are denoted with '-' signs. The '.' characters represent files or folders that are not named (for space). +

++ MeTriX MuX [base directory] +

+     -
metrix_mux.m +[the main gateway to quality assessment algorithms]
+     -
preprocess_metrix_mux.m +[preprocessing routine, called by +metrix_mux]
+     -
+configure_metrix_mux.m +[installation script]
+     -
+test_metrix_mux.m +[test script, called by the installation script]
+     -
+readme.html [an HTML-based overview of this package]
+
+ + metrix [algorithm-specific wrapper files] +

+     -
+metrix_mse.m +[mean-squared-error wrapper]
+     -
+metrix_ssim.m +[structural similarity wrapper]
+     -
+metrix_vsnr.m +[visual signal-to-noise-ratio wrapper]
+     -
+compile_metrix_vsnr.m +[VSNR MEX hook builder]
+     .
+     .
+     .
+     + ssim [folder with designer-written SSIM index computation code]
+     + vsnr [folder with designer-written VSNR computation code]
+     .
+     .
+     .
+
+ + utilities [non-algorithm-specific routines] +

+     + matlabPyrTools [a Matlab steerable pyramid package]
+     + dwt2d [two-dimensional discrete wavelet transform Matlab code]
+
+

+The main folder contains 5 files: an installation script, a test routine, a preprocessing command, an algorithm computation command, and an .html instructions file. Every user will need to run the installation script,
+configure_metrix_mux, once and will access algorithm computation routines through +metrix_mux. The +metrix_mux routine will call the preprocessing routine, which will modify the input images to allow the assessment algorithms to be applied, if necessary. The test routine is called by the installation script to test that the installed package actually works. +

+Code in the 'metrix' folder contains wrappers for each individual algorithm, as well as custom build routines for compiling any non-Matlab code (non-.m file routines, such as MEX interfaces). +

+Each algorithm wrapper is in a file titled '
metrix_' followed by the name of the algorithm. (While this choice may seem redundant and somewhat unnecessary, it results in much cleaner code than a single file with a giant ugly switch statement.) In the same way, each custom build routine is called 'compile_metrix_', followed by the name of the algorithm. The +'metrix_' functions are called from the +metrix_mux command, and the + 'compile_metrix_' functions are called from the +configure_metrix_mux command. The subfolders within this folder contain designer-created algorithm computation routines, specific to the algorithm denoted by the name of the subfolder. The subfolders of the 'utilities' folder contains code to compute transforms that is called by several of the assessment algorithms. +

+YET ANOTHER IMPORTANT NOTE: Code that implements a steerable pyramid decomposition is needed by several of the algorithms included in this package. As a result, the
matlabPyrTools package has been included in entirety expressly for this purpose. To learn more about the steerable pyramid decomposition, click here. +This decomposition contains several computationally intensive steps. Furthermore, there are in existence a variety of optimizations that speed some of these steps up. If you are one of the intrepid researchers who has established a fully-functioning optimized version of the matlabPyrTools package, by all means, use that version instead of the one included in this package! If it works really well, why not share it? +

+
+ + +===============
+5. MODIFICATION
+===============
+
+Some algorithms have been modified to create a more portable package, but all code provided by image quality assessment algorithm designers has been retained in its original form. If the package uses a modified version of a file created by a different author, the suffix
_modified is attached the file name. Furthermore, all comments added by the author of the MeTriX MuX package appear in these particular files as %%%MM%%%, to make the nature of the modifications as clear as possible. Modified files are always placed in the same folders as the originals. +

+
+ +
+==============
+6. INFORMATION
+==============
+
+Again, the author did not design any of the algorithms included in this package, but only has provided wrapper code such that a variety of algorithms can be easily accessed through a common interface. This package is available at the following website: +

+
http://foulard.ece.cornell.edu/gaubatz/metrix_mux/ +

+This package uses each included quality assessment algorithm with default settings for input parameters. Interested users are strongly encouraged to read the documentation associated with individual quality assessment algorithms in order to gain a better understanding of how to use the algorithms. +

+More information for the included algorithms and/or original code can be found at the following websites: +

+ + + + + + + + + + + + + + + + + + + +
algorithmwebsite
mean-squared-error (MSE)    http://foulard.ece.cornell.edu/gaubatz/metrix_mux/MSE.html
peak signal-to-noise ratio (PSNR)    [see above]
signal-to-noise ratio (SNR)    [see above]
    
structural similarity (SSIM) index    http://www.ece.uwaterloo.ca/~z70wang/research/ssim/
multi-scale SSIM index    [see above]
    
visual signal-to-noise ratio (VSNR)    http://foulard.ece.cornell.edu/dmc27/vsnr/vsnr.html
    
visual information fidelity (VIF)    http://live.ece.utexas.edu/research/quality/
pixel-based VIF    [see above]
information fidelity criterion (IFC)    [see above]
    
universal quality index (UQI)    http://www.cns.nyu.edu/~zwang/files/research/quality_index/demo.html
    
noise quality measure (NQM)    http://signal.ece.utexas.edu/software/
weighted signal-to-noise ratio (WSNR)    [see above]
+

+ + +=============
+7. INVITATION
+=============
+The goal of this package is to provide convenient, portable, efficient access to image quality assessment algorithms in Matlab. This goal has not yet been achieved in full, but progress has been made. Initial focus is on portability, and later releases will involved optimizations. +

+Please send all comments, questions, suggestions of feedback (especially if you would like to contribute) to + +

+Thanks! +

+ +
+================
+8. MODERNIZATION
+================
+This section is dedicated to explanations regarding new releases, the latest features, bug fixes, as well as access to previous versions of MeTriX MuX. +

+
MeTriX MuX Version 1.1 represents the latest release, with some bug fixes and additional features. Here's what's new in version 1.1:

+
  • modified code has been added such that NQM and WSNR functions work with non-square images
  • +
  • the standard signal-to-noise-ratio (SNR) ratio is now included
  • +
  • bug fix: the default angle in metrix_nqm.m is now computed in degrees (instead of radians)
  • +
  • bug fix: metrix_wsnr.m calls code to compute WSNR (instead of IFC)
  • +
  • bug fix: metrix_mux.m handles numerical indicator strings without causing an error
  • +

    +Special thanks the Daniele Ticca and David Rouse for their input! +

    +Download older versions here: +

    +MeTriX MuX Version 1.0 + +
    +
    +
    + + + +=============================
    +EXPLANATION and DISCLAMATION
    +=============================
    +It should be noted that the name of the package implies that it acts as multiplexor for image quality metrics, which strictly speaking, are not the same things as quality assessment algorithms. The authors realize that it is not necessarily appropriate to refer to a given quality assessment algorithm as a "metric", since in the mathematical sense, it may not be one. They feel, however, that the notational convenience of referring to a quality assessment tool colloquially, if not incorrectly, as a "metric" outweighs the chore of using one the multi-syllabic alternatives. To remind users that the package does not in fact act as a wrapper for quality metrics, the word "metric" is transmogrified into the form "metrix". Also, according to a limited set of test users, the title "metrix_mux" was more memorable than the technically more correct yet loquacious alternative, "perceptual_quality_assessment_algorithm_mux". +

    +The wrapper code included in this package is provided as is without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and fitness for a particular purpose. The author(s) shall in no event be liable for any damages whatsoever including direct, indirect, incidental, consequential, loss of business profits or special damages. +
    +
    + + + + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/compile_metrix_vsnr.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/compile_metrix_vsnr.m new file mode 100644 index 0000000..0ea926d --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/compile_metrix_vsnr.m @@ -0,0 +1,59 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% FUNCTION: compile_metrix_vsnr +%%% +%%% INPUTS: NONE +%%% +%%% OUTPUTS: NONE +%%% +%%% CHANGES: Builds a MEX interface to a DWT routine called by the VSNR +%%% metric code; if the build does not succeed, the package defaults +%%% to using a Matlab-only approach. Currently, the MEX interface +%%% is only supported for newer Windows-based platforms. +%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Author: Matthew Gaubatz +%%% Version: 1.0 +%%% Date: 01/05/2007 +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Copyright (c) 2007 Visual Communications Lab, Cornell University +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Permission to use, copy, modify, distribute and sell this software +%%% and its documentation for any purpose is hereby granted without fee, +%%% provided that the above copyright notice appear in all copies and +%%% that both that copyright notice and this permission notice appear +%%% in supporting documentation. VCL makes no representations about +%%% the suitability of this software for any purpose. +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% DISCLAIMER: +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% The code provided hereunder is provided as is without warranty +%%% of any kind, either express or implied, including but not limited +%%% to the implied warranties of merchantability and fitness for a +%%% particular purpose. The author(s) shall in no event be liable for +%%% any damages whatsoever including direct, indirect, incidental, +%%% consequential, loss of business profits or special damages. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +function compile_metric_vsnr + +fprintf(' Building VSNR MEX interface for DWT...'); + +if ispc == 1 + fprintf('(Windows)...'); + try + compile_imdwt_modified('imdwt_modified.dll'); + catch + fprintf(' [Failed!]\n'); + fprintf(' Defaulting to Matlab-based DWT...'); + end +else + fprintf('(Linux/Mac)...'); + fprintf(' [Not Supported!]\n'); + fprintf(' Defaulting to Matlab-based DWT...'); +end + +fprintf('[Success!]\n'); + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/ifc/ifcvec_release/distsub_est_M.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/ifc/ifcvec_release/distsub_est_M.m new file mode 100644 index 0000000..2a05725 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/ifc/ifcvec_release/distsub_est_M.m @@ -0,0 +1,70 @@ +function [g_all, vv_all]=vifsub_est_M(org,dist, subbands, M); + +% uses convolution for determining the parameters of the distortion channel +% Called by vifvec.m + +tol = 1e-15; % tolernace for zero variance. Variance below this is set to zero, and zero is set to this value to avoid numerical issues. + + +for i=1:length(subbands) + sub=subbands(i); + y=org{sub}; + yn=dist{sub}; + + % compute the size of the window used in the distortion channel estimation + lev=ceil((sub-1)/6); + winsize=2^lev+1; offset=(winsize-1)/2; + win = ones(winsize); + + % force subband size to be multiple of M + newsize=floor(size(y)./M)*M; + y=y(1:newsize(1),1:newsize(2)); + yn=yn(1:newsize(1),1:newsize(2)); + + % Correlation with downsampling. This is faster than downsampling after + % computing full correlation. + winstep=[M M]; + winstart=[1 1].*floor(M/2)+1; + winstop=size(y)-ceil(M/2)+1; + + % mean + mean_x = corrDn(y,win/sum(win(:)),'reflect1',winstep, winstart,winstop); + mean_y = corrDn(yn,win/sum(win(:)),'reflect1',winstep, winstart,winstop); + % cov + cov_xy = corrDn(y.*yn, win, 'reflect1',winstep, winstart,winstop) - sum(win(:)).*mean_x.*mean_y; + % var + ss_x = corrDn(y.^2,win, 'reflect1',winstep, winstart,winstop) - sum(win(:)).*mean_x.^2; + ss_y = corrDn(yn.^2,win, 'reflect1',winstep, winstart,winstop) - sum(win(:)).*mean_y.^2; + + + % get rid of numerical problems, very small negative numbers, or very + % small positive numbers, or other theoretical impossibilities. + ss_x(ss_x<0)=0; + ss_y(ss_y<0)=0; + + % Regression + g = cov_xy./(ss_x+tol); + + % Variance of error in regression + vv = (ss_y - g.*cov_xy)/(sum(win(:))); + + % get rid of numerical problems, very small negative numbers, or very + % small positive numbers, or other theoretical impossibilities. + g (ss_x < tol) = 0; + vv (ss_x < tol) = ss_y (ss_x < tol); + ss_x(ss_x 5) + ssim_index = -Inf; + ssim_map = -Inf; + return; +end + +if (size(img1) ~= size(img2)) + ssim_index = -Inf; + ssim_map = -Inf; + return; +end + +[M N] = size(img1); + +if (nargin == 2) + if ((M < 11) | (N < 11)) + ssim_index = -Inf; + ssim_map = -Inf; + return + end + window = fspecial('gaussian', 11, 1.5); % + K(1) = 0.01; % default settings + K(2) = 0.03; % + L = 255; % +end + +if (nargin == 3) + if ((M < 11) | (N < 11)) + ssim_index = -Inf; + ssim_map = -Inf; + return + end + window = fspecial('gaussian', 11, 1.5); + L = 255; + if (length(K) == 2) + if (K(1) < 0 | K(2) < 0) + ssim_index = -Inf; + ssim_map = -Inf; + return; + end + else + ssim_index = -Inf; + ssim_map = -Inf; + return; + end +end + +if (nargin == 4) + [H W] = size(window); + if ((H*W) < 4 | (H > M) | (W > N)) + ssim_index = -Inf; + ssim_map = -Inf; + return + end + L = 255; + if (length(K) == 2) + if (K(1) < 0 | K(2) < 0) + ssim_index = -Inf; + ssim_map = -Inf; + return; + end + else + ssim_index = -Inf; + ssim_map = -Inf; + return; + end +end + +if (nargin == 5) + [H W] = size(window); + if ((H*W) < 4 | (H > M) | (W > N)) + ssim_index = -Inf; + ssim_map = -Inf; + return + end + if (length(K) == 2) + if (K(1) < 0 | K(2) < 0) + ssim_index = -Inf; + ssim_map = -Inf; + return; + end + else + ssim_index = -Inf; + ssim_map = -Inf; + return; + end +end + +C1 = (K(1)*L)^2; +C2 = (K(2)*L)^2; +window = window/sum(sum(window)); +img1 = double(img1); +img2 = double(img2); + +mu1 = filter2(window, img1, 'valid'); +mu2 = filter2(window, img2, 'valid'); +mu1_sq = mu1.*mu1; +mu2_sq = mu2.*mu2; +mu1_mu2 = mu1.*mu2; +sigma1_sq = filter2(window, img1.*img1, 'valid') - mu1_sq; +sigma2_sq = filter2(window, img2.*img2, 'valid') - mu2_sq; +sigma1 = real(sqrt(sigma1_sq)); +sigma2 = real(sqrt(sigma2_sq)); +sigma12 = filter2(window, img1.*img2, 'valid') - mu1_mu2; + +if (C1 > 0 && C2 > 0) + M = (2*mu1_mu2 + C1)./(mu1_sq + mu2_sq + C1); + V = (2*sigma1.*sigma2 + C2)./(sigma1_sq + sigma2_sq + C2); + R = (sigma12 + C2/2)./(sigma1.*sigma2+C2/2); + ssim_map = M.*V.*R; +else + ssim_ln = 2*mu1_mu2; + ssim_ld = mu1_sq + mu2_sq; + M = ones(size(mu1)); + index_l = (ssim_ld>0); + M(index_l) = ssim_ln(index_l)./ssim_ld(index_l); + + ssim_cn = 2*sigma1.*sigma2; + ssim_cd = sigma1_sq + sigma2_sq; + V = ones(size(mu1)); + index_c = (ssim_cd>0); + V(index_c) = ssim_cn(index_c)./ssim_cd(index_c); + + ssim_sn = sigma12; + ssim_sd = sigma1.*sigma2; + R = ones(size(mu1)); + index1 = sigma1>0; + index2 = sigma2>0; + index_s = (index1.*index2>0); + R(index_s) = ssim_sn(index_s)./ssim_sd(index_s); + index_s = (index1.*not(index2)>0); + R(index_s) = 0; + index_s = (not(index1).*index2>0); + R(index_s) = 0; + + ssim_map = M.*V.*R; +end + +ssim = mean2(ssim_map); + +%%%MM%%% +%%%MM%%% [BEGIN CHANGE] +%%%MM%%% + +%%%MM%%% +%%%MM%%% create per-component maps +%%%MM%%% +map_obj.M = M; +map_obj.V = V; +map_obj.R = R; + +%%%MM%%% +%%%MM%%% compute per-component map mean values +%%%MM%%% +composite_mean_vec = [mean2(M) mean2(V) mean2(R)]; + +%%%MM%%% +%%%MM%%% [END CHANGE] +%%%MM%%% + +return \ No newline at end of file diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/cmaskn.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/cmaskn.m new file mode 100644 index 0000000..61a08c6 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/cmaskn.m @@ -0,0 +1,23 @@ +%Bradley and Ozhawa masking functions +%Niranjan Damera-Venkata +%March 1998 + +function y=cmaskn(c,ci,a,ai,i,N) + +c=c(:); +ci=ci(:); + +t=find(abs(ci)>1); +ci(t)=1; +ai=ai(:); +a=a(:); + +ct=ctf(i); +T=ct*(.86*((c/ct)-1)+.3); + +a1=find( (abs(ci-c)-T)<0); + +ai(a1)=a(a1); + +y=reshape(ai,N,N); + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/ctf.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/ctf.m new file mode 100644 index 0000000..1676bb1 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/ctf.m @@ -0,0 +1,13 @@ +%Bandpass contrast threshold function +%You may want to modify the default function based on your imaging system +%measurements +%Niranjan Damera-Venkata +% March 1998 + +function y=ctf(f_r) +s=size(f_r); +f_r=f_r(:); + +y=1./(200*(2.6*(0.0192+0.114*(f_r)).*exp(-(0.114*(f_r)).^(1.1)))); + +y=reshape(y,s(1),s(2)); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/dm.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/dm.m new file mode 100644 index 0000000..613227d --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/dm.m @@ -0,0 +1,32 @@ +function y=dm(H,nfreq) +%DM Distortion measure for linear frequency distortion +% RATIO = DM(DTF, NFREQ) computes the normalized CSF weighted +% deviation of the DTF from unity in visual passband. +% NFREQ is the nyquist frequency +% The user must compute the 2-D DTF(radial averaging not required) +% for his/her system. +% +% Ref: N. Damera-Venkata, T. Kite, W. Geisler, B. Evans and A. Bovik, "Image +% Quality Assessment Based on a Degradation Model", IEEE Trans. on Image +% Processing, Vol. 9, No. 4, Apr. 2000 (see pg 641 on computing DTF) +% +% Ref: G. Arslan, M. Valliappan, and B. L. Evans, ``Quality Assessment of +% Compression Techniques for Synthetic Aperture Radar Images'', Proc. IEEE Int. +% Conf. on Image Processing, Oct. 25-28, 1999, vol. III, pp. 857-861, Kobe, Japan. +% +% The version implemented here is from Arslan et. al. +% This is a modified verion of the DM of Damera-Venkata et. al. + +% Function calls: WEIGHT_FREQ_CSF + +% Niranjan Damera-Venkata +% August 2000 + + +[wt, csf] = weight_freq_csf(abs(ones(size(H))-H),nfreq); +num = sum(sum(wt)); +den = sum(sum(abs(csf))); + +y = (num/den); + + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/gthresh.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/gthresh.m new file mode 100644 index 0000000..fa8d2b8 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/gthresh.m @@ -0,0 +1,13 @@ +%Global detection thresholds +%Niranjan Damera-Venkata +%March 1998 + +function y=gthresh(x,T,z,N) + +x=x(:); +z=z(:); +a=find(abs(x)=1])+4.*(~([r+2<=4].*[r+2>=1])) )-pi)); + +G_1=0.5*(1+cos(pi*log2(r.*([r<=4].*[r>=1])+4.*(~([r<=4].*[r>=1])) )-pi)); + +G_2=0.5*(1+cos(pi*log2(r.*([r>=2].* [r<=8])+.5.*(~([r>=2].* [r<=8]))))); + +G_3=0.5*(1+cos(pi*log2(r.*([r>=4].*[r<=16])+4.*(~([r>=4].*[r<=16])) )-pi)); + +G_4=0.5*(1+cos(pi*log2(r.*([r>=8].* [r<=32])+.5.*(~([r>=8].* [r<=32]))))); + +G_5=0.5*(1+cos(pi*log2(r.*([r>=16].*[r<=64])+4.*(~([r>=16].*[r<=64])) )-pi)); + + +GS_0=fftshift(G_0); +GS_1=fftshift(G_1); +GS_2=fftshift(G_2); +GS_3=fftshift(G_3); +GS_4=fftshift(G_4); +GS_5=fftshift(G_5); + + +L_0=((GS_0).*FO); LI_0=(GS_0.*FI); + +l_0=real(ifft2(L_0));li_0=real(ifft2(LI_0)); + +A_1=GS_1.*FO; AI_1=(GS_1.*FI); + +a_1=real(ifft2(A_1));ai_1=real(ifft2(AI_1)); + +A_2=GS_2.*FO;AI_2=GS_2.*FI; + +a_2=real(ifft2(A_2));ai_2=real(ifft2(AI_2)); + +A_3=GS_3.*FO;AI_3=GS_3.*FI; + +a_3=real(ifft2(A_3));ai_3=real(ifft2(AI_3)); + +A_4=GS_4.*FO;AI_4=GS_4.*FI; + +a_4=real(ifft2(A_4));ai_4=real(ifft2(AI_4)); + +A_5=GS_5.*FO;AI_5=GS_5.*FI; + +a_5=real(ifft2(A_5));ai_5=real(ifft2(AI_5)); + + +clear FO; +clear FI; + +clear G_0; +clear G_1; +clear G_2; +clear G_3; +clear G_4; +clear G_5; + + +clear GS_0; +clear GS_1; +clear GS_2; +clear GS_3; +clear GS_4; +clear GS_5; + +%%%%%%%%%%%%%%%%%%%%%Compute contrast images%%%%%%%%%%%%%%%%%%% +c1=((a_1./(l_0))); +c2=(a_2./(l_0+a_1)); +c3=(a_3./(l_0+a_1+a_2)); +c4=(a_4./(l_0+a_1+a_2+a_3)); +c5=(a_5./(l_0+a_1+a_2+a_3+a_4)); + +ci1=(ai_1./(li_0)); +ci2=(ai_2./(li_0+ai_1)); +ci3=(ai_3./(li_0+ai_1+ai_2)); +ci4=(ai_4./(li_0+ai_1+ai_2+ai_3)); +ci5=(ai_5./(li_0+ai_1+ai_2+ai_3+ai_4)); + + +%%%%%%%%%%%%%%%%%%%%%%Detection Thresholds%%%%%%%%%%%%%%%%%%%%%% + +d1=ctf(2/VA); +d2=ctf(4/VA); +d3=ctf(8/VA); +d4=ctf(16/VA); +d5=ctf(32/VA); + +%%%%%%%%%%%%%%%%%%Account for suprathrshold effects (See Bradley and Ozhawa)%%%% +ai_1=cmaskn(c1,ci1,a_1,ai_1,1,N); +ai_2=cmaskn(c2,ci2,a_2,ai_2,2,N); +ai_3=cmaskn(c3,ci3,a_3,ai_3,3,N); +ai_4=cmaskn(c4,ci4,a_4,ai_4,4,N); +ai_5=cmaskn(c5,ci5,a_5,ai_5,5,N); + +%%%%%%%%%%Apply detection thresholds%%%%%%%%%%%%%%%%%%%%%% +A_1=gthresh(c1,d1,a_1,N);AI_1=gthresh(ci1,d1,ai_1,N); +A_2=gthresh(c2,d2,a_2,N);AI_2=gthresh(ci2,d2,ai_2,N); +A_3=gthresh(c3,d3,a_3,N);AI_3=gthresh(ci3,d3,ai_3,N); +A_4=gthresh(c4,d4,a_4,N);AI_4=gthresh(ci4,d4,ai_4,N); +A_5=gthresh(c5,d5,a_5,N);AI_5=gthresh(ci5,d5,ai_5,N); + + +%%%%%%%%reconstruct images%%%%%%%%%%%%%%%%%%% +y1=(A_1+A_2+A_3+A_4+A_5); +y2=(AI_1+AI_2+AI_3+AI_4+AI_5); + +%%%%%%%%%%%%%%%compute SNR%%%%%%%%%%%%%%%%%%%% +square_err=(y1-y2).*(y1-y2); +np=sum(sum(square_err)); + +sp=sum(sum(y1.^2)); + +y=10*log10(sp/np); + + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/nqm_modified.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/nqm_modified.m new file mode 100644 index 0000000..cbab6d8 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/nqm/ImageQuality/nqm_modified.m @@ -0,0 +1,242 @@ +function y=nqm(O,I,VA,N) +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%%% NQM, Modified Version +%%%MM%%% +%%%MM%%% The author of this modified version is with the Visual +%%%MM%%% Communications Laboratory, in department of Electrical and +%%%MM%%% Computer Engineering at Cornell University. The original +%%%MM%%% code was written by Niranjan Damera-Venkata at U.T. Austin. All +%%%MM%%% of the information and documentation provided with the original +%%%MM%%% code is included below. +%%%MM%%% +%%%MM%%% This version of the NQM computation routine is identical to the +%%%MM%%% original routine, except that it can handle non-square images. +%%%MM%%% The functions 'cmaskn' and 'gthresh' are no longer called; +%%%MM%%% instead, locally defined versions of the same routines, extended +%%%MM%%% for the same purpose, are invoked. +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%%% Author: Matthew Gaubatz +%%%MM%%% Version: 1.0 +%%%MM%%% Date: 04/15/2007 +%%%MM%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%%% Copyright (c) 2007 Visual Communications Lab, Cornell University +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%NQM Nonlinear Weighted Signal to noise ratio for additive noise. +% RATIO = NQM(MOD_RES,RES,ANGLE, DIM) computes the nonlinear weighted signal to +% noise ratio of the restored image MOD_RES with respect to the model +% restored image MOD_RES and returns the result in dB. +% ANGLE is the viewing angle. DIM is the [DIM DIM] dimension of the image +% +% Note that NQM is a measure of additive noise only. The model restored +% image is assumed to have the same freq. distortion as the restored image. +% +% Function calls: CTF, CMASKN, GTHRESH +% +% Ref: N. Damera-Venkata, T. Kite, W. Geisler, B. Evans and A. Bovik, "Image +% Quality Assessment Based on a Degradation Model", IEEE Trans. on Image +% Processing, Vol. 9, No. 4, Apr. 2000 +% +% Ref: E. Peli, "Contrast in Complex Images", Journal of the Optical +% Society of America A, Vol. 7, No. 10, Oct. 1990 +% +% See also CSFMOD, CSF, PSNR, WSNR +% +% Niranjan Damera-Venkata March 1998 + + +[x,y]=size(O); + +%%%MM%%% +%%%MM%%% [BEGIN CHANGE] +%%%MM%%% +%%%MM%%%[xplane,yplane]=meshgrid(-x/2:x/2-1); +[xplane,yplane]=meshgrid(-y/2:y/2-1,-x/2:x/2-1); +%%%MM%%% +%%%MM%%% [END CHANGE] +%%%MM%%% +plane=(xplane+i*yplane); +r=abs(plane); + +FO=fft2(O); +FI=fft2(I); + + +%%%%%%%%%%% Decompose image with cosine log filter bank %%%%%%%%%%%%%%%% +G_0=0.5*(1+cos(pi*log2((r+2).*([r+2<=4].*[r+2>=1])+4.*(~([r+2<=4].*[r+2>=1])) )-pi)); + +G_1=0.5*(1+cos(pi*log2(r.*([r<=4].*[r>=1])+4.*(~([r<=4].*[r>=1])) )-pi)); + +G_2=0.5*(1+cos(pi*log2(r.*([r>=2].* [r<=8])+.5.*(~([r>=2].* [r<=8]))))); + +G_3=0.5*(1+cos(pi*log2(r.*([r>=4].*[r<=16])+4.*(~([r>=4].*[r<=16])) )-pi)); + +G_4=0.5*(1+cos(pi*log2(r.*([r>=8].* [r<=32])+.5.*(~([r>=8].* [r<=32]))))); + +G_5=0.5*(1+cos(pi*log2(r.*([r>=16].*[r<=64])+4.*(~([r>=16].*[r<=64])) )-pi)); + + +GS_0=fftshift(G_0); +GS_1=fftshift(G_1); +GS_2=fftshift(G_2); +GS_3=fftshift(G_3); +GS_4=fftshift(G_4); +GS_5=fftshift(G_5); + + +L_0=((GS_0).*FO); LI_0=(GS_0.*FI); + +l_0=real(ifft2(L_0));li_0=real(ifft2(LI_0)); + +A_1=GS_1.*FO; AI_1=(GS_1.*FI); + +a_1=real(ifft2(A_1));ai_1=real(ifft2(AI_1)); + +A_2=GS_2.*FO;AI_2=GS_2.*FI; + +a_2=real(ifft2(A_2));ai_2=real(ifft2(AI_2)); + +A_3=GS_3.*FO;AI_3=GS_3.*FI; + +a_3=real(ifft2(A_3));ai_3=real(ifft2(AI_3)); + +A_4=GS_4.*FO;AI_4=GS_4.*FI; + +a_4=real(ifft2(A_4));ai_4=real(ifft2(AI_4)); + +A_5=GS_5.*FO;AI_5=GS_5.*FI; + +a_5=real(ifft2(A_5));ai_5=real(ifft2(AI_5)); + + +clear FO; +clear FI; + +clear G_0; +clear G_1; +clear G_2; +clear G_3; +clear G_4; +clear G_5; + + +clear GS_0; +clear GS_1; +clear GS_2; +clear GS_3; +clear GS_4; +clear GS_5; + +%%%%%%%%%%%%%%%%%%%%%Compute contrast images%%%%%%%%%%%%%%%%%%% +c1=((a_1./(l_0))); +c2=(a_2./(l_0+a_1)); +c3=(a_3./(l_0+a_1+a_2)); +c4=(a_4./(l_0+a_1+a_2+a_3)); +c5=(a_5./(l_0+a_1+a_2+a_3+a_4)); + +ci1=(ai_1./(li_0)); +ci2=(ai_2./(li_0+ai_1)); +ci3=(ai_3./(li_0+ai_1+ai_2)); +ci4=(ai_4./(li_0+ai_1+ai_2+ai_3)); +ci5=(ai_5./(li_0+ai_1+ai_2+ai_3+ai_4)); + + +%%%%%%%%%%%%%%%%%%%%%%Detection Thresholds%%%%%%%%%%%%%%%%%%%%%% + +d1=ctf(2/VA); +d2=ctf(4/VA); +d3=ctf(8/VA); +d4=ctf(16/VA); +d5=ctf(32/VA); + +%%%%%%%%%%%%%%%%%%Account for suprathrshold effects (See Bradley and Ozhawa)%%%% +%%%MM%%% +%%%MM%%% [BEGIN CHANGE] +%%%MM%%% +%%%MM%%% the following change replaces two external function with locally +%%%MM%%% defined versions capable of handling non-square images +%%%MM%%% +%%%MM%%% ai_1=cmaskn(c1,ci1,a_1,ai_1,1,N); +%%%MM%%% ai_2=cmaskn(c2,ci2,a_2,ai_2,2,N); +%%%MM%%% ai_3=cmaskn(c3,ci3,a_3,ai_3,3,N); +%%%MM%%% ai_4=cmaskn(c4,ci4,a_4,ai_4,4,N); +%%%MM%%% ai_5=cmaskn(c5,ci5,a_5,ai_5,5,N); +ai_1=cmaskn_modified(c1,ci1,a_1,ai_1,1); +ai_2=cmaskn_modified(c2,ci2,a_2,ai_2,2); +ai_3=cmaskn_modified(c3,ci3,a_3,ai_3,3); +ai_4=cmaskn_modified(c4,ci4,a_4,ai_4,4); +ai_5=cmaskn_modified(c5,ci5,a_5,ai_5,5); + +%%%%%%%%%%Apply detection thresholds%%%%%%%%%%%%%%%%%%%%%% +%%%MM%%% A_1=gthresh(c1,d1,a_1,N);AI_1=gthresh(ci1,d1,ai_1,N); +%%%MM%%% A_2=gthresh(c2,d2,a_2,N);AI_2=gthresh(ci2,d2,ai_2,N); +%%%MM%%% A_3=gthresh(c3,d3,a_3,N);AI_3=gthresh(ci3,d3,ai_3,N); +%%%MM%%% A_4=gthresh(c4,d4,a_4,N);AI_4=gthresh(ci4,d4,ai_4,N); +%%%MM%%% A_5=gthresh(c5,d5,a_5,N);AI_5=gthresh(ci5,d5,ai_5,N); +A_1=gthresh_modified(c1,d1,a_1);AI_1=gthresh_modified(ci1,d1,ai_1); +A_2=gthresh_modified(c2,d2,a_2);AI_2=gthresh_modified(ci2,d2,ai_2); +A_3=gthresh_modified(c3,d3,a_3);AI_3=gthresh_modified(ci3,d3,ai_3); +A_4=gthresh_modified(c4,d4,a_4);AI_4=gthresh_modified(ci4,d4,ai_4); +A_5=gthresh_modified(c5,d5,a_5);AI_5=gthresh_modified(ci5,d5,ai_5); + +%%%MM%%% +%%%MM%%% [END CHANGE] +%%%MM%%% + +%%%%%%%%reconstruct images%%%%%%%%%%%%%%%%%%% +y1=(A_1+A_2+A_3+A_4+A_5); +y2=(AI_1+AI_2+AI_3+AI_4+AI_5); + +%%%%%%%%%%%%%%%compute SNR%%%%%%%%%%%%%%%%%%%% +square_err=(y1-y2).*(y1-y2); +np=sum(sum(square_err)); + +sp=sum(sum(y1.^2)); + +y=10*log10(sp/np); + + +%%%MM%%% +%%%MM%%% [BEGIN CHANGE] +%%%MM%%% +%%%MM%%% +%%%MM%%% the following two helper functions were added to help this +%%%MM%%% function process non-square images +%%%MM%%% +function y=cmaskn_modified(c,ci,a,ai,i) +[H,W] = size(c); + +c=c(:); +ci=ci(:); + +t=find(abs(ci)>1); +ci(t)=1; +ai=ai(:); +a=a(:); + +ct=ctf(i); +T=ct*(.86*((c/ct)-1)+.3); + +a1=find( (abs(ci-c)-T)<0); + +ai(a1)=a(a1); + +y=reshape(ai,H,W); + +function y=gthresh_modified(x,T,z) + +[H,W] = size(x); + +x=x(:); +z=z(:); +a=find(abs(x) 5) + ssim_index = -Inf; + ssim_map = -Inf; + return; +end + +if (size(img1) ~= size(img2)) + ssim_index = -Inf; + ssim_map = -Inf; + return; +end + +[M N] = size(img1); + +if (nargin == 2) + if ((M < 11) | (N < 11)) + ssim_index = -Inf; + ssim_map = -Inf; + return + end + window = fspecial('gaussian', 11, 1.5); % + K(1) = 0.01; % default settings + K(2) = 0.03; % + L = 255; % +end + +if (nargin == 3) + if ((M < 11) | (N < 11)) + ssim_index = -Inf; + ssim_map = -Inf; + return + end + window = fspecial('gaussian', 11, 1.5); + L = 255; + if (length(K) == 2) + if (K(1) < 0 | K(2) < 0) + ssim_index = -Inf; + ssim_map = -Inf; + return; + end + else + ssim_index = -Inf; + ssim_map = -Inf; + return; + end +end + +if (nargin == 4) + [H W] = size(window); + if ((H*W) < 4 | (H > M) | (W > N)) + ssim_index = -Inf; + ssim_map = -Inf; + return + end + L = 255; + if (length(K) == 2) + if (K(1) < 0 | K(2) < 0) + ssim_index = -Inf; + ssim_map = -Inf; + return; + end + else + ssim_index = -Inf; + ssim_map = -Inf; + return; + end +end + +if (nargin == 5) + [H W] = size(window); + if ((H*W) < 4 | (H > M) | (W > N)) + ssim_index = -Inf; + ssim_map = -Inf; + return + end + if (length(K) == 2) + if (K(1) < 0 | K(2) < 0) + ssim_index = -Inf; + ssim_map = -Inf; + return; + end + else + ssim_index = -Inf; + ssim_map = -Inf; + return; + end +end + +C1 = (K(1)*L)^2; +C2 = (K(2)*L)^2; +window = window/sum(sum(window)); +img1 = double(img1); +img2 = double(img2); + +mu1 = filter2(window, img1, 'valid'); +mu2 = filter2(window, img2, 'valid'); +mu1_sq = mu1.*mu1; +mu2_sq = mu2.*mu2; +mu1_mu2 = mu1.*mu2; +sigma1_sq = filter2(window, img1.*img1, 'valid') - mu1_sq; +sigma2_sq = filter2(window, img2.*img2, 'valid') - mu2_sq; +sigma12 = filter2(window, img1.*img2, 'valid') - mu1_mu2; + +if (C1 > 0 & C2 > 0) + ssim_map = ((2*mu1_mu2 + C1).*(2*sigma12 + C2))./((mu1_sq + mu2_sq + C1).*(sigma1_sq + sigma2_sq + C2)); +else + numerator1 = 2*mu1_mu2 + C1; + numerator2 = 2*sigma12 + C2; + denominator1 = mu1_sq + mu2_sq + C1; + denominator2 = sigma1_sq + sigma2_sq + C2; + ssim_map = ones(size(mu1)); + index = (denominator1.*denominator2 > 0); + ssim_map(index) = (numerator1(index).*numerator2(index))./(denominator1(index).*denominator2(index)); + index = (denominator1 ~= 0) & (denominator2 == 0); + ssim_map(index) = numerator1(index)./denominator1(index); +end + +mssim = mean2(ssim_map); + +return diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/uqi/img_qi.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/uqi/img_qi.m new file mode 100644 index 0000000..0093194 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/uqi/img_qi.m @@ -0,0 +1,118 @@ +function [quality, quality_map] = img_qi(img1, img2, block_size) + +%======================================================================== +% +%Copyright (c) 2001 The University of Texas at Austin +%All Rights Reserved. +% +%This program is free software; you can redistribute it and/or modify +%it under the terms of the GNU General Public License as published by +%the Free Software Foundation; either version 2 of the License, or +%(at your option) any later version. +% +%This program is distributed in the hope that it will be useful, +%but WITHOUT ANY WARRANTY; without even the implied warranty of +%MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +%GNU General Public License for more details. +% +%The GNU Public License is available in the file LICENSE, or you +%can write to the Free Software Foundation, Inc., 59 Temple Place - +%Suite 330, Boston, MA 02111-1307, USA, or you can find it on the +%World Wide Web at http://www.fsf.org. +% +%Author : Zhou Wang +%Version : 1.0 +% +%The authors are with the Laboratory for Image and Video Engineering +%(LIVE), Department of Electrical and Computer Engineering, The +%University of Texas at Austin, Austin, TX. +% +%Kindly report any suggestions or corrections to zwang@ece.utexas.edu +% +%Acknowledgement: +%The author would like to thank Mr. Umesh Rajashekar, the Matlab master +%in our lab, for spending his precious time and giving his kind help +%on writing this program. Without his help, this program would not +%achieve its current efficiency. +% +%======================================================================== +% +%This is an efficient implementation of the algorithm for calculating +%the universal image quality index proposed by Zhou Wang and Alan C. +%Bovik. Please refer to the paper "A Universal Image Quality Index" +%by Zhou Wang and Alan C. Bovik, published in IEEE Signal Processing +%Letters, 2001. In order to run this function, you must have Matlab's +%Image Processing Toobox. +% +%Input : an original image and a test image of the same size +%Output: (1) an overall quality index of the test image, with a value +% range of [-1, 1]. +% (2) a quality map of the test image. The map has a smaller +% size than the input images. The actual size is +% img_size - BLOCK_SIZE + 1. +% +%Usage: +% +%1. Load the original and the test images into two matrices +% (say img1 and img2) +% +%2. Run this function in one of the two ways: +% +% % Choice 1 (suggested): +% [qi qi_map] = img_qi(img1, img2); +% +% % Choice 2: +% [qi qi_map] = img_qi(img1, img2, BLOCK_SIZE); +% +% The default BLOCK_SIZE is 8 (Choice 1). Otherwise, you can specify +% it by yourself (Choice 2). +% +%3. See the results: +% +% qi %Gives the over quality index. +% imshow((qi_map+1)/2) %Shows the quality map as an image. +% +%======================================================================== + +if (nargin == 1 | nargin > 3) + quality = -Inf; + quality_map = -1*ones(size(img1)); + return; +end + +if (size(img1) ~= size(img2)) + quality = -Inf; + quality_map = -1*ones(size(img1)); + return; +end + +if (nargin == 2) + block_size = 8; +end + +N = block_size.^2; +sum2_filter = ones(block_size); + +img1_sq = img1.*img1; +img2_sq = img2.*img2; +img12 = img1.*img2; + +img1_sum = filter2(sum2_filter, img1, 'valid'); +img2_sum = filter2(sum2_filter, img2, 'valid'); +img1_sq_sum = filter2(sum2_filter, img1_sq, 'valid'); +img2_sq_sum = filter2(sum2_filter, img2_sq, 'valid'); +img12_sum = filter2(sum2_filter, img12, 'valid'); + +img12_sum_mul = img1_sum.*img2_sum; +img12_sq_sum_mul = img1_sum.*img1_sum + img2_sum.*img2_sum; +numerator = 4*(N*img12_sum - img12_sum_mul).*img12_sum_mul; +denominator1 = N*(img1_sq_sum + img2_sq_sum) - img12_sq_sum_mul; +denominator = denominator1.*img12_sq_sum_mul; + +quality_map = ones(size(denominator)); +index = (denominator1 == 0) & (img12_sq_sum_mul ~= 0); +quality_map(index) = 2*img12_sum_mul(index)./img12_sq_sum_mul(index); +index = (denominator ~= 0); +quality_map(index) = numerator(index)./denominator(index); + +quality = mean2(quality_map); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifp_release/readme.txt b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifp_release/readme.txt new file mode 100644 index 0000000..10ea789 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifp_release/readme.txt @@ -0,0 +1,56 @@ +% -----------COPYRIGHT NOTICE STARTS WITH THIS LINE------------ +% Copyright (c) 2005 The University of Texas at Austin +% All rights reserved. +% +% Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, +% modify, and distribute this code (the source files) and its documentation for +% any purpose, provided that the copyright notice in its entirety appear in all copies of this code, and the +% original source of this code, Laboratory for Image and Video Engineering (LIVE, http://live.ece.utexas.edu) +% at the University of Texas at Austin (UT Austin, +% http://www.utexas.edu), is acknowledged in any publication that reports research using this code. The research +% is to be cited in the bibliography as: +% +% H. R. Sheikh and A. C. Bovik, "Image Information and Visual Quality", IEEE Transactions on +% Image Processing, (to appear). +% +% IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT AUSTIN BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, +% OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS DATABASE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF TEXAS +% AT AUSTIN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +% +% THE UNIVERSITY OF TEXAS AT AUSTIN SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +% WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE DATABASE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, +% AND THE UNIVERSITY OF TEXAS AT AUSTIN HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +% +% -----------COPYRIGHT NOTICE ENDS WITH THIS LINE------------ + +This software release consists of a MULTISCALE PIXEL DOMAIN, SCALAR GSM implementation of the algorithm described in the paper: + +H. R. Sheikh and A. C. Bovik, "Image Information and Visual Quality"., IEEE Transactions on Image Processing, (to appear). +Download manuscript draft from http://live.ece.utexas.edu in the Publications link. + +THE PIXEL DOMAIN ALGORITHM IS NOT DESCRIBED IN THE PAPER. THIS IS A COMPUTATIONALLY SIMPLER +DERIVATIVE OF THE ALGORITHM PRESENTED IN THE PAPER + + +It consists of the following files: + +readme.txt: this file +vifP_mscale.m: main function, call this to evaluate image quality + +Input : (1) img1: The reference image as a matrix + (2) img2: The distorted image (order is important) + +Output: (1) VIF the visual information fidelity measure between the two images + +Default Usage: + Given 2 test images img1 and img2, whose dynamic range is 0-255 + + vif = vifvec(img1, img2); + +Advanced Usage: + Users may want to modify the parameters in the code. + (1) Modify sigma_nsq to find tune for your image dataset. + + +Please read the paper for more details on interpretation of the results. +Email comments and bugfixes to hamid.sheikh@ieee.org \ No newline at end of file diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifp_release/vifp_mscale.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifp_release/vifp_mscale.m new file mode 100644 index 0000000..a5bb252 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifp_release/vifp_mscale.m @@ -0,0 +1,99 @@ +function vifp=vifp_mscale(ref,dist) + +% -----------COPYRIGHT NOTICE STARTS WITH THIS LINE------------ +% Copyright (c) 2005 The University of Texas at Austin +% All rights reserved. +% +% Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, +% modify, and distribute this code (the source files) and its documentation for +% any purpose, provided that the copyright notice in its entirety appear in all copies of this code, and the +% original source of this code, Laboratory for Image and Video Engineering (LIVE, http://live.ece.utexas.edu) +% at the University of Texas at Austin (UT Austin, +% http://www.utexas.edu), is acknowledged in any publication that reports research using this code. The research +% is to be cited in the bibliography as: +% +% H. R. Sheikh and A. C. Bovik, "Image Information and Visual Quality", IEEE Transactions on +% Image Processing, (to appear). +% +% IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT AUSTIN BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, +% OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS DATABASE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF TEXAS +% AT AUSTIN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +% +% THE UNIVERSITY OF TEXAS AT AUSTIN SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +% WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE DATABASE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, +% AND THE UNIVERSITY OF TEXAS AT AUSTIN HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +% +% -----------COPYRIGHT NOTICE ENDS WITH THIS LINE------------ +% +% This software release consists of a MULTISCALE PIXEL DOMAIN, SCALAR GSM implementation of the algorithm described in the paper: +% +% H. R. Sheikh and A. C. Bovik, "Image Information and Visual Quality"., IEEE Transactions on Image Processing, (to appear). +% Download manuscript draft from http://live.ece.utexas.edu in the Publications link. +% +% THE PIXEL DOMAIN ALGORITHM IS NOT DESCRIBED IN THE PAPER. THIS IS A COMPUTATIONALLY SIMPLER +% DERIVATIVE OF THE ALGORITHM PRESENTED IN THE PAPER +% +% Input : (1) img1: The reference image as a matrix +% (2) img2: The distorted image (order is important) +% +% Output: (1) VIF the visual information fidelity measure between the two images +% +% Default Usage: +% Given 2 test images img1 and img2, whose dynamic range is 0-255 +% +% vif = vifvec(img1, img2); +% +% Advanced Usage: +% Users may want to modify the parameters in the code. +% (1) Modify sigma_nsq to find tune for your image dataset. +% Email comments and bug reports to hamid.sheikh@ieee.org + + +sigma_nsq=2; + +num=0; +den=0; +for scale=1:4 + + N=2^(4-scale+1)+1; + win=fspecial('gaussian',N,N/5); + + if (scale >1) + ref=filter2(win,ref,'valid'); + dist=filter2(win,dist,'valid'); + ref=ref(1:2:end,1:2:end); + dist=dist(1:2:end,1:2:end); + end + + mu1 = filter2(win, ref, 'valid'); + mu2 = filter2(win, dist, 'valid'); + mu1_sq = mu1.*mu1; + mu2_sq = mu2.*mu2; + mu1_mu2 = mu1.*mu2; + sigma1_sq = filter2(win, ref.*ref, 'valid') - mu1_sq; + sigma2_sq = filter2(win, dist.*dist, 'valid') - mu2_sq; + sigma12 = filter2(win, ref.*dist, 'valid') - mu1_mu2; + + sigma1_sq(sigma1_sq<0)=0; + sigma2_sq(sigma2_sq<0)=0; + + g=sigma12./(sigma1_sq+1e-10); + sv_sq=sigma2_sq-g.*sigma12; + + g(sigma1_sq<1e-10)=0; + sv_sq(sigma1_sq<1e-10)=sigma2_sq(sigma1_sq<1e-10); + sigma1_sq(sigma1_sq<1e-10)=0; + + g(sigma2_sq<1e-10)=0; + sv_sq(sigma2_sq<1e-10)=0; + + sv_sq(g<0)=sigma2_sq(g<0); + g(g<0)=0; + sv_sq(sv_sq<=1e-10)=1e-10; + + + num=num+sum(sum(log10(1+g.^2.*sigma1_sq./(sv_sq+sigma_nsq)))); + den=den+sum(sum(log10(1+sigma1_sq./sigma_nsq))); + +end +vifp=num/den; \ No newline at end of file diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifvec_release/ind2wtree.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifvec_release/ind2wtree.m new file mode 100644 index 0000000..c3a05cd --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifvec_release/ind2wtree.m @@ -0,0 +1,13 @@ +function wtree = ind2wtree(pyr, ind) + +%this function is called by vifvec.m +% converts the output of Eero Simoncelli's pyramid routines into subbands in a cell array +C=pyr; +S=ind; + +offset=0; +numsubs=size(ind,1); +for i=1:numsubs + wtree{numsubs-i+1}=reshape(C(offset+1:offset+prod(S(i,:))), S(i,1),S(i,2)); + offset=offset+prod(S(i,:)); +end diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifvec_release/readme.txt b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifvec_release/readme.txt new file mode 100644 index 0000000..50489ac --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifvec_release/readme.txt @@ -0,0 +1,60 @@ +% -----------COPYRIGHT NOTICE STARTS WITH THIS LINE------------ +% Copyright (c) 2005 The University of Texas at Austin +% All rights reserved. +% +% Permission is hereby granted, without written agreement and without license or royalty fees, to use, copy, +% modify, and distribute this code (the source files) and its documentation for +% any purpose, provided that the copyright notice in its entirety appear in all copies of this code, and the +% original source of this code, Laboratory for Image and Video Engineering (LIVE, http://live.ece.utexas.edu) +% at the University of Texas at Austin (UT Austin, +% http://www.utexas.edu), is acknowledged in any publication that reports research using this code. The research +% is to be cited in the bibliography as: +% +% H. R. Sheikh and A. C. Bovik, "Image Information and Visual Quality", IEEE Transactions on +% Image Processing, (to appear). +% +% IN NO EVENT SHALL THE UNIVERSITY OF TEXAS AT AUSTIN BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, +% OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS DATABASE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF TEXAS +% AT AUSTIN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +% +% THE UNIVERSITY OF TEXAS AT AUSTIN SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +% WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE DATABASE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, +% AND THE UNIVERSITY OF TEXAS AT AUSTIN HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +% +% -----------COPYRIGHT NOTICE ENDS WITH THIS LINE------------ + +This software release consists of an implementation of the algorithm described in the paper: + +H. R. Sheikh and A. C. Bovik, "Image Information and Visual Quality"., IEEE Transactions on Image Processing, (to appear). +Download manuscript draft from http://live.ece.utexas.edu in the Publications link. + + +It consists of the following files: + +readme.txt: this file +vifvec.m: main function, call this to evaluate image quality +support .m files: ind2wtree.m, refparams_vecgsm.m, vifsub_est_M.m + +Prerequisites: The Steerable Pyramid toolbox. Available at +http://www.cns.nyu.edu/~lcv/software.html + +Input : (1) img1: The reference image as a matrix + (2) img2: The distorted image (order is important) + +Output: (1) VIF the visual information fidelity measure between the two images + +Default Usage: + Given 2 test images img1 and img2, whose dynamic range is 0-255 + + vif = vifvec(img1, img2); + +Advanced Usage: + Users may want to modify the parameters in the code. + (1) Modify sigma_nsq to find tune for your image dataset. + (2) MxM is the block size that denotes the size of a vector used in the + GSM model. + (3) subbands included in the computation + + +Please read the paper for more details on interpretation of the results. +Email comments and bug reports to hamid.sheikh@ieee.org \ No newline at end of file diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifvec_release/refparams_vecgsm.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifvec_release/refparams_vecgsm.m new file mode 100644 index 0000000..ece25b9 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifvec_release/refparams_vecgsm.m @@ -0,0 +1,52 @@ +function [ssarr, l_arr, cu_arr]=refparams_vecgsm(org,subands,M) + +%This function computes the parameters of the reference image. This is +%called by vifvec.m. + +for i=1:length(subands); + sub=subands(i); + y=org{sub}; + + sizey=floor(size(y)./M)*M; % crop to exact multiple size + y=y(1:sizey(1),1:sizey(2)); + + + % Collect MxM blocks. Rearrange each block into an + % M^2 dimensional vector and collect all such vectors. + % Collece ALL possible MXM blocks (even those overlapping) from the subband + temp=[]; + for j=1:M + for k=1:M + temp=cat(1,temp,reshape(y(k:end-(M-k), j:end-(M-j)),1,[])); + end + end + + % estimate mean and covariance + mcu=mean(temp')'; + cu=((temp-repmat(mcu,1,size(temp,2)))*(temp-repmat(mcu,1,size(temp,2)))')./size(temp,2); % covariance matrix for U + + % Collect MxM blocks as above. Use ONLY non-overlapping blocks to + % calculate the S field + temp=[]; + for j=1:M + for k=1:M + temp=cat(1,temp,reshape(y(k:M:end, j:M:end),1,[])); + end + end + + % Calculate the S field + ss=(inv(cu)*temp); + ss=sum(ss.*temp)./(M*M); + ss=reshape(ss,sizey/M); + + % Eigen-decomposition + [v,d]=eig(cu); + l_arr(sub,:)=diag(d)'; + + % rearrange for output + ssarr{sub}=ss; + temp=0; + d=diag(d); + cu_arr{sub}=cu; +end + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifvec_release/vifsub_est_M.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifvec_release/vifsub_est_M.m new file mode 100644 index 0000000..2a05725 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vif/vifvec_release/vifsub_est_M.m @@ -0,0 +1,70 @@ +function [g_all, vv_all]=vifsub_est_M(org,dist, subbands, M); + +% uses convolution for determining the parameters of the distortion channel +% Called by vifvec.m + +tol = 1e-15; % tolernace for zero variance. Variance below this is set to zero, and zero is set to this value to avoid numerical issues. + + +for i=1:length(subbands) + sub=subbands(i); + y=org{sub}; + yn=dist{sub}; + + % compute the size of the window used in the distortion channel estimation + lev=ceil((sub-1)/6); + winsize=2^lev+1; offset=(winsize-1)/2; + win = ones(winsize); + + % force subband size to be multiple of M + newsize=floor(size(y)./M)*M; + y=y(1:newsize(1),1:newsize(2)); + yn=yn(1:newsize(1),1:newsize(2)); + + % Correlation with downsampling. This is faster than downsampling after + % computing full correlation. + winstep=[M M]; + winstart=[1 1].*floor(M/2)+1; + winstop=size(y)-ceil(M/2)+1; + + % mean + mean_x = corrDn(y,win/sum(win(:)),'reflect1',winstep, winstart,winstop); + mean_y = corrDn(yn,win/sum(win(:)),'reflect1',winstep, winstart,winstop); + % cov + cov_xy = corrDn(y.*yn, win, 'reflect1',winstep, winstart,winstop) - sum(win(:)).*mean_x.*mean_y; + % var + ss_x = corrDn(y.^2,win, 'reflect1',winstep, winstart,winstop) - sum(win(:)).*mean_x.^2; + ss_y = corrDn(yn.^2,win, 'reflect1',winstep, winstart,winstop) - sum(win(:)).*mean_y.^2; + + + % get rid of numerical problems, very small negative numbers, or very + % small positive numbers, or other theoretical impossibilities. + ss_x(ss_x<0)=0; + ss_y(ss_y<0)=0; + + % Regression + g = cov_xy./(ss_x+tol); + + % Variance of error in regression + vv = (ss_y - g.*cov_xy)/(sum(win(:))); + + % get rid of numerical problems, very small negative numbers, or very + % small positive numbers, or other theoretical impossibilities. + g (ss_x < tol) = 0; + vv (ss_x < tol) = ss_y (ss_x < tol); + ss_x(ss_x5V8H@p;lhQ;qD704#fujsOO`A_ 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

    6!d1qFEc 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 literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/horse.NOZ.bmp b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/horse.NOZ.bmp new file mode 100644 index 0000000000000000000000000000000000000000..395e9584b5b3204eb2398bc51ae103376f163078 GIT binary patch literal 263222 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 Jf;F(s{~yu|HUIzs literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/horse.bmp b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/horse.bmp new file mode 100644 index 0000000000000000000000000000000000000000..34deaa21d8cabb5f37f5ab7483ff68f1950ad725 GIT binary patch literal 263222 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 BHm(2w literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt.m new file mode 100644 index 0000000..a9e1ab9 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt.m @@ -0,0 +1,11 @@ + +function [bands] = imdwt(img, nlevels) +%IMDWT Forward discrete wavelet transform of an image. +% [BANDS] = IMDWT(IMG, NLEVELS) returns the subbands of a discrete +% wavelet transform of the image IMG using the 9/7 biorthogonal +% filters. The number of decomposition levels is specified via the +% parameter NLEVELS (default = 5). + +s = 'Please compile the mex version of this function.'; +s = strcat(s, ' See the file "imdwt_cpp/compile_imdwt.m" for info.'); +error(s); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/compile_imdwt.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/compile_imdwt.m new file mode 100644 index 0000000..5a3e3c6 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/compile_imdwt.m @@ -0,0 +1,2 @@ + +mex 'imdwt.cpp' -outdir '../' -output 'imdwt.dll' diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/compile_imdwt_modified.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/compile_imdwt_modified.m new file mode 100644 index 0000000..52089b2 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/compile_imdwt_modified.m @@ -0,0 +1,49 @@ +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%%% compile_imdwt, Modified Version +%%%MM%%% +%%%MM%%% The author of this modified version is with the Visual +%%%MM%%% Communications Laboratory, in department of Electrical and +%%%MM%%% Computer Engineering at Cornell University. The original +%%%MM%%% code was written by Damon Chandler at Cornell University. +%%%MM%%% +%%%MM%%% This build routine compiles a MEX interface for an image wavelet +%%%MM%%% transform routine. +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%%% Author: Matthew Gaubatz +%%%MM%%% Version: 1.0 +%%%MM%%% Date: 01/05/2007 +%%%MM%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%%% Copyright (c) 2007 Visual Communications Lab, Cornell University +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%MM%%% +%%%MM%%% [BEGIN CHANGE] +%%%MM%%% +%%%MM%%% replace the original build script with a function that +%%%MM%%% parameterizes the name of the target build module +%%%MM%%% +function compile_imdwt_modified(target_build_module) + +%%%MM%%% +%%%MM%%% locate the MEX source file (assuming that this very file is +%%%MM%%% stored in the same folder) +%%%MM%%% +this_file_name = 'compile_imdwt_modified.m'; +this_file = which( this_file_name ); + +target_source_file = sprintf('%simdwt.cpp', this_file(1 : findstr( this_file, this_file_name ) - 1 )); +out_directory_name = this_file(1:end-length(this_file_name)-length('imdwt_cpp')-1); + +compile_command = sprintf('mex ''%s'' -outdir ''%s'' -output ''%s''', target_source_file, out_directory_name, target_build_module); +eval( compile_command ); + +%%%MM%%% +%%%MM%%% comment out previous non-parameterized version +%%%MM%%% +%%%MM%%%mex 'imdwt.cpp' -outdir '../' -output 'imdwt_modified.dll' +%%%MM%%% +%%%MM%%% [END CHANGE] +%%%MM%%% diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gbuffer.cpp b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gbuffer.cpp new file mode 100644 index 0000000..2692207 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gbuffer.cpp @@ -0,0 +1,143 @@ + +//////////////////////////////////////////////////////////////////////////// +// // +// COPYRIGHT (c) 1998, 2002, VCL // +// ------------------------------ // +// Permission to use, copy, modify, distribute and sell this software // +// and its documentation for any purpose is hereby granted without fee, // +// provided that the above copyright notice appear in all copies and // +// that both that copyright notice and this permission notice appear // +// in supporting documentation. VCL makes no representations about // +// the suitability of this software for any purpose. // +// // +// DISCLAIMER: // +// ----------- // +// The code provided hereunder is provided as is without warranty // +// of any kind, either express or implied, including but not limited // +// to the implied warranties of merchantability and fitness for a // +// particular purpose. The author(s) shall in no event be liable for // +// any damages whatsoever including direct, indirect, incidental, // +// consequential, loss of business profits or special damages. // +// // +//////////////////////////////////////////////////////////////////////////// + +//========================================================================= +#include "gbuffer.h" +// template class +//========================================================================= + +// +// Utility functions for use with Visual C++; +// other compilers can use the copy constructors. +// +namespace buf { + +GFloatBuffer byte2float(const GByteBuffer& BufferIn) +{ + GByteBuffer::data_type const* pDataIn = BufferIn.Data(); + GByteBuffer::size_type const size = BufferIn.Size(); + GFloatBuffer BufferOut(BufferIn.Width(), BufferIn.Height()); + GFloatBuffer::data_type* pDataOut = BufferOut.Data(); + + BufferOut.TagX(BufferIn.TagX()); + BufferOut.TagY(BufferIn.TagY()); + for (GByteBuffer::size_type index = 0; index < size; ++index) + { + pDataOut[index] = static_cast<float>(pDataIn[index]); + } + return BufferOut; +} +//------------------------------------------------------------------------- + +GByteBuffer float2byte(const GFloatBuffer& BufferIn) +{ + GFloatBuffer::data_type const* pDataIn = BufferIn.Data(); + GFloatBuffer::size_type const size = BufferIn.Size(); + GByteBuffer BufferOut(BufferIn.Width(), BufferIn.Height()); + GByteBuffer::data_type* pDataOut = BufferOut.Data(); + + BufferOut.TagX(BufferIn.TagX()); + BufferOut.TagY(BufferIn.TagY()); + for (GFloatBuffer::size_type index = 0; index < size; ++index) + { + pDataOut[index] = static_cast<unsigned char>( + type::round2byte(pDataIn[index]) + ); + } + return BufferOut; +} +//------------------------------------------------------------------------- + +GFloatBuffer int2float(const GIntBuffer& BufferIn) +{ + GIntBuffer::data_type const* pDataIn = BufferIn.Data(); + GIntBuffer::size_type const size = BufferIn.Size(); + GFloatBuffer BufferOut(BufferIn.Width(), BufferIn.Height()); + GFloatBuffer::data_type* pDataOut = BufferOut.Data(); + + BufferOut.TagX(BufferIn.TagX()); + BufferOut.TagY(BufferIn.TagY()); + for (GIntBuffer::size_type index = 0; index < size; ++index) + { + pDataOut[index] = static_cast<float>(pDataIn[index]); + } + return BufferOut; +} +//------------------------------------------------------------------------- + +GIntBuffer float2int(const GFloatBuffer& BufferIn) +{ + GFloatBuffer::data_type const* pDataIn = BufferIn.Data(); + GFloatBuffer::size_type const size = BufferIn.Size(); + GIntBuffer BufferOut(BufferIn.Width(), BufferIn.Height()); + GIntBuffer::data_type* pDataOut = BufferOut.Data(); + + BufferOut.TagX(BufferIn.TagX()); + BufferOut.TagY(BufferIn.TagY()); + for (GFloatBuffer::size_type index = 0; index < size; ++index) + { + pDataOut[index] = static_cast<int>(pDataIn[index]); + } + return BufferOut; +} +//------------------------------------------------------------------------- + +GIntBuffer byte2int(const GByteBuffer& BufferIn) +{ + GByteBuffer::data_type const* pDataIn = BufferIn.Data(); + GByteBuffer::size_type const size = BufferIn.Size(); + GIntBuffer BufferOut(BufferIn.Width(), BufferIn.Height()); + GIntBuffer::data_type* pDataOut = BufferOut.Data(); + + BufferOut.TagX(BufferIn.TagX()); + BufferOut.TagY(BufferIn.TagY()); + for (GByteBuffer::size_type index = 0; index < size; ++index) + { + pDataOut[index] = static_cast<int>(pDataIn[index]); + } + return BufferOut; +} +//------------------------------------------------------------------------- + +GByteBuffer int2byte(const GIntBuffer& BufferIn) +{ + GIntBuffer::data_type const* pDataIn = BufferIn.Data(); + GIntBuffer::size_type const size = BufferIn.Size(); + GByteBuffer BufferOut(BufferIn.Width(), BufferIn.Height()); + GByteBuffer::data_type* pDataOut = BufferOut.Data(); + + BufferOut.TagX(BufferIn.TagX()); + BufferOut.TagY(BufferIn.TagY()); + for (GIntBuffer::size_type index = 0; index < size; ++index) + { + pDataOut[index] = static_cast<unsigned char>( + type::int2byte(pDataIn[index]) + ); + } + return BufferOut; +} +//------------------------------------------------------------------------- + +} // namespace buf + +//========================================================================= diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gbuffer.h b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gbuffer.h new file mode 100644 index 0000000..6e66482 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gbuffer.h @@ -0,0 +1,3016 @@ + +//////////////////////////////////////////////////////////////////////////// +// // +// COPYRIGHT (c) 1998, 2002, VCL // +// ------------------------------ // +// Permission to use, copy, modify, distribute and sell this software // +// and its documentation for any purpose is hereby granted without fee, // +// provided that the above copyright notice appear in all copies and // +// that both that copyright notice and this permission notice appear // +// in supporting documentation. VCL makes no representations about // +// the suitability of this software for any purpose. // +// // +// DISCLAIMER: // +// ----------- // +// The code provided hereunder is provided as is without warranty // +// of any kind, either express or implied, including but not limited // +// to the implied warranties of merchantability and fitness for a // +// particular purpose. The author(s) shall in no event be liable for // +// any damages whatsoever including direct, indirect, incidental, // +// consequential, loss of business profits or special damages. // +// // +//////////////////////////////////////////////////////////////////////////// + +//========================================================================= +#ifndef gbufferH +#define gbufferH +//========================================================================= + +#if defined(__BORLANDC__) + #pragma warn -8027 +#endif + +#include <cstdlib> +#include <cstddef> +#include <cassert> +#include <cstdio> +#include <cmath> + +#include <algorithm> +#include <stdexcept> +#include <string> +#include <map> + +#if !defined(__GNUG__) || (__GNUG__ > 2) + #include <limits> +#endif + +#include "gtypes.h" +#include "gfile.h" + +#if defined(_MSC_VER) + #pragma warning(disable:4786) + #ifdef min + #undef min + #endif + #ifdef max + #undef max + #endif + #if (_MSC_VER <= 1200) + namespace std { + using ::size_t; + using ::exp; + using ::log; + using ::log10; + using ::fabs; + using ::pow; + using ::sqrt; + template <typename T> inline T min(T a, T b) + { return (a > b) ? b : a; } + template <typename T> inline T max(T a, T b) + { return (a > b) ? a : b; } + } + #endif +#endif +//========================================================================= + +namespace buf { + +// forward declaration +template <typename Type> class GBuffer; + +template <typename Type> +GBuffer<Type> operator *( + Type lhs, + GBuffer<Type> const& rhs + ) +{ + assert(!rhs.sleeping_); + + typename GBuffer<Type>::size_type const width = rhs.Width(); + typename GBuffer<Type>::size_type const height = rhs.Height(); + GBuffer<Type> temp(width, height); + for (typename GBuffer<Type>::size_type y = 0; y < height; ++y) + { + for (typename GBuffer<Type>::size_type x = 0; x < width; ++x) + { + temp.Pixels(x, y, lhs * rhs.Pixels(x, y)); + } + } + return temp; +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type> operator /( + Type lhs, + GBuffer<Type> const& rhs + ) +{ + assert(!rhs.sleeping_); + + typename GBuffer<Type>::size_type const width = rhs.Width(); + typename GBuffer<Type>::size_type const height = rhs.Height(); + GBuffer<Type> temp(width, height); + for (typename GBuffer<Type>::size_type y = 0; y < height; ++y) + { + for (typename GBuffer<Type>::size_type x = 0; x < width; ++x) + { + temp.Pixels(x, y, lhs / rhs.Pixels(x, y)); + } + } + return temp; +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type> operator +( + Type lhs, + GBuffer<Type> const& rhs + ) +{ + assert(!rhs.sleeping_); + + typename GBuffer<Type>::size_type const width = rhs.Width(); + typename GBuffer<Type>::size_type const height = rhs.Height(); + GBuffer<Type> temp(width, height); + for (typename GBuffer<Type>::size_type y = 0; y < height; ++y) + { + for (typename GBuffer<Type>::size_type x = 0; x < width; ++x) + { + temp.Pixels(x, y, lhs + rhs.Pixels(x, y)); + } + } + return temp; +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type> operator -( + Type lhs, + GBuffer<Type> const& rhs + ) +{ + assert(!rhs.sleeping_); + + typename GBuffer<Type>::size_type const width = rhs.Width(); + typename GBuffer<Type>::size_type const height = rhs.Height(); + GBuffer<Type> temp(width, height); + for (typename GBuffer<Type>::size_type y = 0; y < height; ++y) + { + for (typename GBuffer<Type>::size_type x = 0; x < width; ++x) + { + temp.Pixels(x, y, lhs - rhs.Pixels(x, y)); + } + } + return temp; +} +//------------------------------------------------------------------------- + +#if !defined(__GNUG__) +template <typename Type> +GBuffer<Type> operator ^( + Type lhs, + GBuffer<Type> const& rhs + ) +{ + assert(!rhs.sleeping_); + + typename GBuffer<Type>::size_type const width = rhs.Width(); + typename GBuffer<Type>::size_type const height = rhs.Height(); + GBuffer<Type> temp(width, height); + for (typename GBuffer<Type>::size_type y = 0; y < height; ++y) + { + for (typename GBuffer<Type>::size_type x = 0; x < width; ++x) + { + temp.Pixels(x, y, std::pow(lhs, rhs.Pixels(x, y))); + } + } + return temp; +} +//------------------------------------------------------------------------- +#endif + +template <typename Type> +class GBuffer +{ +public: + typedef Type data_type; + typedef type::GInt index_type; + typedef type::GSize size_type; + typedef type::GDouble real_type; + typedef std::map<Type, type::GSize> hist_type; + typedef file::GFile file_type; + typedef std::runtime_error except_type; + typedef std::out_of_range range_except_type; + enum resize_type {rt_none, rt_copy, rt_near, rt_blin, rt_bcub}; + +public: + // default constructor + GBuffer(size_type width = 0, size_type height = 0); + // constructor for raw Type data + GBuffer(Type Data, size_type width, size_type height); + // constructor for raw Type* data + GBuffer(Type const* pData, size_type width, size_type height); + // copy constructor + GBuffer(GBuffer<Type> const& copy); +#if !defined(_MSC_VER) + template <typename OtherType> + GBuffer(const GBuffer<OtherType>& copy); +#endif + // destructor + ~GBuffer(); + + // assignment operator + GBuffer<Type>& operator =(GBuffer<Type> const& rhs); + // assignment operator + GBuffer<Type>& operator =(Type rhs); + // equality operator + type::GBool operator ==(GBuffer<Type> const& rhs) const; + // inequality operator + type::GBool operator !=(GBuffer<Type> const& rhs) const; + // negation operator + GBuffer<Type> operator -() const; + + // element-by-element multiplication operator + GBuffer<Type> operator *(GBuffer<Type> const& rhs) const; + // element-by-element division operator + GBuffer<Type> operator /(GBuffer<Type> const& rhs) const; + // element-by-element addition operator + GBuffer<Type> operator +(GBuffer<Type> const& rhs) const; + // element-by-element subtraction operator + GBuffer<Type> operator -(GBuffer<Type> const& rhs) const; + + // Type multiplication operator + GBuffer<Type> operator *(Type rhs) const; + // Type division operator + GBuffer<Type> operator /(Type rhs) const; + // Type addition operator + GBuffer<Type> operator +(Type rhs) const; + // Type subtraction operator + GBuffer<Type> operator -(Type rhs) const; + // Type exponentiation operator + GBuffer<Type> operator ^(Type rhs) const; + +#if !defined(_MSC_VER) && !defined(__GNUG__) + friend GBuffer<Type> operator *<Type>(Type lhs, GBuffer<Type> const& rhs); + friend GBuffer<Type> operator /<Type>(Type lhs, GBuffer<Type> const& rhs); + friend GBuffer<Type> operator +<Type>(Type lhs, GBuffer<Type> const& rhs); + friend GBuffer<Type> operator -<Type>(Type lhs, GBuffer<Type> const& rhs); + friend GBuffer<Type> operator ^<Type>(Type lhs, GBuffer<Type> const& rhs); +#endif + + // element-by-element multiplication-assignment operator + GBuffer<Type>& operator *=(GBuffer<Type> const& rhs); + // element-by-element division-assignment operator + GBuffer<Type>& operator /=(GBuffer<Type> const& rhs); + // element-by-element addition-assignment operator + GBuffer<Type>& operator +=(GBuffer<Type> const& rhs); + // element-by-element subtraction-assignment operator + GBuffer<Type>& operator -=(GBuffer<Type> const& rhs); + + // Type multiplication-assignment operator + GBuffer<Type>& operator *=(Type rhs); + // Type division-assignment operator + GBuffer<Type>& operator /=(Type rhs); + // Type addition-assignment operator + GBuffer<Type>& operator +=(Type rhs); + // Type subtraction-assignment operator + GBuffer<Type>& operator -=(Type rhs); + // Type exponentiation-assignment operator + GBuffer<Type>& operator ^=(Type rhs); + + // element access operators (slow) + Type& operator ()(index_type pos) + { + #ifndef GBUFFER_NO_RANGE_CHECK + if (pos < 0 || static_cast<size_type>(pos) >= Size()) + { + throw range_except_type("operator()"); + } + #endif + return *(pData_ + pos); + } + Type& operator ()(index_type X, index_type Y) + { + #ifndef GBUFFER_NO_RANGE_CHECK + if (X < 0 || static_cast<size_type>(X) >= width_ || + Y < 0 || static_cast<size_type>(Y) >= height_) + { + throw range_except_type("operator()"); + } + #endif + return *(pData_ + X + (width_ * Y)); + } + Type const& operator ()(index_type pos) const + { + #ifndef GBUFFER_NO_RANGE_CHECK + if (pos < 0 || static_cast<size_type>(pos) >= Size()) + { + throw range_except_type("operator()"); + } + #endif + return *(pData_ + pos); + } + Type const& operator ()(index_type X, index_type Y) const + { + #ifndef GBUFFER_NO_RANGE_CHECK + if (X < 0 || static_cast<size_type>(X) >= width_ || + Y < 0 || static_cast<size_type>(Y) >= height_) + { + throw range_except_type("operator()"); + } + #endif + return *(pData_ + X + (width_ * Y)); + } + + // access and specification member functions + size_type Width() const + { + return width_; + } + size_type Height() const + { + return height_; + } + void Width(size_type width) + { + if (width_ != width) + { + width_ = width; + UpdateMemory(true); + } + } + void Height(size_type height) + { + if (height_ != height) + { + height_ = height; + UpdateMemory(true); + } + } + size_type Size() const + { + return (width_ * height_); + } + size_type SizeOf() const + { + return (width_ * height_ * sizeof(Type)); + } + type::GInt TagX() const + { + return tagX_; + } + void TagX(type::GInt tagX) + { + tagX_ = tagX; + } + type::GInt TagY() const + { + return tagY_; + } + void TagY(type::GInt tagY) + { + tagY_ = tagY; + } + const std::string& Name() const + { + return name_; + } + std::string& Name() + { + return name_; + } + Type const* Data() const + { + return pData_; + } + Type* Data() + { + return pData_; + } + Type Data(index_type pos) const + { + #ifndef GBUFFER_NO_RANGE_CHECK + if (static_cast<size_type>(pos) >= Size() || pos < 0) + { + type::GString s = "GBuffer::Data(): Invalid index ("; + s += type::type2str(pos); + s += ")."; + throw range_except_type(s); + } + #endif + return *(pData_ + pos); + } + void Data(index_type pos, Type value) + { + #ifndef GBUFFER_NO_RANGE_CHECK + if (static_cast<size_type>(pos) >= Size() || pos < 0) + { + type::GString s = "GBuffer::Data(): Invalid index ("; + s += type::type2str(pos); + s += ")."; + throw range_except_type(s); + } + #endif + *(pData_ + pos) = value; + } + void IncData(index_type pos, Type val) + { + *(pData_ + pos) += val; + } + void DecData(index_type pos, Type val) + { + *(pData_ + pos) -= val; + } + void MulData(index_type pos, Type val) + { + *(pData_ + pos) *= val; + } + void DivData(index_type pos, Type val) + { + *(pData_ + pos) /= val; + } + Type Pixels(index_type X, index_type Y) const + { + #ifndef GBUFFER_NO_RANGE_CHECK + if (X < 0 || static_cast<size_type>(X) >= width_ || + Y < 0 || static_cast<size_type>(Y) >= height_) + { + throw range_except_type("GBuffer::Pixels(): Invalid index"); + } + #endif + return *(pData_ + X + (width_ * Y)); + } + void Pixels(index_type X, index_type Y, Type value) + { + #ifndef GBUFFER_NO_RANGE_CHECK + if (X < 0 || static_cast<size_type>(X) >= width_ || + Y < 0 || static_cast<size_type>(Y) >= height_) + { + throw range_except_type("GBuffer::Pixels(): Invalid index"); + } + #endif + *(pData_ + X + (width_ * Y)) = value; + } + Type PixelsCE(index_type X, index_type Y) const + { + // perform inline circular extension + if (X < 0) X = X + width_; + else if (static_cast<size_type>(X) >= width_) X = X - width_; + if (Y < 0) Y = Y + height_; + else if (static_cast<size_type>(Y) >= height_) Y = Y - height_; + return *(pData_ + X + (width_ * Y)); + } + Type PixelsSE(index_type X, index_type Y) const + { + // perform inline symmetric extension + if (X < 0) X = -X; + else if (static_cast<size_type>(X) >= width_) + { + X = (width_ << 1) - X - 2; + } + if (Y < 0) Y = -Y; + else if (static_cast<size_type>(Y) >= height_) + { + Y = (height_ << 1) - Y - 2; + } + return *(pData_ + X + (width_ * Y)); + } + Type PixelsZP(index_type X, index_type Y) const + { + // perform inline symmetric extension + if (X < 0 || Y < 0 || + static_cast<size_type>(X) >= width_ || + static_cast<size_type>(Y) >= height_) + { + return 0; + } + return *(pData_ + X + (width_ * Y)); + } + Type PixelsHorzSE(index_type X, index_type Y) const + { + // perform inline symmetric extension on X + if (X < 0) X = -X; + else if (static_cast<size_type>(X) >= width_) + { + X = (width_ << 1) - X - 2; + } + return *(pData_ + X + (width_ * Y)); + } + Type PixelsVertSE(index_type X, index_type Y) const + { + // perform inline symmetric extension on Y + if (Y < 0) Y = -Y; + else if (static_cast<size_type>(Y) >= height_) + { + Y = (height_ << 1) - Y - 2; + } + return *(pData_ + X + (width_ * Y)); + } + void IncPixels(index_type X, index_type Y, Type val) + { + *(pData_ + X + (width_ * Y)) += val; + } + void DecPixels(index_type X, index_type Y, Type val) + { + *(pData_ + X + (width_ * Y)) -= val; + } + void MulPixels(index_type X, index_type Y, Type val) + { + *(pData_ + X + (width_ * Y)) *= val; + } + void DivPixels(index_type X, index_type Y, Type val) + { + *(pData_ + X + (width_ * Y)) /= val; + } + + // streaming member functions + void Load(std::string const& fname, bool swap_end = false); + void Save(std::string const& fname, bool swap_end = false) const; + void Load(file_type const& file, bool swap_end = false); + void Save(file_type const& file, bool swap_end = false) const; + + // utility member functions + void ZeroData(); + void FillData(Type value); + void Offset(Type value); + void Scale(Type value); + void Normalize(Type min_val = 0, Type max_val = 1); + void Abs(); + void Clip(data_type MinVal, data_type MaxVal); + void Threshold(data_type T, data_type val_lo = 0, + data_type val_hi = 255); + GBuffer<Type> Transpose() const; + GBuffer<Type> Convolve(GBuffer<Type> const& h); + void Resize(size_type width, size_type height, + resize_type mode = rt_none); + GBuffer<Type> Crop(size_type x, size_type y, + size_type w, size_type h) const; + GBuffer<Type> ToLuminance(real_type offset = 0, + real_type scaling = 0.02874, real_type gamma = 2.2) const; + GBuffer<Type> ToPixelVal(real_type offset = 0, + real_type scaling = 0.02874, real_type gamma = 2.2) const; + void BitBlt(size_type x_dst, size_type y_dst, + GBuffer<Type> const& src_buf, + size_type x_src = 0, size_type y_src = 0, + size_type w_src = 0, size_type h_src = 0); + + // algorithm utilities + void Sort(); + void Reverse(); + size_type Find(data_type val); + Type NearestVal(real_type val, size_type& val_index) const; + size_type Count(const Type& val) const; + void ReplaceAll(const Type& old_val, const Type& new_val) const; + + // computation methods + hist_type Histogram() const; + type::GBool IsNull() const; + Type Min() const; + Type Max() const; + Type Mode() const; + Type Range() const; + real_type Sum() const; + real_type Mean() const; + real_type Median() const; + real_type Energy() const; + real_type StdDev() const; + real_type Variance() const; + real_type Skewness() const; + real_type Kurtosis() const; + real_type Moment(type::GByte N) const; + real_type Norm(type::GUInt N) const; + real_type RMS() const; + real_type SSE(GBuffer<Type> const& other_buf) const; + real_type MSE(GBuffer<Type> const& other_buf) const; + real_type RMSE(GBuffer<Type> const& other_buf) const; + real_type PSNR(GBuffer<Type> const& other_buf) const; + real_type Correlation(GBuffer<Type> const& other_buf) const; + real_type Covariance(GBuffer<Type> const& other_buf) const; + real_type Lmean(real_type offset = 0.0, + real_type scaling = 0.02874, real_type gamma = 2.2) const; + real_type Lrms(real_type offset = 0.0, + real_type scaling = 0.02874, real_type gamma = 2.2) const; + real_type Crms(real_type Lmean, real_type offset = 0.0, + real_type scaling = 0.02874, real_type gamma = 2.2) const; + real_type Entropy() const; + + // + // quantization methods... + // + // uniform quantization + void Quantize(real_type step_size); + void QuantizeInt(real_type step_size); + void DeQuantizeInt(real_type step_size); + // dead-zone quantization + void QuantizeDZ(real_type step_size); + void QuantizeDZInt(real_type step_size); + void DeQuantizeDZInt(real_type step_size); + + // memory-saving methods + type::GBool Asleep() const + { + return sleeping_; + } + void Sleep() + { + #ifdef GBUFFER_SLEEPY + if (!sleeping_) + { + sleeping_ = true; + UpdateMemory(false); + } + #endif + } + void Awaken() + { + #ifdef GBUFFER_SLEEPY + if (sleeping_) + { + sleeping_ = false; + UpdateMemory(true); + } + #endif + } + +private: + void UpdateMemory(type::GBool zero_init) + { + delete [] pData_; + size_type const size = Size(); + if (!sleeping_ && size > 0) + { + pData_ = new Type[size]; + if (zero_init) + { + #if defined(_MSC_VER) + memset(pData_, 0, size * sizeof(Type)); + #else + std::memset(pData_, 0, size * sizeof(Type)); + #endif + } + } + else pData_ = NULL; + } + +private: + Type* pData_; + size_type width_; + size_type height_; + type::GInt tagX_; + type::GInt tagY_; + type::GBool sleeping_; + std::string name_; +}; +//========================================================================= + +//-----------------------------------------------------------------// +// Contructors and Destructor // +//-----------------------------------------------------------------// + +// default constructor +template <typename Type> +inline GBuffer<Type>::GBuffer( + size_type width, + size_type height + ) : pData_(NULL), width_(width), height_(height), + tagX_(0), tagY_(0), sleeping_(false) +{ + UpdateMemory(true); +} +//------------------------------------------------------------------------- + +// constructor for raw Type data +template <typename Type> +inline GBuffer<Type>::GBuffer( + Type Data, + size_type width, + size_type height + ) : pData_(NULL), width_(width), height_(height), + tagX_(0), tagY_(0), sleeping_(false) +{ + UpdateMemory(false); + if (pData_) + { + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + pData_[index] = Data; + } + } +} +//------------------------------------------------------------------------- + +// constructor for raw Type* data +template <typename Type> +inline GBuffer<Type>::GBuffer( + Type const* pData, + size_type width, + size_type height + ) : pData_(NULL), width_(width), height_(height), + tagX_(0), tagY_(0), sleeping_(false) +{ + UpdateMemory(false); + if (pData_ && pData) + { + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + pData_[index] = pData[index]; + } + } +} +//------------------------------------------------------------------------- + +// copy constructor +template <typename Type> +inline GBuffer<Type>::GBuffer( + GBuffer<Type> const& copy + ) : pData_(NULL), width_(copy.Width()), height_(copy.Height()), + tagX_(copy.TagX()), tagY_(copy.TagY()), sleeping_(copy.Asleep()) +{ + UpdateMemory(false); + if (pData_ && copy.Data()) + { + #if defined(_MSC_VER) + memcpy(pData_, copy.Data(), copy.SizeOf()); + #else + std::memcpy(pData_, copy.Data(), copy.SizeOf()); + #endif + } +} +//------------------------------------------------------------------------- + +#if !defined(_MSC_VER) +// copy constructor from GBuffer<OtherType> to GBuffer<Type> +template <typename Type> template <typename OtherType> +inline GBuffer<Type>::GBuffer( + const GBuffer<OtherType>& copy + ) : pData_(NULL), width_(copy.Width()), height_(copy.Height()), + tagX_(copy.TagX()), tagY_(copy.TagY()), sleeping_(copy.Asleep()) +{ + UpdateMemory(false); + const OtherType* pData = copy.Data(); + if (pData_ && pData) + { + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + pData_[index] = static_cast<Type>(pData[index]); + } + } +} +//------------------------------------------------------------------------- +#endif // _MSC_VER + +// destructor +template <typename Type> +inline GBuffer<Type>::~GBuffer() +{ + delete [] pData_; +} +//------------------------------------------------------------------------- + + +//-----------------------------------------------------------------// +// Operators // +//-----------------------------------------------------------------// + +template <typename Type> +inline GBuffer<Type>& GBuffer<Type>::operator =( + GBuffer<Type> const& rhs + ) +{ + if (&rhs != this) + { + sleeping_ = rhs.Asleep(); + width_ = rhs.Width(); height_ = rhs.Height(); + tagX_ = rhs.TagX(); + tagY_ = rhs.TagY(); + + UpdateMemory(false); + if (pData_ && rhs.Data()) + { + #if defined(_MSC_VER) + memcpy(pData_, rhs.Data(), rhs.SizeOf()); + #else + std::memcpy(pData_, rhs.Data(), rhs.SizeOf()); + #endif + } + } + return *this; +} +//------------------------------------------------------------------------- + +template <typename Type> +inline GBuffer<Type>& GBuffer<Type>::operator =( + Type rhs + ) +{ + assert(!sleeping_); + + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + pData_[index] = rhs; + } + return *this; +} +//------------------------------------------------------------------------- + +template <typename Type> +type::GBool GBuffer<Type>::operator ==( + GBuffer<Type> const& rhs + ) const +{ + assert(!sleeping_); + + if (width_ == rhs.Width() && height_ == rhs.Height()) + { + size_type const size = Size(); + Type const* pRhsData = rhs.Data(); + for (size_type index = 0; index < size; ++index) + { + if (pData_[index] != pRhsData[index]) + { + return false; + } + } + return true; + } + return false; +} +//------------------------------------------------------------------------- + +template <typename Type> +type::GBool GBuffer<Type>::operator !=( + GBuffer<Type> const& rhs + ) const +{ + assert(!sleeping_); + + if (width_ == rhs.Width() && height_ == rhs.Height()) + { + size_type const size = Size(); + Type const* pRhsData = rhs.Data(); + for (size_type index = 0; index < size; ++index) + { + if (pData_[index] != pRhsData[index]) + { + return true; + } + } + } + return false; +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type> GBuffer<Type>::operator -() const +{ + assert(!sleeping_); + + GBuffer<Type> temp(width_, height_); + Type* pData = temp.Data(); + size_type const size = Size(); + + for (size_type index = 0; index < size; ++index) + { + pData[index] = -pData_[index]; + } + return temp; +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type> GBuffer<Type>::operator *( + GBuffer<Type> const& rhs + ) const +{ + assert(!sleeping_); + + size_type const width = std::min(width_, rhs.Width()); + size_type const height = std::min(height_, rhs.Height()); + GBuffer<Type> temp(width, height); + + for (size_type y = 0; y < height; ++y) + { + for (size_type x = 0; x < width; ++x) + { + temp.Pixels(x, y, Pixels(x, y) * rhs.Pixels(x, y)); + } + } + return temp; +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type> GBuffer<Type>::operator /( + GBuffer<Type> const& rhs + ) const +{ + assert(!sleeping_); + + size_type const width = std::min(width_, rhs.Width()); + size_type const height = std::min(height_, rhs.Height()); + GBuffer<Type> temp(width, height); + + for (size_type y = 0; y < height; ++y) + { + for (size_type x = 0; x < width; ++x) + { + temp.Pixels(x, y, Pixels(x, y) / rhs.Pixels(x, y)); + } + } + return temp; +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type> GBuffer<Type>::operator +( + GBuffer<Type> const& rhs + ) const +{ + assert(!sleeping_); + + size_type const width = std::min(width_, rhs.Width()); + size_type const height = std::min(height_, rhs.Height()); + GBuffer<Type> temp(width, height); + + for (size_type y = 0; y < height; ++y) + { + for (size_type x = 0; x < width; ++x) + { + temp.Pixels(x, y, Pixels(x, y) + rhs.Pixels(x, y)); + } + } + return temp; +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type> GBuffer<Type>::operator -( + GBuffer<Type> const& rhs + ) const +{ + assert(!sleeping_); + + size_type const width = std::min(width_, rhs.Width()); + size_type const height = std::min(height_, rhs.Height()); + GBuffer<Type> temp(width, height); + + for (size_type y = 0; y < height; ++y) + { + for (size_type x = 0; x < width; ++x) + { + temp.Pixels(x, y, Pixels(x, y) - rhs.Pixels(x, y)); + } + } + return temp; +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type> GBuffer<Type>::operator *( + Type rhs + ) const +{ + assert(!sleeping_); + + GBuffer<Type> temp(width_, height_); + for (size_type y = 0; y < height_; ++y) + { + for (size_type x = 0; x < width_; ++x) + { + temp.Pixels(x, y, Pixels(x, y) * rhs); + } + } + return temp; +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type> GBuffer<Type>::operator /( + Type rhs + ) const +{ + assert(!sleeping_); + + GBuffer<Type> temp(width_, height_); + for (size_type y = 0; y < height_; ++y) + { + for (size_type x = 0; x < width_; ++x) + { + temp.Pixels(x, y, Pixels(x, y) / rhs); + } + } + return temp; +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type> GBuffer<Type>::operator +( + Type rhs + ) const +{ + assert(!sleeping_); + + GBuffer<Type> temp(width_, height_); + for (size_type y = 0; y < height_; ++y) + { + for (size_type x = 0; x < width_; ++x) + { + temp.Pixels(x, y, Pixels(x, y) + rhs); + } + } + return temp; +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type> GBuffer<Type>::operator -( + Type rhs + ) const +{ + assert(!sleeping_); + + GBuffer<Type> temp(width_, height_); + for (size_type y = 0; y < height_; ++y) + { + for (size_type x = 0; x < width_; ++x) + { + temp.Pixels(x, y, Pixels(x, y) - rhs); + } + } + return temp; +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type> GBuffer<Type>::operator ^( + Type rhs + ) const +{ + assert(!sleeping_); + + GBuffer<Type> temp(width_, height_); + for (size_type y = 0; y < height_; ++y) + { + for (size_type x = 0; x < width_; ++x) + { + temp.Pixels(x, y, std::pow(Pixels(x, y), rhs)); + } + } + return temp; +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type>& GBuffer<Type>::operator *=( + GBuffer<Type> const& rhs + ) +{ + assert(!sleeping_); + + if (&rhs != this) + { + size_type const width = std::min(width_, rhs.Width()); + size_type const height = std::min(height_, rhs.Height()); + for (size_type y = 0; y < height; ++y) + { + for (size_type x = 0; x < width; ++x) + { + MulPixels(x, y, rhs.Pixels(x, y)); + } + } + } + return *this; +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type>& GBuffer<Type>::operator /=( + GBuffer<Type> const& rhs + ) +{ + assert(!sleeping_); + + if (&rhs != this) + { + size_type const width = std::min(width_, rhs.Width()); + size_type const height = std::min(height_, rhs.Height()); + for (size_type y = 0; y < height; ++y) + { + for (size_type x = 0; x < width; ++x) + { + DivPixels(x, y, rhs.Pixels(x, y)); + } + } + } + return *this; +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type>& GBuffer<Type>::operator +=( + GBuffer<Type> const& rhs + ) +{ + assert(!sleeping_); + + if (&rhs != this) + { + size_type const width = std::min(width_, rhs.Width()); + size_type const height = std::min(height_, rhs.Height()); + for (size_type y = 0; y < height; ++y) + { + for (size_type x = 0; x < width; ++x) + { + IncPixels(x, y, rhs.Pixels(x, y)); + } + } + } + return *this; +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type>& GBuffer<Type>::operator -=( + GBuffer<Type> const& rhs + ) +{ + assert(!sleeping_); + + if (&rhs != this) + { + size_type const width = std::min(width_, rhs.Width()); + size_type const height = std::min(height_, rhs.Height()); + for (size_type y = 0; y < height; ++y) + { + for (size_type x = 0; x < width; ++x) + { + DecPixels(x, y, rhs.Pixels(x, y)); + } + } + } + return *this; +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type>& GBuffer<Type>::operator *=( + Type rhs + ) +{ + assert(!sleeping_); + + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + pData_[index] *= rhs; + } + return *this; +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type>& GBuffer<Type>::operator /=( + Type rhs + ) +{ + assert(!sleeping_); + + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + pData_[index] /= rhs; + } + return *this; +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type>& GBuffer<Type>::operator +=( + Type rhs + ) +{ + assert(!sleeping_); + + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + pData_[index] += rhs; + } + return *this; +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type>& GBuffer<Type>::operator -=( + Type rhs + ) +{ + assert(!sleeping_); + + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + pData_[index] -= rhs; + } + return *this; +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type>& GBuffer<Type>::operator ^=( + Type rhs + ) +{ + assert(!sleeping_); + + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + pData_[index] = std::pow(pData_[index], rhs); + } + return *this; +} +//------------------------------------------------------------------------- + + + +//-----------------------------------------------------------------// +// Streaming // +//-----------------------------------------------------------------// + +template <typename Type> +void GBuffer<Type>::Load( + const std::string& filename, + bool swap_end + ) +{ + assert(!sleeping_); + + file_type const file(filename.c_str(), "rb"); + Load(file, swap_end); +} +//------------------------------------------------------------------------- + +template <typename Type> +void GBuffer<Type>::Load( + file_type const& file, + bool swap_end + ) +{ + assert(!sleeping_); + + // read the width and height from the file +#if (__GNUG__ < 4) + width_ = file.template Read<size_type>(swap_end); + height_ = file.template Read<size_type>(swap_end); +#else + width_ = file.Read<size_type>(swap_end); + height_ = file.Read<size_type>(swap_end); +#endif + // allocate enough memory to hold the data + UpdateMemory(false); + + // read the data from the file +#if (__GNUG__ < 4) + file.template Read<Type>(pData_, Size(), swap_end); +#else + file.Read<Type>(pData_, Size(), swap_end); +#endif +} +//------------------------------------------------------------------------- + +template <typename Type> +void GBuffer<Type>::Save( + const std::string& filename, + bool swap_end + ) const +{ + assert(!sleeping_); + + // open the file for write access + file_type const file(filename.c_str(), "wb"); + Save(file, swap_end); +} +//------------------------------------------------------------------------- + +template <typename Type> +void GBuffer<Type>::Save( + file_type const& file, + bool swap_end + ) const +{ + assert(!sleeping_); + + // write the width and height to the stream + file.Write(width_, swap_end); + file.Write(height_, swap_end); + + // write the data to the file + file.Write(pData_, Size(), swap_end); +} +//------------------------------------------------------------------------- + + +//-----------------------------------------------------------------// +// Utility Methods // +//-----------------------------------------------------------------// + +template <typename Type> +inline void GBuffer<Type>::ZeroData() +{ + assert(!sleeping_); + +#if defined(_MSC_VER) + memset(pData_, 0, SizeOf()); +#else + std::memset(pData_, 0, SizeOf()); +#endif +} +//------------------------------------------------------------------------- + +template <typename Type> +void GBuffer<Type>::FillData( + Type value + ) +{ + assert(!sleeping_); + + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + pData_[index] = value; + } +} +//------------------------------------------------------------------------- + +template <typename Type> +void GBuffer<Type>::Offset( + Type value + ) +{ + assert(!sleeping_); + + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + pData_[index] += value; + } +} +//------------------------------------------------------------------------- + +template <typename Type> +void GBuffer<Type>::Scale( + Type value + ) +{ + assert(!sleeping_); + + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + pData_[index] *= value; + } +} +//------------------------------------------------------------------------- + +template <typename Type> +void GBuffer<Type>::Normalize( + Type min_val, + Type max_val + ) +{ + min_val = std::abs(Min()) + min_val; + Offset(min_val); + + Type const current_max_val = std::abs(Max()); + if (current_max_val > 1E-7) + { + Scale(max_val / current_max_val); + } +} +//------------------------------------------------------------------------- + +template <typename Type> +void GBuffer<Type>::Abs() +{ + assert(!sleeping_); + + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + pData_[index] = std::abs(pData_[index]); + } +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type> GBuffer<Type>::Transpose() const +{ + assert(!sleeping_); + + size_type const cy = Height(); + size_type const cx = Width(); + GBuffer<Type> bufT(cy, cx); + + for (size_type y = 0; y < cy; ++y) + { + for (size_type x = 0; x < cx; ++x) + { + bufT.Pixels(y, x, Pixels(x, y)); + } + } + return bufT; +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type> GBuffer<Type>::Convolve( + GBuffer<Type> const& h + ) +{ +/* + assert(!sleeping_); + + size_type const cy = Height(); + size_type const cx = Width(); + GBuffer<Type> buf_out(cy, cx); + GBuffer<Type> buf_out2(cy, cx); + + Type val; + size_type const cy_h = h.Height(); + size_type const cx_h = h.Width(); + + // if the filter is 1D, do separable filtering + if (cy_h == 1) + { + int offset; + int const num_taps = cx_h; + if (num_taps % 2 != 0) // odd-length filter + { + offset = -num_taps / 2; + } + else + { + offset = -std::ceil(num_taps / 2.0f); + } + + // filter the columns + for (int y = 0; y < cy; ++y) + { + for (int x = 0; x < cx; ++x) + { + val = 0; + for (int tap_idx = 0; tap_idx < cx_h; ++tap_idx) + { + val += + PixelsSE(x, y + offset + tap_idx) * + h.Pixels(tap_idx, 0); + } + buf_out.Pixels(x, y, val); + } + } + // filter the rows + for (int y = 0; y < cy; ++y) + { + for (int x = 0; x < cx; ++x) + { + val = 0; + for (int tap_idx = 0; tap_idx < cx_h; ++tap_idx) + { + val += + buf_out.PixelsSE(x + offset + tap_idx, y) * + h.Pixels(tap_idx, 0); + } + buf_out.Pixels(x, y, val); + } + } + } + else + { + throw except_type("2D filtering not implemented."); + } + return buf_out; +*/ + + assert(!sleeping_); + + int const cy = Height(); + int const cx = Width(); + GBuffer<Type> buf_out(cy, cx); + + Type val; + int const cy_h = h.Height(); + int const cx_h = h.Width(); + + // if the filter is 1D, do separable filtering + if (cy_h == 1) + { + int offset; + int const num_taps = cx_h; + if (num_taps % 2 != 0) // odd-length filter + { + offset = -num_taps / 2; + } + else + { + offset = -std::floor(num_taps / 2.0f); + } + + // filter the rows + for (int y = 0; y < cy; ++y) + { + for (int x = 0; x < cx; ++x) + { + val = 0; + for (int tap_idx = 0; tap_idx < cx_h; ++tap_idx) + { + val += +// PixelsSE(x + offset + tap_idx, y) * + PixelsZP(x + offset + tap_idx, y) * + h.Pixels(tap_idx, 0); + } + buf_out.Pixels(x, y, val); + } + } + // filter the columns + GBuffer<Type> buf_out2(cy, cx); + for (int x = 0; x < cx; ++x) + { + for (int y = 0; y < cy; ++y) + { + val = 0; + for (int tap_idx = 0; tap_idx < cx_h; ++tap_idx) + { + val += +// buf_out.PixelsSE(x, y + offset + tap_idx) * + buf_out.PixelsZP(x, y + offset + tap_idx) * + h.Pixels(tap_idx, 0); + } + buf_out2.Pixels(x, y, val); + } + } + return buf_out2; + } + else + { + int x_offset, y_offset; + if (cx_h % 2 != 0) // odd-length filter + { + x_offset = -cx_h / 2; + } + else + { + x_offset = -std::floor(cx_h / 2.0f); + } + if (cy_h % 2 != 0) // odd-length filter + { + y_offset = -cy_h / 2; + } + else + { + y_offset = -std::floor(cy_h / 2.0f); + } + + for (int x = 0; x < cx; ++x) + { + for (int y = 0; y < cy; ++y) + { + val = 0; + for (int y_h = 0; y_h < cy_h; ++y_h) + { + for (int x_h = 0; x_h < cx_h; ++x_h) + { + val += + h.Pixels(x_h, y_h) * +// PixelsSE(x + x_h + x_offset, y + y_h + y_offset); + PixelsZP(x + x_h + x_offset, y + y_h + y_offset); + } + } + buf_out.Pixels(x, y, val); + } + } + return buf_out; + } +} +//------------------------------------------------------------------------- + +inline float get_bicubic_weight(float x) +{ + float v1 = x + 2.0f; + float v2 = x + 1.0f; + float v3 = x; + float v4 = x - 1.0f; + + v1 = (v1 > 0.0f) ? v1*v1*v1 : 0.0f; + v2 = (v2 > 0.0f) ? 4.0f*v2*v2*v2 : 0.0f; + v3 = (v3 > 0.0f) ? 6.0f*v3*v3*v3 : 0.0f; + v4 = (v4 > 0.0f) ? 4.0f*v4*v4*v4 : 0.0f; + + return (v1 - v2 + v3 - v4); +} + +template <typename Type> +void GBuffer<Type>::Resize( + size_type width, + size_type height, + resize_type mode + ) +{ + if (width == width_ && height == height_) + { + // no-op, if the dimensions are unchanged + return; + } + + switch (mode) + { + case rt_none: // resize & discard current data + { + // update the dimensions + width_ = width; height_ = height; + + // update the memory + UpdateMemory(false); + break; + } + case rt_copy: // resize & keep current data (but don't interpolate) + { + // make a copy of the current data + GBuffer<Type> SaveBuffer(*this); + + // update the dimensions + width_ = width; height_ = height; + + // update the memory + UpdateMemory(false); + + // restore the data + if (pData_) + { + size_type const sizeX = std::min(width, SaveBuffer.Width()); + size_type const sizeY = std::min(height, SaveBuffer.Height()); + for (size_type y = 0; y < sizeY; ++y) + { + for (size_type x = 0; x < sizeX; ++x) + { + Pixels(x, y, SaveBuffer.Pixels(x, y)); + } + } + } + break; + } + case rt_near: // nearest-neighbor interpolation + { + int const src_cx = width_; + int const src_cy = height_; + int const dst_cx = width; + int const dst_cy = height; + + float const ratio_cx = + static_cast<float>(src_cx) / static_cast<float>(dst_cx); + float const ratio_cy = + static_cast<float>(src_cy) / static_cast<float>(dst_cy); + + float x_src_f, y_src_f; + int x_src, y_src; + + GBuffer<Type> dst_buf(dst_cx, dst_cy); + Type* p_dst_row = dst_buf.Data(); + + for (int y_dst = 0; y_dst < dst_cy; ++y_dst) + { + y_src_f = y_dst * ratio_cy; + y_src = y_src_f; + + for (int x_dst = 0; x_dst < dst_cx; ++x_dst) + { + x_src_f = x_dst * ratio_cx; + x_src = x_src_f; + + p_dst_row[x_dst] = PixelsSE(x_src, y_src); + } + // move to the next row + p_dst_row += dst_cy; + } + *this = dst_buf; + break; + } + case rt_blin: // bilinear interpolation + { + int const src_cx = width_; + int const src_cy = height_; + int const dst_cx = width; + int const dst_cy = height; + + float const ratio_cx = + static_cast<float>(src_cx) / static_cast<float>(dst_cx); + float const ratio_cy = + static_cast<float>(src_cy) / static_cast<float>(dst_cy); + + float x_src_f, y_src_f; + int x_src, y_src; + + GBuffer<Type> dst_buf(dst_cx, dst_cy); + Type* p_dst_row = dst_buf.Data(); + + float val; + for (int y_dst = 0; y_dst < dst_cy; ++y_dst) + { + y_src_f = y_dst * ratio_cy; + y_src = y_src_f; + + for (int x_dst = 0; x_dst < dst_cx; ++x_dst) + { + x_src_f = x_dst * ratio_cx; + x_src = x_src_f; + + val = PixelsSE(x_src , y_src - 1) * 0.125f; + val += PixelsSE(x_src - 1, y_src ) * 0.125f; + val += PixelsSE(x_src , y_src ) * 0.5f; + val += PixelsSE(x_src + 1, y_src ) * 0.125f; + val += PixelsSE(x_src , y_src + 1) * 0.125f; + + p_dst_row[x_dst] = val; + } + // move to the next row + p_dst_row += dst_cy; + } + *this = dst_buf; + break; + } + case rt_bcub: // bicubic interpolation + { + int const src_cx = width_; + int const src_cy = height_; + int const dst_cx = width; + int const dst_cy = height; + + float const ratio_cx = + static_cast<float>(src_cx) / static_cast<float>(dst_cx); + float const ratio_cy = + static_cast<float>(src_cy) / static_cast<float>(dst_cy); + + float dx, dy; + float x_src_f, y_src_f; + int x_src, y_src; + + float weight; + float weight_x0, weight_x1, weight_x2, weight_x3; + float weight_y0, weight_y1, weight_y2, weight_y3; + + GBuffer<Type> dst_buf(dst_cx, dst_cy); + Type* p_dst_row = dst_buf.Data(); + + float val; + for (int y_dst = 0; y_dst < dst_cy; ++y_dst) + { + y_src_f = y_dst * ratio_cy; + y_src = y_src_f; + dy = y_src_f - y_src; + + weight_y0 = get_bicubic_weight(dy + 1) / 36.0f; + weight_y1 = get_bicubic_weight(dy) / 36.0f; + weight_y2 = get_bicubic_weight(dy - 1) / 36.0f; + weight_y3 = get_bicubic_weight(dy - 2) / 36.0f; + + for (int x_dst = 0; x_dst < dst_cx; ++x_dst) + { + x_src_f = x_dst * ratio_cx; + x_src = x_src_f; + dx = x_src_f - x_src; + + weight_x0 = get_bicubic_weight(-1 - dx); + weight_x1 = get_bicubic_weight(-dx); + weight_x2 = get_bicubic_weight(1 - dx); + weight_x3 = get_bicubic_weight(2 - dx); + + val = 0.0f; + weight = weight_x0 * weight_y0; + val += PixelsSE(x_src - 1, y_src - 1) * weight; + weight = weight_x1 * weight_y0; + val += PixelsSE(x_src , y_src - 1) * weight; + weight = weight_x2 * weight_y0; + val += PixelsSE(x_src + 1, y_src - 1) * weight; + weight = weight_x3 * weight_y0; + val += PixelsSE(x_src + 2, y_src - 1) * weight; + + weight = weight_x0 * weight_y1; + val += PixelsSE(x_src - 1, y_src ) * weight; + weight = weight_x1 * weight_y1; + val += PixelsSE(x_src , y_src ) * weight; + weight = weight_x2 * weight_y1; + val += PixelsSE(x_src + 1, y_src ) * weight; + weight = weight_x3 * weight_y1; + val += PixelsSE(x_src + 2, y_src ) * weight; + + weight = weight_x0 * weight_y2; + val += PixelsSE(x_src - 1, y_src + 1) * weight; + weight = weight_x1 * weight_y2; + val += PixelsSE(x_src , y_src + 1) * weight; + weight = weight_x2 * weight_y2; + val += PixelsSE(x_src + 1, y_src + 1) * weight; + weight = weight_x3 * weight_y2; + val += PixelsSE(x_src + 2, y_src + 1) * weight; + + weight = weight_x0 * weight_y3; + val += PixelsSE(x_src - 1, y_src + 2) * weight; + weight = weight_x1 * weight_y3; + val += PixelsSE(x_src , y_src + 2) * weight; + weight = weight_x2 * weight_y3; + val += PixelsSE(x_src + 1, y_src + 2) * weight; + weight = weight_x3 * weight_y3; + val += PixelsSE(x_src + 2, y_src + 2) * weight; + + p_dst_row[x_dst] = val; + } + // move to the next row + p_dst_row += dst_cy; + } + *this = dst_buf; + break; + } + } +} +//------------------------------------------------------------------------- + +template <typename Type> +void GBuffer<Type>::Clip( + data_type MinVal, + data_type MaxVal + ) +{ + assert(!sleeping_); + + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + if (pData_[index] > MaxVal) + { + pData_[index] = MaxVal; + } + else if (pData_[index] < MinVal) + { + pData_[index] = MinVal; + } + } +} +//------------------------------------------------------------------------- + +template <typename Type> +void GBuffer<Type>::Threshold( + data_type T, + data_type val_lo, + data_type val_hi + ) +{ + assert(!sleeping_); + + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + pData_[index] = (pData_[index] >= T) ? val_hi : val_lo; + } +} +//------------------------------------------------------------------------- + +template <typename Type> +GBuffer<Type> GBuffer<Type>::Crop( + size_type x, + size_type y, + size_type w, + size_type h + ) const +{ + assert(x + w <= width_); + assert(y + h <= height_); + + GBuffer<Type> chunk(w, h); + size_type const maxX = x + w; + size_type const maxY = y + h; + + for (size_type Y = y; Y < maxY; ++Y) + { + for (size_type X = x; X < maxX; ++X) + { + chunk.Pixels(X - x, Y - y, Pixels(X, Y)); + } + } + return chunk; +} +//------------------------------------------------------------------------- + +// +// returns a luminance version of the image +// +template <typename Type> +GBuffer<Type> GBuffer<Type>::ToLuminance( + real_type offset, // black level offset + real_type scaling, // pixel-value to voltage scaling factor + real_type gamma // exponent of the power function + ) const +{ + assert(!sleeping_); + + size_type const size = Size(); + GBuffer<Type> LuminanceBuffer(width_, height_); + Type* pData = LuminanceBuffer.Data(); + for (size_type index = 0; index < size; ++index) + { + pData[index] = std::pow(offset + scaling*pData_[index], gamma); + } + return LuminanceBuffer; +} +//------------------------------------------------------------------------- + +// +// returns a pixel-value version of the image +// +template <typename Type> +GBuffer<Type> GBuffer<Type>::ToPixelVal( + real_type offset, // black level offset + real_type scaling, // pixel-value to voltage scaling factor + real_type gamma // exponent of the power function + ) const +{ + assert(!sleeping_); + assert(gamma != 0); + assert(scaling != 0); + + const real_type inv_gamma = 1.0 / gamma; + const real_type inv_scaling = 1.0 / scaling; + + size_type const size = Size(); + GBuffer<Type> PixelValBuffer(*this); + Type* pData = PixelValBuffer.Data(); + for (size_type index = 0; index < size; ++index) + { + pData[index] = (pData[index] <= 0) ? 0 : inv_scaling * ( + std::pow(static_cast<real_type>(pData[index]), inv_gamma) - + offset + ); + } + return PixelValBuffer; +} +//------------------------------------------------------------------------- + +template <typename Type> +void GBuffer<Type>::BitBlt( + size_type x_dst, + size_type y_dst, + GBuffer<Type> const& src_buf, + size_type x_src, + size_type y_src, + size_type w_src, + size_type h_src + ) +{ + if (&src_buf == this) + { + // no op required; source and target are the same + return; + } + + assert(!sleeping_); + + size_type x_src_max, y_src_max; + if (w_src == 0 && h_src == 0) + { + x_src_max = src_buf.Width(); + y_src_max = src_buf.Height(); + } + else + { + x_src_max = x_src + w_src; + y_src_max = y_src + h_src; + } + + size_type x_dst_copy; + for (size_type y = y_src; y < y_src_max; ++y) + { + x_dst_copy = x_dst; + for (size_type x = x_src; x < x_src_max; ++x) + { + Pixels(x_dst_copy++, y_dst, src_buf.Pixels(x, y)); + } + ++y_dst; + } +} +//------------------------------------------------------------------------- + + +//-----------------------------------------------------------------// +// Computation Methods // +//-----------------------------------------------------------------// + +template <typename Type> +void GBuffer<Type>::Sort() +{ + assert(!sleeping_); + std::sort(pData_, pData_ + Size()); +} +//------------------------------------------------------------------------- + +template <typename Type> +void GBuffer<Type>::Reverse() +{ + assert(!sleeping_); + std::reverse(pData_, pData_ + Size()); +} +//------------------------------------------------------------------------- + +template <typename Type> +typename GBuffer<Type>::size_type GBuffer<Type>::Find(data_type val) +{ + assert(!sleeping_); + + size_type const size = Size(); + data_type const* pVal = std::find(pData_, pData_ + size, val); + return (pVal - pData_); +} +//------------------------------------------------------------------------- + +template <typename Type> +Type GBuffer<Type>::NearestVal( + real_type val, + size_type& val_index + ) const +{ + assert(!sleeping_); + + Type closest_val = 0; + size_type const size = Size(); + real_type min_dist = std::numeric_limits<real_type>::max(); + for (size_type index = 0; index < size; ++index) + { + const real_type dist = std::fabs(pData_[index] - val); + if (dist <= min_dist) + { + min_dist = dist; + closest_val = pData_[index]; + val_index = index; + } + } + return closest_val; +} +//------------------------------------------------------------------------- + +template <typename Type> +typename GBuffer<Type>::size_type GBuffer<Type>::Count( + const Type& val + ) const +{ + assert(!sleeping_); + return std::count(pData_, pData_ + Size(), val); +} +//------------------------------------------------------------------------- + +template <typename Type> +void GBuffer<Type>::ReplaceAll( + const Type& old_val, + const Type& new_val + ) const +{ + assert(!sleeping_); + return std::replace(pData_, pData_ + Size(), old_val, new_val); +} +//------------------------------------------------------------------------- + +template <typename Type> +typename GBuffer<Type>::hist_type GBuffer<Type>::Histogram() const +{ + assert(!sleeping_); + + hist_type hist; + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + ++hist[pData_[index]]; + } + return hist; +} +//------------------------------------------------------------------------- + +template <typename Type> +type::GBool GBuffer<Type>::IsNull() const +{ + assert(!sleeping_); + + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + if (pData_[index] != 0) + { + return false; + } + } + return true; +} +//------------------------------------------------------------------------- + +template <typename Type> +Type GBuffer<Type>::Min() const +{ + assert(!sleeping_); + +//#if !defined(__GNUG__) || (__GNUG__ > 2) + Type min_val = std::numeric_limits<Type>::max(); + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + if (pData_[index] < min_val) + { + min_val = pData_[index]; + } + } + return min_val; +//#else + // punt on older versions of g++ that + // don't support the numeric_limits class + //return 0; +//#endif +} +//------------------------------------------------------------------------- + +template <typename Type> +Type GBuffer<Type>::Max() const +{ + assert(!sleeping_); + +//#if !defined(__GNUG__) || (__GNUG__ > 2) + +#if defined(__BORLANDC__) + #pragma warn -8008 + #pragma warn -8041 + #pragma warn -8066 +#endif + + Type max_val; + if (std::numeric_limits<Type>::is_integer) + { + max_val = std::numeric_limits<Type>::min(); + } + else + { + max_val = -std::numeric_limits<Type>::max(); + } + +#if defined(__BORLANDC__) + #pragma warn .8008 + #pragma warn .8041 + #pragma warn .8066 +#endif + + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + if (pData_[index] > max_val) + { + max_val = pData_[index]; + } + } + return max_val; + +//#else + // punt on older versions of g++ that + // don't support the numeric_limits class +// return 0; +//#endif +} +//------------------------------------------------------------------------- + +template <typename Type> +Type GBuffer<Type>::Range() const +{ + assert(!sleeping_); + + return (Max() - Min()); +} +//------------------------------------------------------------------------- + +template <typename Type> +typename GBuffer<Type>::real_type GBuffer<Type>::Sum() const +{ + assert(!sleeping_); + + real_type sum_of_x = 0; + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + sum_of_x += pData_[index]; + } + return sum_of_x; +} +//------------------------------------------------------------------------- + +// +// Mean = E{X} = (1/size)*sum(X) +// +template <typename Type> +typename GBuffer<Type>::real_type GBuffer<Type>::Mean() const +{ + assert(!sleeping_); + + return (Sum() / Size()); +} +//------------------------------------------------------------------------- + +// +// Median = middle( sort(X) ) +// +template <typename Type> +typename GBuffer<Type>::real_type GBuffer<Type>::Median() const +{ + assert(!sleeping_); + + GBuffer<Type> temp(*this); + temp.Sort(); + + size_type const size = Size(); + if (size % 2 != 0) + { + return temp.Data(static_cast<index_type>(0.5 * size)); + } + else + { + return 0.5 * ( + temp.Data(static_cast<index_type>(0.5 * size - 0.5)) + + temp.Data(static_cast<index_type>(0.5 * size + 0.5)) + ); + } +} +//------------------------------------------------------------------------- + +// +// Mode = most frequenlty occurring value +// +template <typename Type> +Type GBuffer<Type>::Mode() const +{ + assert(!sleeping_); + + typename hist_type::key_type max_hist_bin = 0; + typename hist_type::mapped_type max_hist_val = 0; + + hist_type hist(Histogram()); + typename hist_type::iterator hist_end = hist.end(); + for (typename hist_type::iterator iter = hist.begin(); + iter != hist_end; ++iter) + { + if ((*iter).second >= max_hist_val) + { + max_hist_bin = (*iter).first; + max_hist_val = (*iter).second; + } + } + return max_hist_bin; +} +//------------------------------------------------------------------------- + +// +// Energy = E{X^2} = (1/size)*sum(X) +// NOTE: Energy(X) equals Variance(X) if Mean(X) is 0 +// +template <typename Type> +typename GBuffer<Type>::real_type GBuffer<Type>::Energy() const +{ + assert(!sleeping_); + + real_type sum_of_xSquared = 0.0; + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + sum_of_xSquared += (pData_[index] * pData_[index]); + } + return (sum_of_xSquared / size); +} +//------------------------------------------------------------------------- + +// +// StdDev = sqrt(E{X^2} - (E{X})^2) = sqrt(Variance(X)) +// NOTE: StdDev(X) equals RMS(X) if Mean(X) is 0 +// +template <typename Type> +typename GBuffer<Type>::real_type GBuffer<Type>::StdDev() const +{ + assert(!sleeping_); + + return std::sqrt(Variance()); +} +//------------------------------------------------------------------------- + +// +// Variance = E{X^2} - (E{X})^2 = (1/size)*sum((X - Mean(X))^2) +// NOTE: Variance(X) equals Energy(X) if Mean(X) is 0 +// +template <typename Type> +typename GBuffer<Type>::real_type GBuffer<Type>::Variance() const +{ + assert(!sleeping_); + + real_type const avg_of_x = Mean(); + real_type sum_of_xSquared = 0.0; + size_type const size = Size(); + + for (size_type index = 0; index < size; ++index) + { + real_type const x0 = pData_[index] - avg_of_x; + sum_of_xSquared += (x0 * x0); + } + return (sum_of_xSquared / size); +} +//------------------------------------------------------------------------- + +// +// Skewness = E{(X - E{X})^3} = (1/size)*sum((X - Mean(X))^3) +// +template <typename Type> +typename GBuffer<Type>::real_type GBuffer<Type>::Skewness() const +{ + assert(!sleeping_); + + const Type avg_of_x = Mean(); + real_type sum_of_xCubed = 0.0; + size_type const size = Size(); + + for (size_type index = 0; index < size; ++index) + { + const real_type x0 = pData_[index] - avg_of_x; + sum_of_xCubed += (x0 * x0 * x0); + } + + const real_type std_dev = StdDev(); + sum_of_xCubed /= (std_dev * std_dev * std_dev); + + return (sum_of_xCubed / size); +} +//------------------------------------------------------------------------- + +// +// Kurtosis = E{(X - E{X})^4} = (1/size)*sum((X - Mean(X))^4) +// +template <typename Type> +typename GBuffer<Type>::real_type GBuffer<Type>::Kurtosis() const +{ + assert(!sleeping_); + + const real_type avg_of_x = Mean(); + real_type sum_of_xFourth = 0.0; + size_type const size = Size(); + + for (size_type index = 0; index < size; ++index) + { + const real_type x0 = pData_[index] - avg_of_x; + sum_of_xFourth += (x0 * x0 * x0 * x0); + } + + const real_type std_dev = StdDev(); + sum_of_xFourth /= (std_dev * std_dev * std_dev * std_dev); + + return (sum_of_xFourth / size); +} +//------------------------------------------------------------------------- + +// +// Central moment = E{(X - E{X})^N} = (1/size)*sum((X - Mean(X))^N) +// +template <typename Type> +typename GBuffer<Type>::real_type GBuffer<Type>::Moment( + type::GByte N + ) const +{ + assert(!sleeping_); + + const real_type avg_of_x = Mean(); + real_type sum_of_xN = 0.0; + size_type const size = Size(); + + for (size_type index = 0; index < size; ++index) + { + const real_type x0 = pData_[index] - avg_of_x; + sum_of_xN += std::pow(x0, N); + } + sum_of_xN /= std::pow(StdDev(), N); + + return (sum_of_xN / size); +} +//------------------------------------------------------------------------- + +// +// LN Norm = N-th root of the sum of the values to the N +// +template <typename Type> +typename GBuffer<Type>::real_type GBuffer<Type>::Norm( + type::GUInt N + ) const +{ + assert(!sleeping_); + + real_type sum = 0.0; + size_type const size = Size(); + switch (N) + { + case 0: return 0.0; + case 1: return Sum(); + case 2: + { + for (size_type index = 0; index < size; ++index) + { + sum += (pData_[index]*pData_[index]); + } + return std::sqrt(sum); + } + case 3: + { + for (size_type index = 0; index < size; ++index) + { + sum += (pData_[index]*pData_[index]*pData_[index]); + } + break; + } + case 4: + { + for (size_type index = 0; index < size; ++index) + { + sum += ( + pData_[index]*pData_[index]*pData_[index]*pData_[index] + ); + } + break; + } + default: + { + real_type val; + for (size_type index = 0; index < size; ++index) + { + val = 1.0; + for (size_type n = 0; n < N; ++n) + { + val *= pData_[index]; + } + sum += val; + } + break; + } + } + return std::pow(sum, 1.0/static_cast<real_type>(N)); +} +//------------------------------------------------------------------------- + +// +// (root-mean-square) RMS = sqrt(E{X^2}) = sqrt(Energy(X)) +// NOTE: RMS(X) equals StdDev(X) if Mean(X) is 0 +// +template <typename Type> +typename GBuffer<Type>::real_type GBuffer<Type>::RMS() const +{ + assert(!sleeping_); + + return std::sqrt(Energy()); +} +//------------------------------------------------------------------------- + +// +// (sum-squared-error) SSE = Sum{(X1 - X2)^2} +// +template <typename Type> +typename GBuffer<Type>::real_type GBuffer<Type>::SSE( + GBuffer<Type> const& other_buf + ) const +{ + assert(!sleeping_); + + size_type const sizeX = std::min(width_, other_buf.Width()); + size_type const sizeY = std::min(height_, other_buf.Height()); + real_type sum_squared_error = 0; + + real_type error; + for (size_type y = 0; y < sizeY; ++y) + { + for (size_type x = 0; x < sizeX; ++x) + { + error = Pixels(x, y) - other_buf.Pixels(x, y); + sum_squared_error += (error * error); + } + } + return sum_squared_error; +} +//------------------------------------------------------------------------- + +// +// (mean-squared-error) MSE = E{(X1 - X2)^2} = Mean((X1 - X2)^2) +// +template <typename Type> +typename GBuffer<Type>::real_type GBuffer<Type>::MSE( + GBuffer<Type> const& other_buf + ) const +{ + assert(!sleeping_); + + size_type const sizeX = std::min(width_, other_buf.Width()); + size_type const sizeY = std::min(height_, other_buf.Height()); + real_type sum_squared_error = 0; + + real_type error; + for (size_type y = 0; y < sizeY; ++y) + { + for (size_type x = 0; x < sizeX; ++x) + { + error = Pixels(x, y) - other_buf.Pixels(x, y); + sum_squared_error += (error * error); + } + } + return (sum_squared_error / (sizeX * sizeY)); +} +//------------------------------------------------------------------------- + +// +// (root-mean-square-error) RMSE = RMS(X1 - X2) = sqrt(MSE(X1, X2)) +// +template <typename Type> +typename GBuffer<Type>::real_type GBuffer<Type>::RMSE( + GBuffer<Type> const& other_buf + ) const +{ + assert(!sleeping_); + + return std::sqrt(MSE(other_buf)); +} +//------------------------------------------------------------------------- + +// +// (peak signal-to-noise ratio) PSNR = 10*log10(255^2 / MSE(X1, X2)) +// +template <typename Type> +typename GBuffer<Type>::real_type GBuffer<Type>::PSNR( + GBuffer<Type> const& other_buf + ) const +{ + assert(!sleeping_); + + return (10.0 * std::log10(65025.0 / MSE(other_buf))); + // NOTE: 65025.0 == 255*255 +} +//------------------------------------------------------------------------- + +// +// (correlation coefficient) R = sum(x.*y)/sqrt(sum(x.*x)*sum(y.*y)) +// +template <typename Type> +typename GBuffer<Type>::real_type GBuffer<Type>::Correlation( + GBuffer<Type> const& other_buf + ) const +{ + assert(!sleeping_); + + size_type const sizeX = std::min(width_, other_buf.Width()); + size_type const sizeY = std::min(height_, other_buf.Height()); + + real_type sum_xy = 0; + real_type sum_xx = 0; + real_type sum_yy = 0; + + real_type const mX = Mean(); + real_type const mY = other_buf.Mean(); + for (size_type y = 0; y < sizeY; ++y) + { + for (size_type x = 0; x < sizeX; ++x) + { + real_type const x_val = Pixels(x, y) - mX; + real_type const y_val = other_buf.Pixels(x, y) - mY; + sum_xy += (x_val * y_val); + sum_xx += (x_val * x_val); + sum_yy += (y_val * y_val); + } + } + return (sum_xy / std::sqrt(sum_xx * sum_yy)); +} +//------------------------------------------------------------------------- + +// +// Covariance = E{X*Y} = sum(x.*y)/(size(x)*size(y)) +// +template <typename Type> +typename GBuffer<Type>::real_type GBuffer<Type>::Covariance( + GBuffer<Type> const& other_buf + ) const +{ + assert(!sleeping_); + + size_type const sizeX = std::min(width_, other_buf.Width()); + size_type const sizeY = std::min(height_, other_buf.Height()); + + const real_type mX = Mean(); + const real_type mY = other_buf.Mean(); + real_type sum_xy = 0; + + for (size_type y = 0; y < sizeY; ++y) + { + for (size_type x = 0; x < sizeX; ++x) + { + real_type const zm_x_val = Pixels(x, y) - mX; + real_type const zm_y_val = other_buf.Pixels(x, y) - mY; + sum_xy += (zm_x_val * zm_y_val); + } + } + return (sum_xy / (sizeX * sizeY)); +} +//------------------------------------------------------------------------- + +// +// Lmean = E{luminance values} +// +template <typename Type> +typename GBuffer<Type>::real_type GBuffer<Type>::Lmean( + real_type offset, // black level offset + real_type scaling, // pixel-value to voltage scaling factor + real_type gamma // exponent of the power function + ) const +{ + assert(!sleeping_); + + real_type val; + real_type lum_sum = 0.0f; + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + val = offset + scaling*pData_[index]; + if (val > 0) + { + // lum_sum += std::pow(val, gamma); + lum_sum += std::exp(gamma * std::log(val)); + } + } + return (lum_sum / size); +} +//------------------------------------------------------------------------- + +// +// Lrms = StdDev(luminance values) +// +template <typename Type> +typename GBuffer<Type>::real_type GBuffer<Type>::Lrms( + real_type offset, // black level offset + real_type scaling, // pixel-value to voltage scaling factor + real_type gamma // exponent of the power function + ) const +{ + assert(!sleeping_); + + size_type const size = Size(); + GBuffer<Type> LuminanceBuffer(*this); + Type* pData = LuminanceBuffer.Data(); + for (size_type index = 0; index < size; ++index) + { + pData[index] = std::pow(offset + scaling*pData[index], gamma); + } + return LuminanceBuffer.StdDev(); + +/* + real_type val; + real_type lum_sum = 0; + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + val = offset + scaling*pData_[index]; + if (val > 0) + { + val = std::exp(gamma * std::log(val)) - Lmean; + lum_sum += (val * val); + } + } + return std::sqrt(lum_sum / size); +*/ +} +//------------------------------------------------------------------------- + +// +// (RMS contrast) Crms = StdDev(luminance values)/Mean(luminance values) +// +template <typename Type> +typename GBuffer<Type>::real_type GBuffer<Type>::Crms( + real_type Lmean, // mean background luminance + real_type offset, // black level offset + real_type scaling, // pixel-value to voltage scaling factor + real_type gamma // exponent of the power function + ) const +{ + assert(!sleeping_); + + return (Lrms(offset, scaling, gamma) / Lmean); +} +//------------------------------------------------------------------------- + +// +// (Entropy) H = -E{p(X)*log[p(X)]) = -(1/size)*sum(p(x)*log[p(x)]) +// +template <typename Type> +typename GBuffer<Type>::real_type GBuffer<Type>::Entropy() const +{ + assert(!sleeping_); + + hist_type hist(Histogram()); + size_type const size = Size(); + + real_type H = 0.0; + for (typename hist_type::iterator iter = hist.begin(); + iter != hist.end(); ++iter) + { + real_type const p = + static_cast<real_type>((*iter).second) / + static_cast<real_type>(size); + H += (p * std::log(p)); + } + return -(H * 1.4426950); // 1.4426950 = 1/log(2) +} +//------------------------------------------------------------------------- + + + +//-----------------------------------------------------------------// +// Quantization Methods // +//-----------------------------------------------------------------// + +template <typename Type> +void GBuffer<Type>::Quantize( + real_type step_size + ) +{ + assert(!sleeping_); + + if (std::fabs(step_size) < 0.00001) return; + + Type val; + size_type const size = Size(); + real_type const half_step_size = 0.5f * step_size; + for (size_type index = 0; index < size; ++index) + { + val = (pData_[index] >= 0) ? + pData_[index] + half_step_size : + pData_[index] - half_step_size; + pData_[index] = step_size * + static_cast<type::GInt>(val / step_size); + } +} +//------------------------------------------------------------------------- + +template <typename Type> +void GBuffer<Type>::QuantizeInt( + real_type step_size + ) +{ + assert(!sleeping_); + + if (std::fabs(step_size) < 0.00001) return; + + size_type const size = Size(); + real_type const inv_step_size = 1.0 / step_size; + real_type const half_step_size = 0.5 * step_size; + for (size_type index = 0; index < size; ++index) + { + const Type val = (pData_[index] >= 0) ? + pData_[index] + half_step_size : + pData_[index] - half_step_size; + pData_[index] = static_cast<type::GInt>(val * inv_step_size); + } +} +//------------------------------------------------------------------------- + +template <typename Type> +void GBuffer<Type>::DeQuantizeInt( + real_type step_size + ) +{ + assert(!sleeping_); + + if (std::fabs(step_size) < 0.00001) return; + + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + pData_[index] *= step_size; + } +} +//------------------------------------------------------------------------- + +template <typename Type> +void GBuffer<Type>::QuantizeDZ( + real_type step_size + ) +{ + assert(!sleeping_); + + if (std::fabs(step_size) < 0.00001) return; + + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + const type::GInt q_index = pData_[index] / step_size; + if (q_index > 0) + { + pData_[index] = step_size * + (static_cast<real_type>(q_index) + 0.5); + } + else if (q_index < 0) + { + pData_[index] = step_size* + (static_cast<real_type>(q_index) - 0.5); + } + else + { + pData_[index] = 0; + // i.e., = (type::GInt)(pData_[index] / step_size); + // i.e., = q_index + } + } +} +//------------------------------------------------------------------------- + +template <typename Type> +void GBuffer<Type>::QuantizeDZInt( + real_type step_size + ) +{ + assert(!sleeping_); + + if (std::fabs(step_size) < 0.00001) return; + + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + const type::GInt q_index = pData_[index] / step_size; + pData_[index] = q_index; + } +} +//------------------------------------------------------------------------- + +template <typename Type> +void GBuffer<Type>::DeQuantizeDZInt( + real_type step_size + ) +{ + assert(!sleeping_); + + if (std::fabs(step_size) < 0.00001) return; + + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + const type::GInt q_index = pData_[index]; + if (q_index > 0) + { + pData_[index] = step_size * + (static_cast<real_type>(q_index) + 0.5); + } + else if (q_index < 0) + { + pData_[index] = step_size * + (static_cast<real_type>(q_index) - 0.5); + } + else + { + pData_[index] = 0; + // i.e., = (type::GInt)(pData_[index] / step_size); + // i.e., = q_index + } + } +} +//------------------------------------------------------------------------- + +/////////////////////////////////////////////////// +// commonly-used aliases +/////////////////////////////////////////////////// + typedef GBuffer<type::GInt> GIntBuffer; + typedef GBuffer<type::GBool> GBoolBuffer; + typedef GBuffer<type::GFloat> GFloatBuffer; + typedef GBuffer<type::GDouble> GDoubleBuffer; + typedef GBuffer<type::GByte> GByteBuffer; + typedef GBuffer<type::GWord> GWordBuffer; + typedef GBuffer<type::GDWord> GDWordBuffer; + typedef GBuffer<type::GShort> GShortBuffer; + typedef GBuffer<type::GByte3D> GByte3DBuffer; + typedef GBuffer<type::GFloat3D> GFloat3DBuffer; +/////////////////////////////////////////////////// + +#if !defined(_MSC_VER) && !defined(__GNUG__) + +// copy constructor from GFloatBuffer to GByteBuffer +template <> +inline GByteBuffer::GBuffer( + const GFloatBuffer& copy + ) : pData_(NULL), width_(copy.Width()), height_(copy.Height()), + tagX_(copy.TagX()), tagY_(copy.TagY()), sleeping_(copy.Asleep()) +{ + UpdateMemory(false); + const GFloatBuffer::data_type* pData = copy.Data(); + if (pData_ && pData) + { + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + pData_[index] = static_cast<GByteBuffer::data_type>( + type::round2byte(pData[index]) + ); + } + } +} +//------------------------------------------------------------------------- + +// copy constructor from GFloatBuffer to GIntBuffer +template <> +inline GIntBuffer::GBuffer( + const GFloatBuffer& copy + ) : pData_(NULL), width_(copy.Width()), height_(copy.Height()), + tagX_(copy.TagX()), tagY_(copy.TagY()), sleeping_(copy.Asleep()) +{ + UpdateMemory(false); + const GFloatBuffer::data_type* pData = copy.Data(); + if (pData_ && pData) + { + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + pData_[index] = static_cast<GIntBuffer::data_type>( + 0.5 + pData[index] + ); + } + } +} +//------------------------------------------------------------------------- + +// copy constructor from GDoubleBuffer to GByteBuffer +template <> +inline GByteBuffer::GBuffer( + const GDoubleBuffer& copy + ) : pData_(NULL), width_(copy.Width()), height_(copy.Height()), + tagX_(copy.TagX()), tagY_(copy.TagY()), sleeping_(copy.Asleep()) +{ + UpdateMemory(false); + const GDoubleBuffer::data_type* pData = copy.Data(); + if (pData_ && pData) + { + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + pData_[index] = static_cast<GByteBuffer::data_type>( + type::round2byte(pData[index]) + ); + } + } +} +//------------------------------------------------------------------------- + +// copy constructor from GDoubleBuffer to GIntBuffer +template <> +inline GIntBuffer::GBuffer( + const GDoubleBuffer& copy + ) : pData_(NULL), width_(copy.Width()), height_(copy.Height()), + tagX_(copy.TagX()), tagY_(copy.TagY()), sleeping_(copy.Asleep()) +{ + UpdateMemory(false); + const GDoubleBuffer::data_type* pData = copy.Data(); + if (pData_ && pData) + { + size_type const size = Size(); + for (size_type index = 0; index < size; ++index) + { + pData_[index] = static_cast<GIntBuffer::data_type>( + 0.5 + pData[index] + ); + } + } +} +//------------------------------------------------------------------------- + +#endif // !defined(_MSC_VER) + +// if Visual C++, use these utlity functions instead + +////////////////////////////////////////////////////// +// type-conversion utility functions +////////////////////////////////////////////////////// +// +GFloatBuffer byte2float(const GByteBuffer& BufferIn); +GByteBuffer float2byte(const GFloatBuffer& BufferIn); +GFloatBuffer int2float(const GIntBuffer& BufferIn); +GIntBuffer float2int(const GFloatBuffer& BufferIn); +GIntBuffer byte2int(const GByteBuffer& BufferIn); +GByteBuffer int2byte(const GIntBuffer& BufferIn); +// +////////////////////////////////////////////////////// + +} // namespace buf + +#if defined(__BORLANDC__) + #pragma warn .8027 +#endif + +//========================================================================= +#endif // gbufferH +//========================================================================= + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gbufferlist.cpp b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gbufferlist.cpp new file mode 100644 index 0000000..0223460 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gbufferlist.cpp @@ -0,0 +1,32 @@ + +//////////////////////////////////////////////////////////////////////////// +// // +// COPYRIGHT (c) 1998, 2002, VCL // +// ------------------------------ // +// Permission to use, copy, modify, distribute and sell this software // +// and its documentation for any purpose is hereby granted without fee, // +// provided that the above copyright notice appear in all copies and // +// that both that copyright notice and this permission notice appear // +// in supporting documentation. VCL makes no representations about // +// the suitability of this software for any purpose. // +// // +// DISCLAIMER: // +// ----------- // +// The code provided hereunder is provided as is without warranty // +// of any kind, either express or implied, including but not limited // +// to the implied warranties of merchantability and fitness for a // +// particular purpose. The author(s) shall in no event be liable for // +// any damages whatsoever including direct, indirect, incidental, // +// consequential, loss of business profits or special damages. // +// // +//////////////////////////////////////////////////////////////////////////// + +//========================================================================= +#include "gbufferlist.h" +// template class +//========================================================================= + + + + + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gbufferlist.h b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gbufferlist.h new file mode 100644 index 0000000..10783d7 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gbufferlist.h @@ -0,0 +1,353 @@ + +//////////////////////////////////////////////////////////////////////////// +// // +// COPYRIGHT (c) 1998, 2002, VCL // +// ------------------------------ // +// Permission to use, copy, modify, distribute and sell this software // +// and its documentation for any purpose is hereby granted without fee, // +// provided that the above copyright notice appear in all copies and // +// that both that copyright notice and this permission notice appear // +// in supporting documentation. VCL makes no representations about // +// the suitability of this software for any purpose. // +// // +// DISCLAIMER: // +// ----------- // +// The code provided hereunder is provided as is without warranty // +// of any kind, either express or implied, including but not limited // +// to the implied warranties of merchantability and fitness for a // +// particular purpose. The author(s) shall in no event be liable for // +// any damages whatsoever including direct, indirect, incidental, // +// consequential, loss of business profits or special damages. // +// // +//////////////////////////////////////////////////////////////////////////// + +//========================================================================= +#ifndef gbufferlistH +#define gbufferlistH +//========================================================================= + +#include <vector> +#include <memory> +#include <stdexcept> +#include "gbuffer.h" + +#if defined(__BORLANDC__) + #pragma warn -8027 +#endif +//========================================================================= + +namespace buf { + +template <class BufferType> +class GBufferList +{ +typedef std::out_of_range GInvalidIndex; +typedef std::vector<BufferType*> Container; +typedef typename Container::iterator Iterator; + +public: + typedef BufferType buf_type; + typedef typename Container::size_type size_type; + typedef typename buf_type::size_type buf_size_type; + + // default constructor + GBufferList() {} + // constructor that creates 'count' empty elements + GBufferList(size_type count); + // copy constructor + GBufferList(const GBufferList<BufferType>& copy); + + // destructor + virtual ~GBufferList(); + + // assignment operator + GBufferList<BufferType>& operator =( + const GBufferList<BufferType>& rhs); + + // list-related member functions + Container& Items() + { + return items_; + } + Container const& Items() const + { + return items_; + } + virtual const BufferType& Items(size_type index) const + { + #ifndef GBUFFERLIST_NO_RANGE_CHECK + if (index >= Count()) + { + throw GInvalidIndex("Items(index)"); + } + #endif + return **(items_.begin() + index); + } + + virtual BufferType& Items(size_type index) + { + #ifndef GBUFFERLIST_NO_RANGE_CHECK + if (index >= Count()) + { + throw GInvalidIndex("Items(index)"); + } + #endif + return **(items_.begin() + index); + } + + virtual BufferType& Add(const buf_type& Item); + virtual BufferType& Add(buf_size_type width = 0, + buf_size_type height = 0); + + virtual BufferType& Insert(size_type index, const buf_type& Item); + virtual BufferType& Insert(size_type index, + buf_size_type width = 0, buf_size_type height = 0); + + virtual void Replace(size_type index, const buf_type& Item); + virtual void Delete(size_type index); + virtual void Clear(); + + void Alloc(size_type count) + { + Reserve(count); + for (size_type index = 0; index < count; index++) + { + Add(0, 0); + } + } + size_type Count() const + { + return items_.size(); + } + bool Empty() const + { + return items_.empty(); + } + void Reserve(size_type count) + { + items_.reserve(Count() + count); + } + +private: + Container items_; +}; + +//========================================================================= + + + +// constructor that creates 'count' empty elements +template <class BufferType> +GBufferList<BufferType>::GBufferList( + size_type count + ) +{ + Alloc(count); +} +//------------------------------------------------------------------------- + +// copy constructor +template <class BufferType> +GBufferList<BufferType>::GBufferList( + const GBufferList<BufferType>& copy + ) +{ + Clear(); + const size_type count = copy.Count(); + for (size_type index = 0; index < count; index++) + { + Add(copy.Items(index)); + } +} +//------------------------------------------------------------------------- + +// default destructor +template <class BufferType> +GBufferList<BufferType>::~GBufferList() +{ + const Iterator items_end = items_.end(); + for (Iterator iter = items_.begin(); iter != items_end; ++iter) + { + delete *iter; + } +} +//------------------------------------------------------------------------- + +// assignment operator +template <class BufferType> +GBufferList<BufferType>& GBufferList<BufferType>::operator =( + const GBufferList<BufferType>& rhs + ) +{ + if (&rhs != this) + { + Clear(); + const size_type count = rhs.Count(); + for (size_type index = 0; index < count; index++) + { + Add(rhs.Items(index)); + } + } + return *this; +} +//------------------------------------------------------------------------- + +template <class BufferType> +BufferType& GBufferList<BufferType>::Add( + buf_size_type width, + buf_size_type height + ) +{ + BufferType* pItem = new BufferType(width, height); + try + { + items_.push_back(pItem); + return *pItem; + } + catch (...) + { + delete pItem; + throw; + } +} +//------------------------------------------------------------------------- + +template <class BufferType> +BufferType& GBufferList<BufferType>::Add( + const buf_type& Item + ) +{ + BufferType* pItem = new BufferType(Item); + try + { + items_.push_back(pItem); + return *pItem; + } + catch (...) + { + delete pItem; + throw; + } +} +//------------------------------------------------------------------------- + +template <class BufferType> +BufferType& GBufferList<BufferType>::Insert( + size_type index, + buf_size_type width, + buf_size_type height + ) +{ +#ifndef GBUFFERLIST_NO_RANGE_CHECK + if (index >= Count()) + { + throw GInvalidIndex("Insert(index, width, height)"); + } +#endif + + BufferType* pItem = new BufferType(width, height); + try + { + return **items_.insert(items_.begin() + index + 1, pItem); + } + catch (...) + { + delete pItem; + throw; + } +} +//------------------------------------------------------------------------- + +template <class BufferType> +BufferType& GBufferList<BufferType>::Insert( + size_type index, + const buf_type& Item + ) +{ +#ifndef GBUFFERLIST_NO_RANGE_CHECK + if (index >= Count()) + { + throw GInvalidIndex("Insert(index, Item)"); + } +#endif + + BufferType* pItem = new BufferType(Item); + try + { + return **items_.insert(items_.begin() + index + 1, pItem); + } + catch (...) + { + delete pItem; + throw; + } +} +//------------------------------------------------------------------------- + +template <class BufferType> +void GBufferList<BufferType>::Replace( + size_type index, + const buf_type& Item + ) +{ +#ifndef GBUFFERLIST_NO_RANGE_CHECK + if (index >= Count()) + { + throw GInvalidIndex("Replace()"); + } +#endif + Items(index) = Item; +} +//------------------------------------------------------------------------- + +template <class BufferType> +void GBufferList<BufferType>::Delete( + size_type index + ) +{ +#ifndef GBUFFERLIST_NO_RANGE_CHECK + if (index >= Count()) + { + throw GInvalidIndex("Delete()"); + } +#endif + delete *(items_.begin() + index); + items_.erase(items_.begin() + index); +} +//------------------------------------------------------------------------- + +template <class BufferType> +void GBufferList<BufferType>::Clear() +{ + const Iterator items_end = items_.end(); + for (Iterator iter = items_.begin(); iter != items_end; ++iter) + { + delete *iter; + } + items_.clear(); +} +//------------------------------------------------------------------------- + +////////////////////////////////////////////////////////////// +// commonly-used aliases +////////////////////////////////////////////////////////////// + typedef GBufferList<buf::GFloatBuffer> GFloatBufferList; + typedef GBufferList<buf::GDoubleBuffer> GDoubleBufferList; + typedef GBufferList<buf::GByteBuffer> GByteBufferList; + typedef GBufferList<buf::GIntBuffer> GIntBufferList; + typedef GBufferList<buf::GDWordBuffer> GDWordBufferList; + typedef GBufferList<buf::GShortBuffer> GShortBufferList; + typedef GBufferList<buf::GWordBuffer> GWordBufferList; + typedef GBufferList<buf::GBoolBuffer> GBoolBufferList; +////////////////////////////////////////////////////////////// + +} // namespace buf + +#if defined(__BORLANDC__) + #pragma warn .8027 +#endif + +//========================================================================= +#endif // gbufferlistH +//========================================================================= + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gfile.h b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gfile.h new file mode 100644 index 0000000..419b0fa --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gfile.h @@ -0,0 +1,189 @@ + +//////////////////////////////////////////////////////////////////////////// +// // +// COPYRIGHT (c) 1998, 2002, VCL // +// ------------------------------ // +// Permission to use, copy, modify, distribute and sell this software // +// and its documentation for any purpose is hereby granted without fee, // +// provided that the above copyright notice appear in all copies and // +// that both that copyright notice and this permission notice appear // +// in supporting documentation. VCL makes no representations about // +// the suitability of this software for any purpose. // +// // +// DISCLAIMER: // +// ----------- // +// The code provided hereunder is provided as is without warranty // +// of any kind, either express or implied, including but not limited // +// to the implied warranties of merchantability and fitness for a // +// particular purpose. The author(s) shall in no event be liable for // +// any damages whatsoever including direct, indirect, incidental, // +// consequential, loss of business profits or special damages. // +// // +//////////////////////////////////////////////////////////////////////////// + +//========================================================================= +#ifndef gfileH +#define gfileH +//========================================================================= + +#include "gtypes.h" +#include <vector> + +#if defined(_MSC_VER) + namespace std { + using ::FILE; + using ::fread; + using ::fwrite; + using ::fopen; + using ::fclose; + using ::fseek; + using ::ftell; + } +#endif +//========================================================================= + +namespace file { + +template <typename Type> +inline Type swap_end16(Type val) +{ + type::GByte* const cptr = reinterpret_cast<type::GByte*>(&val); + type::GByte const tmp = cptr[0]; + cptr[0] = cptr[1]; + cptr[1] = tmp; + return val; +} +//--------------------------------------------------------------------- + +template <typename Type> +inline Type swap_end32(Type val) +{ + type::GByte* const cptr = reinterpret_cast<type::GByte*>(&val); + type::GByte tmp = cptr[0]; + cptr[0] = cptr[3]; + cptr[3] = tmp; + tmp = cptr[1]; + cptr[1] = cptr[2]; + cptr[2] = tmp; + return val; +} +//--------------------------------------------------------------------- + +template <typename Type> +inline Type swap_end(Type val) +{ + if (sizeof(Type) == 2) + { + return swap_end16(val); + } + else if (sizeof(Type) == 4) + { + return swap_end32(val); + } + return val; +} +//--------------------------------------------------------------------- + + +class GFile +{ +public: + typedef type::GSize size_type; + typedef type::GString str_type; + typedef std::runtime_error except_type; + +public: + GFile(str_type const& fname, str_type const& mode) : p_file_(NULL) + { + p_file_ = std::fopen(fname.c_str(), mode.c_str()); + if (p_file_ == NULL) + { + throw except_type("Error opening file: " + fname); + } + } + ~GFile() + { + if (p_file_ != NULL) + { + std::fclose(p_file_); + } + } + +public: + std::FILE* Handle() const { return p_file_; } + +public: + template <typename Type> + Type Read(bool swap = false) const + { + Type val; + if (std::fread(&val, sizeof(Type), 1, p_file_) != 1) + { + throw except_type("Error reading data: " + type::type2str(val)); + } + return (swap) ? swap_end(val) : val; + } + template <typename Type> + void Read(Type* p_val, size_type num_items, bool swap = false) + const + { + if (std::fread(p_val, sizeof(Type), num_items, p_file_) + != num_items) + { + throw except_type("Error reading data"); + } + if (swap) + { + for (size_type index = 0; index < num_items; ++index) + { + p_val[index] = swap_end(p_val[index]); + } + } + } + template <typename Type> + void Write(Type val, bool swap = false) const + { + if (swap) + { + val = swap_end(val); + } + if (std::fwrite(&val, sizeof(Type), 1, p_file_) != 1) + { + throw except_type("Error writing data: " + type::type2str(val)); + } + } + template <typename Type> + void Write(Type const* p_val, size_type num_items, bool swap = false) + const + { + if (swap) + { + for (size_type index = 0; index < num_items; ++index) + { + Type const val = swap_end(p_val[index]); + if (std::fwrite(&val, sizeof(Type), 1, p_file_) != 1) + { + throw except_type("Error writing data"); + } + } + } + else + { + if (std::fwrite(p_val, sizeof(Type), num_items, p_file_) + != num_items) + { + throw except_type("Error writing data"); + } + } + } + +private: + std::FILE* p_file_; +}; +//--------------------------------------------------------------------- + +} // namspace file + +//========================================================================= +#endif +//========================================================================= diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gstepsizes.cpp b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gstepsizes.cpp new file mode 100644 index 0000000..ab74239 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gstepsizes.cpp @@ -0,0 +1,28 @@ + +//////////////////////////////////////////////////////////////////////////// +// // +// COPYRIGHT (c) 1998, 2002, VCL // +// ------------------------------ // +// Permission to use, copy, modify, distribute and sell this software // +// and its documentation for any purpose is hereby granted without fee, // +// provided that the above copyright notice appear in all copies and // +// that both that copyright notice and this permission notice appear // +// in supporting documentation. VCL makes no representations about // +// the suitability of this software for any purpose. // +// // +// DISCLAIMER: // +// ----------- // +// The code provided hereunder is provided as is without warranty // +// of any kind, either express or implied, including but not limited // +// to the implied warranties of merchantability and fitness for a // +// particular purpose. The author(s) shall in no event be liable for // +// any damages whatsoever including direct, indirect, incidental, // +// consequential, loss of business profits or special damages. // +// // +//////////////////////////////////////////////////////////////////////////// + +//=========================================================================== +#include "gstepsizes.h" +// template class +//=========================================================================== + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gstepsizes.h b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gstepsizes.h new file mode 100644 index 0000000..9bea635 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gstepsizes.h @@ -0,0 +1,131 @@ + +//////////////////////////////////////////////////////////////////////////// +// // +// COPYRIGHT (c) 1998, 2002, VCL // +// ------------------------------ // +// Permission to use, copy, modify, distribute and sell this software // +// and its documentation for any purpose is hereby granted without fee, // +// provided that the above copyright notice appear in all copies and // +// that both that copyright notice and this permission notice appear // +// in supporting documentation. VCL makes no representations about // +// the suitability of this software for any purpose. // +// // +// DISCLAIMER: // +// ----------- // +// The code provided hereunder is provided as is without warranty // +// of any kind, either express or implied, including but not limited // +// to the implied warranties of merchantability and fitness for a // +// particular purpose. The author(s) shall in no event be liable for // +// any damages whatsoever including direct, indirect, incidental, // +// consequential, loss of business profits or special damages. // +// // +//////////////////////////////////////////////////////////////////////////// + +//=========================================================================== +#ifndef gstepsizesH +#define gstepsizesH +//=========================================================================== + +#include <cassert> +#include "gbuffer.h" +//=========================================================================== + +namespace buf { + +template <class Type> +class GStepSizes +{ +public: + typedef Type data_type; + typedef unsigned char scale_type; + typedef typename GBuffer<Type>::size_type size_type; + +public: + GStepSizes(scale_type num_scales = 5) + : num_steps_(static_cast<size_type>(1.5 + 3.0*num_scales)) + { + Steps_.Resize(1, num_steps_, GBuffer<Type>::rt_none); + Steps_.ZeroData(); + } + + size_type NumSteps() const { return num_steps_; } + Type const* Data() const { return Steps_.Data(); } + Type* Data() { return Steps_.Data(); } + + scale_type NumScales() const + { + return static_cast<scale_type>(0.5 + (num_steps_ - 1) / 3.0); + } + void NumScales(scale_type num_scales) + { + num_steps_ = static_cast<size_type>(1.5 + 3.0*num_scales); + Steps_.Resize(num_steps_, 1, false); + Steps_.ZeroData(); + } + + Type LL() const + { + assert(num_steps_ > 0); + return Steps_.Data(0); + } + Type LH(scale_type scale_index) const + { + assert(static_cast<size_type>(3*scale_index) < num_steps_); + return Steps_.Data(num_steps_ - 3*scale_index); + } + Type HL(scale_type scale_index) const + { + assert(static_cast<size_type>(3*scale_index - 1) < num_steps_); + return Steps_.Data(num_steps_ - 3*scale_index + 1); + } + Type HH(scale_type scale_index) const + { + assert(static_cast<size_type>(3*scale_index - 2) < num_steps_); + return Steps_.Data(num_steps_ - 3*scale_index + 2); + } + + void LL(Type Q) + { + assert(num_steps_ > 0); + Steps_.Data(0, Q); + } + void LH(scale_type scale_index, Type Q) + { + assert(static_cast<size_type>(3*scale_index) < num_steps_); + Steps_.Data(num_steps_ - 3*scale_index, Q); + } + void HL(scale_type scale_index, Type Q) + { + assert(static_cast<size_type>(3*scale_index - 1) < num_steps_); + Steps_.Data(num_steps_ - 3*scale_index + 1, Q); + } + void HH(scale_type scale_index, Type Q) + { + assert(static_cast<size_type>(3*scale_index - 2) < num_steps_); + Steps_.Data(num_steps_ - 3*scale_index + 2, Q); + } + +private: + GBuffer<Type> Steps_; + size_type num_steps_; +}; + +////////////////////////////////////////////////////// +// commonly-used aliases +////////////////////////////////////////////////////// + typedef GStepSizes<int> GIntStepSizes; + typedef GStepSizes<short> GShortStepSizes; + typedef GStepSizes<float> GFloatStepSizes; + typedef GStepSizes<double> GDoubleStepSizes; + typedef GStepSizes<unsigned char> GByteStepSizes; + typedef GStepSizes<unsigned short> GWordStepSizes; + typedef GStepSizes<unsigned int> GDWordStepSizes; + typedef GStepSizes<short> GShortStepSizes; +////////////////////////////////////////////////////// + +} // namespace buf + +//=========================================================================== +#endif // gstepsizesH +//=========================================================================== + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gtransform.cpp b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gtransform.cpp new file mode 100644 index 0000000..23db80b --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gtransform.cpp @@ -0,0 +1,28 @@ + +//////////////////////////////////////////////////////////////////////////// +// // +// COPYRIGHT (c) 1998, 2002, VCL // +// ------------------------------ // +// Permission to use, copy, modify, distribute and sell this software // +// and its documentation for any purpose is hereby granted without fee, // +// provided that the above copyright notice appear in all copies and // +// that both that copyright notice and this permission notice appear // +// in supporting documentation. VCL makes no representations about // +// the suitability of this software for any purpose. // +// // +// DISCLAIMER: // +// ----------- // +// The code provided hereunder is provided as is without warranty // +// of any kind, either express or implied, including but not limited // +// to the implied warranties of merchantability and fitness for a // +// particular purpose. The author(s) shall in no event be liable for // +// any damages whatsoever including direct, indirect, incidental, // +// consequential, loss of business profits or special damages. // +// // +//////////////////////////////////////////////////////////////////////////// + +//========================================================================= +#include "gtransform.h" +// template class +//========================================================================= + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gtransform.h b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gtransform.h new file mode 100644 index 0000000..1ab8255 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gtransform.h @@ -0,0 +1,406 @@ + +//////////////////////////////////////////////////////////////////////////// +// // +// COPYRIGHT (c) 1998, 2002, VCL // +// ------------------------------ // +// Permission to use, copy, modify, distribute and sell this software // +// and its documentation for any purpose is hereby granted without fee, // +// provided that the above copyright notice appear in all copies and // +// that both that copyright notice and this permission notice appear // +// in supporting documentation. VCL makes no representations about // +// the suitability of this software for any purpose. // +// // +// DISCLAIMER: // +// ----------- // +// The code provided hereunder is provided as is without warranty // +// of any kind, either express or implied, including but not limited // +// to the implied warranties of merchantability and fitness for a // +// particular purpose. The author(s) shall in no event be liable for // +// any damages whatsoever including direct, indirect, incidental, // +// consequential, loss of business profits or special damages. // +// // +//////////////////////////////////////////////////////////////////////////// + +//========================================================================= +#ifndef gtransformH +#define gtransformH +//========================================================================= + +#include "gwavelist.h" +//========================================================================= + +namespace wavlet { + +template <class ListType> +class GTransform +{ +public: + typedef ListType list_type; + typedef typename list_type::buf_type buf_type; + typedef typename buf_type::size_type size_type; + typedef typename list_type::index_type index_type; + + // default destructor + virtual ~GTransform() {} + + virtual void Decompose(list_type& WaveList, index_type num_scales); + virtual void Reconstruct(list_type& WaveList); + virtual void ReconstructOne(list_type& WaveList, + index_type non_zero_scale, index_type non_zero_orient); + +protected: + // forward DWT (pure virtual functions--must be overriden or augmented) + virtual void DoTransformRows( + const buf_type& Buffer, buf_type& L, buf_type& H + ) = 0; + virtual void DoTransformCols( + const buf_type& Buffer, buf_type& L, buf_type& H + ) = 0; + + // inverse DWT (pure virtual functions--must be overriden or augmented) + virtual void DoUntransformRows( + buf_type& Buffer, const buf_type& L, const buf_type& H + ) = 0; + virtual void DoUntransformCols( + buf_type& Buffer, const buf_type& L, const buf_type& H + ) = 0; + + virtual void DoDecompose(list_type& WaveList, index_type scale_index); + virtual void DoReconstruct(list_type& WaveList, index_type scale_index); + virtual void DoReconstructOne(list_type& WaveList, index_type scale_index, + index_type non_zero_scale, index_type non_zero_orient); +}; +//========================================================================= + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// Each level of decomposition yields a GWaveList with seven images: +// +// WaveList = +// ... ------------------------------------------------------- ... +// ... LL0 | L1 | H1 | HH1 | HL1 | LH1 | LL1 ... +// ... ------------------------------------------------------- ... +// [0] [1] [2] [3] [4] [5] [6] +// [7] [8] [9] [10] [11] [12] +// [13] [14] [15] [16] [17] [18] +// [19] [20] [21] [22] [23] [24] +// [25] [26] [27] [28] [29] [30] +// +// The Decompose() method uses the first image in the list as the +// source image. It then decomposes (forward DWTs) this image +// and stores the results as depicted above, in the list. The +// source image, WaveList->Image() remains untouched. L1 is +// the smooth (low-passed) image whose rows have been transformed. +// H1 is the detail (high-passed) image whose rows have been +// transformed. HH1 is the detail (high-high passed) image whose +// rows then columns have been transformed. HL1 is the detail +// (high-low passed) image whose rows then columns have been +// transformed. LH1 is the detail (low-high passed) image whose +// rows then columns have been transformed. Finally, LL1 is the +// smooth (low-low-passed) image whose rows then columns have been +// transformed. LL1 is used as the source image for the next +// level of decomposition. For this reason, the LL buffers are +// stored last in the zero-based indices [0, 6, 12, 18, 24, ...]. +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +template<class ListType> +void GTransform<ListType>::Decompose( + list_type& WaveList, + index_type num_scales + ) +{ + // assure that the source image is appropriately sized + WaveList.AddPadding(num_scales); + // assure that there's room for the subbands + WaveList.AllocBands(num_scales); + // perform the forward DWT + for (index_type scale_index = 0; scale_index < num_scales; + ++scale_index) + { + DoDecompose(WaveList, scale_index); + } +} +//------------------------------------------------------------------------- + +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +// +// The Reconstruct() method uses the last four buffers (HHn, HLn, +// LHn, LLn) in the list as the starting point, and then inverse +// transforms their columns, storing the result in the fourth and +// fifth from the last positions (Hn and Ln, repsectively). It +// then inverse transforms these results, storing the result in +// the LL(n-1) position. This latter result is then used to +// reconstruct the next level. Upon completion, the inverse +// transformed image is stored in the first position of the list. +// +//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +template<class ListType> +void GTransform<ListType>::Reconstruct( + list_type& WaveList + ) +{ + // perform the inverse DWT + const index_type num_scales = WaveList.NumScales(); + for (index_type scale_index = num_scales; scale_index >= 1; + --scale_index) + { + DoReconstruct(WaveList, scale_index); + } + // remove the padding from the image, if neccessary + WaveList.RemovePadding(); +} +//------------------------------------------------------------------------- + +template<class ListType> +void GTransform<ListType>::ReconstructOne( + list_type& WaveList, + index_type non_zero_scale, + index_type non_zero_orient + ) +{ + // perform the inverse DWT + const index_type num_scales = WaveList.NumScales(); + for (index_type scale_index = num_scales; scale_index >= 1; + --scale_index) + { + DoReconstructOne(WaveList, scale_index, + non_zero_scale, non_zero_orient); + } + // remove the padding from the image, if neccessary + WaveList.RemovePadding(); +} +//------------------------------------------------------------------------- + + + +template<class ListType> +void GTransform<ListType>::DoDecompose( + list_type& WaveList, + index_type scale_index + ) +{ + // 2D transform + if (WaveList.Image().Height() > 1) + { + // + // extract the source image (or the LL subband + // from the previous level of decomposition) + // + buf_type& LL = WaveList.LL(scale_index); + ++scale_index; // analysis will be stored at the next scale + + // grab a reference to the L and H subbands + buf_type& L = WaveList.L(scale_index); + buf_type& H = WaveList.H(scale_index); + + // filter the rows and downsample horizontally + DoTransformRows(LL, L, H); + if (scale_index > 0) + { + LL.Sleep(); + } + + // filter the columns and downsample vertically + DoTransformCols( + H, WaveList.HL(scale_index), WaveList.HH(scale_index) + ); + DoTransformCols( + L, WaveList.LL(scale_index), WaveList.LH(scale_index) + ); + H.Sleep(); + L.Sleep(); + } + else // 1D transform + { + // + // extract the source signal (or the L subband + // from the previous level of decomposition) + // + buf_type& Lprev = (scale_index == 0) ? + WaveList.Image() : WaveList.L(scale_index); + ++scale_index; // analysis will be stored at the next scale + + // grab a reference to the L and H subbands + buf_type& L = WaveList.L(scale_index); + buf_type& H = WaveList.H(scale_index); + + // filter the rows and downsample horizontally + DoTransformRows(Lprev, L, H); + if (scale_index > 0) + { + Lprev.Sleep(); + } + } +} +//------------------------------------------------------------------------- + +template<class ListType> +void GTransform<ListType>::DoReconstruct( + list_type& WaveList, + index_type scale_index + ) +{ + // 2D transform + if (WaveList.Image().Height() > 1) + { + // extract the HH and HL subbands from the list + const buf_type& HH = WaveList.HH(scale_index); + const buf_type& HL = WaveList.HL(scale_index); + // + // extract the H subband from the list + // (this buffer will be overwritten) + // + buf_type& H = WaveList.H(scale_index); + H.Awaken(); + // + // upsample vertically, filter the columns, and then + // sum the results (which are stored in H) + // H = filter(HL_up_2 w/ filt7) + filter(HH_up_2 w/ filt9) + // + DoUntransformCols(H, HL, HH); + + // extract the LH and LL subbands from the list + const buf_type& LH = WaveList.LH(scale_index); + const buf_type& LL = WaveList.LL(scale_index); + // + // extract the L subband from the list + // (this buffer will be overwritten) + // + buf_type& L = WaveList.L(scale_index); + L.Awaken(); + // + // upsample vertically, filter the columns, and then + // sum the results (which are stored in L) + // L = filter(LL_up_2 w/ filt7) + filter(LH_up_2 w/ filt9) + // + DoUntransformCols(L, LL, LH); + + // + // extract the buffer for the reconstructed image + // (this buffer will be overwritten) + // + buf_type& LLprev = WaveList.LL(scale_index - 1); + LLprev.Awaken(); + // + // upsample horizontally, filter the rows, and then + // sum the results (which are stored in LL_prev_scale) + // LLprev = filter(L_up_2 w/ filt7) + filter(H_up_2 w/ filt9) + // + DoUntransformRows(LLprev, L, H); + } + else // 1D transform + { + // + // extract the buffer for the reconstructed signal + // (this buffer will be overwritten) + // + buf_type& Lprev = (scale_index == 1) ? + WaveList.Image() : WaveList.L(scale_index - 1); + Lprev.Awaken(); + + // extract the component subbands + buf_type& H = WaveList.H(scale_index); + H.Awaken(); + buf_type& L = WaveList.L(scale_index); + L.Awaken(); + + // + // upsample horizontally, filter the rows, and then + // sum the results (which are stored in Lprev) + // Lprev = filter(L_up_2 w/ filt7) + filter(H_up_2 w/ filt9) + // + DoUntransformRows(Lprev, L, H); + } +} +//------------------------------------------------------------------------- + +template<class ListType> +void GTransform<ListType>::DoReconstructOne( + list_type& WaveList, + index_type scale_index, + index_type non_zero_scale, + index_type non_zero_orient + ) +{ + // if this scale, doesn't contain the non-zero subband, + // there's no need to synthesize (compute the LL band) + // for this scale, just skip it altogether + if (scale_index > non_zero_scale) + { + buf_type& LLprev = WaveList.LL(scale_index - 1); + LLprev.Awaken(); + LLprev = 0; + return; + } + else if (scale_index < non_zero_scale) + { + non_zero_orient = 4; + } + + // at this point, we're synthesizing the scale + // that contains the non-zero subband; we can + // still skip the branch (LL/LH or HL/HH) whose + // bands are all zeros... + + // extract the H and L subbands from the list + buf_type& H = WaveList.H(scale_index); + buf_type& L = WaveList.L(scale_index); + H.Awaken(); + L.Awaken(); + + switch (non_zero_orient) + { + // the HH or HL band is non-zero, + // so perform the HL/HH branch + case 1: + case 2: + { + // extract the HH and HL subbands from the list + const buf_type& HH = WaveList.HH(scale_index); + const buf_type& HL = WaveList.HL(scale_index); + + // upsample vertically, filter the columns, and then + // sum the results (which are stored in H) + // H = filter(HL_up_2 w/ filt7) + filter(HH_up_2 w/ filt9) + DoUntransformCols(H, HL, HH); + L = 0; + break; + } + // the LH band is non-zero, + // so perform the LL/LH branch + case 0: + case 4: + { + // extract the LH and LL subbands from the list + const buf_type& LH = WaveList.LH(scale_index); + const buf_type& LL = WaveList.LL(scale_index); + + // upsample vertically, filter the columns, and then + // sum the results (which are stored in L) + // L = filter(LL_up_2 w/ filt7) + filter(LH_up_2 w/ filt9) + DoUntransformCols(L, LL, LH); + H = 0; + break; + } + } + + // extract the buffer for the reconstructed image + // (this buffer will be overwritten) + buf_type& LLprev = WaveList.LL(scale_index - 1); + LLprev.Awaken(); + + // upsample horizontally, filter the rows, and then + // sum the results (which are stored in LL_prev_scale) + // LLprev = filter(L_up_2 w/ filt7) + filter(H_up_2 w/ filt9) + DoUntransformRows(LLprev, L, H); +} +//------------------------------------------------------------------------- + +} // namspace wavlet + +//========================================================================= +#endif // GTRANSFORM_H +//========================================================================= + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gtypes.h b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gtypes.h new file mode 100644 index 0000000..3bcc79d --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gtypes.h @@ -0,0 +1,230 @@ +//////////////////////////////////////////////////////////////////////////// +// // +// COPYRIGHT (c) 1998, 2002, VCL // +// ------------------------------ // +// Permission to use, copy, modify, distribute and sell this software // +// and its documentation for any purpose is hereby granted without fee, // +// provided that the above copyright notice appear in all copies and // +// that both that copyright notice and this permission notice appear // +// in supporting documentation. VCL makes no representations about // +// the suitability of this software for any purpose. // +// // +// DISCLAIMER: // +// ----------- // +// The code provided hereunder is provided as is without warranty // +// of any kind, either express or implied, including but not limited // +// to the implied warranties of merchantability and fitness for a // +// particular purpose. The author(s) shall in no event be liable for // +// any damages whatsoever including direct, indirect, incidental, // +// consequential, loss of business profits or special damages. // +// // +//////////////////////////////////////////////////////////////////////////// + +//========================================================================= +#ifndef gtypesH +#define gtypesH +//========================================================================= + +#include <ctime> +#include <cstddef> +#include <cstring> +#include <sstream> +#include <string> +//========================================================================= + +namespace type { + +typedef bool GBool; +typedef unsigned char GByte; +typedef int GInt; +typedef unsigned int GUInt; +typedef float GFloat; +typedef double GDouble; +typedef std::size_t GSize; +typedef short GShort; +typedef unsigned short GWord; +typedef unsigned int GDWord; +typedef long int GLong; +typedef std::string GString; +//--------------------------------------------------------------------- + +struct GRGB { + GByte r, g, b; + }; +//--------------------------------------------------------------------- + +struct GRect { + GSize x, y, w, h; + }; +//--------------------------------------------------------------------- + +class GPoint +{ +public: + GPoint() {}; + GPoint(int x, int y) : x_(x), y_(y) {}; + bool operator ==(GPoint const& rhs) + { + return (x_ == rhs.x() && y_ == rhs.y()); + } + int x() const { return x_; } + int y() const { return y_; } + void x(int x) { x_ = x; } + void y(int y) { y_ = y; } + +private: + int x_; + int y_; +}; +//--------------------------------------------------------------------- + +template <typename Type> +class GData3D +{ +public: + typedef Type data_type; + +public: + // constructors + GData3D() : + x_(0), y_(0), z_(0) {} + GData3D(data_type val) : + x_(val), y_(val), z_(val) {} + GData3D(data_type x, data_type y, data_type z) : + x_(x), y_(y), z_(z) {} + GData3D(const GData3D& copy) : + x_(copy.x()), y_(copy.y()), z_(copy.z()) {} + + // operators + GData3D& operator =(const GData3D& rhs) + { + if (&rhs != this) + { + x_ = rhs.x(); + y_ = rhs.y(); + z_ = rhs.z(); + } + return *this; + } + GData3D& operator +=(const GData3D& rhs) + { + if (&rhs != this) + { + x_ += rhs.x(); + y_ += rhs.y(); + z_ += rhs.z(); + } + return *this; + } + GData3D& operator *=(const GData3D& rhs) + { + if (&rhs != this) + { + x_ *= rhs.x(); + y_ *= rhs.y(); + z_ *= rhs.z(); + } + return *this; + } + GData3D operator +(const GData3D& rhs) const + { + return GData3D(x_ + rhs.x(), y_ + rhs.y(), z_ + rhs.z()); + } + GData3D operator -(const GData3D& rhs) const + { + return GData3D(x_ - rhs.x(), y_ - rhs.y(), z_ - rhs.z()); + } + GData3D operator *(const GData3D& rhs) const + { + return GData3D(x_ * rhs.x(), y_ * rhs.y(), z_ * rhs.z()); + } + GData3D operator /(const GData3D& rhs) const + { + return GData3D(x_ / rhs.x(), y_ / rhs.y(), z_ / rhs.z()); + } + bool operator ==(const GData3D& rhs) const + { + return (x_ == rhs.x() && y_ == rhs.y() && z_ == rhs.z()); + } + friend GData3D operator *(const data_type lhs, const GData3D& rhs) + { + return GData3D(lhs * rhs.x(), lhs * rhs.y(), lhs * rhs.z()); + } + + // member functions + data_type x() const { return x_; } + data_type y() const { return y_; } + data_type z() const { return z_; } + void x(data_type x) { x_ = x; } + void y(data_type y) { y_ = y; } + void z(data_type z) { z_ = z; } + +private: + data_type x_, y_, z_; +}; + +/////////////////////////////////////////////////// +// commonly-used aliases +/////////////////////////////////////////////////// + typedef GData3D<GInt> GInt3D; + typedef GData3D<GBool> GBool3D; + typedef GData3D<GFloat> GFloat3D; + typedef GData3D<GDouble> GDouble3D; + typedef GData3D<GByte> GByte3D; + typedef GData3D<GWord> GWord3D; + typedef GData3D<GUInt> GDWord3D; + typedef GData3D<GShort> GShort3D; + typedef GData3D<GByte> GByte3D; +/////////////////////////////////////////////////// +//--------------------------------------------------------------------- + +inline GInt round2int(float val) +{ + val += 0.5f; + return static_cast<GInt>(val); +} +//--------------------------------------------------------------------- + +inline GByte round2byte(float val) +{ +#define BYTECLIP(x) (x > 255) ? 255 : (x < 0) ? 0 : x + val += 0.5f; + return static_cast<GByte>(BYTECLIP(val)); +#undef BYTECLIP +} +//--------------------------------------------------------------------- + +inline GByte int2byte(int val) +{ +#define BYTECLIP(x) (x > 255) ? 255 : (x < 0) ? 0 : x + return static_cast<GByte>(BYTECLIP(val)); +#undef BYTECLIP +} +//--------------------------------------------------------------------- + +template <typename Type> +inline GString type2str(Type val) +{ + std::ostringstream ss; + ss << val; + return ss.str(); +} +//--------------------------------------------------------------------- + +inline std::time_t tic() +{ + return std::time(NULL); +} +//--------------------------------------------------------------------- + +inline int toc(std::time_t tic_val) +{ + return std::time(NULL) - tic_val; +} +//--------------------------------------------------------------------- + +} // namespace type + +//========================================================================= +#endif +//========================================================================= diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gwavelift.cpp b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gwavelift.cpp new file mode 100644 index 0000000..a5588d2 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gwavelift.cpp @@ -0,0 +1,29 @@ + +//////////////////////////////////////////////////////////////////////////// +// // +// COPYRIGHT (c) 1998, 2002, VCL // +// ------------------------------ // +// Permission to use, copy, modify, distribute and sell this software // +// and its documentation for any purpose is hereby granted without fee, // +// provided that the above copyright notice appear in all copies and // +// that both that copyright notice and this permission notice appear // +// in supporting documentation. VCL makes no representations about // +// the suitability of this software for any purpose. // +// // +// DISCLAIMER: // +// ----------- // +// The code provided hereunder is provided as is without warranty // +// of any kind, either express or implied, including but not limited // +// to the implied warranties of merchantability and fitness for a // +// particular purpose. The author(s) shall in no event be liable for // +// any damages whatsoever including direct, indirect, incidental, // +// consequential, loss of business profits or special damages. // +// // +//////////////////////////////////////////////////////////////////////////// + +//========================================================================= +#include "gwavelift.h" +// template class +//========================================================================= + + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gwavelift.h b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gwavelift.h new file mode 100644 index 0000000..2868541 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gwavelift.h @@ -0,0 +1,515 @@ + +//////////////////////////////////////////////////////////////////////////// +// // +// COPYRIGHT (c) 1998, 2002, VCL // +// ------------------------------ // +// Permission to use, copy, modify, distribute and sell this software // +// and its documentation for any purpose is hereby granted without fee, // +// provided that the above copyright notice appear in all copies and // +// that both that copyright notice and this permission notice appear // +// in supporting documentation. VCL makes no representations about // +// the suitability of this software for any purpose. // +// // +// DISCLAIMER: // +// ----------- // +// The code provided hereunder is provided as is without warranty // +// of any kind, either express or implied, including but not limited // +// to the implied warranties of merchantability and fitness for a // +// particular purpose. The author(s) shall in no event be liable for // +// any damages whatsoever including direct, indirect, incidental, // +// consequential, loss of business profits or special damages. // +// // +//////////////////////////////////////////////////////////////////////////// + +//========================================================================= +#ifndef gwaveliftH +#define gwaveliftH +//========================================================================= + +#include "gtransform.h" +//========================================================================= + +#if defined(__BORLANDC__) + #pragma warn -8058 +#endif + +namespace wavlet { + +static const float ALPHA = -1.586134342f; // -1.5861343f; +static const float BETA = -0.052980118f; // -0.0529801f; +static const float GAMMA = 0.882911075f; // 0.8829111f; +static const float DELTA = 0.443506852f; // 0.4435069f; +static const float TWOALPHA = 2 * ALPHA; +static const float TWOBETA = 2 * BETA; +static const float TWOGAMMA = 2 * GAMMA; +static const float TWODELTA = 2 * DELTA; + +#if defined(GWAVELIFT_NORM_1_1) + static const float B0 = 1.0/1.23017410558578; + static const float B1 = 1.0/1.62578613134411; +#else + static const float K = 0.8698643f; // 0.8698654f + static const float KINV = 1.1496046f; // 1.1496038f; +#endif + +// +// jp2 analyze: +// lo *= 0.81289306567205 +// hi *= 0.61508705279289 +// +// dc analyze: +// lo *= 1.1496046 +// hi *= -0.8698643 +// +// jp2 synthesize: +// lo *= 1.0 / 0.81289306567205 +// hi *= 1.0 / 0.61508705279289 +// +// dc synthesize: +// lo *= -0.8698643 +// hi *= 1.1496046 +// + +template <class ListType> +class GWavelift : public GTransform<ListType> +{ +public: + typedef ListType list_type; + typedef typename list_type::buf_type buf_type; + typedef typename buf_type::size_type size_type; + typedef typename buf_type::data_type buf_data_type; + +protected: + virtual void DoTransformRows(const buf_type& Buffer, + buf_type& LBuffer, buf_type& HBuffer); + virtual void DoTransformCols(const buf_type& Buffer, + buf_type& LBuffer, buf_type& HBuffer); + + virtual void DoUntransformRows(buf_type& Buffer, + const buf_type& LBuffer, const buf_type& HBuffer); + virtual void DoUntransformCols(buf_type& Buffer, + const buf_type& LBuffer, const buf_type& HBuffer); +}; +//========================================================================= + + + +template<class ListType> +void GWavelift<ListType>::DoTransformRows( + const buf_type& Buffer, + buf_type& SBuffer, + buf_type& DBuffer + ) +{ +#define GETXVAL(p, x) *(p + (x)) +#define SETXVAL(p, x, v) *(p + (x)) = (v) + + const size_type xw = Buffer.Width(); + const size_type dw = DBuffer.Width(); + const size_type sw = SBuffer.Width(); + const size_type sh = SBuffer.Height(); + const size_type sw_minus_one = sw - 1; + + const buf_data_type* px = Buffer.Data(); + buf_data_type* pd = DBuffer.Data(); + buf_data_type* ps = SBuffer.Data(); + + register const buf_data_type* px_row; + register buf_data_type* pd_row; + register buf_data_type* ps_row; + + register size_type x; + register buf_data_type d_res0, old_d_res, d_res, X2n; + for (size_type y = 0; y < sh; ++y) + { + px_row = px + (xw * y); + pd_row = pd + (dw * y); + ps_row = ps + (sw * y); + + d_res0 = old_d_res = + GETXVAL(px_row, 1) + ALPHA * (*px_row + GETXVAL(px_row, 2)); + *pd_row = old_d_res; + for (x = 1; x < sw_minus_one; ++x) + { + X2n = GETXVAL(px_row, x << 1); + d_res = + GETXVAL(px_row, (x << 1) + 1) + + ALPHA * (X2n + GETXVAL(px_row, (x << 1) + 2)); + + SETXVAL(pd_row, x, d_res); + SETXVAL(ps_row, x, X2n + BETA * (d_res + old_d_res)); + old_d_res = d_res; + } + d_res = + GETXVAL(px_row, (sw << 1) - 1) + + TWOALPHA * GETXVAL(px_row, (sw << 1) - 2); + SETXVAL(pd_row, sw_minus_one, d_res); + *ps_row = *px_row + TWOBETA * d_res0; + SETXVAL(ps_row, sw_minus_one, + GETXVAL(px_row, sw_minus_one << 1) + + BETA * (d_res + old_d_res) + ); + + d_res0 = old_d_res = + *pd_row + GAMMA * (*ps_row + GETXVAL(ps_row, 1)); + *pd_row = old_d_res; + for (x = 1; x < sw_minus_one; ++x) + { + d_res = + GETXVAL(pd_row, x) + GAMMA * ( + GETXVAL(ps_row, x) + GETXVAL(ps_row, x + 1) + ); + SETXVAL(pd_row, x, d_res); + SBuffer.IncPixels(x, y, DELTA * (d_res + old_d_res)); + old_d_res = d_res; + } + d_res = + GETXVAL(pd_row, sw_minus_one) + + TWOGAMMA * GETXVAL(ps_row, sw_minus_one); + SETXVAL(pd_row, sw_minus_one, d_res); + SBuffer.IncPixels( + 0, y, TWODELTA * d_res0 + ); + SBuffer.IncPixels( + sw_minus_one, y, DELTA * (d_res + old_d_res) + ); + } + +#if defined(GWAVELIFT_NORM_1_1) + SBuffer *= B0; + DBuffer *= B1; +#else + SBuffer *= KINV; + DBuffer *= -K; +#endif + +#undef SETXVAL +#undef GETXVAL +} +//------------------------------------------------------------------------- + +template<class ListType> +void GWavelift<ListType>::DoTransformCols( + const buf_type& Buffer, + buf_type& SBuffer, + buf_type& DBuffer + ) +{ +#define GETYVAL(p, w, y) *(p + (w * (y))) +#define SETYVAL(p, w, y, v) *(p + (w * (y))) = (v) + + const size_type xw = Buffer.Width(); + const size_type dw = DBuffer.Width(); + const size_type sw = SBuffer.Width(); + const size_type sh = SBuffer.Height(); + const size_type sh_minus_one = sh - 1; + + const buf_data_type* px = Buffer.Data(); + buf_data_type* pd = DBuffer.Data(); + buf_data_type* ps = SBuffer.Data(); + + const buf_data_type* px_col; + buf_data_type* pd_col; + buf_data_type* ps_col; + + register size_type y; + register size_type ysave0, ysave1; + register buf_data_type d_res0, old_d_res, d_res, X2n; + for (size_type x = 0; x < sw; ++x) + { + px_col = px + x; + pd_col = pd + x; + ps_col = ps + x; + + d_res0 = old_d_res = + GETYVAL(px_col, xw, 1) + ALPHA * ( + *px_col + GETYVAL(px_col, xw, 2) + ); + *pd_col = old_d_res; + for (y = 1; y < sh_minus_one; ++y) + { + ysave0 = xw * (y << 1); + ysave1 = dw * y; + + X2n = *(px_col + ysave0); + d_res = + *(px_col + ysave0 + xw) + + ALPHA * (X2n + *(px_col + ysave0 + xw + xw)); + + *(pd_col + ysave1) = d_res; + *(ps_col + ysave1) = X2n + BETA * (d_res + old_d_res); + old_d_res = d_res; + } + d_res = + GETYVAL(px_col, xw, (sh << 1) - 1) + + TWOALPHA * GETYVAL(px_col, xw, (sh << 1) - 2); + SETYVAL(pd_col, dw, sh_minus_one, d_res); + *ps_col = *px_col + TWOBETA * d_res0; + SETYVAL(ps_col, sw, sh_minus_one, + GETYVAL(px_col, xw, sh_minus_one << 1) + + BETA * (d_res + old_d_res) + ); + + d_res0 = old_d_res = + *pd_col + GAMMA * (*ps_col + GETYVAL(ps_col, sw, 1)); + *pd_col = old_d_res; + for (y = 1; y < sh_minus_one; ++y) + { + ysave0 = dw * y; + d_res = *(pd_col + ysave0) + GAMMA * ( + *(ps_col + ysave0) + *(ps_col + ysave0 + sw) + ); + *(pd_col + ysave0) = d_res; + SBuffer.IncPixels(x, y, DELTA * (d_res + old_d_res)); + old_d_res = d_res; + } + d_res = + GETYVAL(pd_col, dw, sh_minus_one) + + TWOGAMMA * GETYVAL(ps_col, sw, sh_minus_one); + SETYVAL(pd_col, dw, sh_minus_one, d_res); + SBuffer.IncPixels(x, 0, TWODELTA * d_res0); + SBuffer.IncPixels( + x, sh_minus_one, DELTA * (d_res + old_d_res) + ); + } + +#if defined(GWAVELIFT_NORM_1_1) + SBuffer *= B0; + DBuffer *= B1; +#else + SBuffer *= KINV; + DBuffer *= -K; +#endif + +#undef SETYVAL +#undef GETYVAL +} +//------------------------------------------------------------------------- + +template<class ListType> +void GWavelift<ListType>::DoUntransformCols( + buf_type& Buffer, + const buf_type& SBuffer, + const buf_type& DBuffer + ) +{ +#define GETYVAL(p, w, y) *(p + (w * (y))) +#define SETYVAL(p, w, y, v) *(p + (w * (y))) = (v) + + // + // NOTE: all widths are the same while Buffer's + // height is 2x that of SBuffer and DBuffer + // + const size_type xw = Buffer.Width(); + const size_type dw = DBuffer.Width(); + const size_type sw = SBuffer.Width(); + const size_type sh = SBuffer.Height(); + const size_type sh_minus_one = sh - 1; + + buf_data_type* px = Buffer.Data(); + const buf_data_type* pd = DBuffer.Data(); + const buf_data_type* ps = SBuffer.Data(); + + buf_data_type* px_col; + const buf_data_type* pd_col; + const buf_data_type* ps_col; + + // for inline storage, create "mutable" references + buf_type& SBufferMut = const_cast<buf_type&>(SBuffer); + buf_type& DBufferMut = const_cast<buf_type&>(DBuffer); + // +#if defined(GWAVELIFT_NORM_1_1) + SBufferMut /= B0; + DBufferMut /= B1; +#else + SBufferMut *= K; + DBufferMut *= -KINV; +#endif + + register size_type y; + register size_type ysave0; + register buf_data_type s_res, d_res, d_res0, d_res_last; + for (size_type x = 0; x < sw; ++x) + { + px_col = px + x; + pd_col = pd + x; + ps_col = ps + x; + + SBufferMut.DecPixels(x, 0, TWODELTA * (*pd_col)); + for (y = 1; y < sh; ++y) + { + ysave0 = dw * y; + SBufferMut.DecPixels(x, y, DELTA * ( + *(pd_col + ysave0) + *(pd_col + ysave0 - dw) + )); + } + + d_res0 = d_res_last = + *pd_col - GAMMA * (*ps_col + GETYVAL(ps_col, sw, 1)); + *(const_cast<buf_data_type*>(pd_col)) = d_res_last; + for (y = 1; y < sh_minus_one; ++y) + { + ysave0 = sw * y; + + s_res = *(ps_col + ysave0); + d_res = *(pd_col + ysave0) - + GAMMA * (s_res + *(ps_col + ysave0 + sw)); + + *(const_cast<buf_data_type*>(pd_col) + ysave0) = d_res; + SETYVAL( + px_col, xw, y << 1, s_res - BETA * (d_res + d_res_last) + ); + d_res_last = d_res; + } + d_res = + GETYVAL(pd_col, dw, sh_minus_one) - + TWOGAMMA * GETYVAL(ps_col, sw, sh_minus_one); + SETYVAL( + const_cast<buf_data_type*>(pd_col), dw, sh_minus_one, d_res + ); + *px_col = *ps_col - TWOBETA * d_res0; + SETYVAL(px_col, xw, sh_minus_one << 1, + GETYVAL(ps_col, sw, sh_minus_one) - + BETA * (d_res + d_res_last) + ); + + for (y = 0; y < sh_minus_one; ++y) + { + ysave0 = xw * (y << 1); + *(px_col + ysave0 + xw) = + GETYVAL(pd_col, dw, y) - ALPHA * ( + *(px_col + ysave0) + *(px_col + ysave0 + xw + xw) + ); + } + SETYVAL(px_col, xw, (sh << 1) - 1, + GETYVAL(pd_col, dw, sh_minus_one) - + TWOALPHA * GETYVAL(px_col, xw, (sh << 1) - 2) + ); + } + +#undef SETYVAL +#undef GETYVAL +} +//------------------------------------------------------------------------- + +template<class ListType> +void GWavelift<ListType>::DoUntransformRows( + buf_type& Buffer, + const buf_type& SBuffer, + const buf_type& DBuffer + ) +{ +#define GETXVAL(p, x) *(p + (x)) +#define SETXVAL(p, x, v) *(p + (x)) = (v) + + // + // NOTE: widths and heights are the same + // + const size_type xw = Buffer.Width(); + const size_type dw = DBuffer.Width(); + const size_type sw = SBuffer.Width(); + const size_type sh = SBuffer.Height(); + const size_type sw_minus_one = sw - 1; + + buf_data_type* px = Buffer.Data(); + const buf_data_type* pd = DBuffer.Data(); + const buf_data_type* ps = SBuffer.Data(); + + buf_data_type* px_row; + const buf_data_type* pd_row; + const buf_data_type* ps_row; + + // for inline storage, create "mutable" references + buf_type& SBufferMut = const_cast<buf_type&>(SBuffer); + buf_type& DBufferMut = const_cast<buf_type&>(DBuffer); + // +#if defined(GWAVELIFT_NORM_1_1) + SBufferMut /= B0; + DBufferMut /= B1; +#else + SBufferMut *= K; + DBufferMut *= -KINV; +#endif + + register size_type x; + register buf_data_type s_res, d_res, old_d_res, d_res0; + for (size_type y = 0; y < sh; ++y) + { + px_row = px + (xw * y); + pd_row = pd + (dw * y); + ps_row = ps + (sw * y); + + SBufferMut.DecPixels(0, y, TWODELTA * (*pd_row)); + for (x = 1; x < sw; ++x) + { + SBufferMut.DecPixels(x, y, DELTA * ( + GETXVAL(pd_row, x) + GETXVAL(pd_row, x - 1) + )); + } + + d_res0 = old_d_res = + *pd_row - GAMMA * ((*ps_row) + GETXVAL(ps_row, 1)); + *(const_cast<buf_data_type*>(pd_row)) = old_d_res; + for (x = 1; x < sw_minus_one; ++x) + { + s_res = GETXVAL(ps_row, x); + d_res = + GETXVAL(pd_row, x) - + GAMMA * (s_res + GETXVAL(ps_row, x + 1)); + + SETXVAL(const_cast<buf_data_type*>(pd_row), x, d_res); + SETXVAL(px_row, x << 1, s_res - BETA * (d_res + old_d_res)); + old_d_res = d_res; + } + d_res = + GETXVAL(pd_row, sw_minus_one) - + TWOGAMMA * GETXVAL(ps_row, sw_minus_one); + SETXVAL(const_cast<buf_data_type*>(pd_row), sw_minus_one, d_res); + *px_row = *ps_row - TWOBETA * d_res0; + SETXVAL(px_row, sw_minus_one << 1, + GETXVAL(ps_row, sw_minus_one) - BETA * (d_res + old_d_res) + ); + + for (x = 0; x < sw_minus_one; ++x) + { + SETXVAL(px_row, (x << 1) + 1, + GETXVAL(pd_row, x) - ALPHA * ( + GETXVAL(px_row, x << 1) + + GETXVAL(px_row, (x << 1) + 2) + ) + ); + } + SETXVAL(px_row, (sw << 1) - 1, + GETXVAL(pd_row, sw_minus_one) - + TWOALPHA * GETXVAL(px_row, (sw << 1) - 2) + ); + } + +#undef SETXVAL +#undef GETXVAL +} +//------------------------------------------------------------------------- + +//////////////////////////////////////////////////////////// +// commonly-used aliases +//////////////////////////////////////////////////////////// + typedef GWavelift<buf::GFloatWaveList> GFloatWavelift; + typedef GWavelift<buf::GDoubleWaveList> GDoubleWavelift; + typedef GWavelift<buf::GByteWaveList> GByteWavelift; + typedef GWavelift<buf::GIntWaveList> GIntWavelift; + typedef GWavelift<buf::GDWordWaveList> GDWordWavelift; + typedef GWavelift<buf::GShortWaveList> GShortWavelift; + typedef GWavelift<buf::GWordWaveList> GWordWavelift; + typedef GWavelift<buf::GBoolWaveList> GBoolWavelift; +//////////////////////////////////////////////////////////// + +} // namespace wavlet + +#if defined(__BORLANDC__) + #pragma warn .8058 +#endif + +//========================================================================= +#endif // gwavelift +//========================================================================= + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gwavelist.cpp b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gwavelist.cpp new file mode 100644 index 0000000..e2ba182 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gwavelist.cpp @@ -0,0 +1,28 @@ + +//////////////////////////////////////////////////////////////////////////// +// // +// COPYRIGHT (c) 1998, 2002, VCL // +// ------------------------------ // +// Permission to use, copy, modify, distribute and sell this software // +// and its documentation for any purpose is hereby granted without fee, // +// provided that the above copyright notice appear in all copies and // +// that both that copyright notice and this permission notice appear // +// in supporting documentation. VCL makes no representations about // +// the suitability of this software for any purpose. // +// // +// DISCLAIMER: // +// ----------- // +// The code provided hereunder is provided as is without warranty // +// of any kind, either express or implied, including but not limited // +// to the implied warranties of merchantability and fitness for a // +// particular purpose. The author(s) shall in no event be liable for // +// any damages whatsoever including direct, indirect, incidental, // +// consequential, loss of business profits or special damages. // +// // +//////////////////////////////////////////////////////////////////////////// + +//========================================================================= +#include "gwavelist.h" +// template class +//========================================================================= + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gwavelist.h b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gwavelist.h new file mode 100644 index 0000000..d8278bc --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/ginclude/gwavelist.h @@ -0,0 +1,434 @@ + +//////////////////////////////////////////////////////////////////////////// +// // +// COPYRIGHT (c) 1998, 2002, VCL // +// ------------------------------ // +// Permission to use, copy, modify, distribute and sell this software // +// and its documentation for any purpose is hereby granted without fee, // +// provided that the above copyright notice appear in all copies and // +// that both that copyright notice and this permission notice appear // +// in supporting documentation. VCL makes no representations about // +// the suitability of this software for any purpose. // +// // +// DISCLAIMER: // +// ----------- // +// The code provided hereunder is provided as is without warranty // +// of any kind, either express or implied, including but not limited // +// to the implied warranties of merchantability and fitness for a // +// particular purpose. The author(s) shall in no event be liable for // +// any damages whatsoever including direct, indirect, incidental, // +// consequential, loss of business profits or special damages. // +// // +//////////////////////////////////////////////////////////////////////////// + +//========================================================================= +#ifndef gwavelistH +#define gwavelistH +//========================================================================= + +//#if defined(_MSC_VER) +// #include <cmath> +//#else +// #include <math.h> +//#endif +#include "gbufferlist.h" +#include "gstepsizes.h" +//========================================================================= + +#if defined(__BORLANDC__) + #pragma warn -8027 +#endif + +namespace buf { + +template <class BufferType> +class GWaveList : public GBufferList<BufferType> +{ +public: + typedef BufferType buf_type; + typedef typename buf_type::data_type buf_data_type; + typedef typename GBufferList<buf_type>::size_type size_type; + typedef unsigned char index_type; + typedef std::runtime_error except_type; + + // default constructor + GWaveList() : GBufferList<buf_type>(), padX_(0), padY_(0) {} + // constuctor for specifying the source image + GWaveList(buf_type const& SrcImage) : padX_(0), padY_(0) + { + Image(SrcImage); + } + // constuctor for specifying the source image dimensions + GWaveList(size_type cx, size_type cy) : padX_(0), padY_(0) + { + Image(cx, cy); + } + // copy constructor + GWaveList(GWaveList<buf_type> const& copy) + : GBufferList<buf_type>(copy), padX_(copy.PadX()), + padY_(copy.PadY()) {} + // assignment operator + GWaveList<buf_type>& operator =(GWaveList<buf_type> const& rhs) + { + GBufferList<buf_type>::operator=(rhs); + padX_ = rhs.PadX(); + padY_ = rhs.PadY(); + } + // parenthesis operator (band access) + buf_type const& operator ()(index_type scale_index, + index_type orient_index) const + { + return Band(scale_index, orient_index); + } + buf_type& operator ()(index_type scale_index, + index_type orient_index) + { + return Band(scale_index, orient_index); + } + + // copies only the subbands required for reconstruction + void Assign(const GWaveList<buf_type>& copy) + { + if (this->Count() != copy.Count()) + { + // punt to the assignment operator + *this = copy; + } + else + { + // + // copy only the 2-D AC subbands and + // the highest-level 2-D LL subband + // + index_type const num_scales = NumScales(); + LL(num_scales) = copy.LL(num_scales); + for (index_type index = 1; index <= num_scales; ++index) + { + LH(index) = copy.LH(index); + HL(index) = copy.HL(index); + HH(index) = copy.HH(index); + } + } + } + + void Quantize(const GStepSizes<buf_data_type>& Steps) + { + index_type const num_scales = NumScales(); + LL(num_scales).Quantize(Steps.LL()); + for (index_type iScale = 1; iScale <= num_scales; ++iScale) + { + LH(iScale).Quantize(Steps.LH(iScale)); + HL(iScale).Quantize(Steps.HL(iScale)); + HH(iScale).Quantize(Steps.HH(iScale)); + } + } + void QuantizeInt(const GStepSizes<buf_data_type>& Steps) + { + index_type const num_scales = NumScales(); + LL(num_scales).QuantizeInt(Steps.LL()); + for (index_type iScale = 1; iScale <= num_scales; ++iScale) + { + LH(iScale).QuantizeInt(Steps.LH(iScale)); + HL(iScale).QuantizeInt(Steps.HL(iScale)); + HH(iScale).QuantizeInt(Steps.HH(iScale)); + } + } + void DeQuantizeInt(const GStepSizes<buf_data_type>& Steps) + { + index_type const num_scales = NumScales(); + LL(num_scales).DeQuantizeInt(Steps.LL()); + for (index_type iScale = 1; iScale <= num_scales; ++iScale) + { + LH(iScale).DeQuantizeInt(Steps.LH(iScale)); + HL(iScale).DeQuantizeInt(Steps.HL(iScale)); + HH(iScale).DeQuantizeInt(Steps.HH(iScale)); + } + } + void QuantizeDZ(const GStepSizes<buf_data_type>& Steps) + { + index_type const num_scales = NumScales(); + LL(num_scales).QuantizeDZ(Steps.LL()); + for (index_type iScale = 1; iScale <= num_scales; ++iScale) + { + LH(iScale).QuantizeDZ(Steps.LH(iScale)); + HL(iScale).QuantizeDZ(Steps.HL(iScale)); + HH(iScale).QuantizeDZ(Steps.HH(iScale)); + } + } + void QuantizeDZInt(const GStepSizes<buf_data_type>& Steps) + { + index_type const num_scales = NumScales(); + LL(num_scales).QuantizeDZInt(Steps.LL()); + for (index_type iScale = 1; iScale <= num_scales; ++iScale) + { + LH(iScale).QuantizeDZInt(Steps.LH(iScale)); + HL(iScale).QuantizeDZInt(Steps.HL(iScale)); + HH(iScale).QuantizeDZInt(Steps.HH(iScale)); + } + } + void DeQuantizeDZInt(const GStepSizes<buf_data_type>& Steps) + { + index_type const num_scales = NumScales(); + LL(num_scales).DeQuantizeDZInt(Steps.LL()); + for (index_type iScale = 1; iScale <= num_scales; ++iScale) + { + LH(iScale).DeQuantizeDZInt(Steps.LH(iScale)); + HL(iScale).DeQuantizeDZInt(Steps.HL(iScale)); + HH(iScale).DeQuantizeDZInt(Steps.HH(iScale)); + } + } + + index_type NumScales() const + { + return static_cast<index_type>(0.5 + (Count() - 1) / 6.0); + } + index_type NumBands() const + { + return static_cast<index_type>(1.5 + 3.0 * NumScales()); + } + buf_type const& Image() const + { + return LL(0); + } + void Image(buf_type const& NewImage) + { + if (Count() <= 0) + { + Add(NewImage); + } + else Items(0) = NewImage; + } + void Image(size_type cx, size_type cy) + { + Add(buf_type(cx, cy)); + } + + buf_type const& LL(index_type scale_index) const + { + return Items(scale_index * 6); + } + buf_type const& LH(index_type scale_index) const + { + return Items((scale_index * 6) - 1); + } + buf_type const& HL(index_type scale_index) const + { + return Items((scale_index * 6) - 2); + } + buf_type const& HH(index_type scale_index) const + { + return Items((scale_index * 6) - 3); + } + buf_type const& H(index_type scale_index) const + { + return Items((scale_index * 6) - 4); + } + buf_type const& L(index_type scale_index) const + { + return Items((scale_index * 6) - 5); + } + buf_type const& Band(index_type scale_index, + index_type orient_index) const + { + switch (orient_index) + { + case 0: return LH(scale_index); + case 1: return HL(scale_index); + case 2: return HH(scale_index); + } + } + + buf_type& Image() + { + return LL(0); + } + buf_type& LL(index_type scale_index) + { + return Items(scale_index * 6); + } + buf_type& LH(index_type scale_index) + { + return Items((scale_index * 6) - 1); + } + buf_type& HL(index_type scale_index) + { + return Items((scale_index * 6) - 2); + } + buf_type& HH(index_type scale_index) + { + return Items((scale_index * 6) - 3); + } + buf_type& H(index_type scale_index) + { + return Items((scale_index * 6) - 4); + } + buf_type& L(index_type scale_index) + { + return Items((scale_index * 6) - 5); + } + buf_type& Band(index_type scale_index, + index_type orient_index) + { + switch (orient_index) + { + case 0: return LH(scale_index); + case 1: return HL(scale_index); + case 2: return HH(scale_index); + } + throw except_type("Invalid subband index"); + } + + size_type PadX() const { return padX_; } + size_type PadY() const { return padY_; } + void AddPadding(index_type num_scales) + { + buf_type& SrcImage = Image(); + size_type const cx = SrcImage.Width(); + size_type const cy = SrcImage.Height(); + + // ensure that we always have an even-sized subband + size_type const step = static_cast<size_type>( + 0.5 + std::pow(2.0, num_scales) + ); + padX_ = (cx % step != 0) ? step - (cx % step) : 0; + padY_ = (cy == 1) ? 0 : + ((cy % step != 0) ? step - (cy % step) : 0); + if (padX_ != 0 || padY_ != 0) + { + SrcImage.Resize(cx + padX_, cy + padY_, buf_type::rt_copy); + } + } + void RemovePadding() + { + // remove the padding that was added to the image + buf_type& RecImage = Image(); + RecImage.Resize( + RecImage.Width() - padX_, RecImage.Height() - padY_, + buf_type::rt_copy + ); + } + void AllocBands(index_type num_scales) + { + // no-op if we already have the memory + if (CanRecycleBands(num_scales)) + { + return; + } + + // clear all bands except LL(0) + size_type count = Count(); + for (size_type index = count - 1; index > 0; --index) + { + Delete(index); + } + + buf_type const& SrcImage = Image(); + size_type const cx = SrcImage.Width(); + size_type cy = SrcImage.Height(); + size_type half_cx = cx >> 1; + size_type half_cy = cy >> 1; + + // add the required subbands to the list + Reserve(static_cast<size_type>(1.5 + 3.0 * num_scales)); + for (index_type iLevel = 1; iLevel <= num_scales; ++iLevel) + { + // make room for the L and H subbands + Add(half_cx, cy); + Add(half_cx, cy); + + if (cy > 1) + { + // make room for the HH, HL, HL, and LL subbands + Add(half_cx, half_cy); + Add(half_cx, half_cy); + Add(half_cx, half_cy); + Add(half_cx, half_cy); + + // divide the dimensions by 2 for the next scale + cy >>= 1; half_cx >>= 1; half_cy >>= 1; + } + else + { + // make placeholders for the HH, HL, HL, and LL subbands + Add(0, 0); + Add(0, 0); + Add(0, 0); + Add(0, 0); + + // divide the horz. dimension by 2 for the next scale + half_cx >>= 1; + } + } + } + +private: + bool CanRecycleBands(index_type num_scales) + { + if (num_scales != NumScales()) + { + return false; + } + + buf_type const& SrcImage = Image(); + size_type const cx = SrcImage.Width(); + size_type cy = SrcImage.Height(); + size_type half_cx = cx >> 1; + size_type half_cy = cy >> 1; + + for (index_type iScale = 1; iScale <= num_scales; ++iScale) + { + if (L(iScale).Height() != cy) return false; + if (H(iScale).Height() != cy) return false; + if (L(iScale).Width() != half_cx) return false; + if (H(iScale).Width() != half_cx) return false; + if (cy > 1) + { + if (HH(iScale).Width() != half_cx) return false; + if (HL(iScale).Width() != half_cx) return false; + if (LH(iScale).Width() != half_cx) return false; + if (LL(iScale).Width() != half_cx) return false; + if (HH(iScale).Height() != half_cy) return false; + if (HL(iScale).Height() != half_cy) return false; + if (LH(iScale).Height() != half_cy) return false; + if (LL(iScale).Height() != half_cy) return false; + + // divide the dimensions by 2 for the next scale + cy >>= 1; half_cx >>= 1; half_cy >>= 1; + } + else + { + // divide the horz. dimensions by 2 for the next scale + half_cx >>= 1; + } + } + return true; + } + +private: + size_type padX_; + size_type padY_; +}; +//------------------------------------------------------------------------- + +////////////////////////////////////////////////////////// +// commonly-used aliases +////////////////////////////////////////////////////////// + typedef GWaveList<GFloatBuffer> GFloatWaveList; + typedef GWaveList<GDoubleBuffer> GDoubleWaveList; + typedef GWaveList<GByteBuffer> GByteWaveList; + typedef GWaveList<GIntBuffer> GIntWaveList; + typedef GWaveList<GDWordBuffer> GDWordWaveList; + typedef GWaveList<GShortBuffer> GShortWaveList; + typedef GWaveList<GWordBuffer> GWordWaveList; + typedef GWaveList<GBoolBuffer> GBoolWaveList; +////////////////////////////////////////////////////////// + +} // namespace buf + +#if defined(__BORLANDC__) + #pragma warn .8027 +#endif + +//========================================================================= +#endif // gwavelistH +//========================================================================= diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/imdwt.cpp b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/imdwt.cpp new file mode 100644 index 0000000..5229617 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_cpp/imdwt.cpp @@ -0,0 +1,95 @@ + +#define GBUFFER_NO_RANGE_CHECK + +#include <mex.h> +#include "ginclude/gwavelift.h" +#if defined(_MSC_VER) && (_MSC_VER <= 1200) + namespace std { + using ::atoi; + using ::atof; + using ::FILE; + using ::fread; + using ::fwrite; + using ::fclose; + } +#endif +#pragma warning(disable:4244) + +typedef buf::GFloatBuffer band_type; +typedef buf::GFloatWaveList bands_type; +typedef wavlet::GFloatWavelift wave_type; +typedef band_type::data_type data_type; +typedef band_type::size_type size_type; +//--------------------------------------------------------------------------- + +void mexFunction( + int nlhs, + mxArray *plhs[], + int nrhs, + const mxArray *prhs[] + ) +{ + if (nlhs != 1) + { + mexErrMsgTxt("Invalid number of output arguments."); + } + if (nrhs < 1) + { + mexErrMsgTxt("Invalid number of input arguments."); + } + + // get vector of evaluation points + double* p_img = mxGetPr(prhs[0]); + size_type const cy = mxGetN(prhs[0]); + size_type const cx = mxGetM(prhs[0]); + + // get number of DWT levels + int const num_levels = (nrhs > 1) ? mxGetScalar(prhs[1]) : 5; + + // load the source image + bands_type bands(cx, cy); + size_type size = bands.Image().Size(); + data_type* p_img_cpp = bands.Image().Data(); + for (size_type idx = 0; idx < size; ++idx) + { + *p_img_cpp++ = *p_img++; + } + + // perform the forward DWT + wave_type().Decompose(bands, num_levels); + +// mexPrintf("mean = %f\n", bands.Image().Mean()); +// mexPrintf("cx = %d, cy = %d\n", cx, cy); +// mexPrintf("num_levels = %d\n", num_levels); + + // allocate memory and assign output pointer + int idx = 0; + mxArray* p_cell_mx = mxCreateCellMatrix(num_levels, 1); + for (int s = 1; s <= num_levels; ++s) + { + int const num_orients = (s == num_levels) ? 4 : 3; + mxArray* p_cell_orient_mx = + mxCreateCellMatrix(num_orients, 1); + mxSetCell(p_cell_mx, s - 1, p_cell_orient_mx); + + for (int o = 0; o < num_orients; ++o) + { + band_type const& band = (o < 3) ? + bands(s, o) : bands.LL(num_levels); + mxArray* p_band_mx = + mxCreateDoubleMatrix(band.Width(), band.Height(), mxREAL); + mxSetCell(p_cell_orient_mx, o, p_band_mx); + + double* p_band = mxGetPr(p_band_mx); + data_type const* p_band_cpp = band.Data(); + int const band_size = band.Size(); + for (int idx_band = 0; idx_band < band_size; ++idx_band) + { + *p_band++ = *p_band_cpp++; + } + } + } + plhs[0] = p_cell_mx; +} +//--------------------------------------------------------------------------- + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_modified.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_modified.m new file mode 100644 index 0000000..e502306 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/imdwt_modified.m @@ -0,0 +1,80 @@ +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%%% IMDWT, Modified Version +%%%MM%%% +%%%MM%%% The author of this modified version is with the Visual +%%%MM%%% Communications Laboratory, in department of Electrical and +%%%MM%%% Computer Engineering at Cornell University. The original +%%%MM%%% code was written by Damon Chandler at Cornell University. All of +%%%MM%%% the information and documentation provided with the original +%%%MM%%% code is included below. For more information, see the following +%%%MM%%% website: +%%%MM%%% +%%%MM%%% http://foulard.ece.cornell.edu/dmc27/vsnr/vsnr.html +%%%MM%%% +%%%MM%%% This version of a two-dimensional 9/7 wavelet decomposition will +%%%MM%%% be invoked if the "compile_metric_vsnr" command cannot +%%%MM%%% successfully build a MEX version of the function. Currently, +%%%MM%%% MEX support is only provided for Windows-based platforms. +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%% Author: Matthew Gaubatz +%%%MM%% Version: 1.0 +%%%MM%% Date: 01/05/2007 +%%%MM%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%% Copyright (c) 2007 Visual Communications Lab, Cornell University +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +function [bands] = imdwt(img, nlevels) +%IMDWT Forward discrete wavelet transform of an image. +% [BANDS] = IMDWT(IMG, NLEVELS) returns the subbands of a discrete +% wavelet transform of the image IMG using the 9/7 biorthogonal +% filters. The number of decomposition levels is specified via the +% parameter NLEVELS (default = 5). +%%%MM%%% +%%%MM%%% [BEGIN CHANGE] +%%%MM%%% +%%%MM%%% only the instructions remain the same in this routine; while the +%%%MM%%% original 'imdwt.m' routine simply returned an error indicating +%%%MM%%% that the MEX file should be built, this version simply +%%%MM%%% computes a 5-level 9/7 wavelet transform +%%%MM%%% + +%%%MM%%% +%%%MM%%% compute transform +%%%MM%%% +img = dwt2d(img, nlevels); + +%%%MM%%% +%%%MM%%% save bands as objects +%%%MM%%% +[H,W] = size(img); +bands = cell(5,1); +scale_cell = cell(3,1); + +for scale = 1:nlevels + + scale_cell{1} = img( 1:H/2, W/2+1:W ); + scale_cell{2} = img( H/2+1:H, 1:W/2 ); + scale_cell{3} = img( H/2+1:H, W/2+1:W ); + H = H / 2; + W = W / 2; + + bands{scale} = scale_cell; + +end + +scale_cell{4} = img( 1:H, 1:W ); +bands{nlevels} = scale_cell; + + +%%%MM%%% +%%%MM%%% comment out previous error message +%%%MM%%% +%%%MM%%% s = 'Please compile the mex version of this function.'; +%%%MM%%% s = strcat(s, ' See the file "imdwt_cpp/compile_imdwt.m" for info.'); +%%%MM%%% error(s); + +%%%MM%%% +%%%MM%%% [END CHANGE] +%%%MM%%% diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/readme.txt b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/readme.txt new file mode 100644 index 0000000..004f2ab --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/readme.txt @@ -0,0 +1,28 @@ + +This package contains a beta MATLAB version of the VSNR function from +the paper "VSNR: A Wavelet-Based Visual Signal-to-Noise Ratio for +Natural Images," D. M. Chandler and S. S. Hemami, published in the IEEE +Transactions on Image Processing, September 2007. + +The included files are as follows: + +o The function vsnr.m contains the source code of the VSNR() function. + +o The script vsnr_demo.m demonstrates how to compute the VSNR for the +provided demo images (horse.bmp, horse.JP2.bmp, and horse.NOZ.bmp). + +o The file imdwt.dll is a Windows mex file version of the function +IMDWT(), which performs the forward discrete wavelet transform. If +this this mex file does not work with your version of MATLAB, please +run the script compile_imdwt.m in the imdwt_cpp directory to create a +compatible mex file from the provided C++ source code. + +o The directory imdwt_cpp contains the C++ source code for the IMDWT() +function. The IMDWT() function is required by VSNR() to compute the +DWTs of the images. + +Please contact Damon at damon.chandler@okstate.edu for questions and +other inquiries. + +Cheers, +Damon diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/vsnr.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/vsnr.m new file mode 100644 index 0000000..6537911 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/vsnr.m @@ -0,0 +1,309 @@ +function [res] = vsnr(src_img, dst_img, alpha, viewing_params) +%VSNR Visual signal-to-noise ratio for digital images. +% [RES] = VSNR(SRC_IMG, DST_IMG) returns the visual signal-to-noise +% ratio for the distorted image DST_IMG relative to the original +% image SRC_IMG. The result is in dB in the range 0 - Inf. If the +% parameter SRC_IMG = -1, then data regarding the orignal image and +% viewing conditions will be recycled from the previous call to VSNR +% (see "Cache Option" below). +% +% [RES] = VSNR(SRC_IMG, DST_IMG, ALPHA) allows for the additional +% specification of the linear combination weight ALPHA (in the range +% [0, 1]) which specifies the relative contributions of perceived +% distortion contrast and disruption of global precedence toward the +% total visual distortion. By default, ALPHA = 0.04 (which uses 4% +% contribution from perceived distortion contrast, and 96% +% contribution from disruption of global precedence). Specifying a +% value of ALPHA = -1 will use the default (ALPHA = 0.04). +% +% [RES] = VSNR(SRC_IMG, DST_IMG, ALPHA, VIEWING_PARAMS) allows for +% additional specification of the viewing conditions and DWT options. +% The structure VIEWING_PARAMS contains the following data members +% which must be set prior to passing the structure to the VSNR +% function: +% +% VIEWING_PARAMS.b = display device black-level offset +% (default = 0, for 8-bit sRGB) +% VIEWING_PARAMS.k = display device pixel-value-to-voltage gain +% (default = 0.02874, for 8-bit sRGB) +% VIEWING_PARAMS.g = display device pixel-value-to-voltage gain +% (default = 2.2, for 8-bit sRGB) +% VIEWING_PARAMS.r = display device resolution (pixels/inch) +% (default = 96) +% VIEWING_PARAMS.v = viewing distance (inches) +% (default = 19.1) +% VIEWING_PARAMS.num_levels = number of DWT levels +% (default = 5) +% VIEWING_PARAMS.filter_gains = DWT filter gains (may be all ones) +% (default = 2.^[1:num_levels]) +% +% Specifying a value of VIEWING_PARAMS = -1 will use the default +% initialization of VIEWING_PARAMS. +% +% *** Cache Option *** +% [RES] = VSNR(-1, DST_IMG) or [RES] = VSNR(-1, DST_IMG, ALPHA) +% informs the VSNR function that data corresponding to viewing +% conditions and analysis of the original image should not be +% computed; rather, these data should be reused from the previous +% call to VSNR. This option is useful for measuring the VSNRs of +% various distorted versions of a single original image viewed under +% the same viewing conditions. Call VSNR(-1) [i.e., with only a +% single parameter of -1] to just clear the cache (no-op otherwise). +% +% Requires function imdwt to perform the forward DWT of the images. +% (See 'imdwt_cpp/compile_imdwt.m' for information on compiling a +% max shared library from 'imdwt_cpp/imdwt.cpp'.) + +% Author: D. M. Chander +% Copyright 1998-2007 Image Coding and Analysis Lab, Oklahoma State +% University, Stillwater, OK 74078 USA. +% $Revision: BETA 1.02.0.0 $ $Date: 2007/10/04/ 15:00:00 $ + +% this global variable is used by all subfunctions +% and is later cleared by vsnr() before returning +global vsnr_data; + +if (nargin == 1 & src_img == -1) + clear global vsnr_data; + res = -1; + return; +end + +if (nargin > 3 & src_img == -1) + s = 'Ignoring specified viewing parameters under cache option.'; + s = strcat(s, ' Using cached parameters instead.'); + warning(s); +end + +% default alpha +if (nargin < 3 | alpha == -1) + alpha = 0.04; +end + +if (src_img ~= -1) + % default viewing parameters and DWT options + if (nargin < 4 | ~isstruct(viewing_params)) + ok = 1 + % display device black-level offset (sRGB) + vsnr_data.b = 0; + % display device pixel-value-to-voltage gain (sRGB) + vsnr_data.k = 0.02874; + % display device gamma (sRGB) + vsnr_data.g = 2.2; + % display device resolution (pixels/inch) + vsnr_data.r = 96; + % viewing distance (inches) + vsnr_data.v = 19.1; + % number of DWT levels + vsnr_data.num_levels = 5; + % DWT filter gains (typically either as below, or all ones) + vsnr_data.filter_gains = 2.^[1:vsnr_data.num_levels]; + else + if (isfield(viewing_params, 'b')) + vsnr_data.b = viewing_params.b; + end + if (isfield(viewing_params, 'k')) + vsnr_data.k = viewing_params.k; + end + if (isfield(viewing_params, 'g')) + vsnr_data.g = viewing_params.g; + end + if (isfield(viewing_params, 'r')) + vsnr_data.r = viewing_params.r; + end + if (isfield(viewing_params, 'v')) + vsnr_data.v = viewing_params.v; + end + if (isfield(viewing_params, 'num_levels')) + vsnr_data.num_levels = viewing_params.num_levels; + end + if (isfield(viewing_params, 'filter_gains')) + vsnr_data.filter_gains = viewing_params.filter_gains; + else + vsnr_data.filter_gains = 2.^[1:vsnr_data.num_levels]; + end + end + + % spatial frequencies for DWT levels + vsnr_data.fs = vsnr_data.r*vsnr_data.v*tan(pi/180) *... + 2.^-[1:vsnr_data.num_levels]; + + % initialize the pixel-value-to-luminance lookup table + pixel_vals = -255:255; + vsnr_data.pix2lum_table =... + (vsnr_data.b + vsnr_data.k*pixel_vals).^vsnr_data.g; + + % analyze the source image + vsnr_data.src_img = src_img; + clear src_img; + analyze_src_img(); + +% attempting to reuse cached data, check... +elseif (~isfield(vsnr_data, 'src_img')) + error('Invalid source image. Cached data not available.'); +end + +% measure the actual CSNRs of the distorted image +csnrs_act = analyze_dst_img(dst_img); + +if (csnrs_act == -1) % subthreshold distortions + res = Inf; +else + % if csnrs_act is a vector, this denotes the distortions + % are suprathreshold (visible) + if (length(csnrs_act) == vsnr_data.num_levels) + + % compute the assumed best CSNRs for the given Ce + csnrs_str = find_best_csnrs(vsnr_data.Ce); + + % convert the CSNRs to contrasts + Ces_act = vsnr_data.Cis ./ csnrs_act; + Ces_str = vsnr_data.Cis ./ csnrs_str; + + % compute the distances + d_gp = norm(Ces_str - Ces_act); + d_pc = vsnr_data.Ce; + d = alpha*d_pc + (1 - alpha)*d_gp/sqrt(2); + + % brightness-only difference + elseif (length(csnrs_act) == 1) + d = csnrs_act; + end + + % compute the VSNR + res = 20*log10(vsnr_data.Ci / d); +end + +% clean up +clear vsnr_data.Ce; +clear vsnr_data.Ces; +% rest of vsnr_data is cached until a call to vsnr(-1) +%---------------------------------------------------------------------- + +function analyze_src_img() +global vsnr_data; + +% compute some useful statistics about the original image +% mean pixel value +vsnr_data.mX = mean(vsnr_data.src_img(:)); +% mean luminance +src_img_lum = vsnr_data.pix2lum_table(vsnr_data.src_img(:) + 256); +vsnr_data.mL = mean(src_img_lum); +% total RMS image contrast +vsnr_data.Ci = std(src_img_lum, 1) / vsnr_data.mL; +% zeta value used to estimate image contrast at each scale +vsnr_data.zeta = vsnr_data.mL *... + (vsnr_data.b + vsnr_data.k*vsnr_data.mX)^(1 - vsnr_data.g) /... + (vsnr_data.k * vsnr_data.g); + +% compute the image contrast at each scale +vsnr_data.src_bands = imdwt(vsnr_data.src_img, vsnr_data.num_levels); +vsnr_data.Cis = zeros(1, vsnr_data.num_levels); +for s = 1:vsnr_data.num_levels + for o = 1:3 + % estimate the contrast at scale s, orient o + c = std(vsnr_data.src_bands{s}{o}(:), 1) /... + (vsnr_data.zeta * vsnr_data.filter_gains(s)); + vsnr_data.Cis(s) = vsnr_data.Cis(s) + c*c; + end +end +vsnr_data.Cis = sqrt(vsnr_data.Cis); + +% compute the total distortion contrast threshold +ctsnrs = best_csnrs(0); +CTes = vsnr_data.Cis ./ ctsnrs; +vsnr_data.CTe = norm(CTes); +%---------------------------------------------------------------------- + +function [res] = analyze_dst_img(dst_img) +global vsnr_data; + +% compute the error image and its total RMS contrast +err_img = double(uint8(dst_img - vsnr_data.src_img + vsnr_data.mX)); +err_img_lum = vsnr_data.pix2lum_table(err_img(:) + 256); +vsnr_data.Ce = std(err_img_lum, 1) / vsnr_data.mL; + +% if the distortion contrast is suprathreshold +% (i.e., if the distortions are visible)... +if (vsnr_data.Ce > vsnr_data.CTe) + % compute the distortion contrast at each scale + err_bands = imdwt(err_img, vsnr_data.num_levels); + vsnr_data.Ces = zeros(1, vsnr_data.num_levels); + for s = 1:vsnr_data.num_levels + for o = 1:3 + % estimate the contrast at scale s, orient o + c = std(err_bands{s}{o}(:), 1) /... + (vsnr_data.zeta * vsnr_data.filter_gains(s)); + vsnr_data.Ces(s) = vsnr_data.Ces(s) + c*c; + end + end + vsnr_data.Ces = sqrt(vsnr_data.Ces); + + % compute the actual CSNRs + res = vsnr_data.Cis ./ vsnr_data.Ces; +else + lum_diff = abs(mean(err_img_lum) - vsnr_data.mL); + if (lum_diff / vsnr_data.mL < 0.01) + % distortions are subthreshold (undetectable) + res = -1; + else + % punt to Weber's law for brightness-only differences + res = 1.5; + vsnr_data.Ci = 10^(vsnr_data.mL / lum_diff); + end +end +%---------------------------------------------------------------------- + +function [res] = best_csnrs(v_idx) +global vsnr_data; + +a0 = 59.8; +a1 = -0.1258; +a2 = -0.1087; + +b2 = (-1 - a2)*v_idx + a2; +b1 = (1 - a1)*v_idx + a1; +b0 = -a0*v_idx + a0; + +res = max(0, b0*(vsnr_data.fs.^(b2*log(vsnr_data.fs) + b1))); +%---------------------------------------------------------------------- + +function [res] = find_best_csnrs(Ce) +global vsnr_data; + +save_Ce = Ce; +deltaCe = 0.01 * Ce; +v_idx_min = 0; v_idx_max = 1; + +num_iters = 0; +while (num_iters < 32) + v_idx = 0.5 * (v_idx_min + v_idx_max); + if (num_iters > 0) + Ce = save_Ce; + end + + % compute the best CSNRs for the given visibility index + csnrs = best_csnrs(v_idx); + % compute the corresponding distortion contrast + hat_Ce = norm(vsnr_data.Cis ./ csnrs); + + if (v_idx_min == v_idx_max) + % punt + break; + end + + diffCe = hat_Ce - Ce; + if (abs(diffCe) < deltaCe) + % close enough + break; + elseif (diffCe < 0) + % Ce too low + v_idx_min = v_idx; + else + % Ce too high + v_idx_max = v_idx; + end +end + +res = csnrs; +%---------------------------------------------------------------------- diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/vsnr_demo.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/vsnr_demo.m new file mode 100644 index 0000000..03243d3 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/vsnr_demo.m @@ -0,0 +1,29 @@ + +% ------------------------------------------------------------------- +% Brief examples of using the VSNR() function +% ------------------------------------------------------------------- + +% load the original image +src_img = double(imread('horse.bmp')); +% load two distorted images +dst_img_1 = double(imread('horse.JP2.bmp')); +dst_img_2 = double(imread('horse.NOZ.bmp')); + +tic +% compute the VSNR for one of the distorted images +vsnr(src_img, dst_img_1) +toc + +tic +% compute the VSNR for the other distorted image [here, using the +% fast cache option by specifying -1 as the source image; this way, +% data regarding the source image don't have to be recomputed, +% rather, it will be recycled from the previous call to vsnr()] +vsnr(-1, dst_img_2) +toc + +tic +% example of doubling the viewing distance +viewing_params.v = 19.1 * 2; +vsnr(src_img, dst_img_2, -1, viewing_params) +toc diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/vsnr_modified.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/vsnr_modified.m new file mode 100644 index 0000000..726e094 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix/vsnr/vsnr_modified.m @@ -0,0 +1,387 @@ +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%%% VSNR, Modified Version +%%%MM%%% +%%%MM%%% The author of this modified version is with the Visual +%%%MM%%% Communications Laboratory, in department of Electrical and +%%%MM%%% Computer Engineering at Cornell University. The original +%%%MM%%% code was written by Damon Chandler at Cornell University. All of +%%%MM%%% the information and documentation provided with the original +%%%MM%%% code is included below. For more information, see the following +%%%MM%%% website: +%%%MM%%% +%%%MM%%% http://foulard.ece.cornell.edu/dmc27/vsnr/vsnr.html +%%%MM%%% +%%%MM%%% This version of the VSNR computation routine is identical to the +%%%MM%%% original routine, except that it calls a different function to +%%%MM%%% perform a wavelet decomposition. The reason for this decision +%%%MM%%% is to improve the portability of the code. The original VSNR +%%%MM%%% package includes Windows-compatible MEX hooks to code to compute +%%%MM%%% a 9/7 two-dimensional wavelet transform, while this one includes +%%%MM%%% a Matlab version that is used in situations where the existing +%%%MM%%% MEX hooks cannot be built properly. Also, when the input image +%%%MM%%% image is converted to the luminance domain, it is first clipped +%%%MM%%% and quantized to an integer in the range [0,255] +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%%% Author: Matthew Gaubatz +%%%MM%%% Version: 1.0 +%%%MM%%% Date: 01/05/2007 +%%%MM%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%%% Copyright (c) 2007 Visual Communications Lab, Cornell University +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%MM%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +function [res] = vsnr(src_img, dst_img, alpha, viewing_params) +%VSNR Visual signal-to-noise ratio for digital images. +% [RES] = VSNR(SRC_IMG, DST_IMG) returns the visual signal-to-noise +% ratio for the distorted image DST_IMG relative to the original +% image SRC_IMG. The result is in dB in the range 0 - Inf. If the +% parameter SRC_IMG = -1, then data regarding the orignal image and +% viewing conditions will be recycled from the previous call to VSNR +% (see "Cache Option" below). +% +% [RES] = VSNR(SRC_IMG, DST_IMG, ALPHA) allows for the additional +% specification of the linear combination weight ALPHA (in the range +% [0, 1]) which specifies the relative contributions of perceived +% distortion contrast and disruption of global precedence toward the +% total visual distortion. By default, ALPHA = 0.04 (which uses 4% +% contribution from perceived distortion contrast, and 96% +% contribution from disruption of global precedence). Specifying a +% value of ALPHA = -1 will use the default (ALPHA = 0.04). +% +% [RES] = VSNR(SRC_IMG, DST_IMG, ALPHA, VIEWING_PARAMS) allows for +% additional specification of the viewing conditions and DWT options. +% The structure VIEWING_PARAMS contains the following data members +% which must be set prior to passing the structure to the VSNR +% function: +% +% VIEWING_PARAMS.b = display device black-level offset +% (default = 0, for 8-bit sRGB) +% VIEWING_PARAMS.k = display device pixel-value-to-voltage gain +% (default = 0.02874, for 8-bit sRGB) +% VIEWING_PARAMS.g = display device pixel-value-to-voltage gain +% (default = 2.2, for 8-bit sRGB) +% VIEWING_PARAMS.r = display device resolution (pixels/inch) +% (default = 96) +% VIEWING_PARAMS.v = viewing distance (inches) +% (default = 19.1) +% VIEWING_PARAMS.num_levels = number of DWT levels +% (default = 5) +% VIEWING_PARAMS.filter_gains = DWT filter gains (may be all ones) +% (default = 2.^[1:num_levels]) +% +% Specifying a value of VIEWING_PARAMS = -1 will use the default +% initialization of VIEWING_PARAMS. +% +% *** Cache Option *** +% [RES] = VSNR(-1, DST_IMG) or [RES] = VSNR(-1, DST_IMG, ALPHA) +% informs the VSNR function that data corresponding to viewing +% conditions and analysis of the original image should not be +% computed; rather, these data should be reused from the previous +% call to VSNR. This option is useful for measuring the VSNRs of +% various distorted versions of a single original image viewed under +% the same viewing conditions. Call VSNR(-1) [i.e., with only a +% single parameter of -1] to just clear the cache (no-op otherwise). +% +% Requires function imdwt to perform the forward DWT of the images. +% (See 'imdwt_cpp/compile_imdwt.m' for information on compiling a +% max shared library from 'imdwt_cpp/imdwt.cpp'.) + +% Author: D. M. Chander +% Copyright 1998-2007 Image Coding and Analysis Lab, Oklahoma State +% University, Stillwater, OK 74078 USA. +% $Revision: BETA 1.02.0.0 $ $Date: 2007/10/04/ 15:00:00 $ + +% this global variable is used by all subfunctions +% and is later cleared by vsnr() before returning +global vsnr_data; + +if (nargin == 1 & src_img == -1) + clear global vsnr_data; + res = -1; + return; +end + +if (nargin > 3 & src_img == -1) + s = 'Ignoring specified viewing parameters under cache option.'; + s = strcat(s, ' Using cached parameters instead.'); + warning(s); +end + +% default alpha +if (nargin < 3 | alpha == -1) + alpha = 0.04; +end + +if (src_img ~= -1) + % default viewing parameters and DWT options + if (nargin < 4 | ~isstruct(viewing_params)) + %%%MM%%% + %%%MM%%% [BEGIN CHANGE] + %%%MM%%% + %%%MM%%% add a semi-colon after the 'ok' symbol + %%%MM%%% + ok = 1; + %%%MM%%% + %%%MM%%% [END CHANGE] + %%%MM%%% + % display device black-level offset (sRGB) + vsnr_data.b = 0; + % display device pixel-value-to-voltage gain (sRGB) + vsnr_data.k = 0.02874; + % display device gamma (sRGB) + vsnr_data.g = 2.2; + % display device resolution (pixels/inch) + vsnr_data.r = 96; + % viewing distance (inches) + vsnr_data.v = 19.1; + % number of DWT levels + vsnr_data.num_levels = 5; + % DWT filter gains (typically either as below, or all ones) + vsnr_data.filter_gains = 2.^[1:vsnr_data.num_levels]; + else + if (isfield(viewing_params, 'b')) + vsnr_data.b = viewing_params.b; + end + if (isfield(viewing_params, 'k')) + vsnr_data.k = viewing_params.k; + end + if (isfield(viewing_params, 'g')) + vsnr_data.g = viewing_params.g; + end + if (isfield(viewing_params, 'r')) + vsnr_data.r = viewing_params.r; + end + if (isfield(viewing_params, 'v')) + vsnr_data.v = viewing_params.v; + end + if (isfield(viewing_params, 'num_levels')) + vsnr_data.num_levels = viewing_params.num_levels; + end + if (isfield(viewing_params, 'filter_gains')) + vsnr_data.filter_gains = viewing_params.filter_gains; + else + vsnr_data.filter_gains = 2.^[1:vsnr_data.num_levels]; + end + end + + % spatial frequencies for DWT levels + vsnr_data.fs = vsnr_data.r*vsnr_data.v*tan(pi/180) *... + 2.^-[1:vsnr_data.num_levels]; + + % initialize the pixel-value-to-luminance lookup table + pixel_vals = -255:255; + vsnr_data.pix2lum_table =... + (vsnr_data.b + vsnr_data.k*pixel_vals).^vsnr_data.g; + + % analyze the source image + vsnr_data.src_img = src_img; + clear src_img; + analyze_src_img(); + +% attempting to reuse cached data, check... +elseif (~isfield(vsnr_data, 'src_img')) + error('Invalid source image. Cached data not available.'); +end + +% measure the actual CSNRs of the distorted image +csnrs_act = analyze_dst_img(dst_img); + +if (csnrs_act == -1) % subthreshold distortions + res = Inf; +else + % if csnrs_act is a vector, this denotes the distortions + % are suprathreshold (visible) + if (length(csnrs_act) == vsnr_data.num_levels) + + % compute the assumed best CSNRs for the given Ce + csnrs_str = find_best_csnrs(vsnr_data.Ce); + + % convert the CSNRs to contrasts + Ces_act = vsnr_data.Cis ./ csnrs_act; + Ces_str = vsnr_data.Cis ./ csnrs_str; + + % compute the distances + d_gp = norm(Ces_str - Ces_act); + d_pc = vsnr_data.Ce; + d = alpha*d_pc + (1 - alpha)*d_gp/sqrt(2); + + % brightness-only difference + elseif (length(csnrs_act) == 1) + d = csnrs_act; + end + + % compute the VSNR + res = 20*log10(vsnr_data.Ci / d); +end + +% clean up +clear vsnr_data.Ce; +clear vsnr_data.Ces; +% rest of vsnr_data is cached until a call to vsnr(-1) +%---------------------------------------------------------------------- + +function analyze_src_img() +global vsnr_data; + +% compute some useful statistics about the original image +% mean pixel value +vsnr_data.mX = mean(vsnr_data.src_img(:)); +% mean luminance +%%%MM%%% +%%%MM%%% [BEGIN CHANGE] +%%%MM%%% +%%%MM%%% force image to integers in the range [0,255] +%%%MM%%% + +%%%MM%%%src_img_lum = vsnr_data.pix2lum_table(vsnr_data.src_img(:) + 256); +src_img_lum = vsnr_data.pix2lum_table( double(uint8( vsnr_data.src_img(:) )) + 256); +%%%MM%%% +%%%MM%%% [END CHANGE] +%%%MM%%% +vsnr_data.mL = mean(src_img_lum); +% total RMS image contrast +vsnr_data.Ci = std(src_img_lum, 1) / vsnr_data.mL; +% zeta value used to estimate image contrast at each scale +vsnr_data.zeta = vsnr_data.mL *... + (vsnr_data.b + vsnr_data.k*vsnr_data.mX)^(1 - vsnr_data.g) /... + (vsnr_data.k * vsnr_data.g); + +%%%MM%%% +%%%MM%%% [BEGIN CHANGE] +%%%MM%%% + +%%%MM%%% +%%%MM%%% replace the original 'imdwt' function with another version +%%%MM%%% + +% compute the image contrast at each scale +%%%MM%%%vsnr_data.src_bands = imdwt(vsnr_data.src_img, vsnr_data.num_levels); +vsnr_data.src_bands = imdwt_modified(vsnr_data.src_img, vsnr_data.num_levels); + +%%%MM%%% +%%%MM%%% [END CHANGE] +%%%MM%%% + +vsnr_data.Cis = zeros(1, vsnr_data.num_levels); +for s = 1:vsnr_data.num_levels + for o = 1:3 + % estimate the contrast at scale s, orient o + c = std(vsnr_data.src_bands{s}{o}(:), 1) /... + (vsnr_data.zeta * vsnr_data.filter_gains(s)); + vsnr_data.Cis(s) = vsnr_data.Cis(s) + c*c; + end +end +vsnr_data.Cis = sqrt(vsnr_data.Cis); + +% compute the total distortion contrast threshold +ctsnrs = best_csnrs(0); +CTes = vsnr_data.Cis ./ ctsnrs; +vsnr_data.CTe = norm(CTes); +%---------------------------------------------------------------------- + +function [res] = analyze_dst_img(dst_img) +global vsnr_data; + +% compute the error image and its total RMS contrast +err_img = double(uint8(dst_img - vsnr_data.src_img + vsnr_data.mX)); +err_img_lum = vsnr_data.pix2lum_table(err_img(:) + 256); +vsnr_data.Ce = std(err_img_lum, 1) / vsnr_data.mL; + +% if the distortion contrast is suprathreshold +% (i.e., if the distortions are visible)... +if (vsnr_data.Ce > vsnr_data.CTe) + %%%MM%%% + %%%MM%%% [BEGIN CHANGE] + %%%MM%%% + + %%%MM%%% + %%%MM%%% replace the original 'imdwt' function with another version + %%%MM%%% + + % compute the distortion contrast at each scale + %%%MM%%%err_bands = imdwt(err_img, vsnr_data.num_levels); + err_bands = imdwt_modified(err_img, vsnr_data.num_levels); + + %%%MM%%% + %%%MM%%% [END CHANGE] + %%%MM%%% + vsnr_data.Ces = zeros(1, vsnr_data.num_levels); + for s = 1:vsnr_data.num_levels + for o = 1:3 + % estimate the contrast at scale s, orient o + c = std(err_bands{s}{o}(:), 1) /... + (vsnr_data.zeta * vsnr_data.filter_gains(s)); + vsnr_data.Ces(s) = vsnr_data.Ces(s) + c*c; + end + end + vsnr_data.Ces = sqrt(vsnr_data.Ces); + + % compute the actual CSNRs + res = vsnr_data.Cis ./ vsnr_data.Ces; +else + lum_diff = abs(mean(err_img_lum) - vsnr_data.mL); + if (lum_diff / vsnr_data.mL < 0.01) + % distortions are subthreshold (undetectable) + res = -1; + else + % punt to Weber's law for brightness-only differences + res = 1.5; + vsnr_data.Ci = 10^(vsnr_data.mL / lum_diff); + end +end +%---------------------------------------------------------------------- + +function [res] = best_csnrs(v_idx) +global vsnr_data; + +a0 = 59.8; +a1 = -0.1258; +a2 = -0.1087; + +b2 = (-1 - a2)*v_idx + a2; +b1 = (1 - a1)*v_idx + a1; +b0 = -a0*v_idx + a0; + +res = max(0, b0*(vsnr_data.fs.^(b2*log(vsnr_data.fs) + b1))); +%---------------------------------------------------------------------- + +function [res] = find_best_csnrs(Ce) +global vsnr_data; + +save_Ce = Ce; +deltaCe = 0.01 * Ce; +v_idx_min = 0; v_idx_max = 1; + +num_iters = 0; +while (num_iters < 32) + v_idx = 0.5 * (v_idx_min + v_idx_max); + if (num_iters > 0) + Ce = save_Ce; + end + + % compute the best CSNRs for the given visibility index + csnrs = best_csnrs(v_idx); + % compute the corresponding distortion contrast + hat_Ce = norm(vsnr_data.Cis ./ csnrs); + + if (v_idx_min == v_idx_max) + % punt + break; + end + + diffCe = hat_Ce - Ce; + if (abs(diffCe) < deltaCe) + % close enough + break; + elseif (diffCe < 0) + % Ce too low + v_idx_min = v_idx; + else + % Ce too high + v_idx_max = v_idx; + end +end + +res = csnrs; +%---------------------------------------------------------------------- diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix_mux.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix_mux.m new file mode 100644 index 0000000..b856aa6 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/metrix_mux.m @@ -0,0 +1,157 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% FUNCTION: metrix_mux +%%% +%%% INPUTS: reference_image - original image data +%%% +%%% query_image - modified image data to be compared with +%%% original image +%%% +%%% metrix_indicator - a series of letters (or a number) denoting +%%% the assement algorithm to be used for this +%%% comparison; names (and corresponding +%%% numbers of supported algorithms are given +%%% below. +%%% +%%% OUTPUTS: metrix_value - value computed by the selected algorithm +%%% +%%% CHANGES: NONE +%%% +%%% NOTES: This routine is the generic gateway to all the quality +%%% assessment algorithms included in the MeTriX MuX package. The +%%% API is simple; it requires an input reference image, an input +%%% query image to be compared with the reference image, and an +%%% algorithm name. A list of all supported metrics is given here: +%%% +%%% algorithm indicator string indicator value +%%% --------------------------- ---------------- --------------- +%%% mean-squared error 'MSE' 1 +%%% peak signal-to-noise ratio 'PSNR' 2 +%%% structural similarity index 'SSIM' 3 +%%% multiscale SSIM index 'MSSIM' 4 +%%% visual signal-to-noise ratio 'VSNR' 5 +%%% visual information fidelity 'VIF' 6 +%%% pixel-based VIF 'VIFP' 7 +%%% universal quality index 'UQI' 8 +%%% image fidelity criterion 'IFC' 9 +%%% noise quality measure 'NQM' 10 +%%% weighted signal-to-noise ratio 'WSNR' 11 +%%% signal-to-noise ratio 'SNR' 12 +%%% +%%% This function performs various kind of error checking, such +%%% that each supported algorithm should "work" with any input image. +%%% Some of the algorithms, for instance, use a multi-scale +%%% space-frequency decomposition which requires the input signal +%%% to be a certain size. If any padding is required to make sure +%%% a decomposition will function properly, it will be applied +%%% automatically. Also, most metrics are designed to operate on +%%% a single color plane of data. If a multi-plane image i +%%% provided as input, this routine assumes that the data represents +%%% an RGB image, and will extract the luminance component of the +%%% image using the RGB->YCbCr transform utilized by the IJG JPEG +%%% library. +%%% +%%% The 'preprocess_metrix_mux' function is provided as a separate +%%% routine in case a user intends to compute more than one +%%% comparions using a specific input reference image. +%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Author: Matthew Gaubatz +%%% Version: 1.0 +%%% Date: 01/05/2007 +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Copyright (c) 2007 Visual Communications Lab, Cornell University +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Permission to use, copy, modify, distribute and sell this software +%%% and its documentation for any purpose is hereby granted without fee, +%%% provided that the above copyright notice appear in all copies and +%%% that both that copyright notice and this permission notice appear +%%% in supporting documentation. VCL makes no representations about +%%% the suitability of this software for any purpose. +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% DISCLAIMER: +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% The code provided hereunder is provided as is without warranty +%%% of any kind, either express or implied, including but not limited +%%% to the implied warranties of merchantability and fitness for a +%%% particular purpose. The author(s) shall in no event be liable for +%%% any damages whatsoever including direct, indirect, incidental, +%%% consequential, loss of business profits or special damages. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +function [metrix_value] = metrix_mux( reference_image, query_image, metrix_indicator ) + +[H_reference,W_reference,D_reference] = size( reference_image ); +[H_query,W_query,D_query] = size( query_image ); + +%%% +%%% check that the input images are actual images +%%% +if (H_reference == 0) | (W_reference == 0) + error('Error [metrix_mux]: Reference image is zero-dimensional!'); +end +if (H_query == 0) | (W_query == 0) + error('Error [metrix_mux]: Query image is zero-dimensional!'); +end + +%%% +%%% check that the input images are the same size +%%% +if ( (H_reference ~= H_query) | (W_reference ~= W_query) | (D_reference ~= D_query) ) + error('Error [metrix_mux]: Reference and query images are not the same size!'); +end + + +metrix_name_cell = get_name_cell_metrix_mux; + +if isstr( metrix_indicator ) + %%% + %%% convert input string to upper case + %%% + metrix_name = lower( metrix_indicator ); +else + %%% + %%% map metric indicator to a function name + %%% + if (metrix_indicator < 1) | (metrix_indicator > length( metrix_name_cell )) + %%% + %%% alert the user that the metric indicator is not valid + %%% + error( sprintf('Error [metric_mux]: Input metric indicator %i is not between 1 and %i\n (and therefore does not correspond to a supported metric).', metrix_indicator, length(metrix_name_cell) ) ); + error(' (and therefore does not correspond to a supported metric).'); + end + metrix_indicator = max(1, min(length(metrix_name_cell), metrix_indicator)); + metrix_name = metrix_name_cell{ metrix_indicator }; +end + +%%% +%%% compute desired metric +%%% +for k = 1:length( metrix_name_cell ) + if strcmp( metrix_name, metrix_name_cell{k} ) ~= 0 + %%% + %%% preprocess the input images + %%% + reference_image = preprocess_metrix_mux( reference_image, metrix_name_cell{k} ); + query_image = preprocess_metrix_mux( query_image, metrix_name_cell{k} ); + %%% + %%% call the desired metric + %%% + metrix_value = feval( sprintf('metrix_%s',metrix_name), reference_image, query_image ); + return; + end +end + +%%% +%%% alert the user that the metrix indicator is not valid +%%% +error_str = sprintf('Error [metrix_mux]: Input metrix indicator ''%s'' not recognized!\n\n', metrix_indicator); +error_str = [error_str sprintf(' A list of supported metrix indicator values is given below:\n\n')];; +for k = 1:length( metrix_name_cell ) + error_str = [error_str sprintf(' %i - ''%s''\n', k, metrix_name_cell{k})]; +end +error( error_str ); + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/preprocess_metrix_mux.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/preprocess_metrix_mux.m new file mode 100644 index 0000000..11b661d --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/preprocess_metrix_mux.m @@ -0,0 +1,148 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% FUNCTION: preprocess_metrix_mux +%%% +%%% INPUTS: input_image - input image data +%%% +%%% metrix_indicator - a series of letters (or a number) denoting +%%% the metric to be used for this comparison; +%%% type "help metrix_mux" to learn more about +%%% what metrics are supported +%%% +%%% OUTPUTS: preprocessed_image - preprocessed image data +%%% +%%% CHANGES: NONE +%%% +%%% NOTES: Range-checking is NOT performed because it is a relatively +%%% expensive operation. If no 'metrix_indicator' argument is +%%% specified, ALL preprocessing measures are applied. (Only +%%% 'IFC', 'VIF' and 'VSNR' require any padding.) Though +%%% future releases may address this issue differently, ALL input +%%% images are converted to grayscale if they are not already +%%% monochrome images. +%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Author: Matthew Gaubatz +%%% Version: 1.1 +%%% Date: 04/15/2007 +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Copyright (c) 2007 Visual Communications Lab, Cornell University +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Permission to use, copy, modify, distribute and sell this software +%%% and its documentation for any purpose is hereby granted without fee, +%%% provided that the above copyright notice appear in all copies and +%%% that both that copyright notice and this permission notice appear +%%% in supporting documentation. VCL makes no representations about +%%% the suitability of this software for any purpose. +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% DISCLAIMER: +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% The code provided hereunder is provided as is without warranty +%%% of any kind, either express or implied, including but not limited +%%% to the implied warranties of merchantability and fitness for a +%%% particular purpose. The author(s) shall in no event be liable for +%%% any damages whatsoever including direct, indirect, incidental, +%%% consequential, loss of business profits or special damages. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +function input_image = preprocess_metrix_mux( input_image, metrix_indicator ) + + +%%% +%%% check if an image name was entered instead of an actual image; +%%% if so, try reading in the image +%%% +if isstr( input_image ) + try + input_image = imread( input_image ); + catch + error( sprintf('Error [preprocess_metrix_mux]: Input argument ''%s'' does not correspond to a Matlab image or an image file.', input_image ) ); + end +end + +%%% +%%% caste it to a double +%%% +if ~isa( input_image, 'double' ) + input_image = double( input_image ); +end +%%% +%%% if necessary, make sure that there is just one color plane +%%% +[H,W,D] = size( input_image ); + + +%%% +%%% MSE, PSNR can do color +%%% + +if D ~= 1 + %%% + %%% if the image has 3 color planes, assume that the planes + %%% represent sRGB data and grab the luminance component + %%% of the image + %%% + if D == 3 + input_image = 0.29900 * input_image(:,:,1) + 0.58700 * input_image(:,:,2) + 0.11400 * input_image(:,:,3); + else + error('Error [preprocess_metrix_mux]: input image does not belong to a recognized color space.'); + end +end + + +%%% +%%% check to see if the image needs any padding and provide it if necessary +%%% +if (nargin == 1) |... + (strcmp( metrix_indicator, 'vif' ) ~= 0) |... + (strcmp( metrix_indicator, 'ifc' ) ~= 0) |... + (strcmp( metrix_indicator, 'vsnr' ) ~= 0) + + LCM_for_decomposition = 32; + minimum_size_for_decomposition = 128; + + H_minimum = max( minimum_size_for_decomposition, LCM_for_decomposition*ceil(H/LCM_for_decomposition) ); + W_minimum = max( minimum_size_for_decomposition, LCM_for_decomposition*ceil(W/LCM_for_decomposition) ); + if (H ~= H_minimum) | (W ~= W_minimum) + + %%% + %%% implement symmetric extension + %%% + padded_image = zeros(H_minimum,W_minimum); + + pad_pixels_top = round( (H_minimum-H)/2 ); + pad_pixels_bottom = H_minimum - H - pad_pixels_top; + pad_pixels_left = round( (W_minimum - W)/2 ); + pad_pixels_right = W_minimum - W - pad_pixels_left; + + %%% + %%% copy vertical then horizontal edge pixels + %%% + padded_image(pad_pixels_top+[1:H],1:pad_pixels_left) = input_image([1:H],1 + min(W-1,[pad_pixels_left:-1:1]) ); + padded_image(pad_pixels_top+[1:H],pad_pixels_left+W+1:end) = input_image([1:H], W - min(W-1,[1:pad_pixels_right]) ); + + padded_image(1:pad_pixels_top,pad_pixels_left+[1:W]) = input_image(1 + min(H-1,[pad_pixels_top:-1:1]),[1:W] ); + padded_image(pad_pixels_top+H+1:end,pad_pixels_left+[1:W]) = input_image(H - min(H-1,[1:pad_pixels_bottom]),[1:W] ); + + %%% + %%% copy corners + %%% + padded_image(1:pad_pixels_top,1:pad_pixels_left) = input_image( min(H,2), min(W,2) ); + padded_image(pad_pixels_top+H+1:end,1:pad_pixels_left) = input_image( max(H-1,1), min(W,2) ); + padded_image(1:pad_pixels_top,pad_pixels_left+W+1:end) = input_image( min(H,2), max(W-1,1) ); + padded_image(pad_pixels_top+H+1:end,pad_pixels_left+W+1:end) = input_image( max(H-1,1), max(W-1,1) ); + + %%% + %%% copy main portion of image + %%% + padded_image(pad_pixels_top+[1:H],pad_pixels_left+[1:W]) = input_image; + + input_image = padded_image; + end + +end + + +preprocessed_image = input_image; diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/test_metrix_mux.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/test_metrix_mux.m new file mode 100644 index 0000000..c5016a5 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/test_metrix_mux.m @@ -0,0 +1,72 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% FUNCTION: test_metrix_mux +%%% +%%% INPUTS: NONE +%%% +%%% OUTPUTS: NONE +%%% +%%% CHANGES: Loads a pair of images (included with the VSNR algorithm code), +%%% then runs every algorithm included with the MeTriX MuX +%%% package on these images, to make sure that they no +%%% execptions are thrown. +%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Author: Matthew Gaubatz +%%% Version: 1.0 +%%% Date: 01/05/2007 +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Copyright (c) 2007 Visual Communications Lab, Cornell University +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Permission to use, copy, modify, distribute and sell this software +%%% and its documentation for any purpose is hereby granted without fee, +%%% provided that the above copyright notice appear in all copies and +%%% that both that copyright notice and this permission notice appear +%%% in supporting documentation. VCL makes no representations about +%%% the suitability of this software for any purpose. +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% DISCLAIMER: +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% The code provided hereunder is provided as is without warranty +%%% of any kind, either express or implied, including but not limited +%%% to the implied warranties of merchantability and fitness for a +%%% particular purpose. The author(s) shall in no event be liable for +%%% any damages whatsoever including direct, indirect, incidental, +%%% consequential, loss of business profits or special damages. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +function test_metrix_mux + +%%% +%%% initialize error counter; +%%% +total_error_counter = 0; + +%%% +%%% load test images +%%% +try + reference_image = double(imread('horse.bmp')); + query_image = double(imread('horse.JP2.bmp')); +catch + fprintf('Error [test_metrix_mux]: Cannot load test image files!\n'); + total_error_counter = total_error_counter + 1; +end + +%%% +%%% run all the algorithms +%%% +metrix_name_cell = get_name_cell_metrix_mux; +for k = 1:length( metrix_name_cell ) + try + metrix_mux( reference_image, query_image, metrix_name_cell{k} ); + fprintf('Algorithm %s computed successfully!\n', metrix_name_cell{k} ); + catch + fprintf('Error [test_metrix_mux]: algorithm %s did not compute correctly!\n', metrix_name_cell{k} ); + total_error_counter = total_error_counter + 1; + end +end + +fprintf('Total error count: %i\n',total_error_counter); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/dwt2d/bior53.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/dwt2d/bior53.m new file mode 100644 index 0000000..79c56e9 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/dwt2d/bior53.m @@ -0,0 +1,53 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% FUNCTION: bior53 +%%% +%%% INPUTS: NONE +%%% +%%% OUTPUTS: lo_d - low-pass decomposotion filter +%%% +%%% hi_d - high-pass decomposition filter +%%% +%%% lo_r - low-pass reconstruction filter +%%% +%%% hi_r - high-pass reconstruction filter +%%% +%%% CHANGES: NONE +%%% +%%% NOTES: Computes analysis and synthesis filters for a 5/3 biorthogonal +%%% wavelet transfiorm. +%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Author: Matthew Gaubatz +%%% Version: 1.0 +%%% Date: 01/05/2007 +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Copyright (c) 2007 Visual Communications Lab, Cornell University +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Permission to use, copy, modify, distribute and sell this software +%%% and its documentation for any purpose is hereby granted without fee, +%%% provided that the above copyright notice appear in all copies and +%%% that both that copyright notice and this permission notice appear +%%% in supporting documentation. VCL makes no representations about +%%% the suitability of this software for any purpose. +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% DISCLAIMER: +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% The code provided hereunder is provided as is without warranty +%%% of any kind, either express or implied, including but not limited +%%% to the implied warranties of merchantability and fitness for a +%%% particular purpose. The author(s) shall in no event be liable for +%%% any damages whatsoever including direct, indirect, incidental, +%%% consequential, loss of business profits or special damages. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +function [lo_d,hi_d,lo_r,hi_r] = bior97 + +lo_d = [-1 2 6 2 -1]/8; +hi_d = [0 -1 2 -1 0]/2; +lo_r = [0 1 2 1 0]/2; +hi_r = [-1 -2 6 -2 -1]/8; + + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/dwt2d/bior97.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/dwt2d/bior97.m new file mode 100644 index 0000000..80c590e --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/dwt2d/bior97.m @@ -0,0 +1,66 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% FUNCTION: bior97 +%%% +%%% INPUTS: NONE +%%% +%%% OUTPUTS: lo_d - low-pass decomposotion filter +%%% +%%% hi_d - high-pass decomposition filter +%%% +%%% lo_r - low-pass reconstruction filter +%%% +%%% hi_r - high-pass reconstruction filter +%%% +%%% CHANGES: NONE +%%% +%%% NOTES: Computes analysis and synthesis filters for a 9/7 biorthogonal +%%% wavelet transfiorm. +%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Author: Matthew Gaubatz +%%% Version: 1.0 +%%% Date: 01/05/2007 +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Copyright (c) 2007 Visual Communications Lab, Cornell University +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Permission to use, copy, modify, distribute and sell this software +%%% and its documentation for any purpose is hereby granted without fee, +%%% provided that the above copyright notice appear in all copies and +%%% that both that copyright notice and this permission notice appear +%%% in supporting documentation. VCL makes no representations about +%%% the suitability of this software for any purpose. +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% DISCLAIMER: +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% The code provided hereunder is provided as is without warranty +%%% of any kind, either express or implied, including but not limited +%%% to the implied warranties of merchantability and fitness for a +%%% particular purpose. The author(s) shall in no event be liable for +%%% any damages whatsoever including direct, indirect, incidental, +%%% consequential, loss of business profits or special damages. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +function [lo_d,hi_d,lo_r,hi_r] = bior97 + +lo_d(1) = 0.85269867900889; +lo_d(2) = 0.37740285561283; +lo_d(3) = -0.11062440441844; +lo_d(4) = -0.02384946501956; +lo_d(5) = 0.03782845550726; + +hi_d(1) = -0.78848561640558; +hi_d(2) = 0.41809227322162; +hi_d(3) = 0.04068941760916; +hi_d(4) = -0.06453888262870; +hi_d(5) = 0; + +hi_r = [lo_d(1) -lo_d(2) lo_d(3) -lo_d(4) lo_d(5)]; +lo_r = [hi_d(1) -hi_d(2) hi_d(3) -hi_d(4) hi_d(5)]; + +lo_d = [fliplr(lo_d(2:end)) lo_d]; +hi_d = [fliplr(hi_d(2:end)) hi_d]; +lo_r = [fliplr(lo_r(2:end)) lo_r]; +hi_r = [fliplr(hi_r(2:end)) hi_r]; diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/dwt2d/dwt2d.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/dwt2d/dwt2d.m new file mode 100644 index 0000000..826b3d7 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/dwt2d/dwt2d.m @@ -0,0 +1,114 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% FUNCTION: dwt2d +%%% +%%% INPUTS: data - input image data +%%% +%%% nlev - desired number of transform levels +%%% +%%% mode - filter type ('97' or '53') +%%% +%%% OUTPUTS: data - a 2-D wavelet transform of the input +%%% +%%% CHANGES: NONE +%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Author: Matthew Gaubatz +%%% Version: 1.0 +%%% Date: 01/05/2007 +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Copyright (c) 2007 Visual Communications Lab, Cornell University +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Permission to use, copy, modify, distribute and sell this software +%%% and its documentation for any purpose is hereby granted without fee, +%%% provided that the above copyright notice appear in all copies and +%%% that both that copyright notice and this permission notice appear +%%% in supporting documentation. VCL makes no representations about +%%% the suitability of this software for any purpose. +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% DISCLAIMER: +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% The code provided hereunder is provided as is without warranty +%%% of any kind, either express or implied, including but not limited +%%% to the implied warranties of merchantability and fitness for a +%%% particular purpose. The author(s) shall in no event be liable for +%%% any damages whatsoever including direct, indirect, incidental, +%%% consequential, loss of business profits or special damages. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +function data = dwt2d(data,nlev,mode) + +%%% +%%% pick the decomposition mode +%%% +try + mode = mode; +catch + mode = '97'; +end + +%%% +%%% grab filters +%%% +if mode == '97' + [lod,hid,lor,hir] = bior97; + +else + [lod,hid,lor,hir] = bior53; +end + + +%%% +%%% compute the DWT +%%% +data = dwt2d_helper(data,lod,hid,nlev); + +%%% +%%% recursive DWT helper function +%%% +function data = dwt2d_helper(data,lo_filt,hi_filt,iter) + +if iter > 0 + + [H,W] = size(data); + + data = conv_row_wfilters_down(data,lo_filt,hi_filt); + data = conv_row_wfilters_down(data.',lo_filt,hi_filt).'; + + data(1:H/2,1:W/2) = dwt2d_helper(data(1:H/2,1:W/2),lo_filt,hi_filt,iter-1); + +end + +%%% +%%% 1-dimensionsal convolution/downsampling routine +%%% +function [data] = conv_row_wfilters_down(data,lo_filt,hi_filt) + +[H,W] = size(data); + +N = length(lo_filt)-1; +L = N/2; + +%%% +%%% apply horizontal filters +%%% + +for h = 1:H + + row = data(h,:); + row = [fliplr(row(2:(L+1))) row fliplr(row((end-L):end-1))]; + + row_lo = conv(row,lo_filt); + row_lo = row_lo(N+1:end-N); + + + row_hi = conv(row,hi_filt); + row_hi = row_hi(N+1:end-N); + + row = [row_lo(1:2:end) row_hi(2:2:end)]; + + data(h,:) = row; + +end diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/dwt2d/idwt2d.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/dwt2d/idwt2d.m new file mode 100644 index 0000000..57d0c99 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/dwt2d/idwt2d.m @@ -0,0 +1,119 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% FUNCTION: idwt2d +%%% +%%% INPUTS: data - 2-D wavelet transform data +%%% +%%% nlev - desired number of transform levels +%%% +%%% mode - filter type ('97' or '53') +%%% +%%% OUTPUTS: data - untransformed image data +%%% +%%% CHANGES: NONE +%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Author: Matthew Gaubatz +%%% Version: 1.0 +%%% Date: 01/05/2007 +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Copyright (c) 2007 Visual Communications Lab, Cornell University +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Permission to use, copy, modify, distribute and sell this software +%%% and its documentation for any purpose is hereby granted without fee, +%%% provided that the above copyright notice appear in all copies and +%%% that both that copyright notice and this permission notice appear +%%% in supporting documentation. VCL makes no representations about +%%% the suitability of this software for any purpose. +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% DISCLAIMER: +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% The code provided hereunder is provided as is without warranty +%%% of any kind, either express or implied, including but not limited +%%% to the implied warranties of merchantability and fitness for a +%%% particular purpose. The author(s) shall in no event be liable for +%%% any damages whatsoever including direct, indirect, incidental, +%%% consequential, loss of business profits or special damages. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +function data = idwt2d(data,nlev,mode) + + +try + mode = mode; +catch + mode = '97'; +end + +if mode == '97' + [lod,hid,lor,hir] = bior97; + +else + [lod,hid,lor,hir] = bior53; +end + + + +%data = idwt2d_helper(data,lor,hir,nlev); + +[H,W] = size(data); + +for iter_ctr = (nlev):-1:1 + + + data_temp = data(1:H/(2^(iter_ctr-1)),1:W/(2^(iter_ctr-1))); + + + data(1:H/(2^(iter_ctr-1)),1:W/(2^(iter_ctr-1))) = idwt2d_helper(data_temp,lor,hir); + +end + + + +function data = idwt2d_helper(data,lo_filt,hi_filt) + + +data = conv_row_wfilters_up(data,lo_filt,hi_filt); +data = conv_row_wfilters_up(data.',lo_filt,hi_filt).'; + +function [data] = conv_row_wfilters_up(data,lo_filt,hi_filt) + + +[H,W] = size(data); + +N = length(lo_filt)-1; +L = N/2; + +% apply horizontal filters +for h = 1:H + + row = data(h,:); + + row_lo = zeros(1,W); + row_lo(1:2:end) = row(1:W/2); + + row_hi = zeros(1,W); + row_hi(2:2:end) = row(W/2+1:end); + + + + row_lo = [fliplr(row_lo(2:(L+1))) row_lo fliplr(row_lo((end-L):end-1))]; + row_hi = [fliplr(row_hi(2:(L+1))) row_hi fliplr(row_hi((end-L):end-1))]; + + + row_lo = conv(row_lo,lo_filt); + row_lo = row_lo(N+1:end-N); + + + row_hi = conv(row_hi,hi_filt); + row_hi = row_hi(N+1:end-N); + + row = row_lo + row_hi; + + + data(h,:) = row; + + +end diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/ChangeLog b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/ChangeLog new file mode 100644 index 0000000..f20c499 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/ChangeLog @@ -0,0 +1,430 @@ + Log of changes made to matlabPyrTools code + (important changes marked with **) +----------------------------------------------------------------------- +2004-10-14 Eero Simoncelli <eero@sesto.cns.nyu.edu> + + * Made new tarfile (version 1.3) + + * Incorporated complex-valued steerable pyramid code (buildSCFpyr, + buildSCFpyrLevs,reconSCFpyr) written by Javier Portilla in 9/97, + and used in our work on texture representation/synthesis + (Portilla&Simoncelli, Int'l Journal of Computer Vision, + 40(1):49-71, Dec 2000). + + * Incorporated imGradient.m from personal code. + + * reagan.pgm out. feynam.pgm in + +2004-03-20 Eero Simoncelli <eero@sesto.cns.nyu.edu> + + * blur.m added (just calls blurDn and then upBlur). + +2003-08-06 Eero Simoncelli <eero@sesto.cns.nyu.edu> + + * blurDn.m (filt): Forced correct scaling of filters in 1D + +2003-05-28 Eero Simoncelli <eero@ferrando.cns.nyu.edu> + + * incorporated setPyrBand.m from local code + +2002-10-01 Eero Simoncelli <eero.simoncelli@nyu.edu> + + * incorporated clip.m from local code + +2002-09-18 Eero Simoncelli <eero.simoncelli@nyu.edu> + + * pointOp.m: Added the new 'extrap' option for matlab's interp1 to + make this m-file version more compatible with the mex version. + +Wed Aug 28 2002 Eero Simoncelli <eero.simoncelli@nyu.edu> + + * var2.m: now returns zero (instead of error) for matrix of size 1. + * function VECTORIZE renamed to VECTIFY, since it was colliding + with a function introduced in standard matlab. + +Dec 27 2001 Eero Simoncelli <eero.simoncelli@nyu.edu> + + * Modified calls to upConv in reconSpyr.m and reconSpyrLevs.m so + that the returned result is bound. Previously, had relied on the + MEX version of upConv to destructively modify the result array, + users had been getting errors because they were using the m-file + version of upConv. + +Wed Sep 19 2001 Eero Simoncelli <eero.simoncelli@nyu.edu> + + * buildSFpyrLevs/reconSFpyrLevs: replace use of "i" with sqrt(-1), to + avoid problems if user rebinds it! + +Wed Mar 28 10:22:01 2001 Eero Simoncelli <eero.simoncelli@nyu.edu> + + * Moved innerProd.m and all associated MEX files from the + matlabLocal source tree into matlabPyrTools. + * Added innerProd to Contents.m + * Updated/clarified WARNINGS in all *.m files that have MEX versions. + +Tue Mar 27 11:21:53 2001 Eero Simoncelli <eero.simoncelli@nyu.edu> + + * Incorporated Windows MEX files (*.dll) into MEX subdirectory. + Windows users should either copy these into the main directory, + or put the MEX subdirectory in their matlab path. + +Fri Mar 23 14:46:16 2001 Eero Simoncelli <eero.simoncelli@nyu.edu> + + * buildSFpyrLevs.m, reconSFpyrLevs.m: shift the raised-cosine + lookup table (Xrcos) instead of incrementing the log-radial image + (log_rad). THis is more efficient... + +Fri Oct 1 19:37:03 1999 Eero Simoncelli <eero.simoncelli@nyu.edu> + + * upConv.m: Did not return correct size result when STOP argument + was passed. Thanks to hertzman@mrl.nyu.edu for pointing this out. + +Fri Sep 17 15:53:26 1999 Eero Simoncelli <eero.simoncelli@nyu.edu> + + * buildSFpyrLevs.m: Changed lutsize to 1024, giving a slight + increase in accuracy. + +Thu Feb 25 18:10:38 1999 Eero Simoncelli <eero.simoncelli@nyu.edu> + + * histo1.m: Modified histo.m to be more compatible (but still not + exactly the same) as the MEX file version. + +Fri Jun 12 21:15:39 1998 Eero Simoncelli <eero.simoncelli@nyu.edu> + + * TUTORIALS pyramids.m upgraded. + +Tue Feb 17 13:22:28 1998 Eero Simoncelli <eero.simoncelli@nyu.edu> + + * showIm.m: Dims are now printed followed by the zoom factor. + +Mon Oct 13 14:49:51 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + * mkSquare.m: Modified to do raised-cosine soft threshold + transitions. + +Tue Oct 7 10:13:51 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> + + * upConv.m: Argument order was wrong (this function is not used + anyway, unless you don't compile the MEX code). - Thanks to + farid@psyche.mit.edu for pointing this out. + +Thu Sep 25 16:09:49 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + * MEX/wrap.c: Changed #include <malloc.h> to <stdlib.h>, as + suggested by David Brainard. * Incorporated Mac-compiled mex + files, courtesy of David Brainard. + +Sat Sep 6 16:10:25 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> + + * MEX/convolve.h: abstracted out type of images with typedef image_type. + Added ansi declarations. + +Fri Aug 29 13:49:16 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + ** showIm.m: Modified to behave better under resizing (and printing): + resets axis units to "normalized". + +Thu Aug 28 22:56:52 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + ** MEX/edges.c: reflect1, reflect2, repeat, extend upgraded to work + properly for non-symmetric filters. reflect2 and extend were also + broken for upConv. Added qreflect2 to handle even-length QMF's + which broke under the reflect2 modification. + * Added example code to TUTORIALS/matlabPyrTools to illustrate the + boundary-handling behavior... + +Thu Aug 21 13:34:17 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> + + * var2, skew2, kurt2: modified to return complex values for complex images. + * imStats.m: now gives an error for complex args. + +Thu Aug 14 15:24:29 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + * Modified shift.m: negated the meaning of the offset parameter, + such that RES=shift(MTX,OFFSET) means RES(POS)=MTX(POS-OFFSET) + (this is more intuitive). + +Thu Jul 10 17:06:52 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + * Modified MEX/Makefile-* to be consistent with matlab5: + - call mex instead of cmex + - use -V4 flag (creating matlab v4 compatible binaries) + + * showIm.m (xlbl_offset): Modified to use "points" units, so that + printed images look correct. Still slightly busted for arbitrary figure + window sizes and for printing. + + * Modified upConv.c: does not return ANYTHING if you pass a result + argument (this had been causing occasional problems with matlab's + memory manager). + +Mon Jun 30 12:09:30 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + * reconSFpyr.m (res): now returns real part (oops). + + * reconSpyrLevs.m (maxLev): got rid of superfluous nbands argument + (can be calculated from bfilts). + +Mon May 26 12:29:54 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + * showIm.m/pgmWrite.m: Modified 'auto3'-scaling to use a + histogram. This gives a significant speedup. + + * fixed a few minor bugs in the TUTORIALS, having to do with + matching image sizes to the machine speed... + +Sat May 10 17:27:25 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + * pgmWrite.m: fixed auto-scaling bug. Added new scaling + calculations, parallel to those of imShow. + +Fri May 9 09:02:56 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + * buildSFpyr.m: Changed NBANDS argument to be ORDER, which is one + less than the number of orientation bands. This is consistent + with the derivative order, and the labels on the spNFilters files. + +Tue May 6 19:08:18 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + ** Added buildSFpyr, reconSFpyr: Steerable pyramids constructed + in the Fourier domain. Radial functions tile, with a + raised-cosine falloff. Angular functions are + cos(theta-k\pi/(K+1))^K, where K is the order (number of bands + minus 1). Compared to the convolution version: + + Reconstruction is exact (within floating point errors) + + Can produce any number of orientation bands. + - Typically slower. + - Boundary-handling must be circular. + Could be made much more efficient by taking advantage of symmetries in + the fft! + + * Added example usage of Fourier steerable pyramid to TUTORIALS/pyramids.m + + * steer.m: fixed for harmonic lists including zero. + +Sun May 4 15:16:10 1997 Eero Simoncelli <eero@ferrando.cns.nyu.edu> + + * MEX/Makefile-linux: created. + + * spyrHt, spyrNumBands: Modified to return 0 for pyramids of height 0. + + * reconWpyr.m: utilize desctructive addition in calls to upConv. + + * reconSpyr.m: Added error check to ensure consistancy between + pyramid and filter file. Utilize destructive addition in upConv + call on highpass band. Modified to work properly with pyramids of + height 0. + +Mon Apr 28 13:38:10 1997 Eero Simoncelli <eero@ferrando.cns.nyu.edu> + + * lplot.m: modified to handle complex vectors, use standard MatLab + indices, and show minimal axes. Added xrange parameter to allow + adjustment of X axis labeling. + +Sun Apr 27 20:20:41 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + * var2, skew2, kurt2: enhanced to work on complex matrices. + +Sat Apr 26 11:16:12 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + * Changed parent directory (and distribution) name: + matlabImTools -> matlabPyrTools + + * namedFilter.m: Added two more Daubechies filters, and modified + names to match the reference (e.g., daub2 is now a 4-tap filter). + + * Added vectorize.m: trivial function to pack matrix into vector (i.e., + computes mtx(:)). + + * Added upBlur.m: Upsample and blur (parallels blurDn). + +Sun Apr 13 14:23:38 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> + + * TUTORIALS/pyramids.m: Added plots of Fourier spectra for Wavelet bases. + + * make-tar-file: switched from compress to gzip for the + distribution tarfile. + + * namedFilter.m: Added a few even-length QMF's from Johnston80. + +Fri Apr 11 19:16:21 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> + + * buildWpyr.m, reconWpyr.m: Modified slightly, so that subsampling + lattice is better for even-length filters. + + * TUTORIALS/pyramids.m: Substantially overhauled. + +Thu Apr 10 15:20:23 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> + + * blurDn.m: added this function to downsample an image by a factor + 2^L. + + * Fixed minor bug in upConv.m: errors in image size checking. + +Mon Apr 7 13:25:37 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + * Changed TUTORIALS/matlabImTools.m to use histo.mex instead of + matlab's hist. + +Wed Apr 2 13:20:55 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + ** Incorporated Denis Pelli's ThinkC and MetroWorks projects for + Macintosh versions of the MEX code, along with MEX binaries. These + are included as an HQX'ed self-extracting archive + (Macintosh-MEX.sit.hqx), in the MEX subdirectory. + +Tue Apr 1 15:35:31 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> + + * edges.c: modified by Denis Pelli to support THINK C. * edges.c: + + * histo.c, upConv.c, corrDn.c: minor changes in error message + printouts, to work around bugs in THINK C. + + * Included Denis Pelli's MacReadMe file in the MEX subdirectory, + which gives instructions for MEX file compilation on a MacIntosh + (PPC or 68k). + + * wrap.c, convolve.c, edges.c: added explicit int function + declarations, and return values. + + * range2.m/range2.c: A MEX function for fast min/max computation. + Adjusted entropy2.m, histo.m, imStats.m, pgmWrite.m, showIm.m, + showLpyr.m, showSpyr.m, showWpyr.m to call it. + +Thu Mar 27 17:23:05 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + ** histo.m/histo.c: Added MEX function HISTO, a fast replacement + for matlab's HIST function. Modified histoMatch.m, entropy2.m to + call it. + + * Changed main directory name to matlabImTools. + + * Added TUTORIALS/README file. + +Wed Mar 19 14:19:51 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + * Changed directory name: MEX_SRC -> MEX + +Wed Mar 12 17:00:03 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + * mkGaussian.m: fixed another (X,Y) bug: both dimensions and + cov/mean are now specified in [y,x] order. + +Tue Mar 11 19:08:17 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> + + * showSpyr.m: Fixed a bug that was dropping display of one + orientation band when there were more than 2 of them! + +Mon Mar 10 19:08:24 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> + + * Added shift.m + + * makeSteerMtx -> steerDir2HarmMtx + + * Added TUTORIALS/matlab-EPS.m: examples using the code in this + distribution. + +Sun Mar 9 17:49:18 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + ** showIm.m: + - args: changed order so that NSHADES is last. + - TITLES: Can now pass a string for IM, which will be evaluated + in the global environment to get the matrix. The string is + used as a title. MATLAB v.5 ONLY!!! + - Added 'auto3' RANGE value, that scales based on percentiles. + THis is more robust to outliers than 'auto2' or 'auto1'. + + * pixelAxes.m: Made a more serious attempt to reverse-engineer + Mathworks' image pixelization. It is improved, but still makes + occasional errors. + + * Added skew2.m. + +Fri Mar 7 10:11:07 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + * pixelAxes.m: Modified to take an optional + ZOOM argument. Fixed dimension ordering bug + (positions are reported (x,y), but mtx dims are (y,x)!) + + * showIm.m: Added an optional ZOOM argument. + +Thu Mar 6 14:17:19 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + * Added showLpyr, showWpyr, showSpyr. Modified + TUTORIALS/pyramids.m to use them. + + * added pixelAxes.m: Adjusts size (in pixels) of currently + displayed image to be a multiple of the matrix dimensions, + thus eliminating display aliasing artifacts. + This is now called by all the "show" commands. + +Mon Mar 3 17:33:25 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + * Fixed bug in pgmWrite (dimensions were written in reverse order). + + * Fixed bug in showIm (X and Y coords were swapped on label display). + + * Fixed bug in reconLpyr (swapped X and Y coords on int_sz) + + * Changed calls to "reshape" to pass dimensions individually -- + older version of matlab do not accept the reshape(mtx,[y x]) form. + + * Fixed bug in mkDisc: sz a scalar. + + * Added ifftshift.m + +Fri Feb 28 11:07:20 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + * Re-worked TUTORIALS/pyramids.m + + * buildGpyr and buildLpyr now use 1+maxPyrHt for default height. + + * Fixed buildGpyr to work on 1D signals. + + ** Gaussian/Laplacian/Wavelet pyramid build and recon functions: + - work properly with new corrDn/upConv. + - use separable convolutions + - use destructive modification ability of upConv (less memory + allocation) + + * modulateFlipShift -> modulateFlip. + + * added lpyrHt, wpyrHt, spyrHt to return number of levels in a pyramid. + +Thu Feb 27 15:39:53 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + * Changed angular coordinate systems to CLOCKWISE in mkRamp, + mkTheta, mkSine, mkSquare. This is unnatural for screen viewing, + but consistent with an origin in the upper left corner of the + image, which is the way one addresses the underlying matrix. + + * mkSine and mkSquare can now take a frequency vector or the + period and direction args + +Tue Feb 25 11:58:33 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> + + ** Rewrote corrDn/upConv C routines: + - more efficient + - changed START parameters to have [1 1] origin, consistent with + matlab + - added STOP parameters + - upConv allows destructive modification of a result arg + - changed order of other params (sorry) + - wrote test file conv_test.m + * wrote zconv2.m + +Wed Aug 19 20:39:15 1996 Eero Simoncelli (eero@tarpon.cis.upenn.edu) + + ** Added "pointOp" function (MUCH faster than interp1). + ** Added "histoMatch" function. + +Fri Aug 2 00:56:31 1996 Eero Simoncelli (eero@tarpon.cis.upenn.edu) + + * Changed all function/file-names to be of the form "fooBar". * + Fixed entropy2.m (busted due to typo). + +Original convolution code was written in Spring 1986, and comes from +OBVIUS (Object-Based Vision and Image Understanding System), an +interactive image-processing system written in Common Lisp (with calls +to C code). + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/Contents.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/Contents.m new file mode 100644 index 0000000..d19f067 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/Contents.m @@ -0,0 +1,107 @@ +% Image and Multi-scale Pyramid Tools +% Version 1.3, October 2004. +% Created: Early Spring, 1996. Eero Simoncelli, eero.simoncelli@nyu.edu +% +% See README file for brief description. +% See ChangeLog file for latest modifications. +% See TUTORIALS subdirectory for demonstrations. +% Type "help <command-name>" for documentation on individual commands. +% ----------------------------------------------------------------- +% Synthetic Images (matrices): +% mkImpulse - Make an image containing an impulse. +% mkRamp - Make an image containing a ramp function. +% mkR - Make an image containing distance from the origin. +% mkAngle - Make an image containing angle about origin. +% mkDisc - Make an image containing a disk image. +% mkGaussian - Make an image containing a Gaussian function. +% mkZonePlate - Make an image containing a zone plate (cos(r^2)). +% mkAngularSine - Make an image containing an angular sine wave (pinwheel). +% mkSine - Make an image containing a sine grating. +% mkSquare - Make an image containing a square grating. +% mkFract - Make an image containing fractal (1/f) noise. +% +% Point Operations: +% clip - clip values to a range. +% pointOp - Lookup table (much faster than interp1) [MEX file] +% histo - Efficient histogram computation [MEX file] +% histoMatch - Modify matrix elements to match specified histogram stats. +% +% Convolution (first two are significantly faster): +% corrDn - Correlate & downsample with boundary-handling [MEX file] +% upConv - Upsample & convolve with boundary-handling [MEX file] +% blurDn - Blur and subsample a signal/image. +% upBlur - Upsample and blur a signal/image. +% blur - Multi-scale blurring, calls blurDn and then upBlur. +% cconv2 - Circular convolution. +% rconv2 - Convolution with reflected boundaries. +% zconv2 - Convolution assuming zeros beyond image boundaries. +% +% General pyramids: +% pyrLow - Access lowpass subband from (any type of) pyramid +% pyrBand - Access a subband from (any type of) pyramid +% setPyrBand - Insert an image into (any type of) pyramid as a subband +% pyrBandIndices - Returns indices for given band in a pyramid vector +% maxPyrHt - compute maximum number of scales in a pyramid +% +% Gaussian/Laplacian Pyramids: +% buildGpyr - Build a Gaussian pyramid of an input signal/image. +% buildLpyr - Build a Laplacian pyramid of an input signal/image. +% reconLpyr - Reconstruct (invert) the Laplacian pyramid transform. +% +% Separable orthonormal QMF/wavelet Pyramids: +% buildWpyr - Build a separable wavelet representation of an input signal/image. +% reconWpyr - Reconstruct (invert) the wavelet transform. +% wpyrBand - Extract a single band of the wavelet representation. +% wpyrLev - Extract (packed) subbands at a particular level +% wpyrHt - Number of levels (height) of a wavelet pyramid. +% +% Steerable Pyramids: +% buildSpyr - Build a steerable pyramid representation of an input image. +% reconSpyr - Reconstruct (invert) the steerable pyramid transform. +% buildSFpyr - Build a steerable pyramid representation in the Fourier domain. +% reconSFpyr - Reconstruct (invert) the (Fourier domain) steerable pyramid transform. +% spyrBand - Extract a single band from a steerable pyramid. +% spyrHigh - Highpass residual band. +% spyrLev - A whole level (i.e., all images at a given scale) of a steerable pyramid. +% spyrHt - Number of levels (height) of a steerable pyramid. +% spyrNumBands - Number of orientation bands in a steerable pyramid. +% +% Steerable filters / derivatives: +% imGradient - Compute gradient of image using directionally accurete filters. +% steer - Steer filters (or responses). +% steer2HarmMtx - Construct a matrix mapping direcional basis to angular harmonics. +% +% Filters: +% binomialFilter - returns a filter of binomial coefficients. +% namedFilter - some typical Laplacian/Wavelet pyramid filters +% spNFilters - Set of Nth order steerable pyramid filters. +% derivNFiltersS - Matched set of S-tap 1D derivatives, orders 0 to N. +% +% Display: +% showIm - Display a matrix (real or complex) as grayscale image(s). +% Displays dimensions, subsampling, and range of pixel values. +% showLpyr - Display a Laplacian pyramid. +% showWpyr - Display a separable wavelet pyramid. +% showSpyr - Display a steerable pyramid. +% lplot - "lollipop" plot. +% nextFig - Make next figure window current. +% pixelAxes - Make image display use an integer number of pixels +% per sample to avoid resampling artifacts. +% +% Statistics (for 2D Matrices): +% range2 - Min and max of image (matrix) [MEX file] +% mean2 - Sample mean of an image (matrix). +% var2 - Sample variance of an image (matrix). +% skew2 - Sample skew (3rd moment / variance^1.5) of an image (matrix). +% kurt2 - Sample kurtosis (4th moment / variance^2) of an image (matrix). +% entropy2 - Sample entropy of an image (matrix). +% imStats - Report sample statistics of an image, or pair of images. +% +% Miscellaneous: +% pgmRead - Load a "pgm" image into a MatLab matrix [try einstein.pgm,feynman.pgm] +% pgmWrite - Write a MatLab matrix to a "pgm" image file. +% shift - circular shift a 2D matrix by an arbitrary amount. +% vectify - pack matrix into column vector (i.e., function to compute mtx(:)). +% ifftshift - inverse of MatLab's FFTSHIFT (differs for odd-length dimensions) +% rcosFn - return a lookup table of a raised-cosine threshold fn. +% innerProd - Compute M'*M efficiently (i.e., do not copy) [MEX file] diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/-MacReadMe b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/-MacReadMe new file mode 100644 index 0000000..898dc0c --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/-MacReadMe @@ -0,0 +1 @@ +MacReadMe How to compile a MEX file for Macintosh (Based on a similar note written by David Brainard and Denis Pelli to accompany the Psychophysics Toolbox.) A MEX file (short for "MATLAB extension") contains code that implements a new MATLAB function, allowing users to use the full power of the C language and the Macintosh hardware and operating system in implementing a new MATLAB function. This document explains how to produce a MEX file that is "fat" (i.e. will run as native code on both 68K and PowerPC Macs) and is compatible with both MATLAB 4 and 5. 1) To produce a MATLAB MEX file with PowerPC code you must have the Metrowerks CodeWarrior C compiler (version 10 or better, abbreviated as CW below). To produce 68K code we still use the Symantec THINK C compiler (version from Symantec C++ 8 CD-ROM release 5), but we will soon be switching to Metrowerks CodeWarrior. (See note A below.) 2) Place a copy of the MATLAB 4:Extern folder, supplied by Mathworks, on your compiler's search path. We suggest that you name the copy "MEX V4". (See notes B and C, below.) 3) Build any of the MEX files simply by opening its project file and asking your compiler to "Build Code Resource" (in THINK C) or to "Make" it (in CW). For each MEX file, e.g. histo.mex, there are two associated projects, e.g. histo.µ for CW, and histo.¹.4 for THINK C. To build a "fat" MEX, that runs native on both 68K and PowerPC, you should first compile in THINK C, and then in CW. (See note A, below.) Denis Pelli April 2, 1997 Notes A) The Mathworks support only the THINK C compiler to make 68K MEX code for MATLAB version 4 and only the CW compiler to make PPC MEX files for MATLAB 4 and both 68K and PPC for MATLAB 5. This archive includes THINK and CW projects. To build a fat MEX file for MATLAB 4, first "make" the THINK C version (e.g. histo.¹.4), producing a file with a .rsrc extension (e.g. histo.µ.rsrc). This is the 68K MEX file. When you then "make" histo.µ, the CW project incorporates the .rsrc file and generates a "fat" MEX file that will run native (i.e. fast) on both 68K and PowerPC. To make a 68K-only MEX file, simply rename, e.g., histo.µ.rsrc to histo.mex after you make the THINK project, and set the file type and creator to match the other MEX files. THINK C is slow and hard to work with. Symantec hasn't significantly upgraded in it many years. There is an error in the math.h header (version from Symantec C++ 8 CD-ROM release 5). We fix that error by some tricky preprocessor defines and undefines in the THINK C Prefix in each of the THINK projects. B) The easiest way to put a folder on your compilerÕs search path is simply to put the folder in the same folder as the compiler itself. If you want to use both CW and THINK C, then put the folder under CW, make an alias of it, and put the alias in THINK C's "Aliases" folder. C) Happily, MATLAB 5 is capable of running both V4 and V5 MEX files. Thus we are currently distributing sources that compile into V4 MEX files. The resulting MEX files run both under V4 and V5. In the future we will drop support for V4 and THINK C. (See note A above.) \ No newline at end of file diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/.AppleDouble/.Parent b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/.AppleDouble/.Parent new file mode 100644 index 0000000000000000000000000000000000000000..f242a991f5100f973830d2dce909454a462d8898 GIT binary patch literal 589 zcmZQz6=P>$WWWThKp`d|@`Xw<1L-gz2GJ}G42+>radw~@Ss+^gh&h35T_COC>ly)- i9;JqG2rz{_mIUDjG(Rvu0H&BmMqt!4FdTM3NCE&RM+iIs literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/.FBCIndex b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/.FBCIndex new file mode 100644 index 0000000000000000000000000000000000000000..848736b45a7ed3164a6864d4c5e30bea17b7b049 GIT binary patch literal 258048 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 literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/.FBCLockFolder/.FBCSemaphoreFile b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/.FBCLockFolder/.FBCSemaphoreFile new file mode 100644 index 0000000000000000000000000000000000000000..ab2c6846789c5681cd5544fd3e407c6648761ab9 GIT binary patch literal 6 KcmZQz009611^@v7 literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/Makefile-linux b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/Makefile-linux new file mode 100644 index 0000000..726dd31 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/Makefile-linux @@ -0,0 +1,39 @@ +MLAB = /usr/local/matlab5.1 + +MXSFX = mexlx +MEX = ${MLAB}/bin/mex + +MFLAGS = -V4 +INC = -I ${MLAB}/extern/include +LIB = -L ${MLAB}/extern/lib + +CC = gcc -Wall -pedantic +C_OPTIMIZE_SWITCH = -O2 ## For GCC +CFLAGS = ${C_OPTIMIZE_SWITCH} ${INC} ${LIB} + +all: corrDn.${MXSFX} upConv.${MXSFX} pointOp.${MXSFX} \ + histo.${MXSFX} range2.${MXSFX} + +clean: + /bin/rm *.o + +corrDn.${MXSFX}: corrDn.o wrap.o convolve.o edges.o + ${MEX} ${MFLAGS} corrDn.o wrap.o convolve.o edges.o + +upConv.${MXSFX}: upConv.o wrap.o convolve.o edges.o + ${MEX} ${MFLAGS} upConv.o wrap.o convolve.o edges.o + +pointOp.${MXSFX}: pointOp.o + ${MEX} ${MFLAGS} pointOp.o + +histo.${MXSFX}: histo.o + ${MEX} ${MFLAGS} histo.o + +range2.${MXSFX}: range2.o + ${MEX} ${MFLAGS} range2.o + +convolve.o wrap.o edges.o: convolve.h + +%.o : %.c + ${CC} -c ${CFLAGS} $< + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/Makefile-ml6-linux b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/Makefile-ml6-linux new file mode 100644 index 0000000..f596ad7 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/Makefile-ml6-linux @@ -0,0 +1,39 @@ +MLAB = /usr/local/matlab6.0 + +MXSFX = mexglx +MEX = ${MLAB}/bin/mex + +MFLAGS = -V4 +INC = -I ${MLAB}/extern/include +LIB = -L ${MLAB}/extern/lib + +CC = gcc -Wall -pedantic +C_OPTIMIZE_SWITCH = -O2 ## For GCC +CFLAGS = ${C_OPTIMIZE_SWITCH} ${INC} ${LIB} + +all: corrDn.${MXSFX} upConv.${MXSFX} pointOp.${MXSFX} \ + histo.${MXSFX} range2.${MXSFX} + +clean: + /bin/rm *.o + +corrDn.${MXSFX}: corrDn.o wrap.o convolve.o edges.o + ${MEX} ${MFLAGS} corrDn.o wrap.o convolve.o edges.o + +upConv.${MXSFX}: upConv.o wrap.o convolve.o edges.o + ${MEX} ${MFLAGS} upConv.o wrap.o convolve.o edges.o + +pointOp.${MXSFX}: pointOp.o + ${MEX} ${MFLAGS} pointOp.o + +histo.${MXSFX}: histo.o + ${MEX} ${MFLAGS} histo.o + +range2.${MXSFX}: range2.o + ${MEX} ${MFLAGS} range2.o + +convolve.o wrap.o edges.o: convolve.h + +%.o : %.c + ${CC} -c ${CFLAGS} $< + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/Makefile-osx b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/Makefile-osx new file mode 100644 index 0000000..352d15b --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/Makefile-osx @@ -0,0 +1,39 @@ +MLAB = /share/wotan/matlab13 + +MXSFX = mexosx +MEX = ${MLAB}/bin/mex + +MFLAGS = +INC = -I ${MLAB}/extern/include +LIB = -L ${MLAB}/extern/lib + +CC = cc -Wall -pedantic -no-cpp-precomp +C_OPTIMIZE_SWITCH = -O2 ## For GCC +CFLAGS = ${C_OPTIMIZE_SWITCH} ${INC} ${LIB} + +all: corrDn.${MXSFX} upConv.${MXSFX} pointOp.${MXSFX} \ + histo.${MXSFX} range2.${MXSFX} + +clean: + /bin/rm *.o + +corrDn.${MXSFX}: corrDn.o wrap.o convolve.o edges.o + ${MEX} ${MFLAGS} corrDn.o wrap.o convolve.o edges.o + +upConv.${MXSFX}: upConv.o wrap.o convolve.o edges.o + ${MEX} ${MFLAGS} upConv.o wrap.o convolve.o edges.o + +pointOp.${MXSFX}: pointOp.o + ${MEX} ${MFLAGS} pointOp.o + +histo.${MXSFX}: histo.o + ${MEX} ${MFLAGS} histo.o + +range2.${MXSFX}: range2.o + ${MEX} ${MFLAGS} range2.o + +convolve.o wrap.o edges.o: convolve.h + +%.o : %.c + ${CC} -c ${CFLAGS} $< + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/Makefile-solaris b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/Makefile-solaris new file mode 100644 index 0000000..2be2bdb --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/Makefile-solaris @@ -0,0 +1,38 @@ +MLAB = /export/home/Solaris2/matlab5.1 + +MXSFX = mexsol +MEX = ${MLAB}/bin/mex + +MFLAGS = -V4 +INC = -I ${MLAB}/extern/include +LIB = -L ${MLAB}/extern/lib + +CC = gcc -Wall -pedantic +C_OPTIMIZE_SWITCH = -O2 ## For GCC +CFLAGS = ${C_OPTIMIZE_SWITCH} ${INC} ${LIB} + +all: corrDn.${MXSFX} upConv.${MXSFX} pointOp.${MXSFX} \ + histo.${MXSFX} range2.${MXSFX} + +clean: + /bin/rm *.o + +corrDn.${MXSFX}: corrDn.o wrap.o convolve.o edges.o + ${MEX} ${MFLAGS} corrDn.o wrap.o convolve.o edges.o + +upConv.${MXSFX}: upConv.o wrap.o convolve.o edges.o + ${MEX} ${MFLAGS} upConv.o wrap.o convolve.o edges.o + +pointOp.${MXSFX}: pointOp.o + ${MEX} ${MFLAGS} pointOp.o + +histo.${MXSFX}: histo.o + ${MEX} ${MFLAGS} histo.o + +range2.${MXSFX}: range2.o + ${MEX} ${MFLAGS} range2.o + +convolve.o wrap.o edges.o: convolve.h + +%.o : %.c + ${CC} -c ${CFLAGS} $< diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/Makefile-sun4 b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/Makefile-sun4 new file mode 100644 index 0000000..432b181 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/Makefile-sun4 @@ -0,0 +1,39 @@ +MLAB = /home/alberich/matlab4 + +MXSFX = mex4 +MEX = ${MLAB}/bin/cmex + +MFLAGS = +INC = -I ${MLAB}/extern/include +LIB = -L ${MLAB}/extern/lib/sun4 + +CC = gcc +C_OPTIMIZE_SWITCH = -O2 ## For GCC +CFLAGS = ${C_OPTIMIZE_SWITCH} ${INC} ${LIB} + +all: corrDn.${MXSFX} upConv.${MXSFX} pointOp.${MXSFX} \ + histo.${MXSFX} range2.${MXSFX} + +clean: + /bin/rm *.o + +corrDn.${MXSFX}: corrDn.o wrap.o convolve.o edges.o + ${MEX} ${MFLAGS} corrDn.o wrap.o convolve.o edges.o + +upConv.${MXSFX}: upConv.o wrap.o convolve.o edges.o + ${MEX} ${MFLAGS} upConv.o wrap.o convolve.o edges.o + +pointOp.${MXSFX}: pointOp.o + ${MEX} ${MFLAGS} pointOp.o + +histo.${MXSFX}: histo.o + ${MEX} ${MFLAGS} histo.o + +range2.${MXSFX}: range2.o + ${MEX} ${MFLAGS} range2.o + +convolve.o wrap.o edges.o: convolve.h + +%.o : %.c + ${CC} -c ${CFLAGS} $< + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/convolve.c b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/convolve.c new file mode 100644 index 0000000..60a11a4 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/convolve.c @@ -0,0 +1,325 @@ +/* +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; File: convolve.c +;;; Author: Eero Simoncelli +;;; Description: General convolution code for 2D images +;;; Creation Date: Spring, 1987. +;;; MODIFICATIONS: +;;; 10/89: approximately optimized the choice of register vars on SPARCS. +;;; 6/96: Switched array types to double float. +;;; 2/97: made more robust and readable. Added STOP arguments. +;;; 8/97: Bug: when calling internal_reduce with edges in {reflect1,repeat, +;;; extend} and an even filter dimension. Solution: embed the filter +;;; in the upper-left corner of a filter with odd Y and X dimensions. +;;; ---------------------------------------------------------------- +;;; Object-Based Vision and Image Understanding System (OBVIUS), +;;; Copyright 1988, Vision Science Group, Media Laboratory, +;;; Massachusetts Institute of Technology. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +*/ + +#include <stdio.h> +#include <math.h> +#include "convolve.h" + +/* + -------------------------------------------------------------------- + Correlate FILT with IMAGE, subsampling according to START, STEP, and + STOP parameters, with values placed into RESULT array. RESULT + dimensions should be ceil((stop-start)/step). TEMP should be a + pointer to a temporary double array the size of the filter. + EDGES is a string specifying how to handle boundaries -- see edges.c. + The convolution is done in 9 sections, where the border sections use + specially computed edge-handling filters (see edges.c). The origin + of the filter is assumed to be (floor(x_fdim/2), floor(y_fdim/2)). +------------------------------------------------------------------------ */ + +/* abstract out the inner product computation */ +#define INPROD(XCNR,YCNR) \ + { \ + sum=0.0; \ + for (im_pos=YCNR*x_dim+XCNR, filt_pos=0, x_filt_stop=x_fdim; \ + x_filt_stop<=filt_size; \ + im_pos+=(x_dim-x_fdim), x_filt_stop+=x_fdim) \ + for (; \ + filt_pos<x_filt_stop; \ + filt_pos++, im_pos++) \ + sum+= image[im_pos]*temp[filt_pos]; \ + result[res_pos] = sum; \ + } + +int internal_reduce(image, x_dim, y_dim, filt, temp, x_fdim, y_fdim, + x_start, x_step, x_stop, y_start, y_step, y_stop, + result, edges) + register image_type *image, *temp; + register int x_fdim, x_dim; + register image_type *result; + register int x_step, y_step; + int x_start, y_start; + int x_stop, y_stop; + image_type *filt; + int y_dim, y_fdim; + char *edges; + { + register double sum; + register int filt_pos, im_pos, x_filt_stop; + register int x_pos, filt_size = x_fdim*y_fdim; + register int y_pos, res_pos; + register int y_ctr_stop = y_dim - ((y_fdim==1)?0:y_fdim); + register int x_ctr_stop = x_dim - ((x_fdim==1)?0:x_fdim); + register int x_res_dim = (x_stop-x_start+x_step-1)/x_step; + int x_ctr_start = ((x_fdim==1)?0:1); + int y_ctr_start = ((y_fdim==1)?0:1); + int x_fmid = x_fdim/2; + int y_fmid = y_fdim/2; + int base_res_pos; + fptr reflect = edge_function(edges); /* look up edge-handling function */ + + if (!reflect) return(-1); + + /* shift start/stop coords to filter upper left hand corner */ + x_start -= x_fmid; y_start -= y_fmid; + x_stop -= x_fmid; y_stop -= y_fmid; + + if (x_stop < x_ctr_stop) x_ctr_stop = x_stop; + if (y_stop < y_ctr_stop) y_ctr_stop = y_stop; + + for (res_pos=0, y_pos=y_start; /* TOP ROWS */ + y_pos<y_ctr_start; + y_pos+=y_step) + { + for (x_pos=x_start; /* TOP-LEFT CORNER */ + x_pos<x_ctr_start; + x_pos+=x_step, res_pos++) + { + (*reflect)(filt,x_fdim,y_fdim,x_pos-1,y_pos-1,temp,REDUCE); + INPROD(0,0) + } + + (*reflect)(filt,x_fdim,y_fdim,0,y_pos-1,temp,REDUCE); + for (; /* TOP EDGE */ + x_pos<x_ctr_stop; + x_pos+=x_step, res_pos++) + INPROD(x_pos,0) + + for (; /* TOP-RIGHT CORNER */ + x_pos<x_stop; + x_pos+=x_step, res_pos++) + { + (*reflect)(filt,x_fdim,y_fdim,x_pos-x_ctr_stop+1,y_pos-1,temp,REDUCE); + INPROD(x_ctr_stop,0) + } + } /* end TOP ROWS */ + + y_ctr_start = y_pos; /* hold location of top */ + for (base_res_pos=res_pos, x_pos=x_start; /* LEFT EDGE */ + x_pos<x_ctr_start; + x_pos+=x_step, base_res_pos++) + { + (*reflect)(filt,x_fdim,y_fdim,x_pos-1,0,temp,REDUCE); + for (y_pos=y_ctr_start, res_pos=base_res_pos; + y_pos<y_ctr_stop; + y_pos+=y_step, res_pos+=x_res_dim) + INPROD(0,y_pos) + } + + (*reflect)(filt,x_fdim,y_fdim,0,0,temp,REDUCE); + for (; /* CENTER */ + x_pos<x_ctr_stop; + x_pos+=x_step, base_res_pos++) + for (y_pos=y_ctr_start, res_pos=base_res_pos; + y_pos<y_ctr_stop; + y_pos+=y_step, res_pos+=x_res_dim) + INPROD(x_pos,y_pos) + + for (; /* RIGHT EDGE */ + x_pos<x_stop; + x_pos+=x_step, base_res_pos++) + { + (*reflect)(filt,x_fdim,y_fdim,x_pos-x_ctr_stop+1,0,temp,REDUCE); + for (y_pos=y_ctr_start, res_pos=base_res_pos; + y_pos<y_ctr_stop; + y_pos+=y_step, res_pos+=x_res_dim) + INPROD(x_ctr_stop,y_pos) + } + + for (res_pos-=(x_res_dim-1); + y_pos<y_stop; /* BOTTOM ROWS */ + y_pos+=y_step) + { + for (x_pos=x_start; /* BOTTOM-LEFT CORNER */ + x_pos<x_ctr_start; + x_pos+=x_step, res_pos++) + { + (*reflect)(filt,x_fdim,y_fdim,x_pos-1,y_pos-y_ctr_stop+1,temp,REDUCE); + INPROD(0,y_ctr_stop) + } + + (*reflect)(filt,x_fdim,y_fdim,0,y_pos-y_ctr_stop+1,temp,REDUCE); + for (; /* BOTTOM EDGE */ + x_pos<x_ctr_stop; + x_pos+=x_step, res_pos++) + INPROD(x_pos,y_ctr_stop) + + for (; /* BOTTOM-RIGHT CORNER */ + x_pos<x_stop; + x_pos+=x_step, res_pos++) + { + (*reflect)(filt,x_fdim,y_fdim,x_pos-x_ctr_stop+1,y_pos-y_ctr_stop+1,temp,REDUCE); + INPROD(x_ctr_stop,y_ctr_stop) + } + } /* end BOTTOM */ + return(0); + } /* end of internal_reduce */ + + +/* + -------------------------------------------------------------------- + Upsample IMAGE according to START,STEP, and STOP parameters and then + convolve with FILT, adding values into RESULT array. IMAGE + dimensions should be ceil((stop-start)/step). See + description of internal_reduce (above). + + WARNING: this subroutine destructively modifies the RESULT array! + ------------------------------------------------------------------------ */ + +/* abstract out the inner product computation */ +#define INPROD2(XCNR,YCNR) \ + { \ + val = image[im_pos]; \ + for (res_pos=YCNR*x_dim+XCNR, filt_pos=0, x_filt_stop=x_fdim; \ + x_filt_stop<=filt_size; \ + res_pos+=(x_dim-x_fdim), x_filt_stop+=x_fdim) \ + for (; \ + filt_pos<x_filt_stop; \ + filt_pos++, res_pos++) \ + result[res_pos] += val*temp[filt_pos]; \ + } + +int internal_expand(image,filt,temp,x_fdim,y_fdim, + x_start,x_step,x_stop,y_start,y_step,y_stop, + result,x_dim,y_dim,edges) + register image_type *result, *temp; + register int x_fdim, x_dim; + register int x_step, y_step; + register image_type *image; + int x_start, y_start; + image_type *filt; + int y_fdim, y_dim; + char *edges; + { + register double val; + register int filt_pos, res_pos, x_filt_stop; + register int x_pos, filt_size = x_fdim*y_fdim; + register int y_pos, im_pos; + register int x_ctr_stop = x_dim - ((x_fdim==1)?0:x_fdim); + int y_ctr_stop = (y_dim - ((y_fdim==1)?0:y_fdim)); + int x_ctr_start = ((x_fdim==1)?0:1); + int y_ctr_start = ((y_fdim==1)?0:1); + int x_fmid = x_fdim/2; + int y_fmid = y_fdim/2; + int base_im_pos, x_im_dim = (x_stop-x_start+x_step-1)/x_step; + fptr reflect = edge_function(edges); /* look up edge-handling function */ + + if (!reflect) return(-1); + + /* shift start/stop coords to filter upper left hand corner */ + x_start -= x_fmid; y_start -= y_fmid; + x_stop -= x_fmid; y_stop -= y_fmid; + + if (x_stop < x_ctr_stop) x_ctr_stop = x_stop; + if (y_stop < y_ctr_stop) y_ctr_stop = y_stop; + + for (im_pos=0, y_pos=y_start; /* TOP ROWS */ + y_pos<y_ctr_start; + y_pos+=y_step) + { + for (x_pos=x_start; /* TOP-LEFT CORNER */ + x_pos<x_ctr_start; + x_pos+=x_step, im_pos++) + { + (*reflect)(filt,x_fdim,y_fdim,x_pos-1,y_pos-1,temp,EXPAND); + INPROD2(0,0) + } + + (*reflect)(filt,x_fdim,y_fdim,0,y_pos-1,temp,EXPAND); + for (; /* TOP EDGE */ + x_pos<x_ctr_stop; + x_pos+=x_step, im_pos++) + INPROD2(x_pos,0) + + for (; /* TOP-RIGHT CORNER */ + x_pos<x_stop; + x_pos+=x_step, im_pos++) + { + (*reflect)(filt,x_fdim,y_fdim,x_pos-x_ctr_stop+1,y_pos-1,temp,EXPAND); + INPROD2(x_ctr_stop,0) + } + } /* end TOP ROWS */ + + y_ctr_start = y_pos; /* hold location of top */ + for (base_im_pos=im_pos, x_pos=x_start; /* LEFT EDGE */ + x_pos<x_ctr_start; + x_pos+=x_step, base_im_pos++) + { + (*reflect)(filt,x_fdim,y_fdim,x_pos-1,0,temp,EXPAND); + for (y_pos=y_ctr_start, im_pos=base_im_pos; + y_pos<y_ctr_stop; + y_pos+=y_step, im_pos+=x_im_dim) + INPROD2(0,y_pos) + } + + (*reflect)(filt,x_fdim,y_fdim,0,0,temp,EXPAND); + for (; /* CENTER */ + x_pos<x_ctr_stop; + x_pos+=x_step, base_im_pos++) + for (y_pos=y_ctr_start, im_pos=base_im_pos; + y_pos<y_ctr_stop; + y_pos+=y_step, im_pos+=x_im_dim) + INPROD2(x_pos,y_pos) + + for (; /* RIGHT EDGE */ + x_pos<x_stop; + x_pos+=x_step, base_im_pos++) + { + (*reflect)(filt,x_fdim,y_fdim,x_pos-x_ctr_stop+1,0,temp,EXPAND); + for (y_pos=y_ctr_start, im_pos=base_im_pos; + y_pos<y_ctr_stop; + y_pos+=y_step, im_pos+=x_im_dim) + INPROD2(x_ctr_stop,y_pos) + } + + for (im_pos-=(x_im_dim-1); + y_pos<y_stop; /* BOTTOM ROWS */ + y_pos+=y_step) + { + for (x_pos=x_start; /* BOTTOM-LEFT CORNER */ + x_pos<x_ctr_start; + x_pos+=x_step, im_pos++) + { + (*reflect)(filt,x_fdim,y_fdim,x_pos-1,y_pos-y_ctr_stop+1,temp,EXPAND); + INPROD2(0,y_ctr_stop) + } + + (*reflect)(filt,x_fdim,y_fdim,0,y_pos-y_ctr_stop+1,temp,EXPAND); + for (; /* BOTTOM EDGE */ + x_pos<x_ctr_stop; + x_pos+=x_step, im_pos++) + INPROD2(x_pos,y_ctr_stop) + + for (; /* BOTTOM-RIGHT CORNER */ + x_pos<x_stop; + x_pos+=x_step, im_pos++) + { + (*reflect)(filt,x_fdim,y_fdim,x_pos-x_ctr_stop+1,y_pos-y_ctr_stop+1,temp,EXPAND); + INPROD2(x_ctr_stop,y_ctr_stop) + } + } /* end BOTTOM */ + return(0); + } /* end of internal_expand */ + + +/* Local Variables: */ +/* buffer-read-only: t */ +/* End: */ + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/convolve.h b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/convolve.h new file mode 100644 index 0000000..48d55f7 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/convolve.h @@ -0,0 +1,55 @@ +/* +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; File: convolve.h +;;; Author: Simoncelli +;;; Description: Header file for convolve.c +;;; Creation Date: +;;; ---------------------------------------------------------------- +;;; Object-Based Vision and Image Understanding System (OBVIUS), +;;; Copyright 1988, Vision Science Group, Media Laboratory, +;;; Massachusetts Institute of Technology. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +*/ + +#include <stdio.h> +#include <stdlib.h> + +#define ABS(x) (((x)>=0) ? (x) : (-(x))) +#define ROOT2 1.4142135623730951 +#define REDUCE 0 +#define EXPAND 1 +#define IS == +#define ISNT != +#define AND && +#define OR || + +typedef int (*fptr)(); + +typedef struct + { + char *name; + fptr func; + } EDGE_HANDLER; + +typedef double image_type; + +fptr edge_function(char *edges); +int internal_reduce(image_type *image, int x_idim, int y_idim, + image_type *filt, image_type *temp, int x_fdim, int y_fdim, + int x_start, int x_step, int x_stop, + int y_start, int y_step, int y_stop, + image_type *result, char *edges); +int internal_expand(image_type *image, + image_type *filt, image_type *temp, int x_fdim, int y_fdim, + int x_start, int x_step, int x_stop, + int y_start, int y_step, int y_stop, + image_type *result, int x_rdim, int y_rdim, char *edges); +int internal_wrap_reduce(image_type *image, int x_idim, int y_idim, + image_type *filt, int x_fdim, int y_fdim, + int x_start, int x_step, int x_stop, + int y_start, int y_step, int y_stop, + image_type *result); +int internal_wrap_expand(image_type *image, image_type *filt, int x_fdim, int y_fdim, + int x_start, int x_step, int x_stop, + int y_start, int y_step, int y_stop, + image_type *result, int x_rdim, int y_rdim); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.c b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.c new file mode 100644 index 0000000..c74df1f --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.c @@ -0,0 +1,145 @@ +/* +RES = corrDn(IM, FILT, EDGES, STEP, START, STOP); + >>> See corrDn.m for documentation <<< + This is a matlab interface to the internal_reduce function. + EPS, 7/96. +*/ + +#define V4_COMPAT +#include <matrix.h> /* Matlab matrices */ +#include <mex.h> + +#include "convolve.h" + +#define notDblMtx(it) (!mxIsNumeric(it) || !mxIsDouble(it) || mxIsSparse(it) || mxIsComplex(it)) + +void mexFunction(int nlhs, /* Num return vals on lhs */ + mxArray *plhs[], /* Matrices on lhs */ + int nrhs, /* Num args on rhs */ + const mxArray *prhs[] /* Matrices on rhs */ + ) + { + double *image,*filt, *temp, *result; + int x_fdim, y_fdim, x_idim, y_idim; + int x_rdim, y_rdim; + int x_start = 1; + int x_step = 1; + int y_start = 1; + int y_step = 1; + int x_stop, y_stop; + mxArray *arg; + double *mxMat; + char edges[15] = "reflect1"; + + if (nrhs<2) mexErrMsgTxt("requres at least 2 args."); + + /* ARG 1: IMAGE */ + arg = prhs[0]; + if notDblMtx(arg) mexErrMsgTxt("IMAGE arg must be a non-sparse double float matrix."); + image = mxGetPr(arg); + x_idim = (int) mxGetM(arg); /* X is inner index! */ + y_idim = (int) mxGetN(arg); + + /* ARG 2: FILTER */ + arg = prhs[1]; + if notDblMtx(arg) mexErrMsgTxt("FILTER arg must be non-sparse double float matrix."); + filt = mxGetPr(arg); + x_fdim = (int) mxGetM(arg); + y_fdim = (int) mxGetN(arg); + + if ((x_fdim > x_idim) || (y_fdim > y_idim)) + { + mexPrintf("Filter: [%d %d], Image: [%d %d]\n",x_fdim,y_fdim,x_idim,y_idim); + mexErrMsgTxt("FILTER dimensions larger than IMAGE dimensions."); + } + + /* ARG 3 (optional): EDGES */ + if (nrhs>2) + { + if (!mxIsChar(prhs[2])) + mexErrMsgTxt("EDGES arg must be a string."); + mxGetString(prhs[2],edges,15); + } + + /* ARG 4 (optional): STEP */ + if (nrhs>3) + { + arg = prhs[3]; + if notDblMtx(arg) mexErrMsgTxt("STEP arg must be a double float matrix."); + if (mxGetM(arg) * mxGetN(arg) != 2) + mexErrMsgTxt("STEP arg must contain two elements."); + mxMat = mxGetPr(arg); + x_step = (int) mxMat[0]; + y_step = (int) mxMat[1]; + if ((x_step<1) || (y_step<1)) + mexErrMsgTxt("STEP values must be greater than zero."); + } + + /* ARG 5 (optional): START */ + if (nrhs>4) + { + arg = prhs[4]; + if notDblMtx(arg) mexErrMsgTxt("START arg must be a double float matrix."); + if (mxGetM(arg) * mxGetN(arg) != 2) + mexErrMsgTxt("START arg must contain two elements."); + mxMat = mxGetPr(arg); + x_start = (int) mxMat[0]; + y_start = (int) mxMat[1]; + if ((x_start<1) || (x_start>x_idim) || + (y_start<1) || (y_start>y_idim)) + mexErrMsgTxt("START values must lie between 1 and the image dimensions."); + } + x_start--; /* convert from Matlab to standard C indexes */ + y_start--; + + /* ARG 6 (optional): STOP */ + if (nrhs>5) + { + if notDblMtx(prhs[5]) mexErrMsgTxt("STOP arg must be double float matrix."); + if (mxGetM(prhs[5]) * mxGetN(prhs[5]) != 2) + mexErrMsgTxt("STOP arg must contain two elements."); + mxMat = mxGetPr(prhs[5]); + x_stop = (int) mxMat[0]; + y_stop = (int) mxMat[1]; + if ((x_stop<x_start) || (x_stop>x_idim) || + (y_stop<y_start) || (y_stop>y_idim)) + mexErrMsgTxt("STOP values must lie between START and the image dimensions."); + } + else + { + x_stop = x_idim; + y_stop = y_idim; + } + + x_rdim = (x_stop-x_start+x_step-1) / x_step; + y_rdim = (y_stop-y_start+y_step-1) / y_step; + + /* mxFreeMatrix(plhs[0]); */ + plhs[0] = (mxArray *) mxCreateDoubleMatrix(x_rdim,y_rdim,mxREAL); + if (plhs[0] == NULL) mexErrMsgTxt("Cannot allocate result matrix"); + result = mxGetPr(plhs[0]); + + temp = mxCalloc(x_fdim*y_fdim, sizeof(double)); + if (temp == NULL) + mexErrMsgTxt("Cannot allocate necessary temporary space"); + + /* + printf("i(%d, %d), f(%d, %d), r(%d, %d), X(%d, %d, %d), Y(%d, %d, %d), %s\n", + x_idim,y_idim,x_fdim,y_fdim,x_rdim,y_rdim, + x_start,x_step,x_stop,y_start,y_step,y_stop,edges); + */ + + if (strcmp(edges,"circular") == 0) + internal_wrap_reduce(image, x_idim, y_idim, filt, x_fdim, y_fdim, + x_start, x_step, x_stop, y_start, y_step, y_stop, + result); + else internal_reduce(image, x_idim, y_idim, filt, temp, x_fdim, y_fdim, + x_start, x_step, x_stop, y_start, y_step, y_stop, + result, edges); + + mxFree((char *) temp); + return; + } + + + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.c~ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.c~ new file mode 100644 index 0000000..0a1be35 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.c~ @@ -0,0 +1,151 @@ +/* +RES = corrDn(IM, FILT, EDGES, STEP, START, STOP); + >>> See corrDn.m for documentation <<< + This is a matlab interface to the internal_reduce function. + EPS, 7/96. +*/ + +/* Matlab V4 types should be changed as follows: + mxArray -> mxArray + REAL -> mxREAL + mxCreateFull -> mxCreateDoubleMatrix + */ + +#define V4_COMPAT +#include <matrix.h> /* Matlab matrices */ +#include <mex.h> + +#include "convolve.h" + +#define notDblMtx(it) (!mxIsNumeric(it) || !mxIsDouble(it) || mxIsSparse(it) || mxIsComplex(it)) + +void mexFunction(int nlhs, /* Num return vals on lhs */ + mxArray *plhs[], /* Matrices on lhs */ + int nrhs, /* Num args on rhs */ + const mxArray *prhs[] /* Matrices on rhs */ + ) + { + double *image,*filt, *temp, *result; + int x_fdim, y_fdim, x_idim, y_idim; + int x_rdim, y_rdim; + int x_start = 1; + int x_step = 1; + int y_start = 1; + int y_step = 1; + int x_stop, y_stop; + mxArray *arg; + double *mxMat; + char edges[15] = "reflect1"; + + if (nrhs<2) mexErrMsgTxt("requres at least 2 args."); + + /* ARG 1: IMAGE */ + arg = prhs[0]; + if notDblMtx(arg) mexErrMsgTxt("IMAGE arg must be a non-sparse double float matrix."); + image = mxGetPr(arg); + x_idim = (int) mxGetM(arg); /* X is inner index! */ + y_idim = (int) mxGetN(arg); + + /* ARG 2: FILTER */ + arg = prhs[1]; + if notDblMtx(arg) mexErrMsgTxt("FILTER arg must be non-sparse double float matrix."); + filt = mxGetPr(arg); + x_fdim = (int) mxGetM(arg); + y_fdim = (int) mxGetN(arg); + + if ((x_fdim > x_idim) || (y_fdim > y_idim)) + { + mexPrintf("Filter: [%d %d], Image: [%d %d]\n",x_fdim,y_fdim,x_idim,y_idim); + mexErrMsgTxt("FILTER dimensions larger than IMAGE dimensions."); + } + + /* ARG 3 (optional): EDGES */ + if (nrhs>2) + { + if (!mxIsChar(prhs[2])) + mexErrMsgTxt("EDGES arg must be a string."); + mxGetString(prhs[2],edges,15); + } + + /* ARG 4 (optional): STEP */ + if (nrhs>3) + { + arg = prhs[3]; + if notDblMtx(arg) mexErrMsgTxt("STEP arg must be a double float matrix."); + if (mxGetM(arg) * mxGetN(arg) != 2) + mexErrMsgTxt("STEP arg must contain two elements."); + mxMat = mxGetPr(arg); + x_step = (int) mxMat[0]; + y_step = (int) mxMat[1]; + if ((x_step<1) || (y_step<1)) + mexErrMsgTxt("STEP values must be greater than zero."); + } + + /* ARG 5 (optional): START */ + if (nrhs>4) + { + arg = prhs[4]; + if notDblMtx(arg) mexErrMsgTxt("START arg must be a double float matrix."); + if (mxGetM(arg) * mxGetN(arg) != 2) + mexErrMsgTxt("START arg must contain two elements."); + mxMat = mxGetPr(arg); + x_start = (int) mxMat[0]; + y_start = (int) mxMat[1]; + if ((x_start<1) || (x_start>x_idim) || + (y_start<1) || (y_start>y_idim)) + mexErrMsgTxt("START values must lie between 1 and the image dimensions."); + } + x_start--; /* convert from Matlab to standard C indexes */ + y_start--; + + /* ARG 6 (optional): STOP */ + if (nrhs>5) + { + if notDblMtx(prhs[5]) mexErrMsgTxt("STOP arg must be double float matrix."); + if (mxGetM(prhs[5]) * mxGetN(prhs[5]) != 2) + mexErrMsgTxt("STOP arg must contain two elements."); + mxMat = mxGetPr(prhs[5]); + x_stop = (int) mxMat[0]; + y_stop = (int) mxMat[1]; + if ((x_stop<x_start) || (x_stop>x_idim) || + (y_stop<y_start) || (y_stop>y_idim)) + mexErrMsgTxt("STOP values must lie between START and the image dimensions."); + } + else + { + x_stop = x_idim; + y_stop = y_idim; + } + + x_rdim = (x_stop-x_start+x_step-1) / x_step; + y_rdim = (y_stop-y_start+y_step-1) / y_step; + + /* mxFreeMatrix(plhs[0]); */ + plhs[0] = (mxArray *) mxCreateDoubleMatrix(x_rdim,y_rdim,mxREAL); + if (plhs[0] == NULL) mexErrMsgTxt("Cannot allocate result matrix"); + result = mxGetPr(plhs[0]); + + temp = mxCalloc(x_fdim*y_fdim, sizeof(double)); + if (temp == NULL) + mexErrMsgTxt("Cannot allocate necessary temporary space"); + + /* + printf("i(%d, %d), f(%d, %d), r(%d, %d), X(%d, %d, %d), Y(%d, %d, %d), %s\n", + x_idim,y_idim,x_fdim,y_fdim,x_rdim,y_rdim, + x_start,x_step,x_stop,y_start,y_step,y_stop,edges); + */ + + if (strcmp(edges,"circular") == 0) + internal_wrap_reduce(image, x_idim, y_idim, filt, x_fdim, y_fdim, + x_start, x_step, x_stop, y_start, y_step, y_stop, + result); + else internal_reduce(image, x_idim, y_idim, filt, temp, x_fdim, y_fdim, + x_start, x_step, x_stop, y_start, y_step, y_stop, + result, edges); + + mxFree((char *) temp); + return; + } + + + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.dll b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.dll new file mode 100644 index 0000000000000000000000000000000000000000..1f314f27c55a4187780e62d1cd33338b6d55c43a GIT binary patch literal 49664 zcmeFa3t&{$xj(umvy%+Tggwv+1dTGvP$LsCnxKIRWq`cE1SW5*JVZzgDI}Q82JFex zNoppG0ovNup1wrX+8$4}t*1q+kjX$20zv{6c?GDiP8`qxng<ATf8W|Oc_8-moO{pz z{{Qz9U9;DFeXsScZ+&a+P3FVf1hpUtB7)B+2s`nlKMVi;$3L|w9y|HXvBK+P-nnC^ zD&w6ya*Nkg7}l4UJzl<Yonh6=($X@U;juzPxm;>kQ))<Fl4Dp`wz_aeL`0a;-?cSG z5HeIDLdd#>vjU@?6~^8Xt_l`}YUCs<xpA3z>JYZ^w2sGv6u2pe;8*@sLkSe)4~?kZ z&{IjC{h=T%r0h;XNTTOiL3oRv*Z=hj!t2AGUtjvQX-$_P9QfK&L6~7H++?HjDg=U$ zaJ_CEgCIOQqkQ#B+e$&Wo65E!gdjYHFyhYwcFj<#2?O__;5md?ghqrBe-=S#p0P%$ zr~!Eici!LYBPt<kp?c*N<*N|qG&ze15%W!i5q}mMx4dv|87dy6{y;0<-*tpUz4<7) z`S-se1?=Y%wtxA&pkooj4nfxxDdN|WY&6C<=iqT~UJ-t0v1DWVUofwPeEUF9fn%xB zfS^N&c4Qb68*`0GRT0H!(Tm56No?OEvbDxsCJXtVca?NQv+b^YPs>o^mVD2vfrK29 z@A-KkVT&k!h5Ff{WaN7)l?b4S%lE7qO6c=F`A9HX#AqnY&G(cjh00I`LkSF(97xbm z_XZLeY7-5WsAS}O#wii>7Mt(6mZ%^y;HWgl<a>IMWEsXNjAkB04P#A+8KYL;$#RXk z*;&?t;#}(ME#69BY^1~)e-}2R)qX9gI*z4ite$6-%!Xz;qF6(<-tgDT(>ODX2_;fi zwx@(=Y3<k4(w3J&btY@`JuJ|WD7k4U0rUz32|_PBkN|pTx1;}WD;fEoSS7*+@;$dA zD!n=YWbD2mRD6pn#sw;lL4@_9usg(aH{#u?8b)L=@OE~e3iwA?2HOWz;QBMv^os{L zvFw#bt0-;R$wAiTdyXmD3P<)1B>?gt0to{7SAhf|DW>jTQZn*APbv`txfs!rAX}(n zRiI)%A_0&$ARYiYinmih)>V!(R~q#-;Q+i+;a)_sNZs78bi<Y!qrhVwq}}@9Li<24 z1Uw1?u9LR35K1X}t0!2g3Y6klrasH_+5H@Iqzx=jpY1swNXt52-yKK;w^PqytPUlE zH~v?|(F&Aiz1g1cAtk*^bceK{`cA6;Gk<j&`w6P<=gapI=SX^<M$CMLc`C<q?6l^! zMjg<@1gxG|yovfKQ2Ov{7|`c4Gs76oY(`y);7pDXOs(lZ?H>f<MypelOm0e9J!fZP zFq`oq`yOpWvm*r3`VjRMuJpymW_jMH8o9<804%+VXNe}89rHYoT>BmkM8wKvJeFF$ z%QMAY1|*!x#)KwaQ^)KHa&-MZo4(1aLLy%!kF_@k*;|9^_sM7Do4vueHrtQ+&_y2D z5zX0>Yc%BKS&=kmA)Qc=jnOTXPN%eul8KajC@b6QsV9zYHqyhsCn3utDj=*_zU&dC z-KZOlsydo;)Y_PnN9|*%ePRLSBvX1lrLB~#92)IW>b^n4yWh;aPs;MVn84*A(EYZd zzdUx%{^5ZATv85O7M0KBXx3UFz3K*i3@k-!a<eL(#dHnHSmyqzsU?lIv(}$7*<fm6 zd9j#uNnHb`PDfrW%Zuq6G+i)tvCISqirWELtQjRSj?9Fr5Z1!GNJ%iaAwjb>iDl}X zdM5xBvOOOIJk}0QHSB{x$H)_lHPG{(1q#&mcHfHSkFbxHxmljB;c)eIK;{53U1!zk z)xumXQv+gH92#{8o{9EmaS@fvpMWqiEG4!Ll%#<mDd3Le{1+Gt7@l>iyHGEIwKnvj zAX;+nK_!-%h)#4)Z5KeXpa%nz3Ejc4ZglZJ^KrC@!pzgxRIp5~+J%ORz*UdgnP?uU znvHnWPy4HMc*Zd8Hq0M%6Nhf}rbEtz%j!Yqwzq0fLyH=53l?^Zou?KLoOa27=e^`b zL8@t*8`LeSW|spAjG(XnIZC712^3gZm62wLx~+Rss@<jGNJXQfj^LFxFY@_((EYKJ z^ZBo015D!gDYy_Gz|3Gi!LHOSF(0bB7aGBtK#UtkK);Q~b?RGKo5`ha?+!T?2I%cA znsh*X0V2bpg|Mivq?!i^+Uoz{kdB5EV5a)184IM)CBZ9gUQ4j1#7NHFBS00qP{D#; z48V4n@W;@BLip7vBYH>wkJ6hkAet-G?w$l>fd<DSGe+G;%o)OC3GhH=Bg>2<VZr=R zyVPBZxRHcOo1eXk8YK0QNOPOyEFlrhi*t%~uJ?mbB^jN?dDUpijzStS{Uzt0i72G- zQxcupc0RJrXozoC_{a8}Pa{uXvli>G`XUIL2xi0)4=_-o*;O?YutZ@d-U1<XCbV!_ zO<-+)@k@i~9Z^Kji;ASf^uQs3RYmcY21BV2+1;Y~pnsjwSO1!wL5(2+e6Kqy)!wXW zI85LYLy2$F<^p1BE(zeXgaGCqrj%18a&fN4_bCXNk3sM<F>D;rNHq6X#Q;uJ2eKC# z%^$zqwW@o&gHDYB@rUFNlN;p_I(v%<u|u+YH^*T#bO0{ZKPu@WKa|qu4Fq8x#O`gs z*pa5yx;TYtzPtSZ9*5$93K9f#qOVyK02R*!cG=usH4Dom;7GvGiOvKUr{FE7_J2fZ zl3XIT%$bB126d~wO@uIkXEaRpc6J(ljwJFB8YwX&vB(MtT@?vkGBF?hC8^ug7rAU2 z!IC&>^KT$|=9C1<SwJGU%+PR>3}eZ;mvB!>L=))Yb`Xbjosp$P`PBnv8-WLvN1W5w zJi+p`>Jw=Dzee2wMotFV2;_9?)7???N!B><0M;*S3yG6UN!EVqXC;c9Vi(#NIOkIc z2_qXAMk;=vxuqrz`Yu5cw<u>q$B@E?zJsE3>Q8)C*P%xchxDC#Ak}=C=2`U{=-k2p zVkHN05@a;ZFGaCfDUe%POVl<m3+TB20>S^^QFA~+-NtdqjJdIn%Y$i|pl(rQOpz~; zAtuYyi9J2m@c3r`YE4E)z`jUknT8y0UmRy$EJY{1dU{bo|A|`<gFG=)x?oNmT?B?f z{<M@k<)~s{a5E%E4P(P-YJuff6@yAi@y+&YD(Oef@rUh$Dr6+GR_RAAkctGDC~Sba z@aP&qK{`vZSi5|l31J*E<ix>b3ma)rKxfCYlsMCSjy#gIbkiYLm1t@)UFIT`8Efuv zR3%o4pojqmtPwH%0^bDa25wYvI$%Eigr*l33xETa1XEUWy17gykpM#`F?uqh(JV8n zM92a?ob!DUL8~*(XU)pb_T?Hgx`Q>aGVFVz<M**v^Cb+bMXRWqY$%(1S)K-pSqt$@ zI>GXy)W@9q4p2`EQ4KmJK{wjl{L3;(3NWHDVIi1W(@}M+`m)&#n0Rm1e?TtjE$}3U zU{eovM`3Qw=Kv0YPm@gA{Gg&_2xyjPNC)6nm<c69cD|JWMlVSK*E}FOU;HYvSW)7A z3QpIdGXQj8v=KUOPW^H84s^7G9GwB6GfLZ!KnDcj=yU)bKXHJLvT`NE2IUj6gQJt? zN5^2MrBhFnQQEvlK}Qd!n_ZH#gJ7l=HZRF3c8p*U`Y~YpG2cggA|so&Po_4@*D=aZ z+M31x38O+`KaF4%F^RDIT1LUn$KZNDX5FM<)Ga^<tcy)k6tjX@a)3{H2_&5U=@|`- z$?!-a(M|+Xe5Yb=L7N2h5(|tWre?TKSW1#&V}OcLe8@}?ARAbN=K-vdpAK%L6)n$3 zF6NMYPQ?^0!_bGMSKFmmX{pV?h{+fu9dU~y1M$B9VJS!lR9HA^J<jMRETZ{_081jt z1;CD0U*;eog&d3PeYKkAxsg)@rc3USc#tH;5(;Ws))UjfH4rTpxe0!<qfFX-=o+ZY zrv{%DStY{o)WBK{5aMWhK-BIdBIi*~tW(>92bih_Fcxp9!hYf#?Wo9Sr9<3k9+aH> z_@qjZUhP0`268QUCKH)E)FjsF|A4ZJx&U-E#ZLU+n_ooP<bR&B$)hO?LVcC87EW0M zQFcg>V@X(~&0eA^DD4%APUaLW?~90hnWRc%6;*0MA*vvQRGER$>|`mBS<G1dd~m^< zpXJw37E~g+RpgcHHRnNvuvl&&vDeeKT@7vj-=?k#b9{uY`cG)D{~_u^Mcjb6tqO7Z zsszeKzd?>u(;>bUh9XQfw@A)Y+*IUi8Hj8&AA@3sqBu!JLlelM&eR5Jwn(p5(VAi* z?ODk;G3hiNz(xNOx4=g_WJrNv(tr_up`|tMBAO{{T>gKeI=`~U5#L9zaTqs-Pi1AD z`yF5>^$C!ab?*4kI!6>wRM6t`usJoLKWTO66WY{PB3QDlz%JuPE8a25`6n(zf#sbh zWhM=rPE%At(W##l@52CEf{bHJt9d^5t^bAPPgx{LU4ZWX<qyM<>yL6`%&zL+;i+Ki zUjk1IErEoo!H+3l0v`jW=4F^tXB2LdF=LQkh5jZ}fNXu>i^ZUmCIBdim5)@Zh3z*T z;wyq-9+?1H0Sh3*Sd5l_gwX~LH^qFpNI?GAO_zUyt;AC7775-nBUqXeJCdXG0vyG% zl$kiZAR4hCu2>%5%pFSGa`NDD)aDn&AKsk^mlJz{?QM!`+CTetzxVGU6%xz8&iiLu z1)FProo^GGmb>$c&yv^5c?TJrn)tqkJ~_0w6ItHi;saDtff6QuK?A`~widTj=5nQa zs{NX#{GH-Gl=UFb;)e9HN8C(&Hwn4qyK`?N5db$}KW7*<IPOpt)Fj#me3kLYj7G9% z8l|Q-?5mzhj0cUh(2EH{jyPru5*_PB7<vokPsv7iqY^EHhPuCjRFk{@7T<j7-&Vvo zFLw`l2e)m@%7KBR%ge{UhxTI-luHfG1+>|(4owGx4c>88p%xy|z#=w4rbtD^G&EPM z)4icpYKu20zL_0?QP9v=Js!iwvV$WBjQ2J4Nn8A$0>0x!XVL5vrx*rYW08n)tTh_p zKY##|i55#T)^NUZp83<NIRMMx6z|4_ngLW}(IVQ^*3buM^QEe>>~6<2wnlW6(0PxM zd}UCF>GE0Bia|piwQ!2v1hTqQeFgKBR{UtSSKVp8MuQ?Jy7Czi9@6q{g(}1QnG_vd zrdkGbXFoxNRVV&%zPY2IdW^HeN4rC>i1tx%r<gAjEr<-4;6TTQ0zjkIJRh*pd!;Hw zX&0mC4fLoTj4gq8Ocfrg(ajQ=yHf33;N$z725N7t3dU~A8$#aHd6dugcMV`k10v*B z$$-0b9IJ|E9V2Oub+VyZYM8GAuQ2(+uQ=0%_`~cP0M@~41sy1Dc^fCXDCN@;PNcT} zV;C-)x%tz=+@@CaPi`yHFzM<xbEo8V5%+;QWJYhg#FlB;p!!1p8TCaI8LhN;gP-IQ zU^6xxW-V2;yho$1!E|iX_z^kSYMVN}aP<c2m`Id68}_j_-X;cZqSWq&=E||dd1|*e z3@KMt5Nk8JyF+Nx7(LJ4syQXLIK>tW8na|R5RBoLVIm1{qSUaSv;?pQrpXXaBe9f} z9mHMTi&&ici24fmy6A{3U>$7ga5Ng)<u>$Hh4i0BK?17l8=8?KO6fUeU2M?QYPxK0 zLk@M2E^YZCQJs!*$a1;D+OgBj)Ak=zUqF>O(+Sqve*ztlHwcykjR%;C%(2|yNo0r2 z`>UU%q0k9GCShI9Bn|jO&2ZF-surB3kbI*;!%0vK4w436CFlZJMU=!f>_e(c?PklO z)km4Eaf)tKis=@Qo}x38q=lSPNt{v^i+MlwS@Q}?l7SVO1$vmY^;?MBDL`4Ow^NiX zWq4C){_9Px>UIEHif;AT@DG}fKn#wWXn9E@xCp)>*bW1lmH=!(*}^U~>;oVBIfM#u z7B$J!!bRQUCBO(^(>QcV3Uo;|zva+nYKe1P%YfiGk03t{4HgHAlJ%Z$a+xmr*+K5H ztuK=~q%beT+$+_$5_>YE8um%`bfipNbm|4xYH9&Ohakl`ZhM{zNX%&;eb7X?i8u@} zT|jLe8)V1(&-jN+Fr5JaF=}ks;nx8A5OzP4$XS<YK3FYtUUv1L02hhX{+UMhEh=M} z0G;AS@i6uVJcLJAVIVmJ6=_cn@bKUe4~hN;3_iri=Z5+CBhE*smh%v3Wtccqf%?Jf zN^}ZdnvUX`fr(8|UH=)*(_x8&f00XET*FAN#)1mTH{fdWD6Rr%g{zP`1>WCsSRs)h z65Pn-&xi#Fj|2QTQwO-KoUNqu9R!{D8;J1I*5|<0;YEJLdN!=T^LT$PInt}H`~p^` zk3VU?0vbgPYi1Gs>EWq0UxG%S@8hbt3kw<Q<r<@rx5DQQu2MT!sNk{3Dv6v_MQ^7n zdiw&@J+w5?VlL=yuAjMIDh{4RXo``l8_033PP$t$?lQ23>PdIEkJ8;$dcXS4R3tSX zZZPP*Os(|GmPPQSUBpC)=D$(!%!5VJmOW7AsN|D=)dB?ry<<Az)V~8(3qZsIzY?IQ zeR>QIAVA|>h}>bBTwXdHEg+fh)W(6rP?3_ej+O=NQfUgRubJ9OQz5NGX#$;JXwfwI zO@Jme_@J(X`j3&Eo7y*xMfwoZ$AMm=mr{Y!XsAdR>u5O4OCe;Y3#psNLHl1s#%VOy zn-0$NMj)euYM79*uv@KeXDQKkw`Tq+vE3=Qb2(2St)3t?$fVUtqXT@v$u*NjeN9br z69r6=2e{!6inyUBkAVz_^pmTZ)`e*1GPOe1qf8`|T26>WY0DNOKPdnr6KKcUFdCmO zv<Zksqig-goY7%O7#TU=68cX=L(`eP4b-L;4fc)sQ1u2b+g;cW_aZk5di*r8g=UO@ zE@8EXHY6Cdel2Od!R!a7Q2_-&3s~|(MMI{~Ple(_&w*ZRUPdWgqg-=8Lo=Rc5hj>Z zKL$~~sl}P0@d2`bfiAmX0-;Q<{?qBs+=*nSSkO%}S58qw;PI&rB7phqGNwOPN{D0^ zfIg}$GVie}T4bQ0-s39_t+fe@QmLzef+7$te$Z%n1gRBaH2NpJ!F14c6k<kn!|@iX zYdJMxO-Nf`BQ;KwN~%9fj8S}(F|11K)Q(3g(L_#dMV&=MosmC9D{c90fQgWKcF5EL zHH`wYBem=T^f;~SblMtYI*s29^$F8u^=ZyaMVZs$Oe<~-S`aTQNAWV<&&y==qUiI$ zdJOycpWx^yeQx1|N)K?8<}2?PBqRMuYpTN09V0lZrt@?KYrVo$X$xPg!BnX7_rQh> zuo&!h=FV0jrKNsJI+OW*44OW}Fe@6}_s=kxc8&^z(>dJ97A}LySf>e6MWb^DgTQ_U z$3UZB1iVDdVFuI5A{hL$ks2MH>w50|(&yU-def$X4%Kj9#EPVzu0!bQIt1Jf*`Dyr zKA#;s(&o|jdj=gwXt~~RHV;7OFZN+%ve~J_Wl`p1)gicTun0>3Fgpl$8=OZ_DAl1$ zz<s?pqAE0vN2tCYm4jiG^Tl9+3g>rK*q<GfUcJUzQOPjkG(txfdS};V>D8kRzUoN~ zhYiuAw7X)4;-raN=yXvrejk<)ZgzY~syBs{HMwA8VUxJ=Bp-Z+pQw7Z8{TeQ{Hn?U ziLg>K(!SA97CO{|CmgJEc|%OCw3cCkjxZlZPKP%X=p$=icc_}Q>U`{K6|MSUca;1# zy5Rdn48k`^PVo!CC8!UokExF;HW6SV-yLk@(vcb!O3)2|QoRq;49X&?|0Hq_0c@Hr zG=s4?jaBv;+#bdR#Fh!ANvs`;<68f5)FFpxO#c~fRdbsKG$rW-;i)#DBk4~!@0aSy ze4&|zMW@4b6pIrkzPUr%!go4Y3W-e4Boz$OfVoUt*93G%LWv4~jb<EWYQ@|@*$z!j z(zJ=(TvjG%f?~QPz+5KpldSEbgH}IKq}TSFPMcsF11W>F<u^n}7vQ1OssyNuGbkbD zk5#q$JLrKFOdOwzwEa$K2u!|a@D1xIi9KH^$*c#Q(77V=;^6VF3Yhk7L$Jop=e@^u zN7ej}mPT6q(J3fsz)*<`=clJBfN>B|LSRT+`D#kY&{{}#*iz_3ta#AJv<D=2V65qk z={<#`5Cz&e$4FZr#*`i2CY?l89T$NkSdWk6i0upxaUeI+mT+=6VgS$}gB=3X$v8cT zmHs`%atRpJgdj*;{y_SgPNvBeP2m_|RmNzL4#)v2S+O*cM9>Q7mk{$oss8)JOu)^X z4pTe8?Lb2;<kP87+9hDQA1xdNkRlv9s_<VI4zj});ZT;jVd3bZ%N--60^ArS7~~M) zf<ZO`3C3y8I@0)Y)sGS2z>|0fO?aJ9z|#X*m7U(ONF?4^BoY;oNQ6kd2A(F5kcYTY z^1x{Ud5Eid3iP!S|4|ng8MLM@E&#2>1}*~8($*(wIVNtB#g$90OImP9)n7&*{O|<= zaKSVP#v&JaG!ZkTt=|}_=0}_#FNK$bt8CVe`)LQk>{xhQ;K2%ZE+^G>5`Gp4lL1=Q z?`t^<OFh0BKpD;L(C=B~hgG~SSt=e?RQCXSfVYM0_%s#lb-G(d^xIddO6Q83yIGP( z+v-(htFuFjr$uo|E&Up6T?<tXVv()Y@V*+7hU##X1@5E4tdzFMIG$#0PVMbn$32QF zM$9a-DxmFQ6+tB{hjSTD?F87muvEwtB}a2E7x!E=A=_tj4P;rl{3Rm>WsZ@+lU&Rl zr-nucBw#~2P)uT%oZ`C>Gl5-3XUTrg&O>NIyhvm%{ij_YtD&rI#-+%JW0x>P^tg0~ zjqD|4kiP@_KOFT?H5w`r09pC$TS~TTr5@gtS<tLi;oYiJLieN|Mx&9cg~l-*-vqCP z3HKqnB*&>;@aNo)RuXC~Wi2MR>u)gfy?3GG1SN_Yh*H4njOM!+liLfk7-d-KX#6N= zv<vrm5F_WwY6xFubhj9O%FrDh-YuMp(BW_$LuZ`28`rs%Wg{A1!3FS%qCP2rWNavw zAfAkP0^;^hs3ZZYIQyrX1&GHXZhg?NY-kv()IhrkWE*;ZNvZ_PFFGd`1$Vl+S0O&5 zk`Aug;@E!vBude7ULw>HEeG7UqV59BrdFq(t_u)_6VaZI7>qb4#4ik5G$Zj`jw>t= z(?D1>yPhPiPfkrEyJot)NjJ0-#K1q%L5?x33s^=?2T?DY57I4moigB-WA~&Hq)8&u z^!$w2G`eS4^sL`>5xY2lPe@(xY6B_LA(+d6%d~$JZH8z!VTIor;DfnPE9xV#Hf{mb zV^J#(IaX7LdcQXksboAO&<~*(=hWU}+7G`SY>O-1Vg~`(;nZIqhVj(2?psiiB#3l; z+<fqlC`^M8Q;?qkb}pX3kYpI58;4RV!LINvQc5%dKtmYhPVp*9zq%J~bf`%yd6c?e zeF$;lUb?y$?WiOjsSMOhHa?0}22wFR6$@hvacT3DFhz$~x`0D48avvM{u2Oz3>70p znznGU*u>DRr28t#(iVOz3q~SJl&xeNYGD^b+;?$(5Q}l6u@;<xoSZ;@41_MR|2SXq z9z|L)4+0$|!0WcrDUS8q6uD$mU?eM4EC)Q`X5$+WelG4`J^~J<R$KyB^NoR1L|iju zJy^LRpPN3Pj06aIpjW<U(?h|-YUNwXG-Vbfkvpx9DBR4BnmV1@*)Y+zOrt_LMd1!~ znMlZaKbSovy#f0Rw{);Qf=iH*eG0!k<oN<}6o;VtB3u^TqWhHbBKZb^9GWL8yWQOM zG+NR8-PZiNhu#Sye->N}&fG+w`3S(aNLy%=gvkKMG`2n&<5Z+eGr&wb?@KoyVI9?v zvZJV)3%p|d6e6jHQ-)h!BoaD5Ed!JzPbyz!X&0_28+70l+ZN706~mYBTyA+`6aZ~O z&lwQC^hK#l<|$zD@sSHy(xt6*OA#ab-Cjf<nm91(O@nCmC{|BecxhcG6%R1coTMG@ zuXA+i1J|thet4o{V3X;#)Z8xBA0rMxQ>dG9Rq+B&V1bFW<pQk^&|xUivm=-yu%AhA z=!9LzE^?Wp-7vQ<;N5NMKf`))AOnHsW7ACrGD2zZ3>lQR)Purkt7n7#XK<Lq<*yUK zTKSAfS1S7{Xu+X_4Z9Zb99;zH3O6<PA&@ZUaz8bvE(Egel<_F&$|;zOOAzEOum(8K zMIDf**ZhK*=NHQ72^?}hV{=GU_(1?XIFHEdffEOH2j)%{CjjkqAfyD0+65oykf6d8 zM;-_j>$e60`Y2H)p#OWK%7NwXH=6NeEm=%m+@X|ATm>!TO#MSvHcF8T2X^B~D_c=* z#M(pH{Xma7qwh7JkhXk-ENqzT=rkIv)bRx<26jYi|8aiZk5+i2nXY%nNn8Fz5<;>- z?yVHEvW>7#kHOJRnujdy1cC@n9t9gYzu_w)YnwJWBqO7aByx%CoN%;w2E0a?RU?ih zM$I8Qm$+^Y(fLH;!c&S<8`FpwuDJfKH81&D%<puN_=3&QJq^1Q7Gn+ZPk-HiYx+m| zr$5=dBd34d|B~q+M=Z@XJ_@qZ)JitB;rxQO&UDioQ@x57HE<NuJp*PFxK+t{5M!cC zh;&3@1n0=oK7j`0_B4_JNL!`rEN#U}Za)`;SL@JW5<l}zG9RM@P3{~qa_5K<XQ`yN zlFgoKa%r=pY!H?<oE`QnWLMKEm!VoTo%V*=ulTCe3&=RPUsYjHJzOe#O)jt2e$|J= z%@oB+PIfx1_VMfxV6~2NhM=eT^Q;3$u{ghi)L{dtBhhT(>tZsF%IKtxtR&j`MbRM* z5e71eU#yr{%pU)}L|W00z;4}(@)$0&Frjc(NHvpzk<R473FL4N)_qeuP9TSJOf)0g z;k0hSY<JUnvU)G<Rc#<gy%$CncWGmp-;2{nIybSV@#9Aq4zCw2;4&LSuC*Ac;a^C% zV+w=N^vV-)mP{C8S8~9;@~N5(C<ACpzL5l&M3>DTq6JX`RK~3;J#{mHTIqPhYZ^K+ z!YI5Gom!oG?xS&v`^ma9!0=Tc?2f`Mh(nd10)Ny%D@e2L4)l%7@AsLzs<5><V(JLg zr;7sJ4-Lqlbq7bGIas6z;)lA0<ITtRQQ_&9?qhQA@yiXk;z>2CC!ouu8`n5Jh+}Bp z`q+g)$CvoQdiOEB@Dww2<-j-fK$oENO>O7Dd-!iN|9y-9?&QC(^WWF_?<@TGW&ZmD z|9y`C{+$0l%YUE2?|}n!_Os{npB=Bd_Ol|Ea;^4&w#bq4<?(f2o~io$__}K><#U!d zu+M#9<X;xue1O;8HU}?;Y4JLih`UUlm++Reo!&gNO#u0{L`x0cy82AXUjA)2i#T^k z(B<P2lrPeP!I7oRukG#o`5pw_cxVrZiy}j~Qw<tUW50H`U}FNVj|A_6xRYx{hpdg^ z`JU;#iOAh|&GI)Id^RcH^Q>~a88@4c^Lri2NXjoD6Z4(xrR_`i;L^#*z2@GH<Jm!1 zkC^4z&Y>02OvfVq;AZ<GlL_1*m^>zo=xN0WJ6-|go(#lJzCTpFZ8)Zkx6|;5plb_W zjnU5L3%VVTBGMLIjNkPI6kCf}EehI#*CS>{-VPfgL){Q1ag9Z4_&dh+Mdkt+7SW86 zcbvmd!#??2Nosi<xy@>AVI@JHQ@8M&-NkVbKwqR4)xnfoier$p`XV!wbXbYX^GBtk zXFn(kl+`U*6e6fk_;+1R?@q<H1q4Ur0FCrHeq3j9(bm<Y+tG`JgIDxLrlY$Zy<n^- zcoNtWLD3zrqe8<z8%$PPtY;2*>NysLpPX;tXZd*i42~6q?XRJhWe5H4B$i@yPaPuh z&4>Y<2Y3az5bkE}+l>bV-9lJI5ma3c_Gl#Z^1(R#EJl++d)_pV7-D%2SKIoAz5-q( ze}nN}K)5j^8_OOcyx~?P#e+-qwqU%>DaWvg&w&cC2rkIa@!`cKn-&pI8I}kDH{6mk zzYEmSl6i2{cV5;MSaUpSRIiWvQp<Nzo%@xBLGkAs&f9d`dFRcxQ0lysc~-E!3Lt=b z`&+;f47WvKpt1Hj#A+3AP9_3FcCE^Id&FX5kS{X!1%7vGNM1^WV){HmiOLtblrwt= zNwTbRdmcl5^eJtp49LPmD8?xOC(BUtZ8-X!^C(JoC8A@NO41WnEYzY$!RmXD-CuW& z3gnMQ_JXTZL-gLBj^aFA#PSu$p>I=N?`^zpvB98p!Y35-G@O^}O<*6Jqs4F~VzGeo zV)~dtiGYE6aSN*cbAU`GKnNu&A>a2N9cUdwcHLDDN6dD50IjgLV2V-Lo}^^m)fP-K z%JSaYmLgDuMNpO_Q*=zH2+I>4)12R<QJtAl&L5GN(UGEe$f%-m<Z0uZcV9pj-m4hU zNxx`Wgw6Go_ZC?kSp$wIznnwgf2jQ64K#+_vTK+A4L-SGg45hv5%Web8ouUp=4%{_ zMaP83?+qZ06O_7ELZ_~U*SlDLhV6wEy8R^1_eB!%736FRtMZ8QTxrq){<2|GbDDGg z=x+^np(b@OYvx0Hz@;$^Lq||lVH;k0&KFq-)UYFnjYZs%B?cJDwX(Y{nD~cP)aU0Z z<_{!-Xl1X_`K0>ifJOXy=bv>3LHLW%J6EXt79lF9u{2#VQ9=z|fS?}`h|l!45bBRb z?tv&Ta_|RBqqRabw{B27Hqr$neF_-@dRs)Dms-QOgzdx&>^)W^V#ds{e>ch}$8b?~ zE;86>`Q&g5c%g8hmp|k&*`CiZ&2W*>%;B~1ejzVg=VN%9>O?x&1maGT1arD>L$Enr zUmnhcIh0|W?e+G#BsrdS)xGb7imAH{Rtn`)u%c-|FRW|KHC5>K`LL4+s_UUb*P!T3 zR%zUU(=_ytIf^kf`SFKM={naSJS*){&g6DFmeDnh!+VKwxKYD2Z5ELvt8S1}@0RUE z9E*Lxu!ACUSc%T_l!DBNxkU`mVw|63k!ryjm_9l-4+;aUX+VGMNsaS2Q3gcdj<SCm z<+=uEq*mQ)zFIMZg__-!x6WE2ZkUi`&G%dc{Cv%pR}pNE6(UZ#6zMcyEkDfGXxNiF z=Mz!pFVHlEH(kz~7I^+V)N~$ix?F@^SJy_IGk<}mW44pb@%K!0wg-A1A@<V{9CS9( zbi^^y@uY@W0?S~yU;+vzIG*qqaOGj&=bM$OvxUNr$0Q%e*7+yCRDTxOdOslh9?LbI z7Dbt^GM)XiD3?#|`ny(rExym(CBsh8RfRLF21Zt@xy#neT1!ONS*;?Y1!!jQMUn!- zJE#r&iGXBX!nVaJV;`Iz_c_x<r&Vm@pGt99zih1~o#bm%5!>44aUKS9iFIif%kNTa zX9LmSF<l`+#aKwIEfm6PZZH4b+<t5G6qh4K+qeSiMZ?12=nP|NqRH*dn5=Q6i4Mv6 zGzpeM8_(}>Sc{1=lcnn#zpZiRPSWh4ZXM&^r14Eh>OSDhbe71hQ6Qc*%2_wu8hs4k z)8xv6<R4<p=QM3)(?ll0??%VP7o5K$1yw%VDUNF#XLeW6)!#Ic-&A}6fO)mf0!>>Q zG#+r9=oD+5VlC@*&eOQgil!DmyVS1QM8OusdY$3~Gwn~KD&(e+`er$)wpt}PQ&s$C zy&P(pNA(8H9Tl@+>g&y4$YUH!@JR*sj(3vjICkexK{=AYRnL08q1+Hr_c~)IIG-j6 z&7Sh#dT+xJ3c!GL47@I(=)wD>bBV?wdB5W<)37hh7b>dhbU<m;UhxD6Wy;rqayyM& zo-txXGj`79Z!1QE`-bC<aoppl2<Xu`!KtrxrjDS8LjUXZ_4Wgp-(V^EHpMJoC)5>E zA<8NYHG*|ctt@t)-@{_M-W=xd51xx^OCeI!wxz(&nl`U3g`}amE#>oSm33ZsO7AIo z;8f<osdc^G%RJpFo>RA3VE&ys+qY+)Jcf@%-wwc%h2P@UBMrsK;`C95VldX?PIu4K zn81Dk;_HpHE5zyviX`wv`#_;>`gRRgwN#ib)jDa{*b*4i$$AdFcdWE)!uBYXHi=gI zSu(DVG(~7B9nv^9wP|c)NYjMW`om2w`4ZQ3q(5_-ZsRpH_}+we_I{hDDP3j3cP2h> z(%@lBX`+JhwS$GWh}yxFq2f=Q(tWHmy>>889)l=FZ2gH*vMRkP%rd`zU!%qr7Kq7x zd^J$?HFkKnt@l$%B@gq0P$qcn=kQSh8=br0&WI6je|cU~tTEb$YQRV>*yPYT((!Q{ z4f$X7*c<7w|JhB|=;#9ud8#t*E9~6%++QINIr#<kSSYd8iDGj)kwMld_%jhk(65@~ z_t`H`m!5H{_haPEa7&^W?|f2H%qlXx*yDKswmcde(2T}m1J1>&_`~=thD05-;PueK z>1@CBOtZQ}?Xr4`0Twhrlkn+<!Rc~Ht9rU~0q*QokHyD58g&YPERC9`2m&ttaQ!|O zu?h5%o@r5c!r9#F&=j%AO5_wd00F%5Adk8=Bn8WQYHebi?NPQwT=-;g|MAw4>8bX? z)s<6rPHymK_4l|g2eTHJXR^ApDI}<+F$8a>zOfpzi|?6qpkf#*K3-H*L>1xsysjd4 zTD+pLSha$=mn#fZ=$DsY-&|n3ht1@~TMIHq93#-1+3of#(}^sE{9f~Z8Sk&P3URF# zmEfh%B<WeY$aJ_C^LZ3Vh?9EyV2cKCo2H6vhT3hvIvpx1DxawT4yZo^wTN;d?5cfW zx*Xb?B20HysZhJ2xn^96s=#xOFO8bk(6}^jkb0ouWc3oteizwIktEgVzHuVkAf~}v zmcXG0>&5=lUR;_spN0qUbWVZiB~)kocgEq5b)ki;CkWPMhy8ErOTSfi3jwt<N|yt| zSU|XgQ^88oNYF2e-{*)Va<Hf&Vh}p)LQcMC=|pVCs6NmF+E#JVEM8aoxvMea6g9Gl z>GpvycTfkF)6DLwZ_?yz3P}anp-p2`F)s&OQ?Cg*c?F&&;1K%Zs{v%*kWHDyHv1m` z>l!ql=*W>=cp57b8ho9lHJIc~<>`esLro<qC>WxO7WFl#4;MjpplUETj<lnyat%fG zNhQs-52V;;+Xss9VF6{xKo_2UI1B)kZsaQ`Od~+?yuv%yky*m;P@$40ivY+5ahE6n z253(M2HYXH6G8>-G7OgZX7$C3zw7V98$q6Kke5>=&}O><rY5FKkgu~?i_hy6Yv_YJ zeVj&`Vv%wL%K1>qAs|J(M5(fR?o@~y=!j#xZCi<oUa|CG+d<>Fw{4HXW?6ZO2kJOq z9-HTjTo3yO_V`*nIL_pAZf*;vZ8hXfXuQpUnEWjk;ZZidce0ruB4+<oG+!u>WFY`o zgMBJ5=9v}VVm(2sBS>c}kQPT%P88+DC^-!$<#Bm!!2}Qu<BP;M_H=$T+z-9qzf(XS z9dmz$#K!_@?5(1?zx)C=miBY$B;v(n)_4w`hargxD#8^MR&uN75R7r8uz^FVW9Hd| zu;Y5$g3khY14jH~ScRcARTPvBNaONg7C}|WR&`MeV0YFDZ4D<+EkG;6_pnk0ss19G zf=+NDO7$O8T;tp%)(r|8i~(cS87o!Nt35i(Kt1d!X+Yd1TeIs!bgzJF1gHdPvu&YL z?g+8F3=Uq^*~mwCRYbR103E*L=<_u`6wD^TNX5pGAZscAa69!1$pgIj97g5K-Y|bh z$f9BKK2>w|LY67m2Yt4LrqGvFwiz#L<ZyV{DuE3~o(x}fD^#xi>}00>5uwiV1c#p7 zuT4@T6d!s?O|$P6&ApX>X45yJ74D5h@`~aKXTk|=E9BgUlb~Up9J;d)U;+qtdjBze z?5X(+tM6SlVE6fK(+Y-%RQyKY!guH7(56&TYw<?e2h{Qeifg=DB`cU7wT-Fb0{azp zrITX{0kr`D(jE3a=|fVUzl(!IGALO+)m~23HhAhF@2z6pH6l{w+2Ku67K<bY6lA6; zD87$Yh1-(m*i@<hnMw0<VN-IL%9$Icf@%7JQ~VFIX|0|LbnTZdoD1k2Gc`0R!b-+? z)_lqbWz(tSraYnkux%CeKTUMr9Xr0D_VOHCN{;6q1w03!<t^{=w+vJ!g7<gfxU!4& zvqVzrFLI@h4>VnR0ecZ0>ut)tO;CI556i#UPQzI}>=Om$U`i6&3i3oJ@}a^u!R!zr zGsSTL81`CZJ;=!BkT0$+I0|``UprTjgLhNR@3z%g`McQ#o=4Cn>1x0R+d=QtK9%Kp z9Agg8GmYnQMVLtqV!mjzc^~>M*6jQO&#ly6X`AktiEn7?R_yo^pf1Pi1NaDKu8wr1 zDWhnn8yn8Ig>p<t)Ty!lFT?}e7>5kp;n9z(O}taiC#$b^@J?GI7Mui}gP=<NPiMV@ zow~#(&c`bT6Kx?)8d#B*Kr*;V*Ek{7-%f51WQ(mK0_+lWY4PR+GJ|<jSd@))xeh0K z*!0r~|2ldErAxqJu#Ev6V`>M-$ZuiI!=)+>Tzq0{st@iVoJkn5sgdf{z^F+>wS%c9 z-uAn|^S$UAj*MXpK}&;A)f5%KulCB)w}}pNSkpr)?2WE0we=COQ~O*h`Symx7;}^A zPU;HoLo!kD=E6ysVl-w~4?DiF;iPTcJPu39(o{Bi!9vGmxtH6>%kb_&7y*+DU~EeO zKnm(jW5<<!W1pRH6>Vc0$1*9^GS49qO%O%Q((@>$yF&H8I;CC+lc<s})Y7v6h02gZ zD(pzGY#!&KL+be)D=0<^g~yHlz+MA{m1!QC=YT*U342;kI^F6y1H74MdlD&SxNYb# zCq@oawp@@!H@5Jf%95uzh#YK+W<ciQosHN7&x(=iFQI>XbKLwnoA%;;)AKOSby-;N z8ZiO5&;0i&f5U<w`0)~f>ZO1CEp)t2wc&}TWa9)FFb_bSCpLwFvD4$56=a*{;{!h% z^-a$b&b9l+Mjo-4T^r6d%~#o5f}l0t;hU&H6^*~j9Fm{%o;<h~fsiK~$N{Sz79_k{ z$4ts}%%oKOVcf%uOs8~Y2LH9<H-O))nYl>WB+nD*U>I%wjTX|4diO|_oYC39D&FV% zKy?1wv!F{;iom`AYH>}ARlw`+A-qC>*0`ph)S`}N8zDzHebJQ4KjPOccVZ#X*nML8 zF0d%Zx`X4u-)Li-(S-eQ8-6)5PCI1)HAe*Dz$_XCjTOsx5FX@oASjh3p7`AsOc;SU zf_>nc46Q^-5_#X$)tpsVM`v#4nP0+H{TeC`SEnwizu={0hYgJ1cvt+srpAmyI4q6M zL_BtmgC2436tOV7caB%$^oxD<Z780Ca5us|2s04`Q501OLw`Z)Z3QEVOO$P1!AZd} z-$D59AeM1V37(Rxp1Zj{DJlqWUy4#Fyy*!*B0s(_{v_O|afo9{n5y`-ZJ}IzyyLKb z9>Y|wp9os)gp3P2s4<t^pCAPzM?2CJUS$6k&h2gE@!iEDd!ius2O^)ET1$kk0eoVB zdB_^fgM*hAf>;d825=_!tpd+8A3~)c1Jj@_?xErWOu^x5fG#}8GZ~doCH^G*(23O8 zO+xARrxaOq)6!lH+fJi^Z(G_F&fJhRoqv};;D7d-+!ofG@41CW_Rz@Z<*_-w$YONt z?}{D79ZDCws;q?VIkdldL8-yr;*Zey5GTJZkwg*ychI4TKM(U+qmuRhBNaKE%3(^x zU=U7a9Pd!Gp}$e*D>DM;D^rWV1i?L%@w5F=;sLkZ$VR6*?V;5QSu`Z{wpe%WW#Skq z9nxd*=gk^hIBd6+IphW@zhKs$r!uMGUr{YEpj1zXRiJZ(e^9A@4l?QnX=JIs3~^_@ z@pUBlYHkgz<Y+PB4KnX{J@iAY-f!_LmtHJ-@dbaJ8zRo1^L(;L?1M=grVp2K6QxAW zjypFScM={w=HguRq&^OQ!^@3b!y9By?MkHX;T6PN@8})9vMbcqG)N{gu8#Io*5!-8 zWBZpV{Mt_iU|F%wpb{><usZ=AppMe0Sc?>_oa5Z^x~^3;XEaMXUkNe|HMwzZGA;h5 zwqAO{^S1~NEs12^9^!y|JK2V`J7MeL==H(o`rH>uW-OeEdfquL3H0R+Wnac=fo+*D z(uhhUIvNrW@~>s(<4F8Vmhz?5vlxV-m#*Ndy#N8|@0xOPN_+SPd?%SG2@RN{J-$xM zT9=b6jdue1Bae_c)#vNSXRJK0V4+kjA!Q75+-u^S``kEc+(|mI&n?=5w3<G*1`n~% zt-~Xz&uzd%)#nbf1p{l1z>dH?fh^K{>w=cVh7O-<Lgm|P52(CR%I*ZGCxcWdYibYR zrTy9iL3QuLn<&^M9A!Yi$XfIT#|L#8B=oiEc;})pYJOp#4e(k}#^+C8ivm}R0%c1O z;L`QAsPHiKw-9IqF9!=FVSMmqBL_?5U}0De777V0ErF%s)d3kVK?^Dgq7pTADGD}3 z{S%z;z4P%wfH}P9NES)X#Q5eSCN2V<byHk)yI>||GM8&W!#Wi^t}i)XRcq5XCL6Ud z@FH51jbjxZ>m7@<7U>A(<QQMIf>{e0fiy>1vvD#$hRYeY$g-OHPUZ(XIxtiamQQg7 zE-v^*X8UubF33TcBj1j?P~Y>U&GZcg`@qA}*1uAu*?<KRjzL^As=GpHRK?o4s!&x& zl&Eq%QHqRs!~KrZhwNun7(JA^m3ACu<|gdu)mIXl<VAk$bd5`m<ABZhA?z>;(&I*9 zrzY&8tsK~FzCpEmvN@V?-3<+dl}8>+`0`DhGIp{tSP^H8s*H`B0O2lPNF+d^CLeA* z`}>pefq`Dc;#=OBjLN1KY&+vy@aVvS8BL2L@4K!AGwo~rha0+V5VGZNeB(o173~yX zqvZ_#<7RwHSzURN3*K_9+RK&G>EYd-GF}dI<<o#5s8-!laKlke?YtL^c;qb8{?VEA z#{$g8-{I;36yD-Zw;=<HV*;C4P@>BA{Mesw{|v5$s*mx#zQB@`1<2{Z#92(Y%Ji^M zqf*%30vdidp{Z`+t^mXU#$F&lgg1ZZ*EGNm5e)A)=>KTDBPB1#v!6SdATRQGbRCV` z0(UFyXPvl*gu6#D^w=Q|^ptjo_K%!KW8c915dgF4Apa-{?CBQe3mimPVo<)R{Y|RF z;v5M$>=GBrUnu@`l)>6mIp&Fud1Qa{w0)K!OE^J=_dY;xGLpbgh%&0+Qy#87!Z9E8 zb>Yj}*rRdQVh<M$3=jFh+_w!FFTN%Iq={%?;G?%6`Mb%}{~nvb4o&I62A!WzwjcR~ zy%T<f<p0PA=-uGR|8gNp4Dx$K(_PRJ!W*#JfZ#9iE0{0g^*qQc-i>QxVvs`&^M+Hp zO(b8Uu-M)sK6#R~_ejO+pO5x)bkd5~8*}oC*t{^76~vBB6>32k51SVPJfM7wm<k)9 z8VI!4Hy0ntcb(PIzBHlkimKV?!@f$7dQtKWT0G+WvOMjaW$@)l4bikrgGt$*9ZDv* z+j>GN8<QU`q9JCFql^`303Kz+LH{RiB7*5Q)dD(o+lZNLI%qy#HA(3#U+FBqPw9@< zY4fofD;*1xQvkhCw>n;nw&1$_Y)>`~lEw!?B@}1TCFcS<i<s{p_8z5yzgzEW^W@6e z)MJ+CBdQD9^ZGc$hGwGE&)RG&?j=Tf`lxuLo`s?_buXVu-fvRI5-mPZ06r27prOxK zla<X|>`^d;$Gt$S%zt`yQFr8HR-^0hzV&?FN7Q}z7vUG}K8sB6Ind>8z2gbdF-~D+ zl-uqz$RSkXxHphR_8yn-;+S@LL$W;493?n9{eMH{7Nz`44#((n`#HL(rU%ThdzJs_ zP1x;ND$zXFz9$;RbgZ*gnTgO4qx%1v_A9^AzU&6=vDhf?SeB(F7l^(92L?Ddz-?L9 zR((4=&9|Q+(yo2;y}@t9fl7@U%i;%R4~cO@Un{PdMAy!qSvj%EiX*Mdvt%41#QEd4 z&#wu!Rl>cn#pj7cGB=DV#VZ9TlM4n_z_jKD7q1Z@+|Yc{68HTCD8=w#IjBPCR$_56 z7B>)V94Ns4>If=Afx)pzEON}(crM~Dm$WOQ1XZNnkyLZXHd+h!L^&cF5phIr#&28j zGx%MLu#+-Jl9odN)yj$T7ZQ&mwm5`tsJPg-TpkgYPOTtJ^}+gPJy`i*07<k4`Cw8^ ztQ(|!o5uMX{c|whyLZui_TGt)RveKhn6Gf<s&_mjI--gk5AhoXZs%(%R0Rrp=;WSA z*Zbk&9pU?3e-H0>(cn0~b0o@lGM#!KyR1I!`fPIeU|lOWx(+!uiT+AD+v)HxRunnb zYlz(Zd#(la<}`giy-EYfyVR}bYa2B90_anlpcVStNH5BIn9TO~)%HP6`Q4XZ^cjD2 z%m#y{jjL>^vvRHdEZ*(%85?>l_-@vN;%(T~uBE4dpI8Jd!jvu?oWirJYD`mM?~ZO8 z)3AeA+uL~O2ZlPI!J3Ea@>(i<tl!=iL?FC0RBM}3Clxi)sATg{3ECgRcyA%Rj_?Y? z3kW|)cm`oJ0!!ZVp(A<ghj@DM^x%08&vSU<EzPaHcz%xO=Xm0R##Y?R-SQ=#Uphr6 zXo44w)B^!ZG!w$T2wx)TWb~b)S-xVQdmCXpGOl3m&jF01r~y(0>N;)re(9{7^`)Qw z#$ozLT)p(-ml${b28`0&e;iacAd0>M{1{aDVIqEP0xYOOmA5q_{xU)*LQ|@GN>^i= zdNDd)LX`W{h;9ikfB7(vJ`J*e#;Lz~M9pm@>H&IS=jYX@YWruzQR%6Np;Sh+K;K3H z6N`|5kc5zokb#hk@HhhK91S|-1(z*Rc;WzT3s$tPcn@HU4o@oA;)(lFTktyNR!sLT zBA()Cz9{smMSqP5&mz1+eFylGss{EW_`uV^b_5TA8|o-|qxd%BLNTtaj(LxJ9Tb(j z{dH)G9C#q`RW*5j@pITk`XUW{O9y{r37eCFc=0pH=9d9?P<2~QalMjJyq=yrb|TaF z-j28M*iLb*yCM#-;B2vt-A=j42&Su-$Dj?!Uf@T4SQFr$pbp9Y<6p~BzAsmRi=f}l z&%s_6>bt*{8#<Lnog4~Y$z|R<a2VPcnzqn36>hh?m2%n3j#Fut{R6cvLaBh#dmfZ8 zVMyI0%U8G+$+V59rc!+qCWK#BKUJEpMZtse<wusIfo6r<F%h3dUub*vP2aU^)htBa zY47#Lx8TgERs4;hQq|c`<6I)PzRz|$?V)^vO-oO~C$~B#VkgFTkBE&`wnvDGa9dNK z@y!cu@VPodsegF@0Lu*l7!MrC+TIR=kd~eq4ayhb^XF~y6f7CzttG1BS3qtYZ~Kl0 zu4O82ENVh-qG{+S7WISq#sllU5wteYrzi}xuQT8u;_)4&Rq5OCD&dav(*PLO1-+CJ zYd!;8;5Kpq!n<rhljwqiyzG)OU{O*)93ISv_*{k)1LshCG;nm$zcvw_Uyujb{Pn=; zsThhp{89L4e{j?nMQE^I&wX87>{zP;0C*c);JIydCYHtVS-|r(j;GQVJxbgn+Cgac z&?^V%A#l@bdnb{L-KNJV@D0JtU&t*Eg;sp)1<%eAbP~#G<(=v;rXd2wkvg;{lDe^i zC}UB#0MUS38WUlw0!h#BQOJ7vfWRJ`2V@h~Zvzox0ytZdh|0<@$hP{9@b#Y)`Y;h1 zZ%&Zijwp^Mu!2Ppv0;|SvL1pdzo29coavm{a3adVytz|9H`|le3G+~KCi=69?gcsd zpu4{bLI0UD3ZG!qBV3L+oFv?o>%E6i-oICXBLjz|fEh$F;ytCU^eF%m77lwhTEU?g zpvccqmgCuQ2mpYqaKU7G)*yk1!brDMdq3{yC|NM$4d}Flb)tKH{-~~Oxin-6JaQ!h zR(<-)3SKJVh-VcWuqA=0a0e=GBHLoTEKq}hio>^budgFD6habmJSPtVv}6vN)pHOD zfTqX?S8x~v`(>LE|4KvwYjrO2;SLjS!)YvRa3P3%2?;sa1et^aVlB`=@W)VnTt&uh zHgiWg{{4vx#WjN>-Ev3Rkg3Y;Dc(0fPiJHEStyL!H@Q(t_iZP^wsNM5U{bc{g`r%v zFI9v4I{q@)#g6NWG%R0(i)~~wmnuagE_?%35jTY6*d~!3RQEaJoC$MXJ(I&PuyhT3 z58u~xeS$A(hIg!Rq-$tH>aTCr(8ZgJY|!=b<gT9ZgD}3B#`Sl^yFLj&w8CN4ICyoc zuYvWcn2E;t^9AO;yBAw<5<kOHDmqFv8`eW%7{F+JPBx!uAijEBV&U%y;ambz>7n%# zJjnOZzYl>3=Cls4tQ=AHM){uE$d-0}gG!*8(Nc#^zTTRTUxVl0X_EzpV}dQ98_F^A zv$IMyax8BA)V1}(5@qdpDZ;T>gX`2?u21lqgf6_3;TGWEbmqMdT(BN%`zw-vAxpNw zEl<ej`+wwMxVknnE*spoPl_DXVKlqGVja_d{832W+8n@^o|g{@pn{umtZ<moKWj!G z-8VuF2spCFl8;Zt09FKg6)_QkUIUBaDA89FdgxWOrc8lO1SL8V#MxjN9aKih>J;zC z{CcM1gJ@bNq}T_-;ajSdp3cAog(YOI$9dS5dn={dE3<0CcG4=?6NjSN{IZ@Lwv(LH zJ(H0m?Q+{aCfi+hPmoP#_o$@?HF6o&Lp-?F1K0@yNYc}bZiaKHgVV^tFkocVsG;^E ze`qN5BlNtE92%<mUHian>FHk~8GpEG+p~ZZ=3VU#z^xnE2M2dOa%!){*|a;!wZJ~> zS%C~d`Vbxj!mJ2#=~v$h8K^8#{9?F2$B+3n3cVsR4J*0hPFYz4_Z)5a+OJKjn1qJ< zT5nuxV-#p=A%cP>`V{X=DA0|_(xrHR_#E92BTmjf26A#7JE4e1;P@9L2}k^MS%l+X z@xVDa;6#X%Cjt|BJUU&Jf*6fuyGYExArd?Iy@LM?iMt31x<Tbfg1&?SJJP75$w2U@ z&@kR#C@>Q2oEP+ZEy0=Cz~MCFv6BuNddLl(xig%iUqEj8y-|W4-)yG0<%Vf2D&To1 zK>8~cr?29EY!Vmod!#lUr%)#6LJvQXQCO&C`~<x_tFDnGLFfaLG=>KL7ZfQXD%Gz- z9AYZfKgc6$FHsHv#o`JnkR#FPM<3GWc_@eAOIs5W*~$Bf=UGD&g6B=<c_ZXWqUz+^ z>Ip`SdXD$``9W_617X(6-K|#7xE|6^8ZXaRQ0AWoM&lu*zbWn7?-X}CE9Z6A`K-8O zTO$RSpors+-C4*5&M^TO^Ec`~hMK{9H260hJ<15<{RHI&O=7u1(6Kl=PJzRmzH3?O zZN@KsIMl#rhC*g<GOIUkMrT+|;z2@Zl@Al02yDBJCi@uwEb>P0q$4v@PEf8sZv;<z zLzJ%U17T9bkFW3*d=r=sPrKu8ss1IjuwRSXFa>Ax-$@Ft47t_}V7^1L2N}?%&)bEo zjr;}{UY+)5;(F`%=yOHn55b)o++X!Ao`;x?CIvaElA$+q@nvq$>w^JBj+GG2WB5n0 zFgeh7thxp7gN3T=jrAA-8F7>})f*d;oI_NWwonxK5clb-Z6(cmbW_R26Ymvc?Uv&A z(YGh#`}j==FMS0v5jJTg+;8NZcoQva<M+`N7QDBjFp1t)9BM-y^A}O+I|#NShlHLJ z!d;GyL5_luB1ak)2<E0G;!*dU*Pwu^A^=Vjwd$dNHH>XG)*?<QXIZm7DG)hyU<IgT zZs!Bkhq1c!&>9#RvL_jd>S{sv5yJEuLH8YmakYZ(AVO@NpxcVD5@8pD`zb+JgWyIP zh1ID02A&k&M!pcN3Jwkm{_3Av{nfmYIik2N(C4WBMxV?N9np(HLBsJI#nkHm$NL-U zGP9pEfUdEx9e`|#2*C&;2%!iXgfR$V2;m4?gb3!!;r{15s4qxCei1gdt;xpQui$6$ zT=0<Jgs_Ey>*=j&LDO-=4xegZms{rt(XJ;E=1oEo<dHr>s-<K1BFE&O2JpQIF0dM@ z;TX7%<2}e$Q5)RQG9B>W&$oUSc?OF(fNcfdVZrMWxU$`e1YOx~ia3l|YnnQwF+C)3 z#l+wSXtp@sSF?;ye#*w}d#H7Ri1$B=SVX(hCKwKM_y84q#o$)P_Sb)FWc}tF*5Cg6 z$T~Zbpx&N)Q>h%%IDZ5{`1-{KmnRAe3>u6dz_~sJ{u#z;Sk}Jj6jR}PzOw{(`S3mT zgy#5@MMxvI-kI<kUe)5RJCExlQSEVx_`eyisyJT{(Vl<noa-8VmiV9=Oxjyv2ViCt z)m0j&`R0~?0}6v~`5UZRsh+u*tI)_$NXbQx2XMiXZi8E--AC1*n7uVdZ~`1NfR3ux zG%>C<Em+yC1xQ1c?N=kKgWtxh5~MYz5rESabpAq%Lfxm==JJyRgVpng&$)T}po|Si z)h+#}6}4SWu31BtXOB|4SnhRh6yZU}yY;85S3y7wnA)_hCNnPqlptF;F&i|pcpg>S z03&pt<4-`VP%U8Ib&0PAN^t^;n=*{|z%H$I#X&YrLSy)XCGszt7Wf`~FllDxz2?*9 z<7&;bWKF9&?m_eEic1JO44%HA$R{*~Uvo8vd(&_i1UWozMuV}n<~TW+YWE>brLxwL zxS}?o-f98mETEj_da9w)v|}r3z3S!Ct|N^Psh71T>qPR~iqL+B(c7JEe*dxbstqS+ z^qTm%hQ19Nd#i+ZyS>4?=!Bi!Mz3(=9ZtM5KHof(Ui{vO-2yz!R?ok;Lv?lnY234m zVmMrbr};7rRou3JhkWM0#jKkiczIou<vW6}t{;|f<!`NHwv5mBm=18ZVWa;G;yc|~ z!P(ppl=gGvdWZp-MQnZ;ZOoG5&(qcdA*P5e3Bxm%T~L%meD73#EcLNai}^jrSL2LU zp`5;KK_7F|N%mw&q%!gCvv~B%)!ow5GnDA=xf^wk5)HoZ@0g~@pwV4q-iv>ZZN6r~ zZ=mdJs1rGIR*5L<W=)gvx_^m(-$51M!F$hXBP&jtRVK>%S@+;=*z0<Q%)|mP+H&aM zCPNwm7~OClUyi9RKva)637rYFk1{&H{Uu#@D`FFiSO~ss!NPO0vpnCtKt!WGX(;%r zhXCPWBnS0pL1bAP<qo2hU;mNgL-EpKKWBFZSu!Es`iAqU7+up)=MHKXgtq}iZ4v+H z@O0JpG=OOG-H`K`Y|q0Oiv~ew^o6YGVA2cVI9ltV@z}ANuK0aL=HoSs>)cd?XjOu= z8{hR;AHx@jL9srV3o3XJF^_<FjMei12VYz)e>4h0l;a=Mb74n?>8RSxnK%oU*hZQr zG0;aUVUAD>9X$(Yyt9&x)8ttE&LDjzN0S1&52ueA#u=pJkyzjzSA;R|^M>JfhL^^l zR#bPzS5tmlQUB>%`=B<beBlVgE1R|8Y&k#Vu<rpU!2#}hE5f^lFlNF}JLU&D7Qu*k zc$nMN!HT+%iE5A+e;?D(3*UwsN64=hpBV(%3U+&N!e;;MQMg0aRfX+N?+|qTr;#Sk zVUePX1i?jg+JOog4F8B@uKjE%-aiGCXE{YnQC-s0LakGLy8I5lP1h>hbbfu1xPuEC z#QCwHuoj2nd-$ssxMC~64sR@E#SakxzWMi63N#0@-Z9q{{qniKxeF_D7w01LJB8(? zg=^#Qo3VQB+CUuv?`<!vu$GstDy*m|D^D$4X_Lzft>uLkg{3xBdN3t>aY{z~eZ%zy zq0oePk&sa?m)h2>D>M|AmzR|r1R(;OuH1|zIXOxWC54=Yi_=CVh2$lf^A;{1&dI(% z?!Lr`u;~W5bme1f3k|k1!<y1Hwlyo)uK8}Ep}276dftsd^&X&lrDZllVQHECc(I{k z{mNB^h9Zo;wrt~?5e-+`)|8bFx4Zvq+f~?B|ATfjsoi>z!?0mZxlLZV)=(suuA;sT zt5&XE%LgF1627+o6=kJ`o7ULwS!tt(!A2+!!FBH}YB!8`+4@3sTvl3920E-R+^}ZV zh`N3n6>eHzxXM<znp0+&itte0A9pXOkBkxhb=JviZEI}B<%KI(gF>smbAA1<r;ESQ z>Xo*Y05>9R<zuB~<?BFz_2p%cm#<uBuoafCTT?ok&T$-{8}g^H6cj8gT?d&$e}FZP z<8#BhE6X33sbWQdzH#>vor>0$VYt%A4eQI+l-jr$AZK;qYK5MeYgUz)Rg@Lk4Ebv+ zh*b+rCPTJgKr_}nR=%?QNs{3(2xTBUh2-{*urNqJAvGH!EX<fOLr4l>S-KL^Eth_$ zv}|MPw*(=r(3Y{X!Zr^gu%Xaewq9P(^OSVKn$p!}8-+|vqm_>r&M(_EPmn7L%dekp z_fE-LJP%h1@13%6aVo~6XEJ~0@O(r^{e`SsIEymIKSS5`hJyxaErJe#?o;1JPhnMA zd3kavpWo{WH>LWel}c{@{r`^wtJajSlGm;*C(IYDET!27wN<tX+Q?8^ND3d50#kY2 z`ZAgxiaxzTT`UIBB!+b>ZRKk=p*$ydiPf-S<yyJ0!mv)Ruo>2_DKtD*Xxmr_1(uUL zFFV(;vUIh<R$ORUvksHNuo|mGX$ACV#SDUlx5qSB8bjmRR<0>E*fy3K3fC6$sXybo zI**}`GMUx~t_J*|P-n_;UkA*+{}2#AsQ(y{p)rO41~4nX4jjOfGMYB1{Wvr*6eb9= zvefY1!tycz&g%_z`E@ivUqf}ie%O@cw3M9dDpr73rH{`LQWs|Areu%cfB^#WcmSA% zne)<8Miip{nzaCRw&9Vfs|{0EFN-xSBn}RxX-N<CITEtcveM~Tj>{{)j#0`;Bb%&* z4*$oE$_t;s;#*-@2?;BN;x*hyNGdW^URbmiE8)Ea&%(t(aq+y26$RPztg{WNE7z>W z3JFVMNZLup(YAc$lXsy0>-ZPrba&$p1D>^bzJRCoe%v>C9v3^N;eG?9<8ZG9PXqGn z@x;v{9sNso>(c~Xp?`21yKs}OuynN`JmJqHLuo`5@%3Q7AQ0QB{%T13^i^f+*2}g+ zN)th+RtQ3@K@bdvCF{w$0LJAYxxm+_*@nBOR@`M+Q^A)!np1pLDl38zLhRS9HWaRY zyl^^1YxUYftY+v>epV1F5NaP3bkF%iFFrj+>jeGL7j7t6{Q<i{{@07L3%th7pPLl8 zNr9UbxJiMV6u3!&n-sW7ftwV#Nr9UbxJiMV6u3!&n-sW7ftwV#Nr9UbxJiMV6u3!& zn-sW7ftwV#Nr9UbxJiMV6u3!&|I;ZzcLUDivRNm-@o=L+mj&qJf+~o<t|<sF;G*xN zPd)h*-L0U%m(D29?Jp|Nx?i284;u=W>RSGM8TDN|PV6u!#b5cYyQXAW{LlaRC+pAi z*Z&jhAA0`7=Wh`{dfxN=BVXTt^>*GO3%Ay@PAorR5LTQhIWg+0D{otO<k;!6gSe|# ztw4qw_QHohz^7C3+=(Z>?Y9|Ex_eQKCtb5h!gCy+T0F<&>G{5(!@uDnyoF~Jp7nT6 z!gDE}_!k=lBc8Y7c@F=QLNuOx@T9v|uj5G<7hk~hyLdi>ClPTQp17bc)Z$6^0_iRk zJ?ZaGygEt&H%h+pUyKm=@2h2B%}GZm|LDJZ;j90Ru3sk%|ECiEx&KD?@RTt8Ul86H z{b&9Qv^Q{S-24$l$Oi7v&jcyxbz2L94|Ajz&pOOyl1Gwd140c#;1AQHnd;NuZHS{A z{`cb%aeTd}nJWR5Y#9;XIwHPpMEv_B;y)M>|KW%@Kodd{Xg<*!rbB<v1zCpT?ZLzG z%bKCM<>%U=xYaEU#f_hj55#MK{Op84-0;?}NlIMYz3<j72^8Oc{=mUoTaGNY7<zyC zAL~so|NGuwtg&=1yE^rwTed8j<h5I#`0;x`S}-=)dH1Wov<&WkF8O@j_^owMy<yp% z^e#R&v2gOHmLrz3*0Y;?YWJnR`NNmzz18rYyt`&O``4eXoc~t$meYg3xZ<t;ZPtSA zA8+{Jz{R`osjvHHa*S@`ZwG#-`(W>$%gNqf|MgP8_iu~7`=diCg$LTcKlY{HJvZrt z9jOt86SZ>P_v8)x(lZ~L|KYEHILkb9=O51JWd8c2Wpnl}GqYd*;9=jgmwLAwnsZ;= z{J_ettL$NX@ot%8@Z{sa{n5asyLLa{zO1{pG-Kb-eqv|}%6@duR2ldR?;Lo?{}rAq zbDx+K_TG;5^fNH`;nn6dOPoI`9dG|)uKP%A;iUH;n)v6g3v)ZADfMZ$roFQF*PqU{ zy!59vYhMk1`+@Iy=f=-@YyNjXdiR;#NB=&z<?7XgE9=K?Jn(NH&b=q&k-uf`+4ani zKHfL?2YYhNa`HR+UH|&(+|!T0`OK`8f4}|rhn|^hoYMOKTW^~0UCF*XcV*tUUDdzO zsT}{86?5PF^d4u(t{*f+UP+#7ocm(WtQYV4q~_&mbE{t2{^47zD^okW^S-s}UqTK{ z$=zu8eZOwb_b<<$^xaic7u?(YO41#UuEeL(ezH@z`kwhz<3pNTfA9I=doQWYt@SDM zL;v(s`GJ!&X2(AfeR#^r`#xQ`?crH3J-w^B;KYkhz4ZKl-1mO*AIAMU`&Y@|{<AK2 z>cS7F-=DA~=XVFcGj;2?#TS}Sw^Uv6wBG*9zc)Ty@cpFSR{Nb%iytg}?5ch1t0B)+ zjr(x=>0cc@+%9&%bc{s!f9$WlbGYkg4`XfU!n!je@A6+UuaS47zoa9$bBOQ>>YPAm zNB9%MO9=mpP>oQGuo&TfglL2igcmT*YY1;497H&a@Hs*d`qClXj&K&?9Ks@m<p|{n z^$5=(Jdf}?LI=W81p3>8_SFdM5gtRxMMy<RLbwkh1|b?jhY*DD32-`%@K-->|6ju8 zPr|xQspW;Z8~Pk#3-}FILHG^D`7PpPehoU)e---(^6^$e4!`Uxyoc1niUq}V<J&3V z1pq7V0NaX$cBR&0ytS^xG6kVaiCN2q6G|&wNnKmG314NPK63a~Ui@peJf(~&2p{v* zV!WMEzGjuMfkwa;)y#^=b2r(bu~qAp;RIY1U%T?L8HJmG#sAgbwZ>LaMB!;^i4Zgu zO@V*`3)KQmoxAhc*X(X@A5cn*MM_(xnilSrUTAwudw~`jBnpwYK#(E|1mz)=kl0v| zhlW>4MM6O;ASr}Og(wPyK&;BcGxzcg@Js*6CU<xC%-K2TJ3Bi&yE)(9(y%n(@PrT* z1<P)kf{r#yHbt_(qy+L-Gkm39H;N7ei6kPqJs!yVtw89e)XDUFCKh|sg6XYpgfgU7 zj<;N9lOt3dY%#?P+0Ond_-7nxD-<W_dEq%B)=tp)s5^Th^JqLu1xAiECru3s&%RA) z0qRpogpLM1oLF8CT$DS)p5Y_BfsilBejt}1G(h?@BH#%L5xOLgf+T8hc2$`d#f54M zfjv|<r1WjS8(qJLNooxPh6$khENClBs-P9J>`u-?sFOVU)znN`UWz1))O$Rd&^fPg zquQ`c$@5973V5^qxjv6K*a2!Dqo0dfW%~~|gw8%%o(tzN{7$pk{=2r&aFpV!kc6h} zAj9Z3$42(p3N$r5x7-)-N`z=(SO)NPZdU`=fuWel^mG{`kR&`P0gLm)GLkb3%R(4I zW5NCVP=AM&_8^ljG@AUs))BY)L2~vlzp4Urx#=<j_siv63O_>L2_|%DP*-pUo<m^! zxaB#NiQFg~WxzTK^+6PVV~`(}pfXelAEfl5(Wn@CVQyIp(g4)@pi~@Ody(gH%|4O; z+XzI#cnEDo;LbP-r{l%=1|H(daaFroT#-tm@`3V|a!VOcmXp(D04<;;w4Kf2Icf(j zT0gE=8WYWQaZX&e_c_o=AGpuL<|EwbiXqeKakib;s^hhF+GcIH)~GdWr?ksjM_qQL zE})lb7di4lq7lkn@OI@U+r|g!lk}PTdi{#tuHV!njLt@s5pDD`VvIN=!Jvj=BpQQ^ zZN^^Xh%v-0GRw`m<`?ExbBDRh+;1K*51Y;AN%ORM*1Tm#iq0ZVBnVa5;w|A90Rfz0 zF<&eeE5xUwQ5+J#h^yj;NVbZs2CLP&Y(?1vZN*Nu(`}FKv){F6+Y9a0_GY`@-fJJV zJ3G%hJ)Pb#hfHu3$8_9Iy3^{McP={Z4ubLZFyM&6ahPBozlLAOg?JLK#XImG{E{mb zVtT^W>gu4ZSH4k>D;JawB%5p`VRSd+d^peL1$->8;q|<MpXYh%5%nk4tCeb%+8pg! zy|><9|5|U-V-3w1X?TnhqslmD{A`4oQRZ&*pm`*S_(eg5DTa!X;!QDDREt@Fb-7q2 z>cmdb%j#!2R<8A-wbH7$c3Bs!n^vrC*rV(*_A>hiyT!g@M>&0+aZa^!!THNU1tB~= zabMgYzXF&nyb7<y$TiwEOqrxKE0H9c^dmYMM=HpCvXrbPb!0nyu;u_cOpcK@(uKZ2 z-E=VZ(Ey!7-=Q<<0$M{?(k--sHqn!`jb5ZzX;;>RX-u$0mcr7Qj|Es2o5tQ_v)F33 zfz`9qES`_xK0cZ6;cYxp?XJG8y45Uov^rN^sjgS+)CTo;^=~y*dqewJ+n^oNp3!6U zf%;%Q-0Ws9GQWk$Tr+I}!whPH^YbU};VM-YDa(`<$~t9}Qm1TDb|{VH3^`9Ok*lPg zTqm(~DD~1}S_Yn1(rP-L&Y-jC_w)p9p=ZGFbT*QevB|8OO=mN}&+pg`7Qvt5U3e6K zo_FWHcppBFm+=6v<kh^DU*gwznA%Z|QoE_W)mSxNb*V{ep<1p@)fQ-LwXNDEEkcji zlc4WU)92}{_0RR~`j7fKxCXi!`Njlejj_jQH<HZ~Ks3c(V&Af3oc>O-Gr_5GPC0V4 zmhX8w;-@jk`FJy~$4&STyx;Y!D_%)cvS>EVqxo?4dT7x@xaQG?bO~*~i>@DwWAO|# z$}qS1U|!0n@|C<6;@`wia2E9PeSNB!Ens?yG_b1?K@v#{Nh28~3wm`P$tMNGLyAZ- zDI)>WhxVg!G@fcy&_tR-(XP<@gS-bks)kt3V@ud4Yz^DQzGOSuK6a2bvliCIeq&eJ Qb%?QyEf{>V{AUsP2MnUKY5)KL literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.mex b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.mex new file mode 100644 index 0000000000000000000000000000000000000000..5d13ba9f2a68f1d03f87a584ed8c394f592884bf GIT binary patch literal 53067 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 Bc$WYG literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.mex4 b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.mex4 new file mode 100644 index 0000000000000000000000000000000000000000..229c075787d9db530a7e46b591749fbc87e046e8 GIT binary patch literal 140703 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 F{}0qUH>&^u literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.mexglx b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.mexglx new file mode 100644 index 0000000000000000000000000000000000000000..8cbdc2ea4aedca3a1f7f89cf8b2af785bc1ee0a9 GIT binary patch literal 26678 zcmeHwe|%KcweOkCAW;V<VyaPdbyQTQ!IU6c#&~-Z;D9Ix5jbkEPGd|45}RL5W)#{? zpdI4%^kgu-g+BY9w)E+1vE@Cuz4VsW*qcB~qK!6So+g-R+K2B=nmq4d^CV!ddEf6o z=S)t9posn4&;8>bJ}2v}z4zIB?X}ikYwf)cd$!1{mOC5{$-119QzEu&mLx3#?0mq; zStNOpGf&Evt`PZFdBTeI#yx{bh9vSuS}D?TuSbOyxGymC(^yQ!9W?HJz<D#@h5H8F zx8e5U&c=NsZeCa6zEwOKe@LHo-HeBua4*1pHST%1c`Y=6^m!9n;1=rvknQox!F?_6 zJlykfe*yPg+}3ry_3-ZmUIRM*>MXQeVW#_1@~;G*Yo=Y7l9!6^FcS=okfd}94wq9h z9?FEki91F5o|yswqZB16E8W74f@_kv&;+R_i5o9=UTl>&G9GYS_=VzOYZAXm;GId_ zcyT<58xPcBUQWq)D7eSMXN!l2lekCV)Ky+iDlx7DN&FIlw<Pg70&h>^mkPWqiDwF& z`pwHJeNMpEBz~E|tv^oba`E^zj1gW=DNAygyj~2Pt=WdCpl%%t;%dN6IsV3cHy_U| zKZx79*qg%^0!aK;vwkLDBAuAn$p`ad{)kzh3(xHRZ6^MEK-SN8c(veW`>!IsWwkLz z=YZe8WTttszBerdkoX@{>i=sK=eT73HM}9FY^VzB8%rtw1rtXxQQtBXKL(udzsd~r zVtbl}01_`Z@iIV`|7Q~?VE#x7zAFX)Sqkp8;e4*Q;jB+8TK47Dh04mMQqhW4_be$~ zRdmnt<?H12Me7TftdfhQqN0tJ)m24xq2k(55zz9g@{m-t0RUO0!P?-)^14v4wrE3b zab*y>8>*2$U20{pvMv~sDubJrhpS3L<<(VumTPO3x{d2MA!F0Zy4B&zU~PGccwSZ= zexxEO9@o_r*VY-2ORFnuDuSDkydoG{Q)@uQ0IONyn%eTJ&<63^(z0T+z`77pHzILq zZLl~LG^$pLk;<Bu7FSeMmq>UoSX)(GQS^9iaSggq8ZHS=CYpHVrscIkkYc=2V>Gsb zNmE}BZmKD+DwTqz8-qm~to|m8n7LKeCFo8#6qLRmtgV)6gEgQIU_(W)B$Q`8ER?=x zCM}fYO`#yGH4~(|P;E(NjZ_2b%1Z=u?+ez}k+&7)kCf!rRp;IYaRjR#E3ZXbQBlz& zwO=hNE-kIab4j=sm;`=oqDX^)1f|8HV&pzjS7!(vNocX8y0&&%RW2C3v0{^?$PY*> zR;^sJv}j@O0-Hje^CRuDWt}<T`D|Hl<H;z&3Jn|1CteQo-<^M_dT7n)hi@`%28UW2 z@^{}WNrt7Hv?qM87X^gQqg+OLIgGDU@|*A0VocMzZ#LmefN5~FubKGk#Np)sK$t5@ zCkVZu2PQggA#4#LjD#1E_1r)l<?{${kfgsR1g};RA`p0x5cPbO5cPb65cTMUsOLWe zvYsCjM?F6yL_NPGL_LQIQO_tK%bg;AGvX9<kobjwd~Yrx0+n0L^u=bnLI@|lfe>^& zMhH5dAOs!XBLp4)4UqNylsM}9C&C4i)JBN*djOf=M;!U@5`xZ!FwRW>A|TV(5Tc!j z3DHgsA==qWh<2U=WceM$QGOTU0`!{@?fk~fKV;_ro)GQKpJTk22PoPhL^~yfXy-A) zg|M@PXy<7_w(~4;w6lj0?fjY$?YwH{A2sv;K!|q!=2GLmWq^F|3Bo+c$xQ#DnZAz@ z<$p_vpyo|8zu(ONKPKJ)1x-U>cj@N<;izr^Bwe2;K2MUiAgD~6k9;V&$Ojbp#F1Zv zcbG4O2Bxn9Ohew6O}xg0VWy+}lP12ygx@#Qe{ACa-Go0k(+`?>hlyXh+GwZHglO`d zF2*jTFJ!_^CagE%RugVB;gcq8GGVg`cbM>L6Fy_YT_$|qgu6|+$AtS#xZi}XAmVxO z)=hXV2qU~6G!i0EA4j<h7D-Ys;7kOo{e&n#NC^HOCj{@~gm`a+5d2LLLLQ@pUy!6R zLe!&b??y*5*Tu=K2fuk}?0!j#z6gB-M`pyI1Bg8)#Thij|5S()FCRkE#6P<D_c`*7 z*Ti#f{4L|-(BK5F=P<~mGG-5T3!K)jjEO_70?#7OKSTQj4#K4}FY#Rh=VRGC;>`k| zOPo{<Z524P${6Ae)d(CNlgbK+KMWjDijHI@J9WM2)bq><-!+`o91Gnj=~1>6TjSEc z%LiSW=r)p~i>2@%qc4IrV8NVd`)DjWf&y#e_u+4}J)<Maiog)*!DxHdA$vP7-e)F) zXZG~xkRE-J<Vv9{qU~d`=qMi7SQWqek*HWy*KB|9t5$u@&CTks8Fg##{)iwt^3eVF zt<&U0w0&G(;?g6TnmpPex09-GFG=r^Tlw^)Jk}w%@To&SKoFBpJ$k{T(wg|V(UoW< z!?7g;T`Vg{rODLxQT>beS=hGL&;pdO<KC%wm^Ik*MUA_r)@bFAYVvXG*{jK2$yYVG z6VLkNu4L}{wmf*&mIsq{YjTgR<!*>om%IFO&z5vu?eweN4eYZncdpUZuC=<{4cN1` z%)2JZCGw!`;YmCrCMPs`A2^!Uu$b?zNKdkPTdQDES+lJ;1ox;%SNE;87sT66&-Ot` ziZwj$w#dymUskkEX)!6JQSFdXwP$Z{wA~y1FfAlxCf%FtA91710Eo%xi@di%SKr(4 z%~vG%22CC5s~mYN(Arn|-atXR$dljOFpF8Tk#zuB(MYS*a6vS3Kr(c!z+QVK!{ynY zuzH&DnR~j`Ub#g&`f!$>woX_4>^*Hidrw<LPur!2%b+TLwSCL%Xrx7INQd(H<(3A6 zuWKjyI-#^rC@qlm4A1s-3`(IZnKoSs`Oi$c@r<PKrDr4=GAyvQWiO%~vSTTN-+Gpp z&d!nj21j(YeLC^S^*|g2{ObPtIbvY#-*QoYprw9BexS4AY7kP^YHM-W4SNah>48p7 z-LK30b+t7|ZpRRbtxB8FI=_E1(yATS)dN~@j@%MkmNtQu1F&O;*66Am8mgr=n#1g0 zZB>iBQ9aGzuO>s?#~y`jdOUkEsD+Kw<bI3+>t*k{Nm1$HegAwH@LydBJssaI{rSh? zd@@n)U9%3<z%I1FF6;+v1#C~+30)op-U+-5@c7#J!+3wVkhWUhhm_v6>vZ`59$HXj zKVU0hJ770p4`4rFN)@waQ&kFd5<6-T9t%GG;8%*Yk-#Cihi2i&=@oQ2OINbBgL+`T zXYUbRcIO}=oL+#=>vD##6AwLFXIuOlN1LW5blIz`S#75rZGXDP_d6#ZPdj|wnha9s z`MPy=ktUD%UeVN1UFr3AMx3IS9=|*qxj<J(HMIwIf}*y;B#TEN3~=*uO8H@nn+M=< zCWaKONp#3@a06hFKvy#S%3$Pr?E_tn>&jrv^@gsFXs&M;qFzlI)D^cwiTmZj`gc0y ze!igv1{>e<#4b$Z%Y(W)?o<|N>Tyl!Y&`0T{Rkyu|HN|OAb77U{Z2W<sm?9zdry<& zc@ug#OH;cvr8PgC*z#pvj-&T_;CO-KeP_U}$?clj?LQe=2zul=v@ApG)zlU|xOJsv zsiqzPb-L@@x^iH^)u}6){q9pM-fr`stnY>d^)MJ0N5u_4fedwJ@jy2C-v#-?>1k?z zW2>hr2tJUN%5hIjKSwf`i+Dwl3OYe;lFqBy0cC`Q>aOqTYUY5ex8HqwsX@~pbw$vm z2%3Ha-O*LhbWm5ipt72RdXUoVKjLW$3$n%pS-U_M`+v^-OCjo3Bfk2}^G{dC{GFbr zM@XyOsmX(6=*fQtruO*NK~L;8*i+K2j63B8qJN!@FMDEthYmIC%5lMfL8mge0Lq}6 z%Aj;<vQUN<LIbG`OB^St3~IZkP#L^JOGb3}x3per!ctuZpO5sr#|$<PVeC`%s$lc4 zpmMqlHh0pZDXl^``=OgnUl(-u`sL%12JrWj==qXC4~U_}En=<|sn9`F+DjpBgN%Qf zBJG1`mv;R&GLi}yqXLRS0<N8HklbyJCk~YqQD2*6P4l_%=EZ4wqswFdgPx{3vPZ?B z>e19e|0|xRg$Rpvc@%@+6Pq#paR0C9Kx{u&56+<<4+&bQ8SH-neSQAi$NML-d!^N% zf3xxaG`L6mOJn&lda&N$Uy24SKq}48`Ps=m)AG$6=Z_lWoNh)Q^mlujKEzO`|5Zlr z6`nh<)#d_)|63*eUj_^_{oh>S{}$!Q8G3jD+#biJ@PEB_|Cgn!8I%4mW77Y5>Hp?W z`oDg||DhI)Vaxx)r!w3>H~;sgY5d>fv--cq!v8I@{9j(H>H1E>%F%up&TpPDFkN(h z&vF=qF@u2xJnn?4cO7;r*#(BF3&5SiJ+<ct5?e|cZ-wJ<u_(CQ(d$$eX<-=D9{)R$ z+b8v}uN9JAtRX1l!y-N0S_o$-JmAmuup9A9zx$&V{jTnT>~8-%^{?tmryl6h;BEqm zh93^}!YINkYT@IJA9$Kd#PII-tFSwbBveV)!*nsuFbHjPsvtB>n+!r#i_nz@l^_v> zCP}=(@`qu1zQuj5y6bxg^k@nDU7fJJg`no0Db)PZMh$e%|AwdO8zjgygx@<?&i(DQ z1l>k{%JI*{uOCmLaEug+0RaD`48n^wT}*Qr?)8UZ4hQJy&QyTEH@gAXqQcK*Ljm$8 zD1S0FDgB2G|9lqtFEHh=b)u^jdmp9VYLj~F6sf;Ch0ib8dO@jIC8Zwu1|<$76NaY& zWo@JkG}y(xd|K{aXV8mYgh!^A_5Yee!>?^L2wB%RT5{e223h)zf%5TuT0bo{pN&6z zrqCv&Ec_lKvT!d1?LXmZx}JhoM@2;Q5d>}eUknz+HQ{-TYr<WOYs7e0F^pij2c2Os z^&pw52&OU?6@z`F&3|*e7dVb_yd!`@)bwvV-alUYtET1mJWF2ihvz=t_fO&TS;zaw zD?ngcg8WH-ex~vM+!PA!<6RGrnwpR<A|Ont%o!gY-fnZwXY+U2m_@<gMHYDWs$NaO ztZY0Q@j623dcf=JLjop&Tq}%ZJ3^SXW&1eoo3AVLa^$&rZ^f25U{|ugfASRC!TL?! zQ5N*<Y<=<&Yr%sSh(8H;ia0nM&W1C`!<aU<edOTdAzdzL`_Qo_eide@aMZ@^?-FCe z_X9XQQ+~eiT;Dss@O)ojv92Wi%6v>91M{^2NI{6VnA6F{m}Yj!V;G~7_F;Yij)I%% z=KHa`C-lf%XJ8R#dRm|-KN9!EzJrpORp)*1sH6w7F!SwP6I(HX3AA@Droi{=flSQP z2PckV_&X!>Fa^wm9m~dSUyER{wdbqjTW-S)(|3gSJCN;oT?@4MyCYe`zXZ|;Tz^Kj z%lqAj3NXj(t{-u{2A_ww8jd1n)zv%1T&i7XWn(0$sT$@E1Wl5Ir&MCle10V1iG9d! zegrA#ficI4r6zHj(yIjoWnU1K*~rS&KaQj~rXwj)|Lo9r(GL1Ig)D6>M@|%c45RdL z;!IxMZt%*Cw?8w#=6jkp(mg<!kag2lP<AZ<|1btQ3-RtV#0!xc48@8M^bS;KL%f*~ z@8HDiT6j!LK)3~%B$<N6bS^L&*{Houu?H48m65*pJbS}#(IKdgrgTyApMk$vsX{Gd zXr})AkUjz<A^kN;>C0Jb9+hmemoq^%6w#9XqYUBDQDvT%aGWCTl)FLrHw^otA><ju zDwW&n0=jJwA6qmtua!Oc%gDpl8Qtnk!qXH$XNC?^cMN$$f3z`64u<xevn)12|Ii;b z!TuOh>3a`yvHFuHM8ht9(NHn&&z!G*P1hf&+8yZ61V*hq;*%k{#hw`VaInAyZF3yU z32-e-3v>&``@W%g=&h1<FIN8x46_pO!o*}ll9|xI!HFXnxUkhwJ`CQZf|*KajA58M zSQjIHIp6-+?F+|?Z6Jd%(3mO)OUW)`|Kw5aAlw30Gy3%~)}+Q99~FXP%i1LE;Aa>O zNdgn~&kXGZ>qLL2l4%*7R9ZowO)W?lmPt+X99uN07k>%z?Dl4{r^x|(V|S>~QJYWA z#PS_|>O3$n%k-&Zj*!y_f&+KJZABwl^ssW4?~uSU=_&J$K6x<jWo7}<!<kRE!GU18 z2s<Y5m2d@)!<@j%s4<QNxKR4fx$vJka<;j!?ZsjteCnF`D{!7khnitH)EDSb#rmc% zoK1f^*B4lzE2Dm8F8%3TEr8k+et7}?Db__3Hh&6-8Bg)2*-p4%%rNLrM?7LZ2y%lz zbs#Q>vUi#OG|M!&?xa73FLFk_d94Gk-(fsV3XOyKR`AY;(UEC5)Hfnm3jdnXhnWLB z>Z0ZSu0sRahYI{})DJnZOeS1vH{u~Ip+X@sJVA_D526w|Fh580UH2Ns2i(L6bQ>d3 zsQRekOF0^4#Pr_053mXfqO`H4SmF*~6|a|6Elj2Aa`f?INqT(>Nu!o8wcA5S9u`gv z@^a)+cvKOF*eEop0;`P0SrCln!%@Z`hK2A8ssw+M?7GT`KR%wg-%lZKuBYj%unoeO zA`ZDm_)-MS@TJ*8v@cEiQo&IAQW`ggNV41TPV}WGKx!d&Z>&)WUz&)7NFO5}uy>5? zJ?O+Fggl1+z@{%2hP;zp{%rl}q+_LdPSihT`68&oQq%02lv{S$#%4<q0#tA@KImR$ zulBxUYzex9Z3|5mec5EqClsm+#fQb*P7P}y$JrAO2s-yp#~8Z<7YkK3<Z&MInXW&h zo+f^yF!XanB5<l^w+sb3XQ5P2FOeyoaLS|X#iCTzzXIz=pP>9ls9!evzhlV*swRVe z`cn0{Pld1+cw!#0K06=U=IF}_Bs47I(wD-f(3g^bQ|yZ6Q4uGB{}{_|BbrNg30ep( z!zNGy`RtOVk0LZa@BY~B3&+c(eW8;#^~ydZEWNstzEnwQzw_)3K->GlzbWGZlwvC- z(=mo=1!%|kCg1Ncw8z+wnly*!F}_FZpBmyKmBmHc9Fk1GO0$!yHDsI!9~T>jT4?$2 z(3?VI>SHQKz97(yPtHTXll+8I6oa3_{w(k`oxn=1-M3o%lWwffV#r0(^WMTnto{T) zx>|F;^{EMV4KLK6;0IX4Rn5`E=}V&@&V1}m6wG_;{xWI(<i;%Zsqw8awtYv-ZbSO; zMcM~^UT!PH`dtH}fu&_D?HQ=_AWN^Z5=m*?+Db(XfIU>z4L`%RRJd;?8!<peL3Awb z@r$A#I=0M+emFtbhnZqdhpP=zkvf*O@rx*_fV0Hm&yhZne=%0z2D00j{Qn-zYyAp0 zYppmVTdY-Q>JfMBPOSH2dG<!INH^Zty2aBWkF&PM)`$zs*5i#w8)n|cAZ~b8<I%{> zCE_tH?<krWi(GBlvv78Y>o8yISa#SXW~_cF?`5sqe=4G4qqOahPVVD|-LdT1j>E8z zjji>IP{RW46|5}zk40|6G5}(k7?zFY(Z-kSXXPvI2$q*H5q@JJYe}><y)a)*)W56s zLHYfs>i4rtVguUhQ-$agLVT=8bjYKm25azQJt9+TaNUWoln@+A4Rd1mVr$3k*?SP{ z62ljhUmY^P20=icc^9IkXe3kGlG!1TFpWrLCIkXzAP4VX$X#36eb?|TqLE7t6pTTA zajQPD&n(`(6lD=^Iq`SQf$(bhQto%S@6x)tf^iT_{#e%#HC=&aPnBgIZP*hKv=0tn zN%}ys)(t~tz2VvW3RY<_5tGLwSJ6MJ;6LX};Qv8`|H!J3M<ZUz)A$<F^+?=|#&RMU zo#TEC(AYYs886dUV{!z=3ye4tj?<ix$SwFD!hbmOIO^BN8Yd!YCowBbXs3N`0y&0Z z?(5z>%gWQ*a*%th@hucY-l(s8Q`Qs|(Uy`ObF~d;V!uul!xt5Zz_T5lF&FlQ(+8xb z{jL+s2eR_RE%i<Kz(J4fheL+;a0BK64Dq2K!PJAEXe2I0oF@?}L`KBJh>l*#<6305 z78%o(xKG~ggO62r`_(be_N#;e6)RE79z<k5d5?}bSKZ^l4r#j&-zFe(rAu~eZ)?f{ zEwV2sjG5X2pS&+W+}`j&vvx{!xzC~-p`Fs7ni$Jugwpsj`roG|8b2Vz9G!Qg)2p## zD;A)$`(14?)>yj95AWIX0v1I5%1G#|)RRyUi?E=>86H7i!~LnXv&o*+#B*-4XR^ry zdSoBg4|I9Azs>Vh8Vx75Jk_{o8~-;3716Wpb}}rIa2(aZ%-z0jr;H$m``_EW%%Rk< zsJF+b8hixv1S`AnX@gJhqJKX-KU>Mq(}oHq`FW7rE-8sIcZRNx!RSDrlKkwx8wvw{ zz9Qnm?tUnaoQ+)<gP-bgziQ(rX5*9mOsU<0COglg$<EX!1wU2t3H!!^pGnJPd>3=B zc4_t$yEOAt*`(Q)O`2oOe`%QTg&*ydWtdRmq*1yg)hJyuy-B)kI+JvHv#>{&F+x?s z_MNjmdOy`3QRy0-Irz>+9{0;IOpn7bHBN+`@K4xqg>}kNV7p<(9V?*{Xwa#;5$@ol zEO{SCc<c#O+4ypJ#;>5Bk|kAPpwO>acA79ZZ)vZH(P>zxg3TPChqTj(sB8x96Ut-W zkzI)Bkm@J*_q*N)zFZ8h1J*|tLLri7>sFerpTKOL#b(8|$n&&W>bMUdJE_m>^7CZD z_PHEr@R+bk>TZ}b*fNYe%p(x^I*xKkj$qH!^1oPS7ktrP(;|Cdw}t)M<CFL2ho_7; ze3Bx}5|qE!Vv}Yj#<HgyZ(umb+c9)lXg(Pr`n!9}3&L(as)u{92(UUoyu0BmCOxTD zbFfX0?@!fUx2-*Xorms`x6i{RJT(KnH4N5r!(hRZ(PnY)+zp$>Z^_KE20u;1wcAH# zf~EKfsl|cybT}))&rTaZ`KH_8r!4rX!rp<OEq425<7ZcDr_YU__(JOpe!@|HGC$kT zuf29#d(-hVX}rXG6k}#Y%-nDfWMJJ}m=tVcV3%Rd+I!dCcYpkf5Ah*;FrL?Hi(!o~ z#1V)wj#abFV63sVVWu8%-;HG=1eNaCmnSfvaSzXcKgUK;&4d<C81biw#mx9Kaklsq z0|QjS26^_Luwttb^V13uJt<go_a_h@A%4Qtu*1~>(}4J>!;DW8^+QH@w1vq=(5t=a z5086dzkvBcjKn5jXF46Hb<8SdjH^z6Tci+CUgJbP;vRf?ccGTZk=?^sD{OqLJ|jQi zu19p}=3?4#8onD)5%17ch{)!ZLPR!7ydJw*d-MqQk;eUhu77&yPBf<V`nus=x9xx$ zYwu{?!s+#D5riV+zA)mDaXoy1q;0>Fq?u~m<5PRA{lL*2Igu}qc(!p{itbkiGda`| zFNfVeEJd}5_^2J9z5Bu~zA*l_=PNy)?M}8ijdMJnniyLI`+)g?@W+<o3xB+FfOZgC za@=x`iF~DH%L_w40WpIADFls!NrEP9CTo#)e0b_pTYPGlPi^<NHH4aD>n37fo6yvK zT6jMa?n@<w_GB<MaeDe_zbx_wr;ztkUD>Y(_94#nw{3~>gSiO4z#P{D2mHr8PrZOu ztf4*N4e1v$G1v)#AkG}~K_L$KWk}>nnw~IwWON2|8?z^eJ=^bRCW7few@>Yc+$<@H zuP;-WVo7NX^1*hD4;wp5_u1vsKW+c5cqu6#_Wy2+0dQDGyz~k3q3JW_(~7CS5Kb!u z@paQao{M}Y{fimw3;9e-pG98p6!KE#(+bIG>KKLda|lNd3xR?25X526Q=5>MG+wYN zuwUOC;a9s;riH?`q)ZFBoGvxk!>^HHL`!1&XG{q(&oHKhlM$3TB}5M1HAAhthA%b7 zBNL~_U&mSFaZqDSC{yCE!QnIFuR&4AH1Sveuo-`)&IkL?bw0QV7SNmw>JfatVN3>3 zr$be_IUm<{mcp@WM@~K~U}G6DXN=D$pXIX_<6KOOaV62{Z{vig={=}=egxL@T`?dS zr9q20n-oi+Pity3#1#7h4Ok;z#bnYk<~ZdP^>Yidv4W|MtX$v8XM}h=xvvRJx>GdV z_|RmD7@r-zT5J`d*0^5$y_5M|euCj$qBSlfDtZ%hopKzDxq7vo1)?B#<Y2OIgvpLv zt2YwWck=H5%qt?D#K4t9|C83sSU(eQH6E?MIQkOnlp+@oUmtymtx5G)B7HU*^>xSG zi-*0!-U*_HGm&$V){Q~WoD1|AJA?U3%-yNQ7ULQD7m7DGUp$->eTjXL>aRnpN2EG1 z4(UOLZ`MU`1@_ADHO*`>2eM)}Z|9WSZ7@tE91#vj7Y+2!eShEz4llX47m*|8p9c}V zEuV;yy%U0+6M}X4&uAir%$#Us$0lOz=|m&>6%`ChUz#6&+SBw~TE;g`AuEX4-HsEW z6zkl|)0*7uf6WtP7|xHj8mTng+f=)Kksf|X*P}Itn5K03lx~m<QyFs|p<o(on2tCM zmbDXK**Ebp0*J>G`yY7FPUom2o4~9QtU06)UlxsYOZ6Gx1I8hehG*+a_wZG~Gs*9f znA-_H4||gFTo+JB9~h4!$y)wO)N(nwDQXcOd-!UuuXYd5LGs0DH0HtzPxdgveTHg| zUdy8=S&PtRVxqUT-!X8-&~B;>)=Q>Rd%0-m5=>=slpa)j8J>JchCN_MjxvIT8QKv% z=sU?8pop8q(#r5nCjHRVY@{2y;^-W{BIdeS$hvL#YU&&Es1GsMMM6am4yXJ2#1j_R z5PbB{Ju#3q;5vad^(k5)L=hE?H)XqxhE;i5k2H%Vf^jSnG+i?edH2I+L?g$=VhdKQ z%;gt7G6M6VMYf6=%yFNx6>IXkyj9F#UKC0ICB+P8n@`z>Ac~U|pl|bo-5pw_DJL99 z_~cV|_>?C9VJvz~6NgO3xt1UK<aL2|%aLGRV4E>d@oc+X(8HyU&=$~wi30QybA;F; z2TFOipQP;e--y4{#zU>C#GS+XL~H-t<oX2Y7}~)m7>^>J#Nt;Rsxw><eStsKPG~zf zLHwLr@2tlI+^w40B;%fz)Woy;RV<wzguLZ!ek==%mffANY}@iP{aLo7|ALL^@;3kB zEn9VEhaPDXBHzkYp?jeQ^go_$$GNwHZ&vZ;?6y0|z{rTPDzueTCd{A2s?cv(irXbv z724)gw~7D10m*OU0^5E~c?L64ia)u=W(waY@9@b@`Qc}#7yW@Vy86kYKQNW$Vv1U6 ztZ;FOjbu2(_|FpCrf+iJc{I6iYLmJum`PRN$|WHu_&oHC!8<HFilO2blYN-?tzv<) zfw}zOGzl;a3vQU3V)}`ZB9l>AxHg9f!oe?zqG0uIu-d7{F|ahO8j!i8VqhsxLJa1> zQlG@AdO-UiwNuoiJ*kO8pD{H%W4$dM^M6Z`_K1(1yE&|WO5S?5Jp-M_7b$)v?rCi1 zbC}euhF(vv)DH;zc;@=wt~2Q2e8Zy09?#nJde_J4wdbkLRB<pw-iog%sMtNUZ%O$W z+<&SWiOI;ZS;ha)dAF}MI%4gS1d@9s{E+!9dnB`rJ(4Ul9y%J~x*Il4W{UMVY?plC ze>-xyn1|BNU><r>%tM#^-!}J2`Xb@UeG=@;Eb=%ypexuXS?}+StTFaU-jA$69ewY` zTpgG$W2Xe065uEHORnR7$zSm!gviJMzKXvFe|nF+Gr0BmjIitNL&Irr4=;(zBgQTY z_U|=#gE4<!{SHoo!^;GHb5XGo?_kR6dVliugLwT<B=vs}^uB#Ul*PoJ^QzvL2eRL1 zPGUH1pm(6x#z+3&{`n&K&M>FfR2ZxQaPxy-iHe|`+fP_O#6Ha!LuBy*CN=*R&)#nS zR|@PYU=<A05j7D#h5s;aE{jG_O+;LU$VD{{5r6v*3Wi@s`-;Sg2z+6dAq25qm5={6 zaZNHFz<NNNAqR8w4B7Qq#n4{I1EN&qX&q>m(akYLHy{HGZfe}$5qS*b$#g|nnbeN? z4qJO3Sa`yIh?%Dy&OvT+#c^EhhuBdE266UqCh4`7;Bqk0M~neSZmb#<_Pb86z^XxH zg!>^Qh_OhW_)loUuw9QiJ^OXlz>GE6P((<8Z`&!7HY|y-NB?)AmwXQ0pmT}Qjc5@a z$g-6_#nPu%_&e$o1HJq(i`8M=@q6yxPJDXGS`vMy^IH4fW7g-4{aWfrO8(oYn17j> zFWx_aShIi?{EJO7FfU7<jWF{v5FL$Uls;(vS5p3WQk+AOd0(>7A93hM>>m>-6n&9@ zCqi!hg6QG#iSFo^Cc>i+ekIzTc?f&3wlf#@;uZb7cR+}Gw19u-Xc_U>UqUlHHNpJ< zs*~qVY(??r_=?{kUmP)E9WKOEhQ1cA4c2*!L*9yDab3u}&|6%)u`U;Ne%!TEDO@45 zq_;ARmmUdvi@jCVRX5j(vzol6;`Ao(hKg#`TPaRjnp)%Xm8;gvYo}E3X<nC>msjAp zrrW&_-cahjp)@exyRx!)V=##u2eExj2h8?M%PWIbJTR%wTY=65YrUbe;wrDvyUEO4 zNnW->UN?o@VlPf#!m(0Q`(-t`ZoRxFrT8cE#Cn%->iZ?tRiWbYDsSlVYHzS22%1Bm zAR+PoW5pF=h}M$OMsfO;*+m{XH9hHqjCJb^*RKBz9Y}fqQ+L34-`;_W@*vbK^ms5> z<<0ZrbS;P~=q;z%y>>|%TwJ&Qo~iu*RNN>3?eBkT@{RY;M!w0Mvvy%=aaC1y$SV#R z!}(lZjL&d|HI9t_r533QmIUkSifcD}L&3_L>RLWwEaC{WlJeS;FqGSP&-%M^HHP16 z9QStr+QK!rdzTlNR|LV)>d8h~4-}xbc=NT^OE#E1f()mI@qn<&Gs=>OmDvt569=1# zL(WQ}$v0cap4sY4eZ;|V)fnD4-B5Rvx4aIfB_zaMg;VCd)f-@Jz}xatFArF|86&o| zB3OIvMUvNhPYsWjgE^~(F_7kar5oxb8iQB!w`};qt`Gi3DO|s*aEW)3moyZI%6Z0I zXQ|P8FaA4yZ=NK*4tU2xN$LW81}63pV8$&tBMNZ$7jY&iU@6jH0GwNhv#J1}UnNNo zz(Mh%1-C=%yhWzX!Kq`{;a-S)3GTJHAHiLV`&+pG9`|&Y1BpDp%niu%C0VQhC$TWZ z;+$&+Zk~II4_L){nCvspMY|X<12@*Bq%QOmNz$FTGjU&n`*Peozmm^9_i_$k1}eQ2 z5U2$AB`(a6t9foFzC5aC9SA6^d2S}UT20#EwyO8cG|Gy<E0!+3-8*l^YSrgmnCrha z_ZDxS-|x>`aLWSkJe*fo3o}++7xYQee-!+Su!q9pMPV$+%Uu9H76SbDoF?VgZLSOz zKLQx4HDH<bR90M9CgqlHu0jz5hH9nUjaA{?$IK%R?MPASl)NGog@)ydGY!R)IMz@+ zZLAI%nKc!75a(IuibtccINCC|w%T~X_!}%U&bO3uOG4GPbs)z8qAHMBT!}*~b8%!M z3RG9pJ4?B+SU6JboG%<PCdM$w7RNL15M)W57som8YjJZ-Go9z&@_rbDo8y~j>#_{T zI|i0WV>#Ld-b;y?7uAFp)r4c1SscH-EAVU;CFK1j+}7Bq9pKFqx7aT8*)A^yH*Evc zXdifc@yv2;(<=86o_X#I%hjL^?*~wbIBgrtAxYYR+bYL%czJUU&T{OhRj$TXj_338 zo@bV$t+UE)ww0sZ<9(-D4v)!l-@-HLr9Gv+<xO5$m(`CakzkeMIlsJjS%m;uj&}^V zRc;qLDDFZeniu=R>$|wEa<uQfvqg^a$7+|~{jwbS@G#2oc0<P2<uxCE1jusae?=+o z^*Afg%p<Vs<36TU?f}XiKshVVUhW@k<yug#1?4Cw>$2WCfCQ_)c9d&BOF5ozYn7va z>O#3?R%L*!k9Rw6%7Xn6=X0yZ+1$i=u?*>W)r3rM4dO<*EIeBm%kesjo9$W`%US0f zGtJ6-3(uBYV}9QKlC<A?$yV+XJX^Fd`(2d#10T%Gs*jK|v#xmo$QTW9{NokT59$JS z-d<l>Db6CbC0O;L*csOjGvz<d$EH-Equ?Dcr-*K#OG%tjju96TI?YpKt$6Kx&c|jw z*5woy*}_;qPdT5woRGR*jxL;c4f7#vgHdXh&<pF0>GE$xCdV}|2Q1>}0j>Ty5XI3( z*Vyux0jKTZl?F@uw}2e)yc~!ED*@AI3smH9!Xw8K$B+ZjAnl^pmcJeN12&v?iC=~D zB0aP#7XKaKKlR+Yto{tHwo+zEzrdq~lfK^pZ%x)WM`C-Kuywqc&-Nzi&yae7Tk$;m z|L&ChOF+})WwlQmYh1IWKU<H0RzA=BHm+IHxb+BV<u_+qiL)erYhqni{?_ZPlv&d3 zY4Sy^CW_3GE<--~R{)&+^G;Kq=b0PVEa_(C??-u;S^iew58aKZ8j$?q`Q@COWWneV z=VxS=emkIV_W-y0Py9aMobxoILYC+M_+kGhV0?+!0_U9Pi<n>#-wd2{qyJ=<{}yoT z{QERSD*SeYbEXzE|2x2Y5S)A&HjnTB2srt3uZjNyaL&Ps(I4h>i;Z(FR3Y%+0w=$y zSImDMIQ5ek>3;`!Gn6c0(mM*=>R*~PTRIJ#bGsub&-eMiRPFCy06x(V@nU`1z<X`= zUkjWU#}(&Fx0pE7Xt(b$@di9!hdW^6`FLh|5f}mTV)<{Ry#Fm5&hzh|u;DEK9TNvT z#hh)oiT@t`VEw-~@fJK^hkF3H{rvm5nU5^dej)`wW#U%-vrV4^5sUi0!0qSX&o}d} z@&z^@MS545_%ZYS`&06ZQ}9X?FEh(;Ny&dA1^+K8_>WWYpWARR>TI*&qz~t|mxmbh z=axttOG*|Nab19GA-PgXZKy63-mn2VHMzIoO!Q^z?^#>4YUR51I0&D`DsX0cY3?HA zlvWpQtf+njhsTSVK~Zsd6H?_ni<Yk~ROF&1@`{zK@e<o9Dh*dwZkDPac@&4d=jP=} z#>x3cDv2=*Y^bg+2^NK_i_8Prm)aV)Hz;N#W`m-Pym}cA>Nlvh5Q7c_GtY7_k$BKO zI)}xr$EqtH3*wQ>DRm|++E86x$0PO4`4*C`nU{6md~y+J@<#-WW8}@F?2`xH+mF;Y z&#+If4jDfwkX$uNzGEJepTx}*_$Lp|pIma9dd$B4@cQK2f&#Nj<L3*+a+G!6{q(<m zz=bX2eEfof$@A`$zZfv>4;|P`8pre7Q^fBUth0WO0KZ|dS{$a&A3rdDl>mZE9@0PM zMX?xYPdUraFW8Gfc-HR$O#WcP$~y7G2+5xXu)kpZpn*LFRV06}!TQaBDfz|^BJd{= srX)}KC5GhhI*8wZm{N|v<G|l<nD&<$R@P1P(+?@XNC5&Te?;Q{0|>c^XaE2J literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.mexlx b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.mexlx new file mode 100644 index 0000000000000000000000000000000000000000..44b81a24c10002db7aca4e975c519dd10d1b4a2f GIT binary patch literal 22398 zcmd^ne|#Lpm1mD<Y|BRW2oOYofH8>0VvJ%rKF0%m5(~Ly3oPTs9w18^MMz^yoPIHy zHX@mpoQ%Ck(;8cQm<?n})&z&>IDOX2M#m{c*~peYmK+o#KpT&-Wb3lZea0CD1ep&O zSm(L#tFE5u8IK&pCVPKee?C30UsZLzSFc{ZdR5i)TE$Hz7K=qNE~{V_2+O!a5LN?D z->2uS797Y~F60Q;uzaID!F3z;dp;pq0?TJ<k02fQ6q4y)!1Lz;cH*5*<k7tgINg+Q z!+jg>mAJ3r&!|$k9XDMIbr9#l0X!GC9rqo$m*8HCI|nyii*etH+ewJ&Li2<bxQSjS zPrnv0ANN(buft94S&sWg+{CkS<>8^gKmc#SeUk~N$Ln!_0rw5Kug0BvWtb8c;W^uc zf6?^3j6dJZ;a{2Z(mh_u6K@5yrW9cEPf4S`raqwSO5wv8$!os}cL1NDL|j)183NI7 zU(ZnBS1=js80&iBOF%Y4xVJ-iS3&w;H8KIIA2+4ooD@r?{K}O4`V{<|Dfo9%a5V*Q zPr<*Jg1?f2A4<UoQt)2`Zv>-X<L&z`@O9|qzvuWzDdj&&!Q+aHbZYNH>HvNbo(X&y zivJ|9ZyE4*DF5FfkL3A9;30<~{7-ZylP~Z*C}|DPFQxLpBOKohd}Ng%+z&;k@^0XM zDEWSlKL$Jt%6x$1JAikgJV>zePXf>VGR6axl-_R!-cck7-@<?({M*2di}-&A_}X=X zP!CA??J4=s1J7Hpk4wrwkdoh-g1?@E{{r}KyiXVD>j3Z-UrXR`rr;-1aG`wt*EScG zl@<%-8#X;~Z_%dm2TDq|irdP!72Uf@EEmda>T7&L`E~%I&QsUq@c}fK$n}-JnudCM z7QNoGrXAawk<nb*v{|n6cxx)z^ZEw)@mddi+}c>-ZPFi$8|oTsJ<Uko;PGwo>aa`) zo2kMr-kN&fcJ^9vbp<c5)rZs_NG$exDtsQj>aq%?QccAbwY3eE0^aj@>nm!@pYm2T zmU}%_a-}Dc$nm=760ZlW=&v;D#I{pX^6Q@F#)|qX!Be%vQ@-73Z@dW4t#7DAb7Y@K z_@>9(Ab35E;0|DWt*6pgXgsVEp5#fZ1hLuYp=x=8(B$)0)-?)^;I5|9Cp10jWfFeK z<82}VmzS46?)}f@6;)MUJbUVQ)_9Q$2{co;cmN4hRro59{diMTd6TaKHK1gb@FeUG z+0}1y7~t?Zz<C%?FLV4=!ZDHjgdkq{7lP35HwnVlg$UxF#7*^`B^>2HB8bW2JV8t} zHayS6WRpb@1#cvXdhQ^IdcI5$Ws3o+o{fZ~p1&rD`)>%Mo=SqK=UG51w~ug4X!|+- zBH?)NHG&vquk-Yu^YmeYF#NwIhzdR+2tH;Bf{#U@L3~^TNcCS&IO@BVAZ{l?(7zjy z^4AfL{8ECbqm8Hk9Z&x;K@{vJ2s(!eg3fV*pz|Ie)pLe$)DtF%dzv8V&;(8S^8qP; zDM8Sw;OX0W`nL(9U^_w3`A34F^G^gp=M6xr=a+<|o?j6JjZuQQCvj8$S;CPYB?vmD zkS(Qe2Bh?T1TpFVkf;Bcr*{)X`J)6eiT^9le~;%!IKB*hG7l5@BLrc)D+$7x_<$gs zfD3>`&x$^p2gl^+C^HWZ#{DQm`F{gQ`Q?No|BIMUD1V3`?#g94{Ne3-xema2w+X`k z;P@bi!<3Hq$2tBx4u8+n|H$zf4*w5NU%Fhc_i8|T-%+gNZVq1qoQJZ1;BYzYFY&wX z5go1vw7^N)$ni~t!y($j@oj{|fq8`EUnkrl2;bm%72#-OHOFfShf~$aaUbEg3PLl- z{e<TU!Y+;<1YD4hd5Pd1n9BecI>8{W@ck}9I3ftKpW1-MULn5eioJr46{_j+>_jXU zduVHzo*(^o|DG~I2nJ@57HqTynr(v59^5Ht3t}UIqqe|T1UdTXWBu*%;t!$tqy6n} z^>=}(Z4W=RRa3GDMVgg_L9tH<y*lV2@bU`~o+?gj*Stgz?&!1g58&Y$aVF^g<cS4O z2oHv5K{_yy8Bnq;txKw3MlMgXX*X{*9{2S5ZZ{*>n-F=43Gpqde#2CSo}-GB#>24j zFr<~+jQ6rWOZD%kseZz!b<}tmL6bCb*d>m(W@zpqmwTk;)|fmLlZRvSNK78BUMBK} zR^Mwp1qN~;g?TM^#-7SZG+bU%?M;-hJz)=u(_0cHNN`sB-k(F*T6w0?BHL$a(Oy&a zod2Ubv>!Se7|00B%!628zqr)lamz_%N)xBLGgUEsvMzi|>N{CCHC~jFn%slrz<@2F z^a(8s0!oj7u71x{AsS(`?|qXsBI|QC!cvk@oVgou$Hk@6G-4oqBYKTS3<xdPvd$f7 zT^dk&g%-Vwds~)NKVTvdD;tQF^`dF>?R!t5X|boW6W!`VFPqVul2F;6ghKqPxnlmN z+HaJyAL@^H)S+}G)3mZX(MtE!>zS&XdN43$JC&RFsNPad9B_%<{;M?iu*==uy4WT4 zw$67+L&|m4@0y527Pmths@SbbLz=tW=^oI;zTl>;m^$?0Ii*h>R6|a&S9A9SH_g-2 zdeoy&2oF8Xq@f<x#7s2<<7Lk==z7+ML_cco%-AZukQjO*LlZ~shs2RBJY|et>BB1p zrdNXQY1Q4S$(_G^1gSs6G%Cz?2!DK4E{w^ctueVLCilkV?wH&clLz#n7?UTAkvYlx zXLaO11=qyn&P%*Amgcp4V)7WPA?P{q=ws!_xSd>0cCsv2bLZF(y{)>Z(O##RvrZL5 znwXV8goja0$~hdl*^1xu7Io-w_-4!D!=G3*w<G^O)jg}pEAo$P?&XBcXwvHZH&rRB zNg>yJidA)oH20{>9aR=+QdE^jHFs9f_B`4x7=oga2SI(Iy221t4{UDiY?lqDe<uw0 z1eMmLESEH)I5aUMxJGkNXwsBwd+uHpPwvd1ZA8!a|87tmqvEPO5x5}OgYRNxMCE5y z_hjHxL1}J3`MxGiSfwmg3KzySImabW`|qPUrEJn#mgzdDtU`G)4Asa|-6Kp#pnSuc zG@`kuG~4$yX?WZg(xmLM%=4!YZzyt|^N+;Du$9%M{7iF?Y0}#9+;=s1p2a;G6UPF| zq~KRc9@3;e_!}@sJh&&UZV*WDuv+H<4BQNTW%SWT&Gy{54QdN&pK@xyO;CGFlg2bR zsJ*92c@~MNY3`8AJ?Z~`q!IO{qf-*6Q)tln9PRwY#qHFj8MM%^Y3`L4_e4OM5bSM% z3+TuPFx8s+z#jZ1mw_~4?u4(RjL`?nHFua=pZy#}A6%pN0+al^Ns|BH30d@C%n_6P zcOzSMd7Fh@z-U3%*K1N(?^hDDxl=z#R1Kv~?Nq%x{jX~78Hih{39ey!Wp2;i294Xz zjcLD}whX2t$fWzCE?rF;#b~g%{TTAq+)<Z%0&WqB8G0<us?ucOyrB3lZg;6k#(xn# z4;p%YJg(<vxqr!!$)7{VUyjroI&P*R8Z`bg`n}KSfhg;NAbKDsPcge%*cbHlG0O_R zm=CJk)@&F(!?vz=idnjCUCV8&l6Cllo2~ebCE3=T{7=cYN_qKjlA#4MqbV!$-%^#R zri5IdCfimeswz;^wU=pIhmvipveu<A+qx36gGE(fTfeK@*41QNS$@K{N)u2od+<!M zZM6qO)aRN48<a6_`&3gVtjbzd2^W6Mj5EwE8{ey4rxna!x{X_F*q+s7V-?-TzHzco zQ!>Xg&tYaCvyF`Bj+7L+PWyjNBa)_pY323tkf!8Xl!SeaJVv@dH|^D+4Z^o@o3|Ei z)NJ1cAvXwpG-ewb&mCe^&LpS|o2VFeRa0hM%A~Thorb7_cAj9S9PLQ7vqY!0+MxCM z+W1Bibuu%st;%wXVz#Z1>b6yxRh7v=44pE>`oP4SnXzJ$5!qPk11Gnuy5w~$IEUm< zBxKTO;)>bV=OT|J^|`sjzogRxv6~>T@SHOLw?zFTruw<eU*<BeO_I5}U0;pUxkI<F zpRG*;Ni><HpVuYLd>7c+e;_-nL@`S2!S8T8Yxopt^xiCkGPBJ81N7cZ`^#~;{AKjs z+y|v`T7NOU=QCZ~x6|6(_I7>Uzmcu`bM1!|hpNnKaO0Gjfa0+D7HEniUx5|PgbfYA zd{9bmKJ2Nu!YSsV$Ajw^#$G%Z!;S!D+n?{dEr#Kwic|D{0u5_oE}USin5!N=e8HlL z4u(0@e)z{Rc^zK?Oz4j7V%?p6A0{_n&dZlp=EGl>V1S@bE8rF@E0{@#Sy@XMEanU> zrm|91dNd{MQhMyctx!3z?NoAASU9EU0afY6%;1uyS{{2sh{-uvHUx`fTVk>!Cg;ZF zY}nq|iIeXa_7xt}+_`~)T$g*+pBK5B`iP9ypr+)EWxjR#aM3!~+x{u5IA(QI8RbJw zxo150oK;$0g4$buXw**7TsKuIMeTe45%MA5M-4GbL}pne>od@ZwjPN{1{GR~Mb}-_ z3{8ywyV|j$^#_`=+M@JY;v#MP1sl;l7%i$isms#7m(FzzIfo!C#@7?V#iB*WQ1{4_ zkV9kx`B`En7Jof)AzVt<p=4Pz)_Sb+G&6HO{(pw>W8x&lZ{PPVI2W9W^gYn>q`~hf z>s!v2nI}u4Yi@~L30s}6|3@#Ar)cXxxTF>Kz0a8>HPX&mOxt})qT0y(WL;KP-m90? znUTxnYlVH^Q;=1##G)Q`k|^QPVBkDu8aP9cFN^{P{{SC5^_tk@6ldU$VU5AsfDN#V zJDYkJZ;F{_CA>9q6?~YqvK&h0*%(VdU=%pXEpv2dG1H}i%j&bVbfT^Qf(~kFh&Qdz z&|_>Wr0pPT-hj~=+*HgthSSnC#uw}r6MNfB7+mBGck0gY8s-acA-gPR+YiY(stmgf zLkBCIO;%XW&X?iU-lHloyg3$M2G-^I=NOi4vb!+DIVKclIGY*X?87q_RqWEl9ERpF zJFJO$PB9lIKW@|~5~dlOGqmS$g>ITN7m(j7cje2u`O<RTNHg=C2ZJo<sl?l~OIb<S zN>!d76uY7RuoTN-t2H_7I%f}lpK01!r;@EIAx)mytjawYYcSYdnmmP-=1%Gd%nn)D z<<Z2hjj(bs+u1QW6JBfVgeG@0Z8}$YiqtHdcf_6TuD6vNH5qRBX^fpdOlPp$W5Re& zQJ^oQ7{)tdm0(b^$#{>#kC7b~xhsavE@jH4boqk@Nv__Eo;()&4H>Qn;zTv6i&3Sq zh_&(Orim%7%m3dXGnd?jy%vKw+RF`l+9qRX=+D&VJfg2+L&_reSY%A~m_KLiZ9X#g z@{B6O1?`5XtjW2m+(ja~U=RKib)~%4DQBzlDC_|B(Gx=2F2Y=aIww`78{#9KxS%{{ zk|B(QwDvQ~5r#L>cVHX!Pgs<0O`dkiGyWe!e=Q376D&_bruH_8W(1u@bC;3|5l?cI zN(KL(si&@uBd}9)f^(hiO6WURINi9dg$h{u<IG={-oZFuf_Kchao!nMZ8CV*6zU^; zkVcRp_2Gof)2c~=`MB8A@gM!H{10C?|D@0MHaGDvcCT}a6SSSItR&?M4%5iz`ZECO zVvd1n>r2wH?@(*S8K*dn$!5qH7egsZM&l9+s>zt4FK7~K;_8HE)5u)G#-##VaE93e z8MfefiY*v0wTa6g6_W1wRVHT62AhD)qY*SB4>2Di&Oo2lWEQ@Nyw6Ra`rrQ}qwk+F zOQSbo7ke+Z6DcAAM@go_uvMQ&Ce)|?J#fD*WW-luxY^q_@QLeSe1DuRCNc^?E<6Q3 zV?U)+R{dZA2O5|`7HI)GaE(0H9_Y^~30zpX^VGxD|7vVx7k-RVg{Rv0d@N^FU$GJ8 z7PMF20LVA;ZF+^(HzkrXjC$UzUS_1yREl#>?AU_`%%wU{P%uq`*C}OT9$bf0u%{Mb z2Be3bHy0jrom5u0587xOP8eK&9E%S@C~}?jPepDFu3_2Nz%JO{(zd;2Q*Fo9ZO3ht z{fAUqfvFrK=gvmmS{cZdWvOK|d){fW-WSOn6r)t{o_7=*c8j8W`dSukBu6Qd6<o8Y zPsv!v5NkWuA@8`{Gc7lOf6R%4wiEQ);QAAct$UHx8Xgp9DG?`iTG@=NY*wjc3pLF7 zVZmR_(!$E!8axLaE|BF`3g94s&ME&*E-AC+I&3IeLUfR!WN6vv)a=9BwsSUh+hJQt zG4}XdPk?(%*_5Sh)>4LP0L!ge|0~qmv3OqxrXHcTmSr)yo>ZmTL2-tdf}0|=ECfGT zcwsG>BeX0D7R9J>su+!Av~xMIVpm`n`F>TJj$9jDGbm0QuPb;xdxP%a;E)m0+!$F* zRVhoU*YvukSY1=`cdo#)g1I!A5qjLH9y$E`n=K>E-3hao7wN|_Ly^T`D3PsKH(A){ z5@%bkYu6;myq~HaT;I=Rz783!sKO!G_xzU9#ZJnGrErqBGwV`1?ZGB1Qlv~(>SF!Y zsVW^>*|f6^hdf=bGxlH*Z?vn^dp=g?ox?FtH2+8(QKI>S>I`&XiIJopak``G(4J$g zur!n3uZH&Y`E%n*$_%|?!AVYT(AE#}?G%hWr%34v(g(-EQ3tws%ywoxr&yIbiZrFm zbslp(8D}Zef@w_Zw4CN`XcLiq_BHHO;v5+4fKe>xHF4T_p2n1^{?UokB&k!Kc8asE ze*4~Am@_xyq{RZ9wXmfRhZ|s63SrEY&8TlVm1z=&)Z;qSQh|N6kC+VJGx)U}!MRkr z#4%0m)G2H34h)-l=iZ}+jiJrsw)3o6Sej3a=bkT(m9hGzj#lh{!Ht>rHIsh%ykG#E z>{e+SjmKVq>wHUjI#Q$Q5=YX~$I+Go`e!r=V(rJ-!g%f(Mjy2+L|@9xmpb!LV;xQc z5<BhtK4#13NtZHZ-@OUaB4xDizL!mfQS@S;`bX+ut2m{KT&{R+FMU9XvBw14Z5Hf6 zdy-tc=a%bmx^`hEO($2J=$Pd?9G7diYYw>%7;^2NORjzC=ws$eLtpAmmTO;JuHBcC zD;cGim{DTurmz41Xp=55o79o8NzCe6owQnlaq7TvmtmYbF$a7sTQ$n+P?dwaiDI_c zQmRRv=xTfLzoI6TJ0{Qn8B|a(j1pFPWOQ%{U^((M2BR^6_2C{`hqRDBm<=m;IWOqL z2?O~c8&Me76Qqc_=VRhQn5#~ga?sw^XxOVxi`2pGRfoN;knGj>F3VnZ#O>8ha||nt zziAxbo5mJ6y2RKTOQ+lT44}iXSqBp~3rFDQu{EZTEmpsDu=VAHtx`rYYhIe}NIJU1 z>FMGm-b@##Lu4!CbTLWiD;@b43|rM<-**AFD#<=+;-twyIcXN>vJ^Y)dv7!e6MG7A z<F5;|FJY%Z6Vu>a_J1f{oABvLI#~`Rw+UxayiHxM6j}D^vb+S{-gI;^iKV04lT5ca zh3*`(B>VJ&VV`IbiXCTtC4s$-%$S@JUVonUe~$Gt`?Z$rmz+f|WLXaPh~Pgi#H>Po z(w<{2nZXk7Oie`=4vNhGL5cbIMV68e6(%ddeatY5&xflMSqMiWGgyR=P~ek}MBrn- z19t6)F3|Gc@S2#TG@(wzhq6oqVGisNyrLN;2Ti}&Cz>>TBC;2TM@k2;nCWKi!8)=z z?o6zmXSK4h>o>|a)jb41C7{d*_zp?L#60N=`4`hZTPE?;x96DuI#*d{%M#0w?!Uk_ zCLcJHcBQ}qJRNv6<j$NM&%yblJk<KnR(B?IWM(ZAr|jQ*_9K{tcK9&)Bd#I)?n=^8 z@>yoo5jG@4aEW2baNZ$KIk9;>Xy4mMMnsx+k^_f*4fs4xG3*j2d<rZi^qP-pc{=~7 zOCGfcKR}a-H#fX{a!d?cNcL|yZ7OEnS?))12Z)@Rbd&C8Q1JigY#T^iL>%8uxsJB@ zRCx%X0%v?_=;KH^O)4w|r;l$Kb*9OE#5uCrn}KCI6Dx!GM_tNL>w(RsOcI%{qpfYs zv6;<>n02X%v-W+Xuoh=`L%yt^rr_{H#LRJoz{v+RL<~PsVy0r+Nq*u8m8WknqU1q3 zse(Tt^O4UfbF8zNAA4z;Z!UGoBXi4q<WI^R9({V5bNZK(dB~9YNP3y$$c?F~7`5*^ z!CXmL?b&=R#1kEH2<c>MdQIyy-$lMqe6eJ#&uEj_ygm!FH5IcV=Jna6zCN3TMzZCd zu|At*ug|eQn_zWK#NWBp`V8NFVR3iK^;zih)@SvwI(#7tPl65$rCFDRou`?F7*3>n z`=NUQC5jKON|<3lcGMoci=MHeST?CC`)Q|hK69C(Rx%v;SY#^ySFk+6d$7^oPQH=f zL6+(U%$zV*G|6Hq&^~6R(Ud!QmOfllhn(V6^Add^VD+Xfir|Ah*rev`^sL3Y8JdY) zt=p=|O*oIIcdo<_&KPuy7r7Grsv|s!E$dXVO)rSGH;po?JTr1Djj2CN{j_XsAG=jk z+Qx4lw}$$#$U(bk5t(}?Ahu_e+y~pcUtiap9f#mx<C)~7{jSsYApMaEzM_+k{a`i1 z`R7$yG=-h?-3>evmVnRn+MMpNifz6y$>A+55iLWic+m1I)qTK%uOeT<SA+y#NRqp~ z?Ip+-ve%E*0!o|UUldSApgoZr+XKpw;J=n7W@yq2k?WbAc?ri))aNLQ4=WEuY*^zT zq!}jr%)jq_NJJOa`1R!b44wTEcw<#!w*o9Jj@%Snlf;ud>~yz9uE+NsPWN!+D$Wy< zz>|BJ1j01HZtmDy$Tq?PbTsGaxr+?N!7NJYk?ZyJB~TKw>1;~?J0%@D&UD6LGzW}g zp~<?H`g9QL%K8*bXn5Q)@jy&`DJH(4_i!7T8`>w>kLlGydr7nGjGz}^`k#Fjn<Gr; zCb*3iC*Uj^&y(nA*moy=w+KrW=DP(4nQ~0AS)d!f_LO?uDNnlOZiRi5gnhA#=2J)} zO==rF2u>?u+oiVT>8za=k(f`r{XZgmX5YPpksrfXNxp9paaw%8Nka(7(-uta-S*(` z(T8a%eg-~B?+wR04{ICnah~&W_F1YQq|won!A9C6$L!LKeG$1050&Yu49vliAp?x2 z#GH;D@qUb21!|5S#)@hH<YQ&v2}}95)*qB^W_m-j`m->Jm`T`o9juFRc)M>qdR<=w z^fR{zALCBgci+QAhcO*hLzX^T30i4u-{@PsxOYD*KE=E!tOmxg6{LGwbgr7{>#je0 zU+0na<$aC4bH1KZSU*1j!kXM?B`xbxzMfvb=~Mrtj-}8|C(QY@M*SAaj*SQMb|=^> zYK9)MK?J#d-83jVG4!3%q$<%~Kem6c3rY?uZ3fYPnlWBFm2Xgfx{)zwTa0}?(|9pd zh4huFilM2U{#W!7!#-Y+#^`(OJ^w{lT}|$V26aMPp9T+?)Z3mpI5hSY&3ene51`qm zU7u~RW5_%sjA`rwr0Okgvyo@cWH@c#_rDC!D9SvexHA8Ydq%sMX9RxPIxClaBeqX} z@_n4?8+-MzGkmX}?L}iq(Ox~|cFDc^=-hktQPW;MrpPGv>g_=lVgylgM#3~dU_DgH z@@AArVPR=ehNfZ7^p<kJ3gs=!2(JF59eei$w0EBm!-u_lC0Dyv%^uVq!nXaOZG1uK z?d@kKc1_Ng7oP5q%tt#<M*>GPa2Sf?fGJnmr2m&7Xi>rzWtPrx7%Tq3c!;*O<@@Q# zA=+}w$@igS)DI`()!9xTiOf6wdz?E&TPMdur$5w-!t==ut{E3X$HsGTxX!XaWOT<v z<M7pjo{%nZ{d)!nlXn(hB{JV~AvU3K@IT9Z$fd!1`Kop%vWV8P>?i>x?1w(WCk1%H z(y|zzK44D^A7+`(3S#g@<?IrCXn=aCjF^)@5?O-w1CQzF1$^0S!&%Nd<VEuSlCh>e zimt#u|50O~AN^GrQ{Q$e_+0D1Ba8I=yvF|LVF_Wa5~LwO--7b3d3h%PDE>Z?jMF$< zY9wJhUWJ`BR-W=KUO)kVc1jYK@8st(D^7+1#ubNFLEBNx+%lHDr?G>7FBa>T8L-ht z-#S^9O!^ZBSl#ysP-gU;Y=(}u+&Vr#4<}-*h6_eNL7YL`wB;OLY5fEBe2(C|6T5d* zD;lRP(_d1Lu-8t5pLqWkyWaJGG#;X_<Vb$(+c+6B+|kg`>BBf5iMCFk>^u4C_ykiz zao6lR-_@Wnl`)>1$ItIFu*M%hY1DvktLWtR67PS(c>k25|Ci@f-Q>w*k$K}MPk*9w zfltLr2j_)89KSwrB!jW>p{{(R@paJ4yKv-)zwfjs{wFEnAFshc6fz4o&IX!iW4^@y zBxeI(iKYBcvH-=k0R9OpXwTtM(5_Om!aI+~VvqI%i(la;Bpnfqf0EN*%Ab_Io+d|y z&r$2CX!1E$IV!w6nhJ!{vZ4(lJv-`TBtPzPR5<Dz>hEk~f4z59u|MNGw%0b`%{unS z`2wM&bkjER!K9b|<SR9`_>=uzjz@2+a@<xWt#FjqRqXJ@@x?}+RW)^<dio1{lcN?) zdAtr^bw#~H=Q5F5Ac*TXh+C6bsBqv<@%XoYfv|O(xFsbkZ99_7RW{W7Dr)K-zNZ=- zo>~w1@IgMT%+88h8NxFpw1Wi`;H=R<_^DXYgWE2TW>Ueqh*BXl)!G^l`o{N^$5Zbp zbRfb2<l=GEkPsbav25M;KyuUPXt=r5Ts)x6TrBYB&dEk`MSXpP&%uHvAnJevswdYP z3M8cF)_W>FO-&WvryV{|U1Nino}hn-!cbY`t(2h%Lg{8`+-Ag?c=*AhEq6IeDr#yy zkU>L&1igw5@K!v%Oi08@K%fH_(;yy5A@zZV28+JHA~94!2ktatGay7o1620*+nR27 z)HGpK_?Xb^E9yLshV2+9kWNjNgF-#r2_>zn^>~*p795TT8Y##H#+nxjF060}w>41+ zk6+*2y8Q<SKK^Q1(Y8%R_c~TPh)#vChJsxT;ll&E`Z?_7@TVNU#^C`DU*xcz!xgZv zFd_8Oa~vA+XejN%V*1suOn?dCO8_Yb4NW)uanHv+4FuoR3DfZK=#?=*ga}|UR<H-b zV%os3X8&6!^Mk+Qv-mutC``}8co`u8gbdV!zxuOs_&a{`wV}B9F30i>o89@2RRv!z zSXEFc2>*}LGB{^wrm(WGU?n(VJX7+2bed4m^mLuC;&DKqSBKTcQ*}jCwNOy?bUljb z(B~Bjyq?+u7RrM?v1lIbX-9)k&upy40}I7cz#jF&EGkQZw?ThF|E=^jc$-kO4p;@C zR#AtTECq-UA{0Pb$s!5`7zQ2^&t+XVpcLs9=?v)@-L$|UoG#Kmx|iW5J)?BeJ-P)b z9O)cAQW=``5T1agv2sWxeI*?=F5{8<k^ZAg<wz&#ZbW5-lU`GO)c1GeHp<<D47#5| z8kM8*VU!b1<pxlOZsLc^5j4teHkG3>K{wH%azw`{_b{G`R~l<H7U?#05lO60f)Z|{ zTo`5Oc2EYts6M(M$8D6Om}7MN5wgL!s0>}zxQ%i&_UTSXx1N_HzA4lK-5t~!{IYSl z6OihoEc(J~-9|w`(fDPQ^CQJ5w;Sblqnw$pQ7&LA*M@R!bCi45RF2|o?MJzsI8|LH zROde2BxB-_>><TV+r@E!cz?WrXX1y-Q5>WdrFbx127lj28nwf?s2rV*7?+XvDiRj* zM9S}(qa4{xqG?>~?*oqp0%+7nkov;7x}a!TXc)qt2&-@tf24<`W9It$wjnN$=|!VH z6r1zXBiALetx1%relrEa4e99bSlNg-zfV1oxU6x>=xNp@O`!Uy6^YBrMywepOOd#& z@yK&}nw5=QbN<o<f+s7Ba+gT5#z&i;W@R&(IiF^<#AQv1L}yKkI!E;*FpcT53du8| z6}@Ke2OHvV(VV<;z46jw7Vpl$=b`;%&z^z)(q%#5pRWLZgO{g#sFy(FiY^P<Pxhrf zj@#4HBO9S#i-jsY7&z5O@!@Fv(Pe?Wo&j9T%Nz7)ywgSWXk#Wpf2r^?%h7*~_H8uL zdo4{q#e>tY#llaFM?m9!iVvq>i-lg}5zxq|_-^{OSQx+qvqyl$-*KKpz$l+*lJ_a3 z)7s1iNag<x&>Vj)0^GQW&1nMxB>Wt1b38Xx62B;a5pcsFqj+mq0pHE(6Mh|Vb9^~R z%KIx)@Gk*3$Isgc+#Fwy{<&|CPxna5`&B78#hEiM;#W?=cLATk+(Q?|FZ^5J=6HAe zfRj9_2*soO9`KMO5nt~$;O6*#Z&3N=iFkVy>Bk%|?>KOCygu_BPy9_H-?#|>18{Tv zx=&K_%_fY>FN94r#|O*>PIDn$6p!&1lg*^^`IHZSNe`%f1;9z4jrfdrrIarMZsunr zaC1D!$5QeuQ{Jyj!JkgScctLZr{D)t@Xi$cCn>m4>Gd`F<n7xFDuo@Dm8;5WZ9+?| z0>p=_YAD}P+weF7<S{R?yh3h9YVo!Q9xN9(uP-l01iTtwd6isO_q4FR!CUDm_cfIB z*mCO=rOXvEKa*F)ifk&~x(zjvYszcl6nI8ugV(#h9^6rkJ^-v)cQ(}S^x%=!UrijA zZ*OR5qG*6S^+0$?=1<9?@_78dcsRXyEWkuuLp?|yUmUWigIjqp!AnF9<YD^wBC`-; zN*9NZ)rO#j2z;nVB;@fD<7-niz=-6R8agnJ^SFeGP=bkIfyu!K6A=?jn^<H-bHqO$ zoDu5`3MUw^oJB(9!3y;#jy!fCTP1_NL?}l+E}{`kFnu&gT7oBsXiNlrL^wwZ<Cr!; SV`)>G2#_r3B5F%Sko><Ga4p0D literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.mexmac b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.mexmac new file mode 100644 index 0000000000000000000000000000000000000000..09af413169997a4061e0fab8787df5bf606811f3 GIT binary patch literal 26224 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 literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.mexsol b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.mexsol new file mode 100644 index 0000000000000000000000000000000000000000..b4900cf1abf2b9f70b83b342dcfd21dde027f033 GIT binary patch literal 29556 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 literal 0 HcmV?d00001 diff --git "a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.\302\265" "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.\302\265" new file mode 100644 index 0000000000000000000000000000000000000000..fe85aa20e34fa3832471f715156d6eb2a90de957 GIT binary patch literal 95744 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 literal 0 HcmV?d00001 diff --git "a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.\302\265.exp" "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.\302\265.exp" new file mode 100644 index 0000000..b95a258 --- /dev/null +++ "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.\302\265.exp" @@ -0,0 +1 @@ +mexFunction \ No newline at end of file diff --git "a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.\302\265.rsrc" "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.\302\265.rsrc" new file mode 100644 index 0000000..e69de29 diff --git "a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.\317\200.4" "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/corrDn.\317\200.4" new file mode 100644 index 0000000..e69de29 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/edges-orig.c b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/edges-orig.c new file mode 100644 index 0000000..1f6a98b --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/edges-orig.c @@ -0,0 +1,494 @@ +/* +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; File: edges.c +;;; Author: Eero Simoncelli +;;; Description: Boundary handling routines for use with convolve.c +;;; Creation Date: Spring 1987. +;;; MODIFIED, 6/96, to operate on double float arrays. +;;; MODIFIED by dgp, 4/1/97, to support THINK C. +;;; ---------------------------------------------------------------- +;;; Object-Based Vision and Image Understanding System (OBVIUS), +;;; Copyright 1988, Vision Science Group, Media Laboratory, +;;; Massachusetts Institute of Technology. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +*/ + +/* +This file contains functions which determine how edges are to be +handled when performing convolutions of images with linear filters. +Any edge handling function which is local and linear may be defined, +except (unfortunately) constants cannot be added. So to treat the +edges as if the image is surrounded by a gray field, you must paste it +into a gray image, convolve, and crop it out... +The main convolution function is called internal_filter and is defined +in the file convolve.c. The idea is that the convolution function +calls the edge handling function which computes a new filter based on +the old filter and the distance to the edge of the image. For +example, reflection is done by reflecting the filter through the +appropriate axis and summing. Currently defined functions are listed +below. +*/ + +/* +#define DEBUG +*/ + +#include <stdio.h> +#include <math.h> +#include <string.h> +#include "convolve.h" + +#define sgn(a) ( ((a)>0)?1:(((a)<0)?-1:0) ) +#define clip(a,mn,mx) ( ((a)<(mn))?(mn):(((a)>=(mx))?(mx-1):(a)) ) + +int reflect1(), reflect2(), repeat(), zero(), Extend(), nocompute(); +int ereflect(), predict(); + +/* Lookup table matching a descriptive string to the edge-handling function */ +#if !THINK_C + static EDGE_HANDLER edge_foos[] = + { + { "dont-compute", nocompute }, /* zero output for filter touching edge */ + { "zero", zero }, /* zero outside of image */ + { "repeat", repeat }, /* repeat edge pixel */ + { "reflect1", reflect1 }, /* reflect about edge pixels */ + { "reflect2", reflect2 }, /* reflect image, including edge pixels */ + { "extend", Extend }, /* extend (reflect & invert) */ + { "predict", predict }, /* predict based on portion covered by filt */ + { "ereflect", ereflect }, /* orthogonal QMF reflection */ + }; +#else + /* + This is really stupid, but THINK C won't allow initialization of static variables in + a code resource with string addresses. So we do it this way. + The 68K code for a MATLAB 4 MEX file can only be created by THINK C. + However, for MATLAB 5, we'll be able to use Metrowerks CodeWarrior for both 68K and PPC, so this + cludge can be dropped when we drop support for MATLAB 4. + Denis Pelli, 4/1/97. + */ + static EDGE_HANDLER edge_foos[8]; + + void InitializeTable(EDGE_HANDLER edge_foos[]) + { + static int i=0; + + if(i>0) return; + edge_foos[i].name="dont-compute"; + edge_foos[i++].func=nocompute; + edge_foos[i].name="zero"; + edge_foos[i++].func=zero; + edge_foos[i].name="repeat"; + edge_foos[i++].func=repeat; + edge_foos[i].name="reflect1"; + edge_foos[i++].func=reflect1; + edge_foos[i].name="reflect2"; + edge_foos[i++].func=reflect2; + edge_foos[i].name="extend"; + edge_foos[i++].func=Extend; + edge_foos[i].name="predict"; + edge_foos[i++].func=predict; + edge_foos[i].name="ereflect"; + edge_foos[i++].func=ereflect; + } +#endif + +/* +Function looks up an edge handler id string in the structure above, and +returns the associated function +*/ +fptr edge_function(char *edges) + { + int i; + +#if THINK_C + InitializeTable(edge_foos); +#endif + for (i = 0; i<sizeof(edge_foos)/sizeof(EDGE_HANDLER); i++) + if (strcmp(edges,edge_foos[i].name) == 0) + return(edge_foos[i].func); + printf("Error: '%s' is not the name of a valid edge-handler!\n",edges); + for (i=0; i<sizeof(edge_foos)/sizeof(EDGE_HANDLER); i++) + { + if (i==0) printf(" Options are: "); + else printf(", "); + printf("%s",edge_foos[i].name); + } + printf("\n"); + return(0); + } + +/* +---------------- EDGE HANDLER ARGUMENTS ------------------------ +filt - array of filter taps. +x_dim, y_dim - x and y dimensions of filt. +x_pos - position of filter relative to the horizontal image edges. Negative + values indicate left edge, positive indicate right edge. Zero + indicates that the filter is not touching either edge. An absolute + value of 1 indicates that the edge tap of the filter is over the + edge pixel of the image. +y_pos - analogous to x_pos. +result - array where the resulting filter will go. The edge + of this filter will be aligned with the image for application... +f_or_e - equal to one of the two constants EXPAND or FILTER. +-------------------------------------------------------------------- +*/ + + +/* -------------------------------------------------------------------- +nocompute() - Return zero for values where filter hangs over the edge. +*/ + +int nocompute(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) + register double *filt, *result; + register int x_dim; + int y_dim, x_pos, y_pos, f_or_e; + { + register int i; + register int size = x_dim*y_dim; + + if ( (x_pos>1) OR (x_pos<-1) OR (y_pos>1) OR (y_pos<-1) ) + for (i=0; i<size; i++) result[i] = 0.0; + else + for (i=0; i<size; i++) result[i] = filt[i]; + return(0); + } + +/* -------------------------------------------------------------------- +zero() - Zero outside of image. Discontinuous, but adds zero energy. */ + +int zero(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) + register double *filt, *result; + register int x_dim; + int y_dim, x_pos, y_pos, f_or_e; + { + register int y_filt,x_filt, y_res,x_res; + int filt_sz = x_dim*y_dim; + int x_start = ((x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0)); + int y_start = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); + int i; + + for (i=0; i<filt_sz; i++) result[i] = 0.0; + + for (y_filt=0, y_res=y_start; + y_filt<filt_sz; + y_filt+=x_dim, y_res+=x_dim) + if ((y_res >= 0) AND (y_res < filt_sz)) + for (x_filt=y_filt, x_res=x_start; + x_filt<y_filt+x_dim; + x_filt++, x_res++) + if ((x_res >= 0) AND (x_res < x_dim)) + result[y_res+x_res] = filt[x_filt]; + return(0); + } + +/* -------------------------------------------------------------------- +repeat() - repeat edge pixel. Continuous, but content is usually +different from image. +*/ + +int repeat(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) + register double *filt, *result; + register int x_dim; + int y_dim, x_pos, y_pos, f_or_e; + { + register int y_filt,x_filt, y_res,x_res; + int filt_sz = x_dim*y_dim; + int x_start = ((x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0)); + int y_start = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); + int i; + + for (i=0; i<filt_sz; i++) result[i] = 0.0; + + for (y_filt=0, y_res=y_start; + y_filt<filt_sz; + y_filt+=x_dim, y_res+=x_dim) + for (x_filt=y_filt, x_res=x_start; + x_filt<y_filt+x_dim; + x_filt++, x_res++) + result[((y_res>=0)?((y_res<filt_sz)?y_res:(filt_sz-x_dim)):0) + + ((x_res>=0)?((x_res<x_dim)?x_res:(x_dim-1)):0)] + += filt[x_filt]; + return(0); + } + +/* -------------------------------------------------------------------- +reflect2() - "Normal" image reflection. The edge pixel is repeated, +then the next pixel, etc. Continuous, attempting to maintain +"similar" content, but discontinuous first derivative. +*/ + +int reflect2(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) + register double *filt, *result; + register int x_dim; + int y_dim, x_pos, y_pos, f_or_e; + { + register int y_filt,x_filt, y_edge,x_edge; + register int x_base = (x_pos>0)?(x_dim-1):0; + register int y_base = (y_pos>0)?(x_dim*(y_dim-1)):0; + int filt_sz = x_dim*y_dim; + int x_edge_dist = (x_pos>0)?(x_pos-x_dim-1):(x_pos+1); + int y_edge_dist = x_dim * ((y_pos>0)?(y_pos-y_dim-1):(y_pos+1)); + int i; + + #ifdef DEBUG + printf("(%d,%d) ",y_pos,x_pos); + if (x_pos==0) printf("\n"); + #endif + + for (i=0; i<filt_sz; i++) result[i] = 0.0; + + for (y_filt=0, y_edge=y_edge_dist; + y_filt<filt_sz; + y_filt+=x_dim, y_edge+=x_dim) + { + if (y_edge IS 0) y_edge+=x_dim; + for (x_filt=y_filt, x_edge=x_edge_dist; + x_filt<y_filt+x_dim; + x_filt++, x_edge++) + { + if (x_edge IS 0) x_edge++; + result[ABS(y_base-ABS(y_edge)+x_dim) + ABS(x_base-ABS(x_edge)+1)] + += filt[x_filt]; + } + } + return(0); + } + +/* -------------------------------------------------------------------- +reflect1() - Reflection through the edge pixels. This is the right thing +to do if you are subsampling by 2, since it maintains parity (even +pixels positions remain even, odd ones remain odd). (note: procedure differs +depending on f_or_e parameter). */ + +int reflect1(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) + register double *filt, *result; + register int x_dim; + int y_dim, x_pos, y_pos, f_or_e; + { + int filt_sz = x_dim*y_dim; + register int x_start = 0, y_start = 0, x_stop = x_dim, y_stop = filt_sz; + register int y_filt,x_filt, y_edge,x_edge; + register int x_base = (x_pos>0)?(x_dim-1):0; + register int y_base = (y_pos>0)?(x_dim*(y_dim-1)):0; + int x_edge_dist = (x_pos>0)?(x_pos-x_dim):((x_pos<0)?(x_pos+1):0); + int y_edge_dist = x_dim * ((y_pos>0)?(y_pos-y_dim):((y_pos<0)?(y_pos+1):0)); + int i; + int mx_pos = (x_dim/2)+1; + int my_pos = (y_dim/2)+1; + + #ifdef DEBUG + printf("(%d,%d) ",y_pos,x_pos); + if (x_pos==0) printf("\n"); + #endif + + for (i=0; i<filt_sz; i++) result[i] = 0.0; + + /* if EXPAND and filter is centered on image edge, do not reflect */ + if (f_or_e IS EXPAND) + { + if (x_pos IS mx_pos) x_stop = (x_dim+1)/2; + else if (x_pos IS -mx_pos) { x_start = x_dim/2; x_edge_dist = 0; } + + if (y_pos IS my_pos) y_stop = x_dim*((y_dim+1)/2); + else if (y_pos IS -my_pos) { y_start = x_dim*(y_dim/2); y_edge_dist = 0;} + } + + /* reflect at boundary of image */ + for (y_filt=y_start, y_edge=y_edge_dist; + y_filt<y_stop; + y_filt+=x_dim, y_edge+=x_dim) + for (x_filt=y_filt+x_start, x_edge=x_edge_dist; + x_filt<y_filt+x_stop; + x_filt++, x_edge++) + result[ABS(y_base-ABS(y_edge)) + ABS(x_base-ABS(x_edge))] + += filt[x_filt]; + + /* if EXPAND and filter is not centered on image edge, mult edge by 2 */ + if (f_or_e IS EXPAND) + { + if ( (ABS(x_pos) ISNT mx_pos) AND (x_pos ISNT 0) ) + for (y_filt=x_base; y_filt<filt_sz; y_filt+=x_dim) + result[y_filt] += result[y_filt]; + if ( (ABS(y_pos) ISNT my_pos) AND (y_pos ISNT 0) ) + for (x_filt=y_base; x_filt<y_base+x_dim; x_filt++) + result[x_filt] += result[x_filt]; + } + return(0); + } + +/* -------------------------------------------------------------------- +Extend() - Extend image by reflecting and inverting about edge pixel +value. Maintains continuity in intensity AND first derivative (but +not higher derivs). +*/ + +int Extend(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) + register double *filt, *result; + register int x_dim; + int y_dim, x_pos, y_pos, f_or_e; + { + int filt_sz = x_dim*y_dim; + register int x_start = 0, y_start = 0, x_stop = x_dim, y_stop = filt_sz; + register int y_filt,x_filt, y_edge,x_edge; + register int x_base = (x_pos>0)?(x_dim-1):0; + register int y_base = (y_pos>0)?(x_dim*(y_dim-1)):0; + int x_edge_dist = (x_pos>0)?(x_pos-x_dim):((x_pos<-1)?(x_pos+1):0); + int y_edge_dist = x_dim * ((y_pos>0)?(y_pos-y_dim):((y_pos<-1)?(y_pos+1):0)); + int i; + int mx_pos = (x_dim/2)+1; + int my_pos = (y_dim/2)+1; + + for (i=0; i<filt_sz; i++) result[i] = 0.0; + + /* if EXPAND and filter is centered on image edge, do not reflect */ + if (f_or_e IS EXPAND) + { + if (x_pos IS mx_pos) x_stop = (x_dim+1)/2; + else if (x_pos IS -mx_pos) { x_start = x_dim/2; x_edge_dist = 0; } + + if (y_pos IS my_pos) y_stop = x_dim*((y_dim+1)/2); + else if (y_pos IS -my_pos) { y_start = x_dim*(y_dim/2); y_edge_dist = 0;} + } + + /* reflect at boundary of image */ + for (y_filt=y_start, y_edge=y_edge_dist; + y_filt<y_stop; + y_filt+=x_dim, y_edge+=x_dim) + for (x_filt=y_filt+x_start, x_edge=x_edge_dist; + x_filt<y_filt+x_stop; + x_filt++, x_edge++) + if (((!y_base AND (sgn(y_edge) IS -1)) /* y overhanging */ + OR + (y_base AND (sgn(y_edge) IS 1))) + ISNT /* XOR */ + ((!x_base AND (sgn(x_edge) IS -1)) /* x overhanging */ + OR + (x_base AND (sgn(x_edge) IS 1)))) + { + result[ABS(y_base-ABS(y_edge)) + ABS(x_base-ABS(x_edge))] + -= filt[x_filt]; + result[clip(y_base+y_edge,0,y_dim) + clip(x_base+x_edge,0,x_dim)] + += filt[x_filt] + filt[x_filt]; + } + else result[ABS(y_base-ABS(y_edge)) + ABS(x_base-ABS(x_edge))] + += filt[x_filt]; + return(0); + } + +/* -------------------------------------------------------------------- +predict() - Simple prediction. Like zero, but multiplies the result +by the reciprocal of the percentage of filter being used. (i.e. if +50% of the filter is hanging over the edge of the image, multiply the +taps being used by 2). */ + +int predict(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) + register double *filt, *result; + register int x_dim; + int y_dim, x_pos, y_pos, f_or_e; + { + register int y_filt,x_filt, y_res,x_res; + register double taps_used = 0.0; /* int *** */ + register double fraction = 0.0; + int filt_sz = x_dim*y_dim; + int x_start = ((x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0)); + int y_start = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); + int i; + + for (i=0; i<filt_sz; i++) result[i] = 0.0; + + for (y_filt=0, y_res=y_start; + y_filt<filt_sz; + y_filt+=x_dim, y_res+=x_dim) + if ((y_res >= 0) AND (y_res < filt_sz)) + for (x_filt=y_filt, x_res=x_start; + x_filt<y_filt+x_dim; + x_filt++, x_res++) + if ((x_res >= 0) AND (x_res < x_dim)) + { + result[y_res+x_res] = filt[x_filt]; + taps_used += ABS(filt[x_filt]); + } + printf("TU: %f\n",taps_used); + if (f_or_e IS FILTER) + { + /* fraction = ( (double) filt_sz ) / ( (double) taps_used ); */ + for (i=0; i<filt_sz; i++) fraction += ABS(filt[i]); + fraction = ( fraction / taps_used ); + for (i=0; i<filt_sz; i++) result[i] *= fraction; + } + return(0); + } + + +/* -------------------------------------------------------------------- +Reflect, multiplying tap of filter which is at the edge of the image +by root 2. This maintains orthogonality of odd-length linear-phase +QMF filters, but it is not useful for most applications, since it +alters the DC level. */ + +int ereflect(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) + register double *filt, *result; + register int x_dim; + int y_dim, x_pos, y_pos, f_or_e; + { + register int y_filt,x_filt, y_edge,x_edge; + register int x_base = (x_pos>0)?(x_dim-1):0; + register int y_base = x_dim * ( (y_pos>0)?(y_dim-1):0 ); + int filt_sz = x_dim*y_dim; + int x_edge_dist = (x_pos>1)?(x_pos-x_dim):((x_pos<-1)?(x_pos+1):0); + int y_edge_dist = x_dim * ( (y_pos>1)?(y_pos-y_dim):((y_pos<-1)?(y_pos+1):0) ); + int i; + double norm,onorm; + + for (i=0; i<filt_sz; i++) result[i] = 0.0; + + /* reflect at boundary */ + for (y_filt=0, y_edge=y_edge_dist; + y_filt<filt_sz; + y_filt+=x_dim, y_edge+=x_dim) + for (x_filt=y_filt, x_edge=x_edge_dist; + x_filt<y_filt+x_dim; + x_filt++, x_edge++) + result[ABS(y_base-ABS(y_edge)) + ABS(x_base-ABS(x_edge))] + += filt[x_filt]; + + /* now multiply edge by root 2 */ + if (x_pos ISNT 0) + for (y_filt=x_base; y_filt<filt_sz; y_filt+=x_dim) + result[y_filt] *= ROOT2; + if (y_pos ISNT 0) + for (x_filt=y_base; x_filt<y_base+x_dim; x_filt++) + result[x_filt] *= ROOT2; + + /* now normalize to norm of original filter */ + for (norm=0.0,i=0; i<filt_sz; i++) + norm += (result[i]*result[i]); + norm=sqrt(norm); + + for (onorm=0.0,i=0; i<filt_sz; i++) + onorm += (filt[i]*filt[i]); + onorm = sqrt(onorm); + + norm = norm/onorm; + for (i=0; i<filt_sz; i++) + result[i] /= norm; + return(0); + } + + +/* ------- printout stuff for testing ------------------------------ + printf("Xpos: %d, Ypos: %d", x_pos, y_pos); + for (y_filt=0; y_filt<y_dim; y_filt++) + { + printf("\n"); + for (x_filt=0; x_filt<x_dim; x_filt++) + printf("%6.1f", result[y_filt*x_dim+x_filt]); + } + printf("\n"); +*/ + + + +/* Local Variables: */ +/* buffer-read-only: t */ +/* End: */ diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/edges.c b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/edges.c new file mode 100644 index 0000000..98b377d --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/edges.c @@ -0,0 +1,647 @@ +/* +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; File: edges.c +;;; Author: Eero Simoncelli +;;; Description: Boundary handling routines for use with convolve.c +;;; Creation Date: Spring 1987. +;;; MODIFIED, 6/96, to operate on double float arrays. +;;; MODIFIED by dgp, 4/1/97, to support THINK C. +;;; MODIFIED, 8/97: reflect1, reflect2, repeat, extend upgraded to +;;; work properly for non-symmetric filters. Added qreflect2 to handle +;;; even-length QMF's which broke under the reflect2 modification. +;;; ---------------------------------------------------------------- +;;; Object-Based Vision and Image Understanding System (OBVIUS), +;;; Copyright 1988, Vision Science Group, Media Laboratory, +;;; Massachusetts Institute of Technology. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +*/ + +/* This file contains functions which determine how edges are to be +handled when performing convolutions of images with linear filters. +Any edge handling function which is local and linear may be defined, +except (unfortunately) constants cannot be added. So to treat the +edges as if the image is surrounded by a gray field, you must paste it +into a gray image, convolve, and crop it out... The main convolution +functions are called internal_reduce and internal_expand and are +defined in the file convolve.c. The idea is that the convolution +function calls the edge handling function which computes a new filter +based on the old filter and the distance to the edge of the image. +For example, reflection is done by reflecting the filter through the +appropriate axis and summing. Currently defined functions are listed +below. +*/ + + +#include <stdio.h> +#include <math.h> +#include <string.h> +#include "convolve.h" + +#define sgn(a) ( ((a)>0)?1:(((a)<0)?-1:0) ) +#define clip(a,mn,mx) ( ((a)<(mn))?(mn):(((a)>=(mx))?(mx-1):(a)) ) + +int reflect1(), reflect2(), qreflect2(), repeat(), zero(), Extend(), nocompute(); +int ereflect(), predict(); + +/* Lookup table matching a descriptive string to the edge-handling function */ +#if !THINK_C + static EDGE_HANDLER edge_foos[] = + { + { "dont-compute", nocompute }, /* zero output for filter touching edge */ + { "zero", zero }, /* zero outside of image */ + { "repeat", repeat }, /* repeat edge pixel */ + { "reflect1", reflect1 }, /* reflect about edge pixels */ + { "reflect2", reflect2 }, /* reflect image, including edge pixels */ + { "qreflect2", qreflect2 }, /* reflect image, including edge pixels + for even-length QMF decompositions */ + { "extend", Extend }, /* extend (reflect & invert) */ + { "ereflect", ereflect }, /* orthogonal QMF reflection */ + }; +#else + /* + This is really stupid, but THINK C won't allow initialization of static variables in + a code resource with string addresses. So we do it this way. + The 68K code for a MATLAB 4 MEX file can only be created by THINK C. + However, for MATLAB 5, we'll be able to use Metrowerks CodeWarrior for both 68K and PPC, so this + cludge can be dropped when we drop support for MATLAB 4. + Denis Pelli, 4/1/97. + */ + static EDGE_HANDLER edge_foos[8]; + + void InitializeTable(EDGE_HANDLER edge_foos[]) + { + static int i=0; + + if(i>0) return; + edge_foos[i].name="dont-compute"; + edge_foos[i++].func=nocompute; + edge_foos[i].name="zero"; + edge_foos[i++].func=zero; + edge_foos[i].name="repeat"; + edge_foos[i++].func=repeat; + edge_foos[i].name="reflect1"; + edge_foos[i++].func=reflect1; + edge_foos[i].name="reflect2"; + edge_foos[i++].func=reflect2; + edge_foos[i].name="qreflect2"; + edge_foos[i++].func=qreflect2; + edge_foos[i].name="extend"; + edge_foos[i++].func=Extend; + edge_foos[i].name="ereflect"; + edge_foos[i++].func=ereflect; + } +#endif + +/* +Function looks up an edge handler id string in the structure above, and +returns the associated function +*/ +fptr edge_function(char *edges) + { + int i; + +#if THINK_C + InitializeTable(edge_foos); +#endif + for (i = 0; i<sizeof(edge_foos)/sizeof(EDGE_HANDLER); i++) + if (strcmp(edges,edge_foos[i].name) IS 0) + return(edge_foos[i].func); + printf("Error: '%s' is not the name of a valid edge-handler!\n",edges); + for (i=0; i<sizeof(edge_foos)/sizeof(EDGE_HANDLER); i++) + { + if (i IS 0) printf(" Options are: "); + else printf(", "); + printf("%s",edge_foos[i].name); + } + printf("\n"); + return(0); + } + +/* +---------------- EDGE HANDLER ARGUMENTS ------------------------ +filt - array of filter taps. +x_dim, y_dim - x and y dimensions of filt. +x_pos - position of filter relative to the horizontal image edges. Negative + values indicate left edge, positive indicate right edge. Zero + indicates that the filter is not touching either edge. An absolute + value of 1 indicates that the edge tap of the filter is over the + edge pixel of the image. +y_pos - analogous to x_pos. +result - array where the resulting filter will go. The edge + of this filter will be aligned with the image for application... +r_or_e - equal to one of the two constants EXPAND or REDUCE. +-------------------------------------------------------------------- +*/ + + +/* -------------------------------------------------------------------- +nocompute() - Return zero for values where filter hangs over the edge. +*/ + +int nocompute(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) + register double *filt, *result; + register int x_dim; + int y_dim, x_pos, y_pos, r_or_e; + { + register int i; + register int size = x_dim*y_dim; + + if ( (x_pos>1) OR (x_pos<-1) OR (y_pos>1) OR (y_pos<-1) ) + for (i=0; i<size; i++) result[i] = 0.0; + else + for (i=0; i<size; i++) result[i] = filt[i]; + + return(0); + } + +/* -------------------------------------------------------------------- +zero() - Zero outside of image. Discontinuous, but adds zero energy. */ + +int zero(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) + register double *filt, *result; + register int x_dim; + int y_dim, x_pos, y_pos, r_or_e; + { + register int y_filt,x_filt, y_res,x_res; + int filt_sz = x_dim*y_dim; + int x_start = ((x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0)); + int y_start = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); + int i; + + for (i=0; i<filt_sz; i++) result[i] = 0.0; + + for (y_filt=0, y_res=y_start; + y_filt<filt_sz; + y_filt+=x_dim, y_res+=x_dim) + if ((y_res >= 0) AND (y_res < filt_sz)) + for (x_filt=y_filt, x_res=x_start; + x_filt<y_filt+x_dim; + x_filt++, x_res++) + if ((x_res >= 0) AND (x_res < x_dim)) + result[y_res+x_res] = filt[x_filt]; + return(0); + } + + +/* -------------------------------------------------------------------- +reflect1() - Reflection through the edge pixels. Continuous, but +discontinuous first derivative. This is the right thing to do if you +are subsampling by 2, since it maintains parity (even pixels positions +remain even, odd ones remain odd). +*/ + +int reflect1(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) + register double *filt, *result; + register int x_dim; + int y_dim, x_pos, y_pos, r_or_e; + { + int filt_sz = x_dim*y_dim; + register int y_filt,x_filt, y_res, x_res; + register int x_base = (x_pos>0)?(x_dim-1):0; + register int y_base = x_dim * ((y_pos>0)?(y_dim-1):0); + int x_overhang = (x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0); + int y_overhang = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); + int i; + int mx_pos = (x_pos<0)?(x_dim/2):((x_dim-1)/2); + int my_pos = x_dim * ((y_pos<0)?(y_dim/2):((y_dim-1)/2)); + + for (i=0; i<filt_sz; i++) result[i] = 0.0; + + if (r_or_e IS REDUCE) + for (y_filt=0, y_res=y_overhang-y_base; + y_filt<filt_sz; + y_filt+=x_dim, y_res+=x_dim) + for (x_filt=y_filt, x_res=x_overhang-x_base; + x_filt<y_filt+x_dim; + x_filt++, x_res++) + result[ABS(y_base-ABS(y_res)) + ABS(x_base-ABS(x_res))] + += filt[x_filt]; + else { + y_overhang = ABS(y_overhang); + x_overhang = ABS(x_overhang); + for (y_res=y_base, y_filt = y_base-y_overhang; + y_filt > y_base-filt_sz; + y_filt-=x_dim, y_res-=x_dim) + { + for (x_res=x_base, x_filt=x_base-x_overhang; + x_filt > x_base-x_dim; + x_res--, x_filt--) + result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; + if ((x_overhang ISNT mx_pos) AND (x_pos ISNT 0)) + for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang; + x_filt > x_base-x_dim; + x_res--, x_filt--) + result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; + } + if ((y_overhang ISNT my_pos) AND (y_pos ISNT 0)) + for (y_res=y_base, y_filt = y_base-2*my_pos+y_overhang; + y_filt > y_base-filt_sz; + y_filt-=x_dim, y_res-=x_dim) + { + for (x_res=x_base, x_filt=x_base-x_overhang; + x_filt > x_base-x_dim; + x_res--, x_filt--) + result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; + if ((x_overhang ISNT mx_pos) AND (x_pos ISNT 0)) + for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang; + x_filt > x_base-x_dim; + x_res--, x_filt--) + result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; + } + } + + return(0); + } + +/* -------------------------------------------------------------------- +reflect2() - Reflect image at boundary. The edge pixel is repeated, +then the next pixel, etc. Continuous, but discontinuous first +derivative. +*/ + +int reflect2(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) + register double *filt, *result; + register int x_dim; + int y_dim, x_pos, y_pos, r_or_e; + { + int filt_sz = x_dim*y_dim; + register int y_filt,x_filt, y_res, x_res; + register int x_base = (x_pos>0)?(x_dim-1):0; + register int y_base = x_dim * ((y_pos>0)?(y_dim-1):0); + int x_overhang = (x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0); + int y_overhang = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); + int i; + int mx_pos = (x_pos<0)?(x_dim/2):((x_dim-1)/2); + int my_pos = x_dim * ((y_pos<0)?(y_dim/2):((y_dim-1)/2)); + + for (i=0; i<filt_sz; i++) result[i] = 0.0; + + if (r_or_e IS REDUCE) + for (y_filt=0, y_res = (y_overhang-y_base) - ((y_pos>0)?x_dim:0); + y_filt<filt_sz; + y_filt+=x_dim, y_res+=x_dim) + { + if (y_res IS 0) y_res+=x_dim; + for (x_filt=y_filt, x_res = (x_overhang-x_base) - ((x_pos>0)?1:0); + x_filt<y_filt+x_dim; + x_filt++, x_res++) + { + if (x_res IS 0) x_res++; + result[ABS(y_base-ABS(y_res)+x_dim) + ABS(x_base-ABS(x_res)+1)] + += filt[x_filt]; + } + } + else { + y_overhang = ABS(y_overhang); + x_overhang = ABS(x_overhang); + for (y_res=y_base, y_filt = y_base-y_overhang; + y_filt > y_base-filt_sz; + y_filt-=x_dim, y_res-=x_dim) + { + for (x_res=x_base, x_filt=x_base-x_overhang; + x_filt > x_base-x_dim; + x_res--, x_filt--) + result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; + if (x_pos ISNT 0) + for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang-1; + x_filt > x_base-x_dim; + x_res--, x_filt--) + result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; + } + if (y_pos ISNT 0) + for (y_res=y_base, y_filt = y_base-2*my_pos+y_overhang-x_dim; + y_filt > y_base-filt_sz; + y_filt-=x_dim, y_res-=x_dim) + { + for (x_res=x_base, x_filt=x_base-x_overhang; + x_filt > x_base-x_dim; + x_res--, x_filt--) + result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; + if (x_pos ISNT 0) + for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang-1; + x_filt > x_base-x_dim; + x_res--, x_filt--) + result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; + } + } + + return(0); + } + + +/* -------------------------------------------------------------------- +qreflect2() - Modified version of reflect2 that works properly for +even-length QMF filters. +*/ + +int qreflect2(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) + double *filt, *result; + int x_dim, y_dim, x_pos, y_pos, r_or_e; + { + reflect2(filt,x_dim,y_dim,x_pos,y_pos,result,0); + return(0); + } + +/* -------------------------------------------------------------------- +repeat() - repeat edge pixel. Continuous, with discontinuous first +derivative. +*/ + +int repeat(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) + register double *filt, *result; + register int x_dim; + int y_dim, x_pos, y_pos, r_or_e; + { + register int y_filt,x_filt, y_res,x_res, y_tmp, x_tmp; + register int x_base = (x_pos>0)?(x_dim-1):0; + register int y_base = x_dim * ((y_pos>0)?(y_dim-1):0); + int x_overhang = ((x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0)); + int y_overhang = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); + int filt_sz = x_dim*y_dim; + int mx_pos = (x_dim/2); + int my_pos = x_dim * (y_dim/2); + int i; + + for (i=0; i<filt_sz; i++) result[i] = 0.0; + + if (r_or_e IS REDUCE) + for (y_filt=0, y_res=y_overhang; + y_filt<filt_sz; + y_filt+=x_dim, y_res+=x_dim) + for (x_filt=y_filt, x_res=x_overhang; + x_filt<y_filt+x_dim; + x_filt++, x_res++) + /* Clip the index: */ + result[((y_res>=0)?((y_res<filt_sz)?y_res:(filt_sz-x_dim)):0) + + ((x_res>=0)?((x_res<x_dim)?x_res:(x_dim-1)):0)] + += filt[x_filt]; + else { + if ((y_base-y_overhang) ISNT my_pos) + for (y_res=y_base, y_filt=y_base-ABS(y_overhang); + y_filt > y_base-filt_sz; + y_filt-=x_dim, y_res-=x_dim) + if ((x_base-x_overhang) ISNT mx_pos) + for (x_res=x_base, x_filt=x_base-ABS(x_overhang); + x_filt > x_base-x_dim; + x_res--, x_filt--) + result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; + else /* ((x_base-x_overhang) IS mx_pos) */ + for (x_res=x_base, x_filt=x_base-ABS(x_overhang); + x_filt > x_base-x_dim; + x_filt--, x_res--) + for(x_tmp=x_filt; x_tmp > x_base-x_dim; x_tmp--) + result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_tmp)]; + else /* ((y_base-y_overhang) IS my_pos) */ + for (y_res=y_base, y_filt=y_base-ABS(y_overhang); + y_filt > y_base-filt_sz; + y_filt-=x_dim, y_res-=x_dim) + for (y_tmp=y_filt; y_tmp > y_base-filt_sz; y_tmp-=x_dim) + if ((x_base-x_overhang) ISNT mx_pos) + for (x_res=x_base, x_filt=x_base-ABS(x_overhang); + x_filt > x_base-x_dim; + x_filt--, x_res--) + result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_tmp)+ABS(x_filt)]; + else /* ((x_base-x_overhang) IS mx_pos) */ + for (x_res=x_base, x_filt=x_base-ABS(x_overhang); + x_filt > x_base-x_dim; + x_filt--, x_res--) + for (x_tmp=x_filt; x_tmp > x_base-x_dim; x_tmp--) + result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_tmp)+ABS(x_tmp)]; + } /* End, if r_or_e IS EXPAND */ + + return(0); + } + +/* -------------------------------------------------------------------- +extend() - Extend image by reflecting and inverting about edge pixel +value. Maintains continuity in intensity AND first derivative (but +not higher derivs). +*/ + +int Extend(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) + register double *filt, *result; + register int x_dim; + int y_dim, x_pos, y_pos, r_or_e; + { + int filt_sz = x_dim*y_dim; + register int y_filt,x_filt, y_res,x_res, y_tmp, x_tmp; + register int x_base = (x_pos>0)?(x_dim-1):0; + register int y_base = x_dim * ((y_pos>0)?(y_dim-1):0); + int x_overhang = (x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0); + int y_overhang = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); + int mx_pos = (x_pos<0)?(x_dim/2):((x_dim-1)/2); + int my_pos = x_dim * ((y_pos<0)?(y_dim/2):((y_dim-1)/2)); + int i; + + for (i=0; i<filt_sz; i++) result[i] = 0.0; + + /* Modeled on reflect1() */ + if (r_or_e IS REDUCE) + for (y_filt=0, y_res=y_overhang; + y_filt<filt_sz; + y_filt+=x_dim, y_res+=x_dim) + if ((y_res>=0) AND (y_res<filt_sz)) + for (x_filt=y_filt, x_res=x_overhang; + x_filt<y_filt+x_dim; + x_filt++, x_res++) + if ((x_res>=0) AND (x_res<x_dim)) + result[y_res+x_res] += filt[x_filt]; + else + { + result[y_res+ABS(x_base-ABS(x_res-x_base))] -= filt[x_filt]; + result[y_res+x_base] += 2*filt[x_filt]; + } + else + for (x_filt=y_filt, x_res=x_overhang; + x_filt<y_filt+x_dim; + x_filt++, x_res++) + if ((x_res>=0) AND (x_res<x_dim)) + { + result[ABS(y_base-ABS(y_res-y_base))+x_res] -= filt[x_filt]; + result[y_base+x_res] += 2*filt[x_filt]; + } + else + { + result[ABS(y_base-ABS(y_res-y_base))+ABS(x_base-ABS(x_res-x_base))] + -= filt[x_filt]; + result[y_base+x_base] += 2*filt[x_filt]; + } + else { /* r_or_e ISNT REDUCE */ + y_overhang = ABS(y_overhang); + x_overhang = ABS(x_overhang); + for (y_res=y_base, y_filt = y_base-y_overhang; + y_filt > y_base-filt_sz; + y_filt-=x_dim, y_res-=x_dim) + { + for (x_res=x_base, x_filt=x_base-x_overhang; + x_filt > x_base-x_dim; + x_res--, x_filt--) + result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; + if (x_pos ISNT 0) + if (x_overhang ISNT mx_pos) + for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang; + x_filt > x_base-x_dim; + x_res--, x_filt--) + result[ABS(y_res)+ABS(x_res)] -= filt[ABS(y_filt)+ABS(x_filt)]; + else /* x_overhang IS mx_pos */ + for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang-1; + x_filt > x_base-x_dim; + x_res--, x_filt--) + for (x_tmp=x_filt; x_tmp > x_base-x_dim; x_tmp--) + result[ABS(y_res)+ABS(x_res)] += 2*filt[ABS(y_filt)+ABS(x_tmp)]; + } + if (y_pos ISNT 0) + if (y_overhang ISNT my_pos) + for (y_res=y_base, y_filt = y_base-2*my_pos+y_overhang; + y_filt > y_base-filt_sz; + y_filt-=x_dim, y_res-=x_dim) + { + for (x_res=x_base, x_filt=x_base-x_overhang; + x_filt > x_base-x_dim; + x_res--, x_filt--) + result[ABS(y_res)+ABS(x_res)] -= filt[ABS(y_filt)+ABS(x_filt)]; + if ((x_pos ISNT 0) AND (x_overhang ISNT mx_pos)) + for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang; + x_filt > x_base-x_dim; + x_res--, x_filt--) + result[ABS(y_res)+ABS(x_res)] -= filt[ABS(y_filt)+ABS(x_filt)]; + } + else /* y_overhang IS my_pos */ + for (y_res=y_base, y_filt = y_base-2*my_pos+y_overhang-x_dim; + y_filt > y_base-filt_sz; + y_res-=x_dim, y_filt-=x_dim) + for (y_tmp=y_filt; y_tmp > y_base-filt_sz; y_tmp-=x_dim) + { + for (x_res=x_base, x_filt=x_base-x_overhang; + x_filt > x_base-x_dim; + x_res--, x_filt--) + result[ABS(y_res)+ABS(x_res)] += 2*filt[ABS(y_tmp)+ABS(x_filt)]; + if ((x_pos ISNT 0) AND (x_overhang IS mx_pos)) + for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang-1; + x_filt > x_base-x_dim; + x_res--, x_filt--) + for (x_tmp=x_filt; x_tmp > x_base-x_dim; x_tmp--) + result[ABS(y_res)+ABS(x_res)] += 2*filt[ABS(y_tmp)+ABS(x_tmp)]; + } + } /* r_or_e ISNT REDUCE */ + + return(0); + } + +/* -------------------------------------------------------------------- +predict() - Simple prediction. Like zero, but multiplies the result +by the reciprocal of the percentage of filter being used. (i.e. if +50% of the filter is hanging over the edge of the image, multiply the +taps being used by 2). */ + +int predict(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) + register double *filt, *result; + register int x_dim; + int y_dim, x_pos, y_pos, r_or_e; + { + register int y_filt,x_filt, y_res,x_res; + register double taps_used = 0.0; /* int *** */ + register double fraction = 0.0; + int filt_sz = x_dim*y_dim; + int x_start = ((x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0)); + int y_start = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); + int i; + + for (i=0; i<filt_sz; i++) result[i] = 0.0; + + for (y_filt=0, y_res=y_start; + y_filt<filt_sz; + y_filt+=x_dim, y_res+=x_dim) + if ((y_res >= 0) AND (y_res < filt_sz)) + for (x_filt=y_filt, x_res=x_start; + x_filt<y_filt+x_dim; + x_filt++, x_res++) + if ((x_res >= 0) AND (x_res < x_dim)) + { + result[y_res+x_res] = filt[x_filt]; + taps_used += ABS(filt[x_filt]); + } + + if (r_or_e IS REDUCE) + { + /* fraction = ( (double) filt_sz ) / ( (double) taps_used ); */ + for (i=0; i<filt_sz; i++) fraction += ABS(filt[i]); + fraction = ( fraction / taps_used ); + for (i=0; i<filt_sz; i++) result[i] *= fraction; + } + return(0); + } + + +/* -------------------------------------------------------------------- +Reflect, multiplying tap of filter which is at the edge of the image +by root 2. This maintains orthogonality of odd-length linear-phase +QMF filters, but it is not useful for most applications, since it +alters the DC level. */ + +int ereflect(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) + register double *filt, *result; + register int x_dim; + int y_dim, x_pos, y_pos, r_or_e; + { + register int y_filt,x_filt, y_res,x_res; + register int x_base = (x_pos>0)?(x_dim-1):0; + register int y_base = x_dim * ((y_pos>0)?(y_dim-1):0); + int filt_sz = x_dim*y_dim; + int x_overhang = (x_pos>1)?(x_pos-x_dim):((x_pos<-1)?(x_pos+1):0); + int y_overhang = x_dim * ( (y_pos>1)?(y_pos-y_dim):((y_pos<-1)?(y_pos+1):0) ); + int i; + double norm,onorm; + + for (i=0; i<filt_sz; i++) result[i] = 0.0; + + /* reflect at boundary */ + for (y_filt=0, y_res=y_overhang; + y_filt<filt_sz; + y_filt+=x_dim, y_res+=x_dim) + for (x_filt=y_filt, x_res=x_overhang; + x_filt<y_filt+x_dim; + x_filt++, x_res++) + result[ABS(y_base-ABS(y_res)) + ABS(x_base-ABS(x_res))] + += filt[x_filt]; + + /* now multiply edge by root 2 */ + if (x_pos ISNT 0) + for (y_filt=x_base; y_filt<filt_sz; y_filt+=x_dim) + result[y_filt] *= ROOT2; + if (y_pos ISNT 0) + for (x_filt=y_base; x_filt<y_base+x_dim; x_filt++) + result[x_filt] *= ROOT2; + + /* now normalize to norm of original filter */ + for (norm=0.0,i=0; i<filt_sz; i++) + norm += (result[i]*result[i]); + norm=sqrt(norm); + + for (onorm=0.0,i=0; i<filt_sz; i++) + onorm += (filt[i]*filt[i]); + onorm = sqrt(onorm); + + norm = norm/onorm; + for (i=0; i<filt_sz; i++) + result[i] /= norm; + return(0); + } + + +/* ------- printout stuff for testing ------------------------------ + printf("Xpos: %d, Ypos: %d", x_pos, y_pos); + for (y_filt=0; y_filt<y_dim; y_filt++) + { + printf("\n"); + for (x_filt=0; x_filt<x_dim; x_filt++) + printf("%6.1f", result[y_filt*x_dim+x_filt]); + } + printf("\n"); +*/ + + + +/* Local Variables: */ +/* buffer-read-only: t */ +/* End: */ diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.c b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.c new file mode 100644 index 0000000..43a99c7 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.c @@ -0,0 +1,140 @@ +/* +[N, X] = histo(MTX, NBINS_OR_BINSIZE, BIN_CENTER) + >>> See histo.m for documentation <<< + EPS, ported from OBVIUS, 3/97. +*/ + +#define V4_COMPAT +#include <matrix.h> /* Matlab matrices */ +#include <mex.h> + +#include <stddef.h> /* NULL */ +#include <math.h> /* ceil */ + +#define notDblMtx(it) (!mxIsNumeric(it) || !mxIsDouble(it) || mxIsSparse(it) || mxIsComplex(it)) + +#define PAD 0.49999 /* A hair below 1/2, to avoid roundoff errors */ +#define MAXBINS 20000 + +void mexFunction(int nlhs, /* Num return vals on lhs */ + mxArray *plhs[], /* Matrices on lhs */ + int nrhs, /* Num args on rhs */ + const mxArray *prhs[] /* Matrices on rhs */ + ) + { + register double temp; + register int binnum, i, size; + register double *im, binsize; + register double origin, *hist, mn, mx, mean; + register int nbins; + double *bincenters; + mxArray *arg; + double *mxMat; + + if (nrhs < 1 ) mexErrMsgTxt("requires at least 1 argument."); + + /* ARG 1: MATRIX */ + arg = prhs[0]; + if notDblMtx(arg) mexErrMsgTxt("MTX arg must be a real non-sparse matrix."); + im = mxGetPr(arg); + size = (int) mxGetM(arg) * mxGetN(arg); + + /* FIND min, max, mean values of MTX */ + mn = *im; mx = *im; binsize = 0; + for (i=1; i<size; i++) + { + temp = im[i]; + if (temp < mn) + mn = temp; + else if (temp > mx) + mx = temp; + binsize += temp; + } + mean = binsize / size; + + /* ARG 3: BIN_CENTER */ + if (nrhs > 2) + { + arg = prhs[2]; + if notDblMtx(arg) mexErrMsgTxt("BIN_CENTER arg must be a real scalar."); + if (mxGetM(arg) * mxGetN(arg) != 1) + mexErrMsgTxt("BIN_CENTER must be a real scalar."); + mxMat= mxGetPr(arg); + origin = *mxMat; + } + else + origin = mean; + + /* ARG 2: If positive, NBINS. If negative, -BINSIZE. */ + if (nrhs > 1) + { + arg = prhs[1]; + if notDblMtx(arg) mexErrMsgTxt("NBINS_OR_BINSIZE arg must be a real scalar."); + if (mxGetM(arg) * mxGetN(arg) != 1) + mexErrMsgTxt("NBINS_OR_BINSIZE must be a real scalar."); + mxMat= mxGetPr(arg); + binsize = *mxMat; + } + else + { + binsize = 101; /* DEFAULT: 101 bins */ + } + + /* -------------------------------------------------- + Adjust origin, binsize, nbins such that + mx <= origin + (nbins-1)*binsize + PAD*binsize + mn >= origin - PAD*binsize + -------------------------------------------------- */ + if (binsize < 0) /* user specified BINSIZE */ + { + binsize = -binsize; + origin -= binsize * ceil((origin-mn-PAD*binsize)/binsize); + nbins = (int) ceil((mx-origin-PAD*binsize)/binsize) + 1; + } + else /* user specified NBINS */ + { + nbins = (int) (binsize + 0.5); /* round to int */ + if (nbins == 0) + mexErrMsgTxt("NBINS must be greater than zero."); + binsize = (mx-mn)/(nbins-1+2*PAD); /* start with lower bound */ + i = ceil((origin-mn-binsize/2)/binsize); + if ( mn < (origin-i*binsize-PAD*binsize) ) + binsize = (origin-mn)/(i+PAD); + else if ( mx > (origin+(nbins-1-i)*binsize+PAD*binsize) ) + binsize = (mx-origin)/((nbins-1-i)+PAD); + origin -= binsize * ceil((origin-mn-PAD*binsize)/binsize); + } + + if (nbins > MAXBINS) + { + mexPrintf("nbins: %d, MAXBINS: %d\n",nbins,MAXBINS); + mexErrMsgTxt("Number of histo bins has exceeded maximum"); + } + + /* Allocate hist and xvals */ + plhs[0] = (mxArray *) mxCreateDoubleMatrix(1,nbins,mxREAL); + if (plhs[0] == NULL) mexErrMsgTxt("Error allocating result matrix"); + hist = mxGetPr(plhs[0]); + + if (nlhs > 1) + { + plhs[1] = (mxArray *) mxCreateDoubleMatrix(1,nbins,mxREAL); + if (plhs[1] == NULL) mexErrMsgTxt("Error allocating result matrix"); + bincenters = mxGetPr(plhs[1]); + for (i=0, temp=origin; i<nbins; i++, temp+=binsize) + bincenters[i] = temp; + } + + for (i=0; i<size; i++) + { + binnum = (int) ((im[i] - origin)/binsize + 0.5); + if ((binnum < nbins) && (binnum >= 0)) + (hist[binnum]) += 1.0; + else + printf("HISTO warning: value %f outside of range [%f,%f]\n", + im[i], origin-0.5*binsize, origin+(nbins-0.5)*binsize); + } + + return; + } + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.c~ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.c~ new file mode 100644 index 0000000..accc710 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.c~ @@ -0,0 +1,146 @@ +/* +[N, X] = histo(MTX, NBINS_OR_BINSIZE, BIN_CENTER) + >>> See histo.m for documentation <<< + EPS, ported from OBVIUS, 3/97. +*/ + +/* Matlab V4 types should be changed as follows: + mxArray -> mxArray + REAL -> mxREAL + mxCreateFull -> mxCreateDoubleMatrix + */ + +#define V4_COMPAT +#include <matrix.h> /* Matlab matrices */ +#include <mex.h> + +#include <stddef.h> /* NULL */ +#include <math.h> /* ceil */ + +#define notDblMtx(it) (!mxIsNumeric(it) || !mxIsDouble(it) || mxIsSparse(it) || mxIsComplex(it)) + +#define PAD 0.49999 /* A hair below 1/2, to avoid roundoff errors */ +#define MAXBINS 4000 + +void mexFunction(int nlhs, /* Num return vals on lhs */ + mxArray *plhs[], /* Matrices on lhs */ + int nrhs, /* Num args on rhs */ + const mxArray *prhs[] /* Matrices on rhs */ + ) + { + register double temp; + register int binnum, i, size; + register double *im, binsize; + register double origin, *hist, mn, mx, mean; + register int nbins; + double *bincenters; + mxArray *arg; + double *mxMat; + + if (nrhs < 1 ) mexErrMsgTxt("requires at least 1 argument."); + + /* ARG 1: MATRIX */ + arg = prhs[0]; + if notDblMtx(arg) mexErrMsgTxt("MTX arg must be a real non-sparse matrix."); + im = mxGetPr(arg); + size = (int) mxGetM(arg) * mxGetN(arg); + + /* FIND min, max, mean values of MTX */ + mn = *im; mx = *im; binsize = 0; + for (i=1; i<size; i++) + { + temp = im[i]; + if (temp < mn) + mn = temp; + else if (temp > mx) + mx = temp; + binsize += temp; + } + mean = binsize / size; + + /* ARG 3: BIN_CENTER */ + if (nrhs > 2) + { + arg = prhs[2]; + if notDblMtx(arg) mexErrMsgTxt("BIN_CENTER arg must be a real scalar."); + if (mxGetM(arg) * mxGetN(arg) != 1) + mexErrMsgTxt("BIN_CENTER must be a real scalar."); + mxMat= mxGetPr(arg); + origin = *mxMat; + } + else + origin = mean; + + /* ARG 2: If positive, NBINS. If negative, -BINSIZE. */ + if (nrhs > 1) + { + arg = prhs[1]; + if notDblMtx(arg) mexErrMsgTxt("NBINS_OR_BINSIZE arg must be a real scalar."); + if (mxGetM(arg) * mxGetN(arg) != 1) + mexErrMsgTxt("NBINS_OR_BINSIZE must be a real scalar."); + mxMat= mxGetPr(arg); + binsize = *mxMat; + } + else + { + binsize = 101; /* DEFAULT: 101 bins */ + } + + /* -------------------------------------------------- + Adjust origin, binsize, nbins such that + mx <= origin + (nbins-1)*binsize + PAD*binsize + mn >= origin - PAD*binsize + -------------------------------------------------- */ + if (binsize < 0) /* user specified BINSIZE */ + { + binsize = -binsize; + origin -= binsize * ceil((origin-mn-PAD*binsize)/binsize); + nbins = (int) ceil((mx-origin-PAD*binsize)/binsize) + 1; + } + else /* user specified NBINS */ + { + nbins = (int) (binsize + 0.5); /* round to int */ + if (nbins == 0) + mexErrMsgTxt("NBINS must be greater than zero."); + binsize = (mx-mn)/(nbins-1+2*PAD); /* start with lower bound */ + i = ceil((origin-mn-binsize/2)/binsize); + if ( mn < (origin-i*binsize-PAD*binsize) ) + binsize = (origin-mn)/(i+PAD); + else if ( mx > (origin+(nbins-1-i)*binsize+PAD*binsize) ) + binsize = (mx-origin)/((nbins-1-i)+PAD); + origin -= binsize * ceil((origin-mn-PAD*binsize)/binsize); + } + + if (nbins > MAXBINS) + { + mexPrintf("nbins: %d, MAXBINS: %d\n",nbins,MAXBINS); + mexErrMsgTxt("Number of histo bins has exceeded maximum"); + } + + /* Allocate hist and xvals */ + plhs[0] = (mxArray *) mxCreateDoubleMatrix(1,nbins,mxREAL); + if (plhs[0] == NULL) mexErrMsgTxt("Error allocating result matrix"); + hist = mxGetPr(plhs[0]); + + if (nlhs > 1) + { + plhs[1] = (mxArray *) mxCreateDoubleMatrix(1,nbins,mxREAL); + if (plhs[1] == NULL) mexErrMsgTxt("Error allocating result matrix"); + bincenters = mxGetPr(plhs[1]); + for (i=0, temp=origin; i<nbins; i++, temp+=binsize) + bincenters[i] = temp; + } + + for (i=0; i<size; i++) + { + binnum = (int) ((im[i] - origin)/binsize + 0.5); + if ((binnum < nbins) && (binnum >= 0)) + (hist[binnum]) += 1.0; + else + printf("HISTO warning: value %f outside of range [%f,%f]\n", + im[i], origin-0.5*binsize, origin+(nbins-0.5)*binsize); + } + + return; + } + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.dll b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.dll new file mode 100644 index 0000000000000000000000000000000000000000..ba8f958d7f1efa87e2a91b914d4a59fa69a436ef GIT binary patch literal 8192 zcmeHM4Qx}_6+TW47%&hDt4fv92TC@iQ4c$TU>8<Xcr8eTX8GZ-HNhk=u~YwK_In}i za0_#3u^uT=wGH;u3P!b}j<!r>Te_`V+C&95T5S{S60jj_wd$cn5OrB`w<z9s@3WnU zSi5R!CvD3`=iPI@d(OG%ocr_4OU2d>x`~L)piG9S3q5OY{`~mIZVb=7<7YFebLyK5 zx=iceTu|flM}?M1xGCZd3iaMlC@c#*Bq5@N1b;|abAPoE3^z!&88fC8XI)o{MC(mc zXz!kvT)Ei>Xy$_HCeux1WfSP=+S%v}K})z?$oT>ylRnJj=j?7gSu$uWFK)!_m;vvz zT?<hqgWW_oGerow+!>s2+lkKRg-?&M$x@pPcZa6ofw*{|jXO7sK(yT!Y4FNkq8bJQ z;63z>4Y1p$s}Z3lyhg0Q*{H=+?Y8-KMV_-eoBQ1B^|ljr+al3OJz!pwTy1W>UeC?- zq(B&oyhbqOebM!L0-~}>`n+&O)RL|J{2TP#*CP|sXI+6Vc7S^9-EMV#vH996^JIwf zEOkw>MXf0=OcZpnv(Zz%aTB1z%H}cOWE{PQ%u*ItL!yLr7!lOX7PZA1AIr$XU2<`; zd|P{2t7<(7rxtasHNNYlnUp_fYED`Pf7fte60?f;TI;qw&{LcEGo05pQ#1Jv!F5Kl zX#1uTc`%q5^7M>CAwFbbI;zL2ik53`9-|UWh-p<UOo*fHVmh&URE=8IuUS|GJKC+S z@m&YZB)c}&wm(#usX1WwY=iaGZh29g9a`1e-b^MF?=@p|W3@J)3l^BE<^$?#D-0~q zVshDm!Q=Ms!FkM2bEaDR%NVn>Hc!{e5hOh1;?(nq$E+r0lD3fL7qb%B7r|x}q-8~B zM{qI=GrvV@XI{4w&&;|BsehooXdyyE;Qy)};ruB05$&6tAMwp+hDus{81hjI1YZ$H zMztn}n8%S3trkeUcgayJKy@V>nwpWPH`6BV03WfaE7=ghLIysfgW6U^T6d=B2p{W~ zr&MZ7FtX(cn+=tNEO41S<Z>aCdx$5}JJKH;YgEOt-Dj<hSd{+Y=mpP6e{f6{N6ut* zhUQ`!Pl+R#h_r)Kka17KGd#Fp_lnyYv{Jq)BaS34*}FfScjo<<uJyOC8cUqIuf6E5 ztO6;2P-7$awXb-UsV8DX8D)t3*@Ds?EkvC0Seg_w7OYi;<C+_MC1Rub$(Cf4QEdyN z*rF=wgqiQ?sohG!psQMqr88wK*(90|3h`b`TuhtQ+R^r+Ir&(=uhyndnLo$0SmOtY zt!xjg2bVnhBJUaM!1%^Z@mQfLHpBOhoeH%*IA_>BYHY5$f=`r)oyaIBG*QPBr{Wos z%NX(nBeIYocN!43vrcH&aH8NXo+f#QuZ#I#pzE-~xAeh;s4?kSRyxIm=XGJ$%V`u- zjcF+}k0s?fZ4|ouucSN!r^I1)RSd3FW5cQf)v=T(of1zcJ?TpW&$e1pVj6aXvr}TX z4n-$(s5>PNB-z+N93IrzkTW*C>*oN^D?=$y7m89a>!}~WGpog8mTVnX=EBU^;SM9h z>ri4q^g3L{3p8Jcr&%55={hXgm-N8|&-_JQK<4p`2}NsR%0oKHl)s%-7LTd1WBIc5 z4I-zml&6m^r6Fo_HtHvHQ{<!e8xbCL*nsF!J9R`~y)`V5dL3bbq;dZuB|YkEx{!~$ zh$$}{SAI9Ee0|gdgHuzJ=0X)~(0?WA8NhnYdg4ix9IMbj05m1`r96irr96jH;^Cxp zIyK1(gJi{_i<gtiAzZ+zqGD|>pUIN)bU-O39!gepT)d2GaKn9U;ibNu;XY=#FKc*# z#|6XPDRK8f?d;z(nS=3DrbMjs@)m3=*e55MG2cP$M{EdqJl09d3||swTC3Hw;{LHQ zJL6YPn=Y7(QI+JRb5OYWAx{CpBd9(WJW^PCmW?2W!`T=%<zhgFhYo6M^@)ag?8pa6 zbeyjkMn2ihky_Gonr-b{vR?VXd2yJ}H&~U+x=#=3i?QKcR2BO!zLs+XHtFexo9F_) zKsRV}x7i%93@Fh+>X|mYl2EJhm1t)OLi#c5vnf4}-*~v2QqQ#L+Nr&4Fxk#TzA$@Y zorh-;J-X1xx{T84dzlq<KWdJbm~Sr=u5rQK%!Zpy+Ae)eRjk=7QH@#S`W3|%q>-8Q z>LwV;-IC2Zk`T|uV;0k+ft)wnxVL+8*;(U{;demR%cJ97cAB+CIS<Ei(O_$0Q=k~> z!Fl|;InJ(<qA_-ZfJ?HCnnoenRdOk-fB7iCL$Y^MQtC@8`CawEhkRF!;O%i&tTVO{ z$8*>15LD${`--vb@$T2KYDN449NfrfKb+#bk{=4pnBDc~gPm;SzosvO;Uwrl{(96! zUm2^|ZHO)2TQq(H&f5PKEK=Pz_G+X|N!m??9qcUue$>Fzs&U+G;4KE;YTyeE{9FTn ztAQ^v@PdI~Y~Ys|_%Z|UHt=f<{8|IQ-oRHH_!<Mh*}y+&;J4>_R*Q)?QGtmHe6|&+ znUnh}a{W9dQKFp`xgN|)Yu8oR+%N3(Mne8jlS^pz1{6ssX%xbW9Q8LyLby?gctcH+ z@IXo9;*v(sG!i3`a76G1@TtHn!$^ooQ6(S?L9ZO~x6uYAxI>CCJA6Nq!@>@KC@T28 zQ9){}m!t-%0g7$@pc14I8*&LH4T}Y#V%6q*)@`U}68ngfZ*J$6Z_Io<bM@{GY*+{? zQT`FCDI$4g%p&`|A>k1z61L?nI5Tj!Zg=T!F1ok4xqaRJRdvkIx~*c~l^5}Q146Xk z8}LSKbc3EZ()3Zfa8<Wj+)yJ{eFBY-@l#Q=S@<Wzp>XKVXp1)zm9n+9QAGNx;zzv& zuPg*4FN$GjmP$|x$u@f2Jzj;5dx-ERqAmk=8W`RTbk=~q0}OA1Pp$djO9t%+eG7CL z^a7|0^aki0=pE1%P_B)Ew<3<ugL2IQeg$X)Xd`Gls2L=Kc7dJ%<=TIG&L9P)w#tY< zBsbC?3bw80yKzle*%6Q`^ix3J0e+t(R}g(y=Qa>Mr*oAN`XRV=(beH#OF(L)<6P41 ziGIo@93v^>ucueIRL!>m`$9TC^Mj1XVXTNY)v(Wx0TSE%a%Ci3FGZvDE@5^t)as9f zLu_|c<8X$WqNwzHrYbp58`|j)HIPhojSb-zDMa&4b*!%oM;mdb8UhlXG}TM~0MRc^ zjrD<WRKo8WQ;;8fqEf1>moOXA?1G5bkHK3DqLRErX~ZfPMCC|*%fm#t5dz*FHmMD^ zgkM6Rlpc~IAt_Mmur&lQ|6Ew+XmwT1n)T~#AfiRU{}ttS$p25@H?+^LXKNySHz0iG z-OXepj?W<Mv+@o2RQ#WCEylK25^YBRQEfI=&?<brUXSNJBv2LE@lT)-d9kDX)JhUf zhZKe+Kn`JVvZq81ALVia|CA~qWc~2I5CZ#tkHw}hgC^Slb_KBB`;ei1$^IoF`}6ir z`z!W0?7y*Ju>Z;af&FI3LWjfgYe%H?_oe5{rY!AP`sz|`>AYoC%M#0;UG}SG{mbT* zFD~C&9xp#yezknG{7cJ~<(HP<;q*G6a6avP*7<_-C(hTMZ#mC9-*dk29CJ={-Qrs4 zvbkKYdtFtoZLVfltLy8or(6gC`_0NK&Gwy}XgRv?ISxCXa~yLVcbsr^I=URcaCAF* z9dA3%J1#n|INo=B;P{(k%u!G}xpZ3T%u*Okw12Atxxc+GYSI6mYJwL=WssMHR)F{q hbN%H?+vi}3fU#DG9~Ad0p?cXL4(Z6m^S`MA{{R<rOOgNp literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.mex b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.mex new file mode 100644 index 0000000000000000000000000000000000000000..27bdfa705e1ebae6c035f07ed769ce46d939f390 GIT binary patch literal 2828 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 literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.mex4 b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.mex4 new file mode 100644 index 0000000000000000000000000000000000000000..18c5c15c3452f759b8aee5f631f82bc8ee99445c GIT binary patch literal 14698 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 M4Nrz5yUjWOFUVkEfdBvi literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.mexglx b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.mexglx new file mode 100644 index 0000000000000000000000000000000000000000..138ec340e1e3a676760f825d8da431ea6652e510 GIT binary patch literal 8934 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 literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.mexlx b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.mexlx new file mode 100644 index 0000000000000000000000000000000000000000..0a7d75fa7ae6e6315092a7051434e64e8d4b1ccf GIT binary patch literal 6401 zcmbtYZERcB89uJv5<=3H5EzUy-ANRRC{~LqjWAT2rf!Lpq*;@+KnQm?_DyW&k8*w8 z8P?E(R|(GqqR}7y!!*Q%G>L6YLsg|oh|;LEs6w!HQ{31g+J|u03d&ZbP%?SXbMC$N z&22!4o#@Sbp7TEEJ)igZoOgeydz;Va6Hf9AzaW}lF2qLYAGTPQjY5HCt+-KKFYOMW zI@)XrstB=4NV_b%1?7;}P)u22+m}HfLY+gfQ4Ro8Xb(WHh1>*Tx&hJzfm?AkMEZbc zBG)f-LNwa?MrhV=v$0n-pkO70ePutcgIojQFt3MP1#!~1kU=*WrB<N&Y%Ma?0PP$X z)3xH$D*Lw2g%#lU<zxxbDjLLXz?19*QY(714*DJpbRGk2#mMfF7V979A>_e7@Zd*0 zc+7*-9{dvze#V3I9{juqANJti0I$b*IBxd;sK-9#!S8wSUx1zY;QW<<+rDFwi2v@v zpLnoPw?5R{(bLr_)a~6nwsdr>JGO1>4-KdT9b39Xs!(Iem?_jzD3Q>!+cL?p8A~OZ z4;e;JdTbzTibS?6-J411Ml3AzTT_{lxGuB(do&|$Wjj-eJ#jsY;_bTGXIQ$&QoSOq z$Kv$bXT*}`C`vmGT{CsdRgY#GG1SzvyL2PX_El9KF@B_Kk%)o3p4=NVP>Kp!c2|d{ zifE<=^GG_arcKRYQ8FUBuwS^hd!d&>9-+o&j#0y~ml_{Xjv5Q|0yO!Dh#@agW6fTr z#s~LXYHa>H;e&qep+<!eHT>+PhMz~F=_gE#I&o^$H>pwor?x$B+kZ}tcHW?d9HWMV z_o(4_h8li9f~MaK#PItWHT?dU8h)E$q`ejYXup{nes|mDDPnx+hiv_(UH&&)f5dXs z``pHDXd79v2AcH-ZG6(!Gj{o98&`>OXavw#*1H;-{%)YgM|!(mzRoUhr$+yF*mljf zkJ@(Aw*SH|zXn|Ty$+h~Y_u`YQ<gsmy#j~PBsC7PXQ8jcp;sBh!Sc2c)j#lbtiD1n zQ}q>0o`^DgZmwFb?&_~FKlJqRaU63Kxp|aL><Q$u0b#aG>=lI-)%SBJ0=Z2hb7|<& z<C8UdFX%(ZCkONY%w2e3_pbiJ_^N}|{ms$C=wM|5UUE}`LQh-arhW$<e9OGu4ZiIH znPwL-o1;fuUMx#KbkWY7uyo7sF6J|r3OyIgzVhIi^6=?*LUJhYgf4JIf8^<#n`&zR z&v-k>0bZb38ay-l;oO0LgbpnDG7YG9{#w{dgQu<1jK4g1x)iFEhbx`!!<Y8ITMkvu zW-jHb%bwa_p5|yCYH;`SYY%7c%Hh;TaUwU>kel~m&?~Ss&SY85ltp=X4ikCaPhIu3 zJbwVAk{t<rqmHb-qKW(x9T~WS#g0_i5zd!uqBlRZx%hEuxMI&=1`}4CD-Tx6p}CTN zro4P3KGErSOXrHGX8&D0mAlYTUVZD#_)&Y54W*t+DKUq!l|!dX`rJ(7=<K;treg6N zQgM8tFt~7}DL*)0Ow8vl1ZGy>`d~4!Fp>40TaQ(qEHA$g&0yWg3@yCTln>RJDwqeW znday|*Pvu`XC}5+%geW-YTwzwtr*<w=k=ZsPL-E;v-6i{&&_^%Wrw`Y4569+8R-Ud zFnx-{lB2iKzl!gchV8wVX(<<HkCn!!Fs0|WV?N7gCpvxk&+j;vKiTJY5t^HQyLhTJ zZ0}C)**0sUFr9DDe#-h+vHmpvToaC2U1Az*bNzJnmpDkCx+O}rJNl9{FVQ1TE;qI6 zF|qqGpIm`LPgCB959#1rn8dj{1z&elb%UhjLnTaKZoI+w)B}qvb_Bkx=Hmfbb;AsL zj>_#{j9*i3o9@Iawtunjv-0$Y8GL~)&p(I#Zmn-2bCF}kID^<C)5n%t?1!-m?U%<} z5B_Q2%3`I^Qz`{MD6jtD{HDp`Tf5J$<05k!(4yRl&PrLRuq{xyp>JojiZRyr=xS`r z+=&Kx9z0W?p3q+#dQ?4i9OvH4JcCaipPa0pq3t+{CvunM8M=_mE>vA-=t6E&)pLe6 zf?mk+Dpz=s7u7;*epTh+%hl@8@k$s9=eMCho{1THTG31;u4`#i*`R2~7%n79Gbnln z9wbr{85l-%MN@FGh%3od@~*VJoG1x-y9kOcUA<~&sCOW=bEyjHuol;hMJ$g?htUg1 z{pyaLDs|Vxp|A3G1^26b*2XX<??#4VMzy5!q;8~wA~_OErtekOMAj)vPsf97ny69W zVm6{1N@`Sz#?od=Ay0{FX+_V5bv>d-F#c>Tkx2+#=u(EF#p9{4X2z0Zn5c9nZrbxB z9_Z>H*rEJbGm@~~tL)X{8C_X3s-!YzIu_B{f}thHbY*DG=(;td!;J!avHjyiEB{*k z@P4cu(%k(P{=~*&b5F-WcgGfGqY}pL5UujwIDj(++oQ@Fj&|M%Ec@7g4=|5?DBlOD zBJaWcB|iiq<qRGzxMqm0H~?`~5SJkMk&*8szJ>VC07c#rxV88e;ydOfDl>l)B)(xt z;@gM!1HQ2qrR|-a_bO|*_YU5n+#UR0@b2ISA^wjtw!y?-=Jgwb>)}nd`%TM4F#SZr z)JC99!_rYFhfNR_!N?OyP%Ld4B53IGpu9fIoV-EH+*r!AjC<n9$Y()NW-YROAq0(- zRl)inHd96#o-HLEpfxRlXF?EnauLL$^CK0(WXjYz#IKcZ28-*<wc}b-UbiuneCu)_ zd>6v?CXai7G6~_@LrESFmOCIUBaeHA!oA`oa+$amxXMZ%_Xec`BkOU0u}!Yu_aP4N zb##=%a`L!O9bU-AI|>ek{UMLq;q|(B+?y1~AKP(wyOC#Kx##(2ra1cvMbanrFvQ_a zgF{hhuoL}JMj#Gv9vsSHh?B@+ib5P7-=dVI+D+O#j*nMh%KNNnC&%AjU>0*t`1`^5 zh+`ww$?rqn;l;s=gXeD7;pJRB6Fl=vct3OTcsA?<k1-M_(I4dn2<Mpn<GIB6%mEui zNe=tLw>~v_e3Q4~t>jKl|6W3&YZ@f4&qZ`>uc8c3I+<vXz~53lo?UFyNpFDnnggI6 zf7DzHCn-4O)}vEA1Mh^ef82-MV{U(aApG8O0-Gxfv~;o}Wp$f>QOor2Zh_dD9jlIC ze(~=5T!DJ>*Jj2l^Do*7^v6-ulV5(ZZj8<7N`CpvQZMj(qFa6$8FSllQFJAL?Q63N z{qh&3PVig5EVTl^{DrAO^q0R#_2ickH#c7VOXSC@xz{0p*bjdj@2d@~QSjV!@G^{_ z=h+_YUnU>Mvk5wG^J(uQuGyOf&zEcsw=CHn&j>3uiU=|eroShF`Ta5Z5Jh|zdab>T zPJ8^`nS7Y<7oqFzuM{s!i}lYLA7g)3Y81bAve1s5u{A3-iX+I-KX(@WzX|Q!D;O(# z$0ExA-1ny;?%3L&J@yYh_?!n{^x!Xmc_uS4mdQ{u`^Vo7#{QaI3&{4{fZee?1=#5i zW1qKq_;&%jW1;Py`kR5>vDIB3`w*~`*uL(;k9%;|gC{)rum}IjgGJad(`IILG#D0R z;qcum?|`wm9tk357fGpO@zjVGSLH22)iPO>b`IcL9qQexs)9EVHIhjro)DucBdn`t zO10yCTk9;hBY6+89Z5<zZnW^ktBdW)ZoxLl3o|;0xZ_?c?g(J#>VZ=kxpYE~ONJ$7 z#IqMM&91Z^8nwczu6U*s6kQaoly@pSrU`B>`04~UmyXyn#0hpSkm`=jBJ#?J>r$~* MbZ)6&tvk;9KYj+l5C8xG literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.mexmac b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.mexmac new file mode 100644 index 0000000000000000000000000000000000000000..803e6583c83e04ea9b0f05109f19d953dbc42767 GIT binary patch literal 26068 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 literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.mexsol b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.mexsol new file mode 100644 index 0000000000000000000000000000000000000000..38e58c724429664dd11336a5fa9c3009a83b19d9 GIT binary patch literal 7304 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 V9@P|MZwi7E+y>ZEd*d?PzW|(G^=tqD literal 0 HcmV?d00001 diff --git "a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.\302\265" "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.\302\265" new file mode 100644 index 0000000000000000000000000000000000000000..082a22434f3873021d859a0810de19df578a9116 GIT binary patch literal 73980 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%0DX`?L|4;?=_B+}`WStjK0%+PYv@z- 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 XUw`jfyYIK+d)c#omVP^NQV9P82~0C2 literal 0 HcmV?d00001 diff --git "a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.\302\265.exp" "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.\302\265.exp" new file mode 100644 index 0000000..b95a258 --- /dev/null +++ "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.\302\265.exp" @@ -0,0 +1 @@ +mexFunction \ No newline at end of file diff --git "a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.\302\265.rsrc" "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.\302\265.rsrc" new file mode 100644 index 0000000..e69de29 diff --git "a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.\317\200.4" "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/histo.\317\200.4" new file mode 100644 index 0000000..e69de29 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/innerProd.c b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/innerProd.c new file mode 100644 index 0000000..8fa1224 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/innerProd.c @@ -0,0 +1,52 @@ +/* +RES = innerProd(MAT); + Computes mat'*mat + Odelia Schwartz, 8/97. +*/ + +#define V4_COMPAT +#include <matrix.h> + +#include <stdio.h> +#include <ctype.h> +#include <math.h> +#include <strings.h> +#include <stdlib.h> + +void mexFunction(int nlhs, /* Num return vals on lhs */ + mxArray *plhs[], /* Matrices on lhs */ + int nrhs, /* Num args on rhs */ + const mxArray *prhs[] /* Matrices on rhs */ + ) +{ + register double *res, *mat, tmp; + register int len, wid, i, k, j, jlen, ilen, imat, jmat; + mxArray *arg; + + /* get matrix input argument */ + /* should be matrix in which num rows >= num columns */ + arg=prhs[0]; + mat= mxGetPr(arg); + len = (int) mxGetM(arg); + wid = (int) mxGetN(arg); + if ( wid > len ) + printf("innerProd: Warning: width %d is greater than length %d.\n",wid,len); + plhs[0] = (mxArray *) mxCreateDoubleMatrix(wid,wid,mxREAL); + if (plhs[0] == NULL) + mexErrMsgTxt(sprintf("Error allocating %dx%d result matrix",wid,wid)); + res = mxGetPr(plhs[0]); + + for(i=0, ilen=0; i<wid; i++, ilen+=len) + { + for(j=i, jlen=ilen; j<wid; j++, jlen+=len) + { + tmp = 0.0; + for(k=0, imat=ilen, jmat=jlen; k<len; k++, imat++, jmat++) + tmp += mat[imat]*mat[jmat]; + res[i*wid+j] = tmp; + res[j*wid+i] = tmp; + } + } + return; + +} diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/innerProd.dll b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/innerProd.dll new file mode 100644 index 0000000000000000000000000000000000000000..40ac89645ac3a1455510771bb92d2fd97ae8ade1 GIT binary patch literal 41984 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 N;_o5_{)bZFe*vJ{ro#XL literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/innerProd.mexglx b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/innerProd.mexglx new file mode 100644 index 0000000000000000000000000000000000000000..749a5b58399347d1cd26cc54ffb346fddc788855 GIT binary patch literal 17704 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 W)sXe;4(L7oI}02+{HQ{jF8>4DFN_)h literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/innerProd.mexlx b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/innerProd.mexlx new file mode 100644 index 0000000000000000000000000000000000000000..151b08fc4a221f3692d3c0f0ea612995bb487db5 GIT binary patch literal 4479 zcmbVPU2IfE6rN=(U_}ZQ6oWB~MgvhdK$=R?5K7rrv@H$Y<tGKM+uhsl;{G&u@4`YT zU{)jRwMv39K464E<OMax_(FUDYCwz+jV4ke5FQ{Y3Bj5)rZF4W@0)w4d%3ATaMIH= z-#KT_%-lIMJLh1iz18RQ2}OS47eteOAsQfGn{8VfL;#khVv$%V?aH6>^_ez5L@-ZC zdlz(FkK23(YBE&PJ_BMuz<$`thk(hn*MR4P7lKLk;91~WFzs`|is*}JibueYIm!i) zkAg9cX{pZ9atzKx5tsQeSgt`SA?JdtU&m!|HEHKMNb|*?70xy8!U5nBP83uxW{c+` zN1TD`G5Z&RS79+PAy7S5x{8htaUE+FfFy47;7$*Yc<?R{Haz$sa02t;ygB~+9{VRA zeB6Ui1OMo(hwJ|exa?a0cOHD+gN3$!TW52}h8Cf<wQpS4+^%hGZS4+)wQ%#g_K+sD zWF~0}tq($^^+Ibt6El<9j7S&SbhFE_Wrr;~#ek8_n0-Jkh8{Kb_1S!HO7Do8MzSDs z%BUAYhS8Dh4;M^^+^icpM$|N|*LX{d#^VOsdS-XhfEG~-oPZ8V5s#Wtn0s?MEoVjz zsxon`=?(1R3?ylo5=py*5{Z?AWPTNhkz|J{@v)CN`V+)R;?tB!@NXy)CxvgyemqB% zCge;cWPuWiJODY%ljvigBZ)2uQTY}@MCBy=kt!#7auRIbxml@HHg}J)-ShUajw3cy zoP=&@pr(j9nsr0Fg*CG>QoLAGTqE)mJv)bwOu0A0y=VAHq;$J@cj=bR-Bx~%6<S~| z>K-d2L@6|>8WXB9Ui@K>6`5!nIWT`yB|n}R#j>O`^t%K!__I6Dgy!9I`6q2%Vm`is zG;}%c^D2$DW2n61_e&wUf~FngbsrwZQZ9vVaz&VX>4r5pRvNqu(}8{~a<de<WrfD; zz8?0CmO|Ht8n514an9-(vj*>$21lDh69=9iYP2Gg*K2;VBBR#e<h40hZk%7+ysi|X z^&mRm@{L=O^7RE5tify7pZeR1jQg&X2CubRgA+cC^V|M2R7GyKNX1ywuXP{n;Rn@! z?%Anb9zJq}-|GbTk)ZnR?_l?aiWBnNmy3mR#r5sW#WfYrw?7MatH>R<j`E_j>Pz#+ zp82Oz=^5tINn_6fV*itwjBa!p+4$<fmZ*_QX8KnL_9WwGBJf;1kjw@8<>4>_W+Ivi zr1VU`v;=Df&PCP;L{q73ENY?~{0rz}=(&8#45aOI)X^MnZ(bK@2*k4K0l49W*~5!Q z>=~9*AyiV`jnv(9?m@Phk-QgqU-Ld>#(oS&Q@k_7zV925&b*f{f_cw#@eINH6)y5z z@Kf+Ue**kHjBK|<^0#9E%-;r{19Z8c+FDvx2bQ*VMwSIu244=Y46eZC`rtZ_LBf>9 z@)g15h$hE<P@M?o_NL8fFQjSMGND?DXf7dw@x2+i*wQpa(9lysc}dBZyr*QVKWo~? zffO3@It|LE?JRHBAd-a_ThRU=GqXkxz!ow9MvJDCF%iVgCxY1ew4On@Ox9Gp&z1f^ zEryx<%e~`XlaGUmNz4KA5-|6hdgcJR3(UQTkUq?XWnk*)$DAQER}|5g#J%9}JN=j& z<gE^7esN6h-z#9{cM3ja>e-KZs{BGOzccV5b3XK=RDS$zR`HmdWEGEk<+lZG&K1W; zo(Y}{l}}K~n3Oxf%5M}t<Nys0F&?=Wto-<vBacww5Pe7qu=3*>Bu_VP#_{9&c!87M z?+6uox8sN5?DroQq{f13s=eRk7skO1!_Pgg>Qi+2ZHM3X|M26Rg>&Gzyc^>1TZFbE z#v^|OhDrMIUgA6Skb@zl59jeIn3D1MmMOE7i`4u+gHElTX8Lux{FLnr==hE$(cTU) zogeQmj;ZJv{LUx<sp3&`FBHwjWjc<IyaQhVbAHT2=9oL)B;F10sUWbqnn2T&T@h4m z{`*E|eD?^%>g(8j{GL~}U+#cAp87J%-<=7J$5m9xFMko-m^Ve0{P$G}?9Y>1CBJ;t zyRoVYY@L7Vv?<J8sghs*vbeFTK5U&|@E55{{;6ul*7-fZM1Jg=dmn1>hURahi8E$X zt>C?>@C>Y<_t{qDCCP{Ntbsh`_|v`tnCFV*!}@u@yg7yIrX7!WgiW;~j)uaFw-1=- zkK_||;xOb=XPeb{eBY2b9$#eD@#l&Y(qjKp>toGhQ?2+?H6fLqHHl5N;w&1B&n}FA z!Ld*<&o6^{o=L1het~q?Bv+-y{zw1Y9{h&~{{`%>*~-A~8flhm!x*m)nD+#U<1Yqw z*LX`j{>wagIk3A1d==OouLam$Q*QIvcLFQod~^@q=fNUom^m}w*B6Y5{#b0K#+O_& zrN@J)Y~oq1Kb7r`rZo8q(4zSQv@PL{o3v2pdQHRYGHGh@d^){X^kt2hu9;cQsfyND zz1)H1JHiPhUD`KvhY^WS4=0i{f@7F^z+!@^(01Du8i3PMbzZf0bjq`7OE_67b~=@$ ptKd^5<bBngd=9Bn(JB7ib*HKTr!Q7n3(BypNT;bm5vf{x{tM98<Ffz& literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/innerProd.mexmac b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/innerProd.mexmac new file mode 100644 index 0000000000000000000000000000000000000000..6e11fcd46ce0701c8c3bffb83c5c0da7cc66b2a9 GIT binary patch literal 21600 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 literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/innerProd.mexsol b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/innerProd.mexsol new file mode 100644 index 0000000000000000000000000000000000000000..d761ed833d3cb0f87642b73c220a3f4617d88971 GIT binary patch literal 3948 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 CMfzR< literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.c b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.c new file mode 100644 index 0000000..6ffcb45 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.c @@ -0,0 +1,126 @@ +/* +RES = pointOp(IM, LUT, ORIGIN, INCREMENT, WARNINGS) + >>> See pointOp.m for documentation <<< + EPS, ported from OBVIUS, 7/96. +*/ + +#define V4_COMPAT +#include <matrix.h> /* Matlab matrices */ +#include <mex.h> + +#include <stddef.h> /* NULL */ + +#define notDblMtx(it) (!mxIsNumeric(it) || !mxIsDouble(it) || mxIsSparse(it) || mxIsComplex(it)) + +void internal_pointop(); + +void mexFunction(int nlhs, /* Num return vals on lhs */ + mxArray *plhs[], /* Matrices on lhs */ + int nrhs, /* Num args on rhs */ + const mxArray *prhs[] /* Matrices on rhs */ + ) + { + double *image, *lut, *res; + double origin, increment; + int x_dim, y_dim, lx_dim, ly_dim; + int warnings = 1; + mxArray *arg; + double *mxMat; + + if (nrhs < 4 ) mexErrMsgTxt("requres at least 4 args."); + + /* ARG 1: IMAGE */ + arg = prhs[0]; + if notDblMtx(arg) mexErrMsgTxt("IMAGE arg must be a real non-sparse matrix."); + image = mxGetPr(arg); + x_dim = (int) mxGetM(arg); /* X is inner index! */ + y_dim = (int) mxGetN(arg); + + /* ARG 2: Lookup table */ + arg = prhs[1]; + if notDblMtx(arg) mexErrMsgTxt("LUT arg must be a real non-sparse matrix."); + lut = mxGetPr(arg); + lx_dim = (int) mxGetM(arg); /* X is inner index! */ + ly_dim = (int) mxGetN(arg); + if ( (lx_dim != 1) && (ly_dim != 1) ) + mexErrMsgTxt("Lookup table must be a row or column vector."); + + /* ARG 3: ORIGIN */ + arg = prhs[2]; + if notDblMtx(arg) mexErrMsgTxt("ORIGIN arg must be a real scalar."); + if (mxGetM(arg) * mxGetN(arg) != 1) + mexErrMsgTxt("ORIGIN arg must be a real scalar."); + mxMat = mxGetPr(arg); + origin = *mxMat; + + /* ARG 4: INCREMENT */ + arg = prhs[3]; + if notDblMtx(arg) mexErrMsgTxt("INCREMENT arg must be a real scalar."); + if (mxGetM(arg) * mxGetN(arg) != 1) + mexErrMsgTxt("INCREMENT arg must be a real scalar."); + mxMat = mxGetPr(arg); + increment = *mxMat; + + /* ARG 5: WARNINGS */ + if (nrhs>4) + { + arg = prhs[4]; + if notDblMtx(arg) mexErrMsgTxt("WARINGS arg must be a real scalar."); + if (mxGetM(arg) * mxGetN(arg) != 1) + mexErrMsgTxt("WARNINGS arg must be a real scalar."); + mxMat = mxGetPr(arg); + warnings = (int) *mxMat; + } + + plhs[0] = (mxArray *) mxCreateDoubleMatrix(x_dim,y_dim,mxREAL); + if (plhs[0] == NULL) mexErrMsgTxt("Cannot allocate result matrix"); + res = mxGetPr(plhs[0]); + + internal_pointop(image, res, x_dim*y_dim, lut, lx_dim*ly_dim, + origin, increment, warnings); + return; + } + + +/* Use linear interpolation on a lookup table. + Taken from OBVIUS. EPS, Spring, 1987. + */ +void internal_pointop (im, res, size, lut, lutsize, origin, increment, warnings) + register double *im, *res, *lut; + register double origin, increment; + register int size, lutsize, warnings; + { + register int i, index; + register double pos; + register int l_unwarned = warnings; + register int r_unwarned = warnings; + + lutsize = lutsize - 2; /* Maximum index value */ + if (increment > 0) + for (i=0; i<size; i++) + { + pos = (im[i] - origin) / increment; + index = (int) pos; /* Floor */ + if (index < 0) + { + index = 0; + if (l_unwarned) + { + mexPrintf("Warning: Extrapolating to left of lookup table...\n"); + l_unwarned = 0; + } + } + else if (index > lutsize) + { + index = lutsize; + if (r_unwarned) + { + mexPrintf("Warning: Extrapolating to right of lookup table...\n"); + r_unwarned = 0; + } + } + res[i] = lut[index] + (lut[index+1] - lut[index]) * (pos - index); + } + else + for (i=0; i<size; i++) res[i] = *lut; + } diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.c~ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.c~ new file mode 100644 index 0000000..9f3d5fa --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.c~ @@ -0,0 +1,132 @@ +/* +RES = pointOp(IM, LUT, ORIGIN, INCREMENT, WARNINGS) + >>> See pointOp.m for documentation <<< + EPS, ported from OBVIUS, 7/96. +*/ + +/* Matlab V4 types should be changed as follows: + mxArray -> mxArray + REAL -> mxREAL + mxCreateFull -> mxCreateDoubleMatrix + */ + +#define V4_COMPAT +#include <matrix.h> /* Matlab matrices */ +#include <mex.h> + +#include <stddef.h> /* NULL */ + +#define notDblMtx(it) (!mxIsNumeric(it) || !mxIsDouble(it) || mxIsSparse(it) || mxIsComplex(it)) + +void internal_pointop(); + +void mexFunction(int nlhs, /* Num return vals on lhs */ + mxArray *plhs[], /* Matrices on lhs */ + int nrhs, /* Num args on rhs */ + const mxArray *prhs[] /* Matrices on rhs */ + ) + { + double *image, *lut, *res; + double origin, increment; + int x_dim, y_dim, lx_dim, ly_dim; + int warnings = 1; + mxArray *arg; + double *mxMat; + + if (nrhs < 4 ) mexErrMsgTxt("requres at least 4 args."); + + /* ARG 1: IMAGE */ + arg = prhs[0]; + if notDblMtx(arg) mexErrMsgTxt("IMAGE arg must be a real non-sparse matrix."); + image = mxGetPr(arg); + x_dim = (int) mxGetM(arg); /* X is inner index! */ + y_dim = (int) mxGetN(arg); + + /* ARG 2: Lookup table */ + arg = prhs[1]; + if notDblMtx(arg) mexErrMsgTxt("LUT arg must be a real non-sparse matrix."); + lut = mxGetPr(arg); + lx_dim = (int) mxGetM(arg); /* X is inner index! */ + ly_dim = (int) mxGetN(arg); + if ( (lx_dim != 1) && (ly_dim != 1) ) + mexErrMsgTxt("Lookup table must be a row or column vector."); + + /* ARG 3: ORIGIN */ + arg = prhs[2]; + if notDblMtx(arg) mexErrMsgTxt("ORIGIN arg must be a real scalar."); + if (mxGetM(arg) * mxGetN(arg) != 1) + mexErrMsgTxt("ORIGIN arg must be a real scalar."); + mxMat = mxGetPr(arg); + origin = *mxMat; + + /* ARG 4: INCREMENT */ + arg = prhs[3]; + if notDblMtx(arg) mexErrMsgTxt("INCREMENT arg must be a real scalar."); + if (mxGetM(arg) * mxGetN(arg) != 1) + mexErrMsgTxt("INCREMENT arg must be a real scalar."); + mxMat = mxGetPr(arg); + increment = *mxMat; + + /* ARG 5: WARNINGS */ + if (nrhs>4) + { + arg = prhs[4]; + if notDblMtx(arg) mexErrMsgTxt("WARINGS arg must be a real scalar."); + if (mxGetM(arg) * mxGetN(arg) != 1) + mexErrMsgTxt("WARNINGS arg must be a real scalar."); + mxMat = mxGetPr(arg); + warnings = (int) *mxMat; + } + + plhs[0] = (mxArray *) mxCreateDoubleMatrix(x_dim,y_dim,mxREAL); + if (plhs[0] == NULL) mexErrMsgTxt("Cannot allocate result matrix"); + res = mxGetPr(plhs[0]); + + internal_pointop(image, res, x_dim*y_dim, lut, lx_dim*ly_dim, + origin, increment, warnings); + return; + } + + +/* Use linear interpolation on a lookup table. + Taken from OBVIUS. EPS, Spring, 1987. + */ +void internal_pointop (im, res, size, lut, lutsize, origin, increment, warnings) + register double *im, *res, *lut; + register double origin, increment; + register int size, lutsize, warnings; + { + register int i, index; + register double pos; + register int l_unwarned = warnings; + register int r_unwarned = warnings; + + lutsize = lutsize - 2; /* Maximum index value */ + if (increment > 0) + for (i=0; i<size; i++) + { + pos = (im[i] - origin) / increment; + index = (int) pos; /* Floor */ + if (index < 0) + { + index = 0; + if (l_unwarned) + { + mexPrintf("Warning: Extrapolating to left of lookup table...\n"); + l_unwarned = 0; + } + } + else if (index > lutsize) + { + index = lutsize; + if (r_unwarned) + { + mexPrintf("Warning: Extrapolating to right of lookup table...\n"); + r_unwarned = 0; + } + } + res[i] = lut[index] + (lut[index+1] - lut[index]) * (pos - index); + } + else + for (i=0; i<size; i++) res[i] = *lut; + } diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.dll b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.dll new file mode 100644 index 0000000000000000000000000000000000000000..1a049c3bf5083d2f064ce1fe00c4e0672ce989de GIT binary patch literal 34816 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 TEVmIp6mS^`@9^(`wFLeTo{a?q literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.mex b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.mex new file mode 100644 index 0000000000000000000000000000000000000000..c84e89252efc483acefe667d486a952a0bb23b52 GIT binary patch literal 2536 zcma)7Urbw782`>~rv*oX0TUEt2gVX~m2HlPN}09;1|_sk23CEMOTDnh+unM6JMQ$3 zU0}W}KGdjj$!3HsAu%RoW^oyFE}M%Bh!0Cl$QH86HjO;+u*d1@>UZv+a<@?RBwx-s zzw>>+^E==9*DW2aO9?|msgYC+0LZEER0-B=#RVMe<gu9GV*>!Tkx6j79b;Sr07sE# z1;7IwagLeMI97`--HmZpAz1IX`Ry7phL>9P5v)H#$Yb@{n6ofHqoCNw(JIku(YBy@ z(VEd-LF-0)9c|EH2QWl*m+UUpEA~J**w+)>4GBT*kmYcCxKCABXRjPjDnpP^I|U_d zRuQw>D`Oo>?@RG=S}>aJQf5#zn~_XHkmE4}Zj%xzQBbknCJVeG?8%5Cqu!HA#+0~} zw8S$tPwd!$`Xp@aXBssRH@$Q#e{bnh{_cff{%n?j=hM1;O8b1Xs-51dYBzSO-U@L0 zF*yMp%6)^7>Vgfs^dMAD{0(sU&V3d89jxzl0R+b(U|}H#=C!b}jRnS`%EDf=F^pyW zN4vm%gJDh{?Lf8a^w+dP|4rtLTHM+PHs=1;!D;Dn&pI$mkNbNYThrsdWMh_|GpNVV zZO(7<Xqm!XhQIcHp+9fLKLbQNSgj&QmG@~N7S}Rz5jKu`Jr-YyV?JAJnFF)6K51hP ztxwsQ$xq6<z%|7%i`&>IO)h9N{I%G}i?~;oCL<=X7UR0k+S+KfiW)aAJh1oJ#XIJ* zbh-owX6barZEQ`a%iy=p2ktT1)&<<3%+J*6`i!;LbejH;=wvZJI%0MhF{pFlCSF23 zqk%Cvi<-+#PVO5v{_vUPoae&Q%N5SWnqIDOF08!v;oQb~wzz+PSg+~-h~5#5G4gH2 zjM;kUUIxffPwllj2uu)YKRj_qJ^ap+>YD_>7-RpkBlw7+HR7E@T`XtEyMP$$XE^$q z>py>eF-PxZbAh{AO{rG3zvdS|A<#N{`LsHE<fJ+}{WacC*fM|@UMFzOR|nYzyzdKm z-!+eG`W)W*hz`{G4lGUOS1yd@PuXule$ta2AA_Is7t6Ek+-t}1ZJ5QkVQDAM=U3<I zVW8y)vf6T+%;su6fzdB;-V-NP|6BP7xF=Wr7nxo-AH7`V)B0;>a=TX=^SAFd<Oc55 zUgN<xaSK|#n{b^vG<cr{@Gl$hNbBgG?@&AWisj8eX>c@Zo2~+KQg02O%eQ}F_p6ev z75$9-`gMHVe$yd42Cc1=ZQHX`;F}wVH|DVR{R*V-N|i77A#IHQfm)WDXSDmRGtm{q zzNC$Zs@rFBSA31p`6{3PCXn2b;5qGBct)$8gP@*o$2BxqYpI;a2Qm7S>37K2Z~Lr1 zn&Sn`rIBaMC(HBLI6xNHqi@9h=)pIu#5En!-3+fOf>#y6D~sT?2wq+U_Y}c57Qq{e z;O_Nsc)p&jj&r4CmK-M|q>pSPWv~oq;3%ZH`nK&{onG;hEWDSIg*2tSLPdd3E3}#N z@^HF|(5<0xu(N~pXd;6Hg97C#{&6BrO34?}#?MF-yduX{^nR|VzwiJ0dV3`4-Asxq zJpQOoa%qH0GL1=MCXu8EgqR}9NL}}8Z>TdAS&uy(<3*nNG=w5;y&d6>$hsm5ZuQY% zZz$5a?_aq#qf_L+ymqzm$)u!EUKFJm{`;7jbVgLHgb?~-l$Vq7<Zuh^P!*X^Ng}Uc gmnstGc}Sts5EUI+XliOIBXno+AUQs~fBmR`0Dh+X#Q*>R literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.mex4 b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.mex4 new file mode 100644 index 0000000000000000000000000000000000000000..eb9e1cc161c6cc5db5ec4883e58c33011ccc513a GIT binary patch literal 12472 zcmd6t4R93adB@-TSlx$CuoAL;fG~?75d~t)7&pYG<pA;J2%#FqRvS|8KnGHN(p^p` zDtnmZaG--7+L47yWP;}wqS(~KWK@RfP?uIJNT8YGsZ1zUJ&b!esz>8!G9;sV6pF3> zpLcg}AE++I>3CXZmiNEEefIfypLgFqN#}4mJVFG=gb-dFsu1q&81Zk$1pS|ke!DFh zZPm0$N{dA!ttoAV7D?`DeS|LJ-{viAHm)b4HMim7&ZrjAlF>*^Yl*jfr8N;rwnnw) zNGjRXZroA*jk?caEkt!Z{(M_POGS3Z;K&XU|5GiV)ON*VZOtv(-srAWJShWgeP;8< z%{9}7Xx$ZwMGPa#yJp=p>$j}0nKm0{`rMjlHrH(2_L&Z0S93px>mn^J@st*c#p1gn zsVL^EwJnx1rwDny{<FUJbE=qqK-C=SH*{BNS||e*edEQr7Q)d{qKOX*`VFm$;`B*P zIMbpecim=1_p*|-@ZQUCui}8;9EX1y2Y!Yt`X(%WMipL5e^8Kh_p<XZGKaTWoS!hA z{&CiU+&!nk(m&QoyLk=BF_-TbnV-&b>a?|rn3PlAxkY|~u{mZ>?Vf!hef*3Z@0vHO z$LTk8w>vGCjUq?ns^<6?xZZx7JO`2AL4D5JK|CWJcy7>xAm!SnYJ&QXHLna;{Ll40 zj9u>}`bGDUJ>5s~asH5b{^00SdibM-`u1*cTrciYg?daCr30S6@uRAkH|&wm$NYhX zdgK1fS?_-AqR&N=Eln+Zp48U2r;?FGJQhjeR7=INd+ttY@!eXC?P!lY@`xY7@h|^< z$)-Jx)8B}_B7M6;uYU;lk9zdRqa|7K?tDFb&a?W{!8!fn-PL_#``_|k0IPpP6(#hX z&r6FZz;Ed^KRsg3gK6>9Qt;owaT08>EEIfqe&4Nw`k^6=V+Zw@hYsqZ{0QdwrxksZ zw>^E6={Lgy_xT1__hr*PS=xVQyp4N9@X_%=Sg2{?e}nwL87gz*8BO=-WTW6&E;DR2 z(Sz$p9u2#0!{@v3+2IV$eOaIF9h{?i-+8#-hxnHeKl}1Y?*MYB`tuWq*6METiOBh# zRiW7heN)#@y2IYev?ye?c&YDXH~etFtZ(?qG}+$ia_U~IM@W<QS-lwJWVt5yzS|gw zJs~j{Y}kooVOZ8fJtf=u;P1P#IBtr}#eQM(?gijkw}xYZJ2N11d?EM;?l6vsH!~2* z@h^dox^)~U0-1qyj#q$x=+4qQoc*EuriyhK?8Uk}qY7VUz>Y_K8dEfBH>NBoy~}RU zj!!-PNC`{3kCaI8Zo6DQ`d45#uIO~AnL#_BbcYBoN6((Z^)sHnJN*@XcSzs%gaw|5 zGK{5o2Ik_Km_s>dE{6ogpgDeZOn9yN9d=?~omwz+A(xvz3x2LT!*rBoF4(!yI{sCK zzUjI%D<&%R>Q0ZoiF|%sq1R4U=ykN#aZSry=ob#y@>sKRKH}2oIFz|)$NKKn)MZ(F zhwx%AaML=)`t0b%7{Wbt4Yhi)K4+0ni{Tw?y+49~!!+5Jr-h5w84d?(pKIPz2ESit z?<>piWB23t>@+csA_fkJImfv;EXKTidH&@R&4t?J^Tu+ta(bHOl-CF9`91Pu&51cr zPqBN0`QrbkdAgtc`FtRMs~2-VqpnhxTi&`puWuHAUN822T6fmIK>Njet}q?fG8gT& zjCB{W)*aSMG1i;In#bWUhjQy|_{(Xg`)!R4!Lp~d%42rmyb}jqr*-%?)+C-)H}af~ zo;`>)ZpE619OjW7uFYY3F4JX92a)$b(Rr^u=kw4n>$#qH_g<JCVSAyz0C9}HP@80X zp}r8@*bBpV*j_02Ut@m|BG3Nd=KI3~@N><n)8WlrNLzcSPWuM!88`y8H(0%4dqO4O z6Ijny@SfRwe0F7?x>n_>E5z&i67n(jc)cn!VCRXJ$~_+Y{3f=i>(-u*eZ4v}D02B* zdpP#-+RR`m$Jw4;$M$UfQTYFblBJ_QGicAl6W|jCIvv|Hm+XAL3jT3HmX2`dl5PJr z@JWwGM?>ba$i=nxf9(B@wBK9vTnu}2pO59~V<L0Gwr71z<>_O4o<8o&)5mn4J|4)^ z$BsOG>|%ZFW_|3=)5qg^`l#pWV^5wwPUPw1Dc;A&G0(p$2-9&obIG1h*56*<U)IO7 zdHQ%RPapg9^znS2J`UvR<4~SH4(I9Pl{|gCk*AO2dHR@TebiYWZ%yCFo9)y0alyXn z`xr@2-^UXNrtjm;L%ff6zfK(H{j#6On;n@;{kiAM?&E?k-beenThKjyzaqz{@7D=^ z`hMN)$<wbzykB@f%no5K;++yagZBj98UIPF7w;h_J~QI;3VseV-cR82-C^w&Z0}v1 zr`OA@UL!=_fBRn&qWdjvCgQD}yLzf0da67vs$N?teBEz7N_v~ruZSY(-BKSCg2w;j zL(pfVS3`n+hH{baMo!T5{toQFnDwSles@ZaFNLPdSNst7zPeO%|M2l}S;vu(m+n3C zlvZ{h_ww2;KVJ9=GC#r3>4*CyZTStrZz=Oz`oHv>FOG^hDvP7u8;2GVTQ4ivdI`yO zVXT*}QXA`Kr_}#{)(fo<7k#$vb{T7jYV7>pwCh>UKh~AJht@@>Gvv*!msugNoF81L z8h^uaub-gl$5=1-@8{ka_xde0{Tl1#xA*&5aa1#ov0hjlS|90?y3d^!+YewrJN8Q0 zg?(jK`bS|WMn6W^b$>{7I>V0ZOYk$JQ*+SIl3nGx1E073$6nD~*GuGe=WENe-VxYb zU!pl+=Y)-uuEWnN(_aPo8*xf|Ji}V>J=nvaN`A@b(IvX8vpnSe-crpAJMYnxS!wsu ztdQeEIc)o;Zo}5ySsr#F{^MPK-3341_m<1tD5i_~2r?huX?#!(<>Z6qq%vPl=1XP1 z)M<P<;cF)OvhK0$N04`E-_$3RH*5;X1|w<+$@!ACpVS?{3!4$Yu}1Oka2`WH&>K%d z8dLOr*_Q(HP4jehX-KGjQ~!0$6?Sy`!&9#<341$BLII2_jaL_j1kD}h>r>dcDP|X9 zkUipjdUdI>&(d>c|8wA}cYBR<$6@FKAqobBaCATyn!MZKMYq6DL6f}(ecI$*(B~QN zH+duYFyq%ueg%At@o|F}G=L+9j7$C}3|=@YgcBhtx59SlfT@o|ml?V!2E7cLa;t@| zG`R{LV!X=W0rFYLc)e-A2^_w1ei8;(vfwFbniKMmJY+s$=mUoKBVT8S$%D|Rp(&p< zbg#h`9r`RZ`5{j8hPnb*pm9ih*gA(zo`B9Wj=ZIP6*%JM>?cirN(fiL<}TIXN(j6Z zn&QI03;B^Be;9g^sSiL`8oIa}8Zj*YF3bzrE2zg+4Q=_UHMsu}IDE<67DFeXVJk+U zQwA?YeJ;evaoj`pg*rIm<v98({kXxAYmU>r!QPGQu5%bE2l8*up%0^L$guHcp|2TQ zoq!&Nw(=P>xVsU29NO}8%iun`4qKU98e`Bnrzgi<X7WWCmoZ*xaQ`I65aU$_FWio? zo^d)yEiUBd4&y)$(tm@&eWe&_4q@Y4iE*EyRhs+5IFO%XF~$yqyZSM9;UGW6yAAH6 zT+SNW(}Qsc2i;qX@ruD^PlloCUgFmb?sH=tHS|mxCrpj&3Vap75B)7wISq|_r6xOY zr4k3ON!^I+%Zz)StDtd>Vv$V&#Y2tGAatF{$^M2AUib+jW<eI3{F8=%$tR)VUvkp7 zOpdVt=aQ4YL;k0xZl{Fsz@O#Q6EJPy)1xuIi1C$-BX27Q4|2}=sbd^@=Xi|q4#v9} zKgala#;IPjb`RBS)(({8UdrFJ@v6**^0at}amv%;^^8-V7EdvLit*Eo-!S@BumTM8 zOTBX+g1%#F*!tj)xPp9rm`~C!*!yruJ^{VSw6BD&Gc`tE*wiD?$W8h`4t?0rw2pk; zCP#g~9#g}&uh-Pb$JcM@qQ%fd%-+nOo?ZEzQ~nw>a+0yCuqV0=T|hc$YUJx*WM~Dp ze&j9dLZ1F=lOKStH+dSm!PF_}gsHvI`%H}-Xx}71)I+~nSD+SJH*FfB&ziap+N_KA zWB(O{(|g8`Jjf5dH~gc9_TWBxClN2i=r?;r@9IM2LEJF}jry%MP>33>^;TGI`dkJZ zvo0rcD>Un(_hDhev_bBLW?c^WC_HX(L9x!6v5;fofT{05BUhO-;uqd9brtlOp#{c5 z*pZFs!8@|l&NC3S^9&$AEB`<x<M5T^n;75Dc$jh2le2GU{4nDkj3cL<{VB%JGv3em zHO4U));tHs8NX%oBDc+pyo{GIj=8h^6s=%<CF9kM*D~I~cq8Nc7*8|a#dtU4ry1{M ze1P#G#&0m5WqgA1Nt@3I*nEb{_#(y^Gro%P5aV@>*E1etJi+(@#t$)moN=A;vy7i( z{0ig4jE^!t#`qnZ&lEPFS;}~j@nwuxGG4{_CdRij9%ekncst{V8Sh}chw)R4pJ%+E z@oS8aFh0)sEt{)uo2y>N%NW-fU%~iF#;X~xWxRp$M#lFso@Ts@@ovUXGv3Si0OLc9 z-(Wn;_ypsVHZKm?yjW#?5#x&)U&VNc@jAxq8ILiZVEh2%hZsN3xX$=l#?LW+h4Ep= zM;RYu{Ep2_gw0EW<~ss&T!I?uy+H5il3Hd@HJYE7N*Wob8ci<TidcOe_m04Mi6S=t zKHh_<Tg+EP!;?Z35nrr`npr~3MBU;EMLeB_)}hxb!q+K8=@9fLMLfC}@1=U^XBAQL z9%3LD(V&QD&*1Y9=1J^T#Exs=$VKc|#A7$%za9Ez=ntSzLBFbqKf<5IW-f+)T@m%) zhYmsi74rEdzMH5)pMic1+6(=6(6@2#E$9J7tdHX}Yy<SW3Z*2}F!cN2C!jY$|6CD& z@IGvAK;KbB)vw`y7&R9uB61ZReRDhn4S$})&<hl?^KICu&`Y7$z)uhw^AN>v;Q}G( zrxj5?4tqCry&_hm@vbg|-mQp*(BAXVDMfq@zs?V!F2|oK;#=Q=eKj=djr=V*<#1dP ze@yxu^qa83oOxD2quy`54oyD)9=a4hd!UCD@m2WuOhEsuB5Hq%dnwNk6|o$77Ii@X z0(vcUKlI1Y9@yy6pJL8G!Ed6+@Hwf#CmL4aXNp_UGkxNl_*FgqeBqp{h(A1vTHwc7 zp@?rh3ypl7kE1Whea1@Y)rxSxh^5mFT?PAp!CWDKXPqLpUqqf{gEbJqpK43c7w4a# zU;mDKd!bvQ@u$}rbniYz>_QxM1o|L2=5q#WbN&VNGU!I=A1LBE{0VVpJ#>#Ez79QO z2>P$FZjr-`N$7t-UmS>q{G68+u@&pHnEZ@jo_~hg4?%yRi0})DMfHxOr_VzRXw1*9 zpTj@q#D!1nJAVz{4($j3N9aoEQrx=%J~ilv74h&B&{^nZiYOwDd|Xc|q6{&MYoW0S z3rVkp#&fZ}A2}qTF(;M#k*5kBQ^Yq%Vbcix9mL&=epN!_x!6HE2;GI};uY9<p)-n@ z|IgrI=%3*E!k>kUHbG-;Jcc}rC!q%ss~mkqY}Y$jS4UtYp#KfMgAR;A{|9^yqF&19 zmx|biUKjU5e}Z{Kuj%(5ZXf16i`qM&AAld~do47ci|Uua`=M9D&$q#0=SID=z|>RF z^*frQ?K`3^spJbg5-CAv8`@fSrJCX`IBDM)P1PnzY;LV-YmO$Hb{Qw@;?0Rzv|T*X z*4!2&v<}}ZPDMAg#po>BzCM}U(z>Uv9UhxnQqg2fB(@_Fhm0rW_1Yx#Zn_Z>wwPlL zjhkDy$uA}wx+>m=?-rBZhD@4FLqiau+@iQ=LsLsrO4`9+RZ}yPH5}Abtw|;$FGw>A zCBN-lo02sdIdcnC8KEr5<>nTdAAB1{QKs-LuOc+QD;#fW+7*dyi8oN-C|%zei|>pW zGf>-R2D7diq2<~7y^&ZOrfV&}XZ*Z%-H1$e)<l}EQcNkG8wp9dKG7;~Ta#Mf-eh!b z9lo`^Wldf6nzgwQ+wjfqmOVHnr*e|XIh}7vMrF>;yAqh1Xv^NFB=tMi)bjie`E73L z1101disINj)V$anLG$nGeXea$3Rj2kS8j+!5Pi21i{R68^}v-Bk<`{i6j5b*n`K9E z$q+EMvj@HV1hXE2J$;oOGYAinR8=$<O+|Ba+)mSBURoE6w_5XAM;Xb0rjpA|t`&qd z+8aqxv9wMjDNI2wwB+oJcUWGtqtpCaXGqq{1b%Cx?e@Bm6ZJwOmz*J`uc{_FAu_4f zgt^9yC73(497mg5qqGRf9rA0lW;v%(q_q@eNoFUFLhaR!hi1KenBm9hFnm4}ZI17a eZb-(P*H9hRO|3GN@$BT>wr^{CF&f`(*8Jb-j2cJ) literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.mexglx b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.mexglx new file mode 100644 index 0000000000000000000000000000000000000000..afa47204a94a4429ffe5e0445887c2ad4adc53ac GIT binary patch literal 8677 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 H3RnIEd2TTP literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.mexlx b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.mexlx new file mode 100644 index 0000000000000000000000000000000000000000..a1d0336a619bd2ba0d1b6c8121c31ec6b228a746 GIT binary patch literal 6167 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 literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.mexmac b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.mexmac new file mode 100644 index 0000000000000000000000000000000000000000..2af0772afa269e50f02ee8bb37a893bbff06b100 GIT binary patch literal 26064 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 literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.mexsol b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.mexsol new file mode 100644 index 0000000000000000000000000000000000000000..2eef9faacd90c757c68f2096cab90360a283600d GIT binary patch literal 6872 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 literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.o b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.o new file mode 100644 index 0000000000000000000000000000000000000000..10fd617dae57fea2ddbca4246d509bee9c18a86c GIT binary patch literal 4636 zcmb7Ie`p)$8Gi3{Co5^%c$>F5%MUJ8VIEVBM-B68cav(lwn^-HiApjSP|lJPo5+$P zozly8juqQ~Bs2r3G?1~dIn*^ZaYshek!EeD5Eon;Mxbftb__h`f&b{BV;N+dQ|<Zg zURx*E^}2)O`JQ{9_s92s_uZZJ$>09{dm{QGPH{*$J%D>Qv$=GZ$E(1%he)m_5=d2i zszMZv8VS=7Bj<=lBW(vF%WN5y8ONVwqKyY}^;m(FWg}w5az?g4b%d{cI)?C<ibUQ! zkRZm&u`))CbShUa<kK;{qwo@QcmcTLw-O11Xf)Fw%bghLO(&x{Bj3A54ETy3`6iqg z4=(_p!d!eD#~+O*^(e>47+J&&haw@i+Thaw0ra5(h&ndk13rXP^i`lZM18d=SLE4D z^o0Y!8Jxo2gVTKotvDZcU#uKgi*@@-<uxM9Cr`e$votd%p(#5{Jx~3T)S*Rr(t7oq zX5dTYvCcheS|2`cJ`p4-bc(85hKQPC%9RfCzBKY7(a_C*m>pF0dH{D(XqXxu?oBZF zvwef$!C|UlzMbvM@opjBGi=*s8Cy+`bH+NpGQNa-iuLR=uWGBzss6n(r}uniPVdyJ zocB9O{WItJwUu9v>;1B2u8bcG)RJVK*lJ>KwSg_@!SHeqR6qPhO+JqC+Nyf=RrRQ= z>e*6Rj~YR|A2_kpbJpN;4eHd;n_KP%wpZj9+Fh*uCu-O<5+fQJA%$!CMrAF^`<1n* zCn{@Ef4Zs`tf}%g$5&moY+s`mq5T<a`*F`Gvsmjni8_L(=mKi1W}Cep<$FX4Ro0~Z zwX!DVU#n^wN1ksvv6N%wnv^qZ)HDOF%G&ouJrBld#|M|FZ#YEBlQ&;APcHn{Y#Jwm z?gNo$?3jIj^8KhTc97@o0<OV+eim~X>ieTPbmlMSDV_FMzj^)cQjo^ZNz`+0Cq)Ji z{m6u-2YaZ=y8q7I0`yB7jal)n=JO$HIXUv8d2;fyX>IhNSDsz4Uu)V)S1g}r@;dfj zcY!pq4|kWAUU}<A=^FN7M(n{-v3l&u?-9*zknfFz=+@E>?AIyJr1gi#%~HWP)?8Kk zWax+QndtNF0G`CakA&X(`J?8$Q}U8!;U1cjC%;>4ZJ6Cg)O?YAOEh0sn*Z4UVEn%5 zM{wi@g#(BiERY}fH#HaSeca;gbNOtuCVC+Mse`D_+EElaw7}P}?|0l3d!mMQ#pa-` zdo5io5c&|_|88y5^EW6sxchp|JIM3xH%q0#=id0$gI5;oW;cpD4%I#QU0>Z2#eO`u z6?uO`zTj}_pq*!fJc);+$hA$>Kl@c8;XkL~*)wYEK1Tn>uA^7GOaC#miDUU}BByD( zp(PV~&d?e)J$ocqj~Ja@q4qYxw1GSfy$Ma%vI#w@rP8U#av43FOK1Z+-aKYK?Rh5h zIh90v(&?l5jArP)Ndzc|PCu)qvsx^j%nzir<B6D&&WbYV`+GavJG<8kpNr{9-4=Cr zx9)B0YU^IJin5IMhxT@Mx9?jw7&P7gOVp~TQfWielgV^UHxlSeE}t~G9jJM~o=xG6 z{DjtK8d*J)PU;4zW~9;O!-keVtR-DtsIRZzxSmh8|483wIEe<~XvN#G02F&cyoUz+ z<jE(G3htRa^_(<1c*ZmNoukrdcR{iD%Nm+EYvSu@!mJ6eqw%xGzm7&>jq=$VT5vS9 zu#RSiH8bmICRj7Ej%JiKqw8qmtckCq39}|FG+2)R<4}tD1bL50!MBET^D-%6e6RIf zvLkrLrb!7pT!zjw292L}cshBvxpcJ-m(L2_W%A5{pDo)xw;e7ov3&x3)MX!cxQy>A zk;j8LkDxA3M&tu(jL0ME^wbckOO8L)Op~YD;p!q0!G;%v?I+JOq8{NV-+^wf>?flx z!PObZPs~%~ldm#Pv){|mU3K}Pe!<movh&FoSbv()Wb9+K`-`|?!BIyL{@fo?zue+* z6@H?AIlz7zV=eo^R^cb+jW{cQilZ0555zpA1;#s!MaF9aFOzf?{(a?nNmm@MMw~jN zan`@Uh;_03FwY9V(N%ste~ITW9bo?sM$Ffa(*(aJSN=watA5Up`^=sP=4qqiAmKg| z{&XMuO=W+&=WqqrMIULA^>d7~jMo@nX1vHa#&}vF;$vRQyeode;mR$JZ?Hbj7-0-E zHVH(WM&OJqPJ_c0^qXq14#?x{aO^$>+;a12l90!?Bd%>f1PnX+s(I)SxH<Ga%u$zZ zZvhXo{tf6+PnkoH`_1O4qe|Fo!CP2=0leDHq4zPLfF5?ycOS1~l>z>dn@<xhFrR^5 z*l&Y3a{L}}tV@|gUt|uyDq+VZUjyp{;K*C%Fk<}#mlWuQ9qZ={u-*q=aC7KQhf99w zg*^^l=jgo);0N6t`iR4&FrHJw9t8KZz6g$WE_3J`94;ZQSJ=0KYplNrUgPG_Z*sV} z54@NQ)!`D>ko=4qBjVWCu|75;j*VC!8xhAwtdETfBSP66NE>j9-=5+jDgF=e;(Q1v zeC*$|@F9E|*vIG9KC)R7dJp<ek~6mb_u;Z_0n=UMU%19e*Vu54&%4H_UE_Aw_^NAc zxyJPvFCSlbjkT3=bRc0qolnJ#{&b3>{V5}nP3g&KCXHb_Lpl9;;^`j3Czb(-pGd}? zzZZJ@Q*nG$Mf(!TOagxu449p{a5|5#N{ka`TQ=L3I}*XaD}wdl4-(_B5Va?aF2-(w row<GXx2!X6O%G&}36ljqcGy;Y^%@B$beH|X>u9_41Bq;ZOib>-m3|Dc literal 0 HcmV?d00001 diff --git "a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.\302\265" "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.\302\265" new file mode 100644 index 0000000000000000000000000000000000000000..b4f1681fe804ee80a93ae7cb6138182fe62b5bb6 GIT binary patch literal 73639 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 Zeiy>`uhx6p(|xl)_+a|&v%ea`{|EMs#f<;} literal 0 HcmV?d00001 diff --git "a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.\302\265.exp" "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.\302\265.exp" new file mode 100644 index 0000000..b95a258 --- /dev/null +++ "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.\302\265.exp" @@ -0,0 +1 @@ +mexFunction \ No newline at end of file diff --git "a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.\302\265.rsrc" "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.\302\265.rsrc" new file mode 100644 index 0000000..e69de29 diff --git "a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.\317\200.4" "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/pointOp.\317\200.4" new file mode 100644 index 0000000..e69de29 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.c b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.c new file mode 100644 index 0000000..b84f4e1 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.c @@ -0,0 +1,56 @@ +/* +[MIN, MAX] = range2(MTX) + >>> See range2.m for documentation <<< + EPS, 3/97. +*/ + +#define V4_COMPAT +#include <matrix.h> /* Matlab matrices */ +#include <mex.h> + +#include <stddef.h> /* NULL */ + +#define notDblMtx(it) (!mxIsNumeric(it) || !mxIsDouble(it) || mxIsSparse(it) || mxIsComplex(it)) + +void mexFunction(int nlhs, /* Num return vals on lhs */ + mxArray *plhs[], /* Matrices on lhs */ + int nrhs, /* Num args on rhs */ + const mxArray *prhs[] /* Matrices on rhs */ + ) + { + register double temp, mn, mx; + register double *mtx; + register int i, size; + mxArray *arg; + + if (nrhs != 1) mexErrMsgTxt("requires 1 argument."); + + /* ARG 1: MATRIX */ + arg = prhs[0]; + if notDblMtx(arg) mexErrMsgTxt("MTX arg must be a real non-sparse matrix."); + mtx = mxGetPr(arg); + size = (int) mxGetM(arg) * mxGetN(arg); + + /* FIND min, max values of MTX */ + mn = *mtx; mx = *mtx; + for (i=1; i<size; i++) + { + temp = mtx[i]; + if (temp < mn) + mn = temp; + else if (temp > mx) + mx = temp; + } + + plhs[0] = (mxArray *) mxCreateDoubleMatrix(1,1,mxREAL); + if (plhs[0] == NULL) mexErrMsgTxt("Error allocating result matrix"); + plhs[1] = (mxArray *) mxCreateDoubleMatrix(1,1,mxREAL); + if (plhs[1] == NULL) mexErrMsgTxt("Error allocating result matrix"); + mtx = mxGetPr(plhs[0]); + mtx[0] = mn; + mtx = mxGetPr(plhs[1]); + mtx[0] = mx; + + return; + } + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.c~ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.c~ new file mode 100644 index 0000000..489f54a --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.c~ @@ -0,0 +1,62 @@ +/* +[MIN, MAX] = range2(MTX) + >>> See range2.m for documentation <<< + EPS, 3/97. +*/ + +/* Matlab V4 types should be changed as follows: + mxArray -> mxArray + REAL -> mxREAL + mxCreateFull -> mxCreateDoubleMatrix + */ + +#define V4_COMPAT +#include <matrix.h> /* Matlab matrices */ +#include <mex.h> + +#include <stddef.h> /* NULL */ + +#define notDblMtx(it) (!mxIsNumeric(it) || !mxIsDouble(it) || mxIsSparse(it) || mxIsComplex(it)) + +void mexFunction(int nlhs, /* Num return vals on lhs */ + mxArray *plhs[], /* Matrices on lhs */ + int nrhs, /* Num args on rhs */ + const mxArray *prhs[] /* Matrices on rhs */ + ) + { + register double temp, mn, mx; + register double *mtx; + register int i, size; + mxArray *arg; + + if (nrhs != 1) mexErrMsgTxt("requires 1 argument."); + + /* ARG 1: MATRIX */ + arg = prhs[0]; + if notDblMtx(arg) mexErrMsgTxt("MTX arg must be a real non-sparse matrix."); + mtx = mxGetPr(arg); + size = (int) mxGetM(arg) * mxGetN(arg); + + /* FIND min, max values of MTX */ + mn = *mtx; mx = *mtx; + for (i=1; i<size; i++) + { + temp = mtx[i]; + if (temp < mn) + mn = temp; + else if (temp > mx) + mx = temp; + } + + plhs[0] = (mxArray *) mxCreateDoubleMatrix(1,1,mxREAL); + if (plhs[0] == NULL) mexErrMsgTxt("Error allocating result matrix"); + plhs[1] = (mxArray *) mxCreateDoubleMatrix(1,1,mxREAL); + if (plhs[1] == NULL) mexErrMsgTxt("Error allocating result matrix"); + mtx = mxGetPr(plhs[0]); + mtx[0] = mn; + mtx = mxGetPr(plhs[1]); + mtx[0] = mx; + + return; + } + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.dll b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.dll new file mode 100644 index 0000000000000000000000000000000000000000..ebb8e27be25629ca3672b491e39e78a542809dbc GIT binary patch literal 33792 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 literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.mex b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.mex new file mode 100644 index 0000000000000000000000000000000000000000..40b51fd820f4573e0e7e44806ae6332688404d53 GIT binary patch literal 1181 zcmZ{jO=#3W6vy9eqD`?#4?PqrG|_`qwxtDyKtZ#u)>@iHv0yKP>5`U(WV7ajMh$kh zRnUVFVfCO0EkePIco#o<6ZRyCmjzKo=&{EIi}6i1sar7v|9x+M^PiWunaPZGQ>yBV zi`C_72>{4zb>l3?zk`Dun?yL;FjogiMMB{Djx~6So+l_1fFI3~eQWLQKn`O<dEA!* zjH7A&G$JFY?j%x-_ff56&el2y^Th+3?LzgT22e*)CsC(S3ThTLA6Ew8*oGNlA~%Im zEzHdpCcxDF^R}%zOLM*prhh?q)pjVh!zCNzMdwOYvmHH7&spAr(N2q=soUjJj3+I# zYUn=ZleVt8`jlrFtooE!DY<2<5;x0U!J)AO*prUgDC;W_a+}TXQLDKX?KC%{?e~S~ zV@N=#OHmj+JLZQQ5QbY&ry7KL4oG1YdgTR>r-9s~1?ZzSsIT1xSXukwBYVIY`T%`O z!X9?8e8L{3Oj(8gggs7K@(dO0NsM*Y3GNK|o&Mm~-u!v&eevl_<10Yp9l-cEAkzT( zt3UhYmEZYSyMsH5LZK)6&<c_F?hbA%N)3c)y%ml}K!U+-DA4G$d>x2PQR@KM!!=en zyp5Nr2{3dJ54Qadma#^St^MO4PW(Lm1^iIgKL2I5MzI#|eamw8f121YG9KB>J%;^L z0=_IkwSni;!1HO~`2+&D`3BFZNI|Tv0)(ty4|->T54yR{BIOzH&)|I-yf=d%$>2R1 zT*%;j1{eRw<GY&v9G8|kN#!J2IA!ZMyt1u3;+Uw}OL+M!?g$Z2sB`mdE}EX>iVM1^ riTDK=V#TTqJMniTnwo2u{Sk5ozctGiHN&t<np>_cq0{jUH!+YuZ9_Dc literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.mex4 b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.mex4 new file mode 100644 index 0000000000000000000000000000000000000000..269b11a904f88d2e6d7a1b4bfb660a375243d496 GIT binary patch literal 10318 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 NY)CvGZ+gng`5&5akKq6S literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.mexglx b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.mexglx new file mode 100644 index 0000000000000000000000000000000000000000..cae0bbe7962f35ccee63a2d0ada2eafb81f2f3f8 GIT binary patch literal 6933 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 literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.mexlx b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.mexlx new file mode 100644 index 0000000000000000000000000000000000000000..d7d3228073fff181621239d29cd7ab717cf086f6 GIT binary patch literal 4683 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 Gne|^j8U{lE literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.mexmac b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.mexmac new file mode 100644 index 0000000000000000000000000000000000000000..baa2bf9b434868966cf1f1083f01937d260200f0 GIT binary patch literal 25960 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 K2j}_g!~YKhD6jVb literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.mexsol b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.mexsol new file mode 100644 index 0000000000000000000000000000000000000000..67ba121978d515fd4bb2dfc711d5f198bb7281f0 GIT binary patch literal 4660 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 literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.o b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.o new file mode 100644 index 0000000000000000000000000000000000000000..78f58b05c10eb1913afe96d459cf5402ae6e9a71 GIT binary patch literal 2404 zcmai$Ply{;9LIkzlWkKiy2u_BQ=H<8Jw&N=k%$qp?N+ykT~^GYhsc;e!!|bm%uHYw zXGvN;xOmCIL%{{NAfeJ8^ro2NmR>4b#FHQ!N=tiCP$=kOk>L3Kz4wwGSDQX~`~7|A z_j$j0^WNmm{{8!3KM>Iq=-dRl0r^ro>BYQ`_lPlv^iAMU+OK<*A<J@Y&*exp%gUTQ zof*2J3Qvuv2+_nOu0GQyIa~skRdC!!sk*H3|JLB~RM7WFjZquLmQ^nmoRvzxR<<0s zng5>}ear##H!fi`#_fwiU&cIGxlLPEIcMn_b+>_Mo14wds-*gBn9LDHe}kgN{;#12 z(0NT*x$&HyB#QA`J_^OU(FGOL5;WX+54b-PzWDE0PH(tpqm&<ubhobs_qXo^JKyDk zen(L3lfyyh_-8cH`X$m$Opx$Deb)1D9rI?-(`2eelq`tsJc;i=xJA^u{)abDk#7=s z1CXClUaV<9t@8)ir_a-r_J?$SSkFbh6`gy|_n-ELb^O&)e6e-)sh_q6M8W1xCvk{G z`Wz)+y&42bpJJ^qjP4EGBUzx>fbLVeO$UQb>R|CE2ed<AW5I3e9H*e4e1}A`jlMyI z`~J*x>AWxJH=NG~#{Ig7`$}_BJV%(j*2Y-Wscc^-LL5b$+rEofke576bw6fwzs1^a zVV$?I&Wmj_8}@t6Qp0x4m&{yaxmmHR?u)!B3z^e=!K^eL*UZ~y4rH!uR%_K4oO-U| z*k&b%cidz6WTR1Qn7MMfR>-+{?SVSYva1Oq-do<s)iaUqYiHRT-E$v{)ashiedVl3 zEw-cP1DLpG;tytMpcopAVfvcsk70V6>5XC5HM2g3@ipU*VX~UZj$u-oNioBF^6(~b zQW@BNKKG=iSuc}F;acyaDiFVdS5A4cflG13M>LP$x#Xwz@Hpdm{D{Xeu1}Y=u50aR z{fPB4(T5n<*}X5dl^1-%;=Tlxb&6W`{Ao^m%v08x!8k8e=cw``%XQTA8EKU_qVV8% zJ)SqAeG1BXe$JHQBe&u4e7hceOncPlJpBou)O-&f=jE=yLUd1iA3W!OgrCv;1^63b z4}Meob?}_WCF7{(UHH$#9!YRA-viHiUf+b~m*CrB58l(h51#Wy_#>K6z-PlAJg+<F z2jDrMhM(4a44(I4<iTV8*^4-M&O;4T@!}r*RM>+*sJwg+u~uZ_6R`xvIH}kVsTd~} z`ymzMq+&m$Mzvz7^!%L?=mt7+@|(2}I)TpLEsT@jvWGF^aVAtdhH&VdP&^xoPle)l zL-E_8`1w%07K+~t#g8FY&8pbm>&<GxE!C=2TqzgTXFp%67ICCnXY6v_#wWbuopR=C z&3xHLY<oC*7o6n`{$oMr4clGNx~Ryv<Wa5S6SYdcY<n75lC@6YP<L%rZ$X~tie1Eq KpiwGdX8!=3P1EcE literal 0 HcmV?d00001 diff --git "a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.\302\265" "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.\302\265" new file mode 100644 index 0000000000000000000000000000000000000000..2e205853e032b592d8645c1a3543117e0c854240 GIT binary patch literal 70932 zcmeF)2b5D)+c*4ul5-MJ5LB?C0``hD6+4+sh8dj9gh>Vv3uZEznLs8Pk_-%rioGlL zh7G%7@4ffld+)tqZ@mBO+W%xmz3=CK-tYU~^{w@;hqd%~a&qe4`|LhBseC?bjB)Va z+Qu2u5C3g|<!|uc0Q}csd}cKMTicB$GdZj<&Tk(G#?)NzJdKZs-LZ!K?A!qh_)oUq zq<?*;rI0LS(#4-IG}oBOJ@1(w6ENl=)6X?QY~|F{8&mha?u+eLotkM)=M%V^mV8e< z-(5(hi)J9ceQV-DW+mOq{?7;gcen4e`~TLW-x&V{)6YDFy;e5Pn&WZVa+mtAUm=-m zPmdjyDzEsb5*o$?uNk%78F1j0!@rw|kY1VgzjERyP58Xp(vb`Afh*y29Ikq0d=L3N z^vdgB+ySn#v}G;XZwR+r<H}vGT87Un!0+Mebih@K-QL6J6|b7|_Qh}zk3X2leaQbY z)=EtG`8SYvapR~$vG8Bqis^Sv^xT)RV~wfRyBKigF5Z$U3wfxRw`AI)^%vskyee-= z!+CmjEAgra{q5>-oIaPKi#XmpvyE}_VYGM7=HFcYrzDihzjttS*VO1;_;%XDnCB%W z>iw(~YKYg32#<=z!lRJzD!cS9Y@O6)=c@QtZ)1r^nYcsm7D({XP@+CmHL53-Z)@xO z#ow1b4bjR`yrMB%EX79lTB6g!P2IUtrZfF-u4Uk(dO+V*@mYssiPz%m?0cGEG+FBS z*SFGlGlbUCrw_Xat9X>=WqrRMP?syE3vJ0%`ac}XzqIk9iM>bJ_9SB>m6Sd(Uf0+> z{l5rY6L?I|8n`N+nW9V1L_DYMSN*4Wk=Sq!jK=C~G+unNSKH8){zC{#xRv)p2>SJ0 zZ~v!zl{<6}ES9=k^j=-v>z@A<&Jw!Vt0UW@;q1v?x1RBzQi`MxXW{g4V~wVifZo@@ z{}hfAdd@-{8VJXr@fqicJ^xcaBe{#SFcF!a(0rz!-RnO+*YY$w3+0*D=eobWuYR4$ zQX$hbszW33pZ~+%G#NdYF0CMYWiJaBORbswzun1b{$%%(9BW1HHGgh0Tm1KXX)dOF z>Cyn%Yj#sGF~2MQU+pD%pxsNB2HL$=4d-*MnNlX7OJ<|VR3ZPjBWR9nuTb*nm1M75 z&+t0a|2`-XI2yNhFUh$F*}eWdVQAw^!*H<Ot3S>)voo3cci|!Ds_YdvE8F|(7nz&R zmHu`!eWLAe_qB@MYsD$unbhpoLUP`}KAV;|dSAM<D))+JdeW`Yd~5n&@1>=d4Gk&3 zhS<FZRnC=2_muv*r<M-(Tv7@SwR`n%j5n7u|2}nS$!O0dW#nphuYS>VXTC81pC@66 z{Ow$;%U;>b`W2DnbM60jufL_<H7a|xwx-+utG$--Ns-d}U;NXsHS*lbQcah=hZX-j zp{#pJcrV%9?)BdaWqU4!@<)uD|5hm5b0L%`oMq4T-wNf*x%NM#5?=o~l<m2YM+`Zy zve$nO<?>$3VvW<9Y(Tq%Q7|sRGA#eA)ZC<Km%8o$tACMpl#n@3N__cm=t3T?ke<_> zDWr=d#*9c7+PgdPc#e{<xGhqg*=(V#z`tl>x@<I}v%6Rt(UKmK98pLovm<i(+?K_z zWTBWI!R#2@a(~oF&G3czpZtpy3i-l_WHy^mB}+)c*uB`DEpab=KU?cks82a}EYv-W zS<ugS@$2s{|M~TMmw)s6`O81KJGA_fMULrr^2p_j7M!(y&!Y3qqDA+blNTn<qAmQ! z2_0kxFKjVVS#$QrF%}+ZPCob$V-7g@{hsnVY-h0D#DB4Fi@&c!ZGMfvulxHs`hLG) z|6x6U`Ml3xKOb<xvoAgVmNAdtWy}um7zfw1#k3FCm~g<KTU_<~@NXtgTxbR?zvt&g zSU>pp;h#*Lc%bRG{JftR?XcW93x<DULJOC_Fkx@wOjwBj&g;F;Mf>7jUpHoxfHAn{ zzl6cR+1_3Fn{hWmmG$r2FT}CRVI}wTI<6P%+`p{D^)GZx&xDbt>v6=-<A|Tf5kCw1 z`7gd5an!KTjEI!{FCYpey^W7_8(H@7-vln>N=-eNaTR87F89N7iOc=5d<2gpY4LQf zm*Xtv@(NhKl*=n(`4%qAGxG?S(K2(&*Mr!1%GZG7I6L;)CdPBgHXU3q+hn<nb2&YI zmXC?#S3r8z7GJ-GSm^sNGS|p=@}G&!9V8Bt&yk#8mgU)S7vg{Af04Ofc|D#V-A3-& zU5Njc|8W~xU*1N-*IkJJmH%-YS#Kiw%6ZK~ZV>6f$%jwec7pMbn7HkBXfsZnFxt5H zjY64T)16C6y~B7f%SSx2(PDd|r)1pAMs@bo6&sL66f!B}|5iU%=et|7Y2$xhKgBf{ zFz!tK6wY^cWz#*zB=K=lx)dvz;C^<o!2}oBrKs`V!BQAGNhw{^oy{8m_`a9n-#^h9 zHg{cd+vm7=)GzfG^zL~x{}0ecrE?`x<D0toihWOL{`!fBUml&-ScTTw2!6(ONNY}8 zX*V+;ca|?-elnWR-(#C^x!wQgXg*$$ByXIE)kpo*r5+8?Anix{(-r87bO0SlSE7UH zV7fA0g|146(4llSx;kBhu1VLT!|2*{9l9<ZPDjv@bUnI0-GFXLH=-NUP3Wd{GrBq5 zf^JDi(XHrcI);v=<LG$0HQk18ODE9n==O96x+C3*?o4-~6KRN6(J-y15n4kh(OOzZ zC(~VNJ&n=^+DKz`3T>isnxM^eDxF5B)7|I{x;x#2?n(EeGwI$mNn2=&w$e0hqwTbV zX6P(Bn`UVz&CxvVqH}107HNrg)46mWMW(9H?|ixs-Ip$)`_cXB0dyffkRC)2riai& z>0$J6dIUX^9z~C)$IxTxarAh)h@L=Cq$kmn=_&M7dKx{Qo<Yx~XVJy<Y<dnom!3z@ zr%UJs^g?<Oy_jA?FQu2!%jp$#DZP?jMX#pU&}->+^m=*&y^-ETZ>G1<Tj_1|c6tZB zlio$|ruWc$>3#Hm`T%{9K13g;kI+ZyWAt(Q1bvb|MW3e6&}Zp$^m+OMeUZLIU#73n zSLti?b@~Q<lfFgYrti>q>3j5j`T_lrendZ}pU_X~XY_OW1^tqKMZb;|q&jN8k@}Oj z7Ag&4v}J4`tO-W(8I>G#gQ7z!Rw|glBUlqpmlB0!S4}qAZrrD^qPIfjRO4d|jm%P; zael#as1)hRprW+~mMcdx?m4nqHxF!l7u#>Os^t5^ey1P2!T1nCA5~oY2QU)B&)uk5 zRiVu_+xTz9DqK=Hi8fm%g}x>9ju=-?juTGG=3A0k<BYQ(BV9$~tY(+%a=6ARcDW(h zVEk2Bt}E7La+y-v7`fuQqHJX1x+vQOuSaXJu`7*Hm<X1_*?ci=oB>$GxvDc5YZzvi zYr2dZw2M&<J>wpakG=P7wzl6kpht#V1lPu@>U1_;N^^~GAG?ta7<5g^0rZ1A$bQ3c zaSylO@uPPht{6d)#oBDL#RS*I=k|079}$sV5|R62O)*_6AtKu}B6C=gE)+V8?IqNV z9qD)LVnlw1WrVjz<j+{H9LczM$!6U=u<^-9eA^~<Uf=ijJN@82h7W1!Y_t*Se*m9x z{!}^EIyKhzwEMT)Sku^+og}tfG`1Z%D9(_Uh<w>DXCxxW*yUUjQFAVqGeuc#BpGCi zvey5RF1Fd|bsy~PNooCDFAvGMr>&4q+W<oI72j%`-UQyU-x#N>Q%;;qb|S`4>6DAt z<-m`+zS9JL)|FWJ$!=)^zu3)8@LFBdg~r0Sx=NNVwd*n__=#PYF}_pno{07y<J-pW ztsjEV=r>4V!NIy(mfqEMvr;BFQrBV0KT+3}L%CYlmp_fL-{H=ZNCBIaLx5kKa3_Mw zM%^*8X!}2m?_v4SY8ypzQTT?DI7>d{%B`ni@+rjzQsCms;cWxTjK+$5*L>+-nNZ40 zA~eU_Rah?Nb-nR#XjdTzNw=p9<L!q2C4Dw5e`VYbyOyUMvyI)@?e4R2<vZgdWaRvM zvQ$U1kW7`*1>^q7gOu0Ug9KZU6!Q9@$FY>M5Bg**A`P_4gFetMx8Xte*+u*xPnU5= zW1;t%FthEqIXvjxBKQRsTJ=Ha8ehn6WJCW_e82&0${c0CVUWB0jvoWBrV4UY6PS(U zs|!ygvl5gT4r(jdg_Dr*@noC83fQ16l{0~juuv*=nZSp*8$4_#a2^(lnSG46qwLdV zysa{w$#!h<kbIF!A}z~;<Q!|`(qzH?D%FMIXm4_=E8kr*-d@qj^l+%YzFc_B!skhm z1U@#^O^+p-Okf(;#3PABQz%wbADU#`kFX-r)D(?RN=#1}=U9A<HPtmFYK(IbmP6>6 ztxFj9bSzhnWZWlZvt}OH_)fFm)->1G8{ZH1JN@9@jt`Nkq53$kpkb2nZ;#J7e>l|8 z*ieT{jW$+CP&C>7C)GDrh3bttkvlcx>{a!R;a!ch*lrPtVPyCKyIj|RYy8D7H-s9D z*%QlkaanC%)<s$CpQ4L3bq#e1oM}OHdblZq<Lc$PW24h+nj#S!Kq%VqErJg{1A!X* zjdAXa%8fUKq7mcVAC-&O<-lTHA2orCbtM+gwp*IOC3Z6tjOdzJlL;QKt7K_MyROaz z_qXfnjBl9Tb4D~Y-S}>?d+Uc_TED5oe)cr7G*{P64x8Z3x+#|YAL_btDF34C%b%+4 zcet|<Qoyou2=Hq&CW=tAQHSfTi^pT3rg+5ohRcWQ#^$PeeArdLVI<bchlb{8q^S<4 zULv2ujTo<sOgDiiD~Gp-F|)CvF}525y?#QXQ4*oq)~>>GqEXiy{}8(h2`@4!(lp*~ z=zp)zhUKq}`;J}9Q;yljZtS-A*|_qZaewW*x;E4l3MV2>#vR9ll-JmU1b;+QXpBXW znvTL!xV{k~;dod?8mLC#n-A=AP0YA=+eQ2zPZu&bEc8ATCS<>Dz`zE#2wsAP>PUSg zQBH8a{p?0I^k2mX9Kfc`kL@>%B==DJ9X|#R4>!qCP2fc&UtRbmR4+kk0^@3$?82@{ z_;|8S;8JW*6K*hp2e6Q6ikZN3xEnldh%GF{>t+~liR=?IUUOYEGznWQlP|&{<WsUB zImd&zG+A(GgkyCL#_I{k8k><bG$L!OP3Bs&X&fEX26QOSxS`IT8kFWyn;{z%Q(>0o zD1_u2<1E$gy9O=Iuk4fxq%H^Abv+)ajIP82N|{Oc)&y`E*~|p*u5|q^*HzL9c#~a+ z()>re4y8GYf7#QP=4;x$ZE60Nep842*45Rr^tG;=jM987U56z<%5@we&f*qjBQBu) z$+6$DG(WT4-^j1ci_)`MqZKi~EV3Wdcb|M<7pD(5iEnuL=jB7CFLX8e6fT$MCsz({ zOY`6k<rNLpp+X@!-?%@N*VvPuIHwh(EC1+WlsOtY_hN9lhY{_L3ylfLDAD!O6!|~# zPkR{m(Iea5R-S~dARqNpmwGfngR~#*PgkHT(gAc}q#&L8W+i?eL<iHA=_+(pI)o0T ztI^fz8gxy%79B>{rt8pk>2NxNj->0+_2~w5L%I>&m~KKhrJK>s=@xWLI*M*ZN7FHM zEFDM3)2-<?bXz)sZb!GLJJ22JPIPCw3!O+qw2FplHI2|3I*HcOIy#x|%J{D5=O}HU zjWkB5&?XwE3EE7j(rI)$-HpzmyVE`Bo^&rdlkQEEw1uW<D^1fj+D<!YhR&k1X_j`< z9L>`%I)@f$k(OvTolECY^f>%aZzJ-RGZ+qM(zEDddNw_Wo=eZ8=hG$h0(v36h+a%D zp_kIj=;ibZx|Ci?ucBAeYv{G~I_Z51UV-vjr`!3rnK=_JQEjQW8u!&wGKcm|D4TB| z)0H*e*GXOB4`2m)SyIW?R^yFrO{d1T8Q;=eI$3C$k47R!-8SmV&%;Py@6pgB@P%xM zHY<);TPk2=5ZhfbvnDdLx~6_+q+zOY*TZpJ&=&9A&3G*x^SknB<ZOjzR!^5Pt4qT& z-<`vmUrnX*xml<grqY?L2@b`v<zkF;zBD(BnRZ;f`ywtG_jq<e_9<byue0sUnetr= zddK`9x24gYfG(SK7e1}mhNf@%llQsYZHEbLC$~Qux4&XaSGe1z>T&<U?NY@#-N{1Q z1Z#RGjK-l+>|Rzrvk8oEPj+^qIp}R9d%-_(Tj&|_Mq$1Jx<!I6!@~qV)ia^v=0Uw2 zy;Kv}Qn%|c-khG+%v{t?0>x56Z_r&^kKhb1-xNaft5m*-!C~n*GJzY>B%RZZ*5$x# zD?$w+enqOMYhD4Bg@p*Tq6z+#MPT5vQA9G>aD_)mK*DPz9<b9Oy)Pt$7IYG|nZOi{ z18ne8Te78yz+KqZDf6P|+fdBSHGx|+y71LAIPX~F?V3uWKgf6!<Yuw@7yamtM*6@- zpVOA^?rKFJQyTjQ-;`}|kH&X`G^sPW)^q`ZQeTNL1m0t~G&#-|5Z}$~LcMQuxoL@7 zw<}fbZZU!5+p_t*>^ix!D{f+&Hr$0V^9t!KCX8TE+C8#Ox_jIiZLOJ3<9*YXE+jL> zG*g57L<-YWOyCIyly|mljhnw&Hiv8KS&Xx3<zkI9qkM3je7STyB-=`uf@<9F<hqS} z0zM$A&P?WV-I>yS6Sxb()Hw!Wy*k?ZSp>Qpm#{UyKPr18rQ2vU=2_k;&R(O*%ec3+ zr8|)Hc+r8=G@jGO+eHHt{l=O`utN@4FlMyz_QNIM(epmiXVAFMp^pyd-&-O^lIe94 z*NE)b@JwimS;3~D^(4(9=)J4tKwZW^TT-#(t33AT#kPm=?X1s{O~&pz^3<5X)Fjd! zjvu%uYp>jk&z#xTmC7cI#Z23L1kuzsJbT6R;}=+x(mhPzEWM?SaSxCc#>JD33-+#% z3x-4NalJ>|(y1)6AclnZtnP2zk;OR$<R3kf?mLY8Qc8l?o6`5>2;svdxgte&;GmdO zq1*brN*o|weoe_&UJ*|{j^`ef>g>kZr`e127Rg%d|2>Xl+-_`&2lo~UO6>Xsg1F82 z$4PIfw?Lj5tjzbl0!$Z{Ob;6%p+1z7gLpS;fE(`;jTz&;X9G02D<-YC<~w^#a1HKb ze7EXSz91Qn|E%5*NbgA2lBwYVbB~ayH{Qc?CkTp<Qpi_~cOuT#ImUQ<Y6>*L^=#&W zWO|5=s;n^?o(XrcsibEwD=87@I=lB=NHYj?d+0g@AVOz%2_5X-+v13p&^CF;nEseB z@qgyu|9>qGtr@Mvl64RrOjoA=)8eo-$o~sk92(#M)8er4`9CcV8xF_uIX|8*q9@Q3 z=}GitdI~+2o<>in|M#>wY&c!d`?`VNNN=Jy(_84R^fr1sy@TFK@1l3pd+5FNK6*cW zfIdhcq7TzY=%e&8`Z#@pK1rXVPt#}Uv-COoJbi(_NME8a(^u%L^fmfAeS^M9-=c5R zcj&wHJ^DWVfPP3nq94;w=%@5E`Z@iAeo4QgU(;{sxAZ%@jDAmlpg+=|=+E>Q`YZj7 z{!ag(f70bv$54m*sGqvjqX8PE{b+x>0$q^~paUt(e~0D2!}8x@`R}m&cUI;0L+DVt z8eN^PLD!^f(P4CLx(;2J4yPmNNV*<fpKd@mq#MzV=_Yhjx*6S^Zb7%Cqv%$2G#x|7 z(s6V=-I{Jgx1|&4c658X1KpACM0cjU(1|oet7w>3(+I7hlV~liqm${bw4O$318t-+ zI)ygTI8D%II+aeN)9G$>2Hl<RLHDG4(V28_nxri>MO$f_w$XOlK{Ip~olUc}ljdli zcF{SsK#R0QyXjmykM_{{bRW7eT|oDv`_lvHLV6%Qh#pK2p@-7L=;8DTdL%uH9!-y- z$I|2I@pKVAfu2ZDq9@Z+=&AHHdOAIWo=MN5i|N_)9C|K2kDgDL&<p5=^dfpOy@Xy$ zFQb>!E9g>sCB2GXO|PNX((CB;^agq(y@}pTZ=tu++vx4|4tgiOi{4G|q4(1J=>7Bo z`XGIXK1?5>kJ88J<MavoBz=lLO`oC9(&y;&^ac7NeTlwIU!kwk*XZl?4f-a1i@r_Y zq3_c7==<~o`XT*@eoQ~1pVH6h=kyEuCH;ziO~0Yv((mXp`aS)D{z!kKKht06uk<(i zJN<+HNtauFhC0+o{nVu%4bUL%NBh$i=!$dz9Y|NAgXmzoGF^qPN{7&)bTzs<U4yPk z*P_Gd+H@VdE*(xs(2;aKx<1{2Zb&zx8`DkbrgSs9Io*P8Nk`GG=x92Ij-})1c)B&+ zhHgtI(Cz5<bO*X4-HGl@ccBw$h*r@st)>xLLnqN%T1O|-U1>dy(gxZ{V{{5_qH&s_ z&2%cAMyJ!==nT3$-GlB)_o6fD-ZV*DXo|MdG;O2pw1Z~oEIONJX(!FmJnf=$Xn_`K ziFVVubRO-Y^XWcxU%G(qNB5@((1r9sdJsLB9zqYLhtb375%frU6g`?ALyx7$(c|eN zdICL>o<vWkr_fXBY4mh@20fFWMHkbv={fXVdLBKWE}<9D3+YAlVtNU^lwL+Jr&rLW z^h$aay_#M_ucg<~>*)>jMtT#ynchNgrMJ=B=^gY=dKbN$-b3%D_tE?51N1@q5Pg_F zLLa4%(Z}f%^hx>@eVRT)pQX>y=jjXdMfwtbnZ80_rLWP~=^OM-`WAhgzC+)o@6q?^ z2lPYw5&f8cLO-RS(a-4@^h^2`{hEG5zop;NW%PUc1O1WyM1Q8g&|m3q^mqCP{gW=Y z`VDockNT-gJsO}v+K=|9E6^3`06LJaL<iBqbY;2<U6l@@L+NUCb-D&!ldeUF(Y5J1 zbX_`}j-VsydUSod0o{;pL^r0J&`s%PbaT1|-I9)?ThY;U3>{0y(eZR^x((fyPN3V- z?dcA5N4gW;neIX-(h#kpVOmWiw1!TiwX}{-rn}O58l?@ik;dp0+C<|tL7VARI*m@J zyU`hRce)4NlkP=l(!FVtw$K!9rD@tm+i3^Q&{=dg&C*Vqqj}mz=g<Nz(h}{abLl+V zL+8_d=)QCT-H+~151<R_f%G7HFg=7GN)Mxl(<A7S^eB2XJ%%1jkE6%aMf3!EB0Y(o zOi!Vw($nba^bC3?J&P`;XVY`&x%51GK3zgDpcm4M=*9FBdMUk(UQVx|OX-#LDta}& zhF(jrqu0|L=#BIydNaL+-b!zyx6?c5o%AkxH@%16OYfui(+B8-^db5%eS|(rAES@c zC+L&(Df%>hhCWN5qtDY9=!^6v`Z9fmzDi%CuhTc^oAfREHhqV_OW&jK(+}u}^dtH) z{e*r>Kck=1FX)%_EBZD4hJH)Gqs!>`^auJQ{fYief1$t9-{|l35BeuvZgmZHsE_)o zOFbH(LE4Y@rz_AE=>R&Au0#jX!E|N13SE^Bp+o6vbalE0U6Zawhtaj^I&@t+oQ|L) z>3Vd1x&hsgZbUbxo6t?^W^{A91>KU4qFd3?bPOF!$I<b0Yq|~HmQJAC(e3FDbVs@q z-I?w}C(;nDqG4K1BeaH2qP4V+PNuukdK#q-w2{W>6xu}NG(nr`R631Lr@PS^ba%Q3 z-IMM`XVSfClD5zkZKY}2M%!rz&CpqNHqFvbnxlEzMd#20Ez%P0rgP~$+C%5ledxY) z0o{-8PY<9A>4EehdN4hN9!d|RhtnhIk@P5fG(CnMOOK<+(?#?IdLliEo=i`nr_$5t z>GTYGCOwNTrf1W0=(+SfdOlr3FQ6CFi|EDl5_&1Uj9yN!piAkM^eTEay@p;(ucOz~ z8|aPnCVDfyh2BbUqqoyL=$-T~dN;j?-b?SJ_tOXHgY+T#FnxqRN*|+-(<kVY^eOr@ zeTF_upQF#y7wC)hCHgXbg}zE(qp#C9=$rH{`Zj%szDwVu@6!+Hhx8-*G5v&oN<X8Y z(=X_k^eg%`{f2%^zoX0O_w)z)BmIf~On;%j(%<Os^bh(cU2gRZb*PW}sY^W?ph4P? z_NOb*73lyvkgh}r(ZO_Ox(Z#D4xvNoYIJqF23?b`MTgO~={j^>I-HK6Bk6i{eYyeN zkZwdbrkl`B>1K3ux&_^mj-p%9(R2(QOUKdibZfc|-Ih+E+tKam4s=Jl6Wy8aLMPG? zt)gLCO(V31PNKE6j!ve#(s~-D4YZNQ=oH#S<1|5==~Oz6PN%!k8FY8L2i=qIMQ75z zX_B_k6m6wx+D6-H2hGq~bT-Y>PMV{6+C}Hk0xi-K?WS|-JlaF&(|zc^bOGIu?oSV( z3+aLMAbK!8gdR!{qleQY=#lg&dNe(T9!rm-$J0gh1bQMpiJnYPp{LT*=;`zfdL})K zE~aPGbLhGBJbFG|LNA~f(u?TD^b&e0y^LN?ub@lmmGmllHNA#jORuBX(;MiG^d@>U zy@lRNZ=<)<JLsMCE_ye;hu%x?qxaJX=!5hj`Y?TjK1v^>kJBgUlk_S2G<}9XOP{09 z(--KA^d<T-eTBYCU!$+nH|U%6E&4WnhrUbSqwmuX=!f(p`Z4{4eo8;1pVKesm-H+8 zHT{NuOTVMb==byo`Xl{`{!D+NztZ36@AMD)CtYq080t_T^;4I6G(dy2AMH<9pexb= zbRb=c4x)qU%5)XFDjh<H($(ndbPc*DU5gH*Ytwb;x^y@lK}XW{==yX6x*^?&ZcI0! zo6^nb=5!0XB^^b#qNC{;I+l*3<LTCP8@er>K)0jY(;euJbSJtq-Gxr1AzDSlw3<d} z4V^@5X&s$Rcct|-N*ib+jnOHziN<MyHq)te8l6seqciC4bPu{G-HXnod($Lsp()x* z)3lAY(+--Uv*>J^rJXcK^R$c3p#@r`CE88r(s{Ip&Zqm(edz+aAKjlGKo`;j=|S{h zdI&v~9!3wRN6;hbQS@kf3_X?}M~|nA=n3>hdJ;XEo<dKhr_s~t8T3qg7F|rwrsvRe z>3Q^gx`bXpFQgaIi|HlwQhFJ^oL)hf(ktmz^lEwyy_Q}_uctTA8|h8-W_k;~mEJ~g zr+3gh>0R`0dJnyq-be4J56}ncL-b+#2z``3Mjxk7&?o6r^lADGeU?5)pQkU-7wJp% zW%>$zmA*z_r*F_V>09(|`VM`UzDM7uAJ7l!NAzR*3H_9QMn9)t&@bs%^lSPJ{g!@5 zm(lO(5A;X+6aAU~LVu;d(ckGG^iR6n8Z^|QKI*3~^=N<wX+PSZu0U6$1L#1y5*<Vb z)0OEebX7Wp4yCKn)#(~^O}Z8xM%Sk6&~@o>I)aX*>(TY;26RKZ5#5+>LN}$G(aq@= zbW1vlZbe7aF?1{)N5|8x={9s*I)QFSx2HSM9qCSVXSxfWNJF%WhG{j8&>A|4*3vpU zneIyKX_Pk5MjE42XcLXo1Z}2M=`=c>?nY<O-RT~5Pr4VKN%y8n+Co#bm8NMMZKoYH zLub+1G)p^aj^=3>okI(>NK3Sv&ZYBc51mi<q5IMWbU(U3J%BEx2hxM+!SoP%C_RiG zPLH5R(xd3n^cZ?9J&qnv7ts^wiS#6TGChT!N>8Jw(=+Iq^enoVo=wl8=hE}&`E&`r zfL=&1q8HOk=%w^BdO5v<E~Qt}tLWAA8hS0gj$Ti1pf}Q+=*{#NdMmw+-cIkJchbA) z-Si%MFTIc6PamKU(ue57^bz_feT+U%pP*0Dr|8r48Tu@Jjy_LcpfA#w=*#pK`YL^m zzE0nuZ_>Bu+w>j!E`5)_Pd}g^(vRrJ^b`6i{fvH2zo1{zujtqG8~QE%jxM9$(;w)M z^e6f={e}KYf1|(CKj@!yxwW664)sw#b*V=KG)Vi={&WSpA{{^n(v|2SI+(6ZSD~xY zA#^BRjjm4Dpli~#=rFoAU5Bnqhtm;sBwdfLPdA_&(v9fGbQ8KM-HdKdx1d|nQFJRh znvS7k={P!`ZcVqL+tLYiJGwpHf$m6mqC3-F=tLT#RWwYiX@u6$Nwk*M(aCgIT2G_2 zfi}_@okE*voF-^9ol2+C>2x<bgYHiEpnKB2=uEmdP0|*cqOCMd+h{xOpcy)g&Zb$~ zNpmz$yXYKRpha4u-E=OUM|<dex)0r#E};9-{pkU8Aw7^DL=UEi&_n5A^l*9vJ(3<p zkEX}aW9f19c)Ez5Ku@G6(Ua*Z^i+BpJ)NFG&!lJ3#q?}?4n3EiN6)8A=mqpbdJ(;t zUP3RWm(k1V6?7@Rl3qoxrq|GG>2>sadIP<Y-b8Pvx6oVZZS;0}2fdTtMenBf(0l29 z^nUsPeULsxAEuAcN9kkqary*(l0HSBrq9r4>2vgX`T~8CzC>T9uh3WNYxH&c27Qyh zMc=0H(0A#3^nLmP{g8e{Kc=71Pw8j$bNU7Sl72<Mrr*$S>34J){ht0nf22RrpXo33 zSNa?Mo&G`pq|2@S4RxrG`l(Aj8lXYikM^f4&=u(b`^%I42lDeubPyd(SEj4bRp}5q zl&(fsr)$tP=~{FcU7M~$*QLYh2s)CkN7ttt&<*KEbYr>+-IQ)dH>X?BE$Jw_6&+2- z(6MwJ9Z$EW+t6+41iBsFp6)<*q&v}_=`M644bdtZrqwh;Yv?3eOY7)lx+|@xQQANo zX^c*xO*Bpuw3$w&)97@%8=XOSr+d&n>0Wdu-J2$93r*2hnx<{Eop#U+okeHUEbXK@ znx|cK4lU3kEzxc|m(HU-bUxjO?n@WY{pkMm0J@MKNDrb1(?jT?^e}ojJ%S!dkD^D@ zW9YH;IC?x?L{Fe6(v#@P^b~q3J&m4D&!A`0v*==aHa&-)OV6X{(<Sr*dLg}tUQ92c zm(t7V<@5@=RDMC!-L$UntF{CFc&-(%vCp+eleuJjx-d0eD9SG`nqBLo_*w1xWU&;F zMSAcK6yv?9tMK#liDY(mm2q#akK(tscWr5vtxRwQ`QhzUA=6cwQXRwlAUZ;=t$5QX ze!}u7-LN^4#5)74lJYv3G+qQ_-~DIIZrHCTj^9+o%A#z7AKt{NBe_yxesd8QWqdcx z$mct!;b$iCTcy4=re#{w4e56L7^U$Ygq`IVxbr!@!L%vehTj=A{@by8T`AoeO%`V3 zT{id>oj(Ix80Y4AtSXl5E~cB(seGXoFC)cImE&y#@_J$ud`EAvIv&cV3ng5w@h;#c zO>0izJ?X|f3&)Zd`%F!z@H!6T?o*q|;#D}jG%unzsxSA!3x7=D^Xha<cRPYrE<xT` za#gIV7Ryuf*;o?qk%`aG;TO#3NWe)PV6}1Aj8!$I<+UmLWpJ?GAi^S_4d=5sXYgvQ zX-XIK-Gx*-p4kV1kgth%g_EUdelC9Eblav$Rby-8^~PDh7F*Wf^*niF_N&7ydnOf< zZ6-KK?=ps8?JP~}koWlbO{}Uqfy+Wb%8Ot_MY$|<bHu)ix;9y?k>4xC8*fgME7d4A z<{b&bx#@!aZTa|o{1WDgHHi@3A~{!M=IUBRQw*_MDu++e1a`xP%X>^Dax-cCy5kFd z(^SX=KfoKX<zDf2(r~msgCCj1@2}ph!HQEvlU=p=C3_Q;mvZ1z@ynd)PW%of;_kdS zqNJ%ETl-^G<@@HH+!4nci(2Cn61eCXez(+HK@S;?Hjf)yg`bxV{t=Gi($e_($qf^d zs+)`HLN$KY(YPDymf={lzRbxRl!!;8ICC8DCP^Vko<+FT#HZA@;-Gie;|;gjM4oR{ z@;#34V)=spY<^84-x(|9Q+Ocac#~!_i(ip%!OK;A^RQ7IKfKwREVSBiMz9=>bk~I! zCrz4$Uq{7{UapH6(wCvsWU}eHY9w?`9p?Bjezd=m{>v}%oR%qd#1YK$?0EYkI7-P< zcd-tU+iHT>;V%CgbT@aE#uoHuZV5NZQ(u>BP2}@g{k8w#7D%#9#ZnFKZML4&y+Pxw zCR`Plp!EMzoA1Q)gttQB(RC+ia3Q75m&ov)Auot&Eo6{T@aiK8xNt{4lR`S(P>-Td z-jwciH`a7X$_+<%GyX%FOb{M;Xjep%!|%>woe9KruW)xE)MZ~rFc+7H_`;)OBRgPl z0}V(L3~b}QqF01Wqtu~Me~2C;RMlOaikBA~FN7WBc3bj2@@SWHt-!Q|MzryD)=LyI zzVDRh*FIFv$NF-sSUx-7_>)n*ovG7?G=7Q}4{_fx3qGVL#f>DpWE(tm&%`?A_UuFL zKdBwBghJAn2On=Esf|w^i_pN2m*Q-amBmZ*5xTzjW8H=JG~QEy5HwD#3Qv6;zod%1 zR-aklrn&SyWP$nwdE4T}rJ<DkV6w)WfBjHArdJ%2S5MtomqVl=ed6ka?bXq`Vl*Q! zYDS*eh=|))a@p$4T>Rez!jS^9?Iy{i@Bo#JZ_5~7vYs6q#v6f*d%p&7q9d(&tog1c z+g<FCyex3$r0Vos#5T6ewIlKQN{Mu5S0dkqH=r9=GE?R;^1iTiL88p~eARdqJCU_C z<V*OySzYOk(sML5Mr&|)qwx+T8=f)wh#y9^SAZ<Kx~d7e$S3-(&6_1&jQ_5>=4i5= zuW@i^#5=l6)$?+Q3i*XtgMiY2(QxuMEk7|#QJ>>Faltisp77w{?qhrd8B#N{<5+2| z21;;MJ!^HkEh`T+-n(Y@h*d?Cv(q*4cvm`QBOzavZqMYJ^|zEw;H@V8g;*0vmD5Lc zXICVLpVmGFC;b=sg=QnnQjC8&-r`+(UzpnuyV#N_hBx&Z<nwqiLS0>1Np>iYjc-7# zfK@1(P>uxN#^wn;D9DZ^j_MIb-I8OtgOJk|JLFldLi7et*W+jbRiB=l#!tyEz&)l5 zl10`azx`fLfw#)ZFEwil2&VP2@H^e!exZom2i_#rDbJp}e>or1zz9yMjz)4)<V$v! z#TzpGL$P@!KPy*8e2>J#@w%p}EOK$<HY0kF?$S1P{L8S1R6v-Lr2Ih9rk96}Z^pNc zaa?Z_ZyY!7**0OMlL%z|;;z3g7M4OrGHF{F`&LeNNsc8sBwjCFlj#|Yc*jriPN-{^ z>xwZ6nWcCUj%3_;ENuyh9~TctH5D1(j}q%rd_;QEsqT_iYMj<+U3DFTzp<^Yh>(~1 zgu9!DPdJ}0q!4=cK*&<h*V5WPJH~A&r+uwE1#0lC@2#yULGtZV{F&gxdQ*7*__P^+ zCw}j}z$$`q`o#*>g}H_5aKr>lws4e?wc!`Mr7l<0i}8INj#i3qH>w8>v6S*IMa4-T zQeKn!aw>K!q3|)mBjcskM!bQ}IB0nwo6u$BNa$!)p`5Vd-CbP>XA@WjA&L^ClA8oS zkRwZR;k*#eX1YQxQjzfn$Et7)$s_R_@TgPGWeoYS7WK<gx_}?6{$9hTs=F=Gj_}4_ zm)PrUs<F4{jFVWyd(5gc`hM#qep%hTimF5vUgCu}BR&_y(VCE6Q7<vh`wi)Nk<PBt z{N74UU={mh%GGN4`=3VknNOhzDoPD-ZyPzNUZj!1IaxeSlEHVQU^&oU%Cu@;%58{z zR*3BLk8PG_y5(2ZyYOS`S{cpS1UfC;)-Lr8yuoiI-X@c@l^pj;`zXdjcspGuegeBG zji)A+mZ#X5*6Jv04dtiF9HB?6P8VmF1I+oX3OSQ4biB2+s?*(tk{h9k+N^Gl*Ds|} zjWPa9V$t?WgTVVJAytD)y}-FoGJkzRT-E$iIx)WsCG{44pC^0Q$j-ImBDqCfE3!}d zF?Ij8QpruW+A4|nL9HCR3aKfd&!N3=SSZ5OCHW>&dgZ~mL$7=+DkyltxPK~2Ayf%% z70&5I<gp^|J~gd?X9M|8345dBpp|9gNF~=MO5=Ywp3Rr0+LFdN*WjCJ)mm3}_J}p5 zvrWaWaFvwOwrY&<>oCF3P`ql+5d6JdNR`7nFw7>`Se_47ASt`z+{lBATF;+}b4Xc^ zpWH?Pdwq2@+>uVr<^i;ra(=Rbg*s++K82SCO5ygIZ7AVLTEhwq!F?h#MH&vvuc(_~ z$kzC$8n02)hs1Xn7i<DY+q5gS4y`TuchEct&r>5_N9P=Z+p!r5Y8H~k;+^mEg?qPL zDXuau6>QX~!+1-B)~#zb!)vWa25TRnKu;!zn61<(jkj5ClrgELqW?pAyJ;dH??@xF z@Lw3KiuB;sf~XG2-PlJuc&<%&$P(o$s;i9iMqJZ}v|W7P;%cUbtF(?Cyf=j8Swzqv zzr!<FKoGI@cDrQFUDcT+a-C8ph2Njwfsf17WHy7E?^OMW8Z|00t%c+~6Fe>)MROQ6 z_DHTho57FHOHBf2tIv;<M2+Wjmr7F9vy>B}duJ0it0XLMoIKj78FaGFA*DxPM?IgE zqhU>0fpx0UGC{fH{M@%*z|=8JjvdOi3V54bwd6^t75m?n?7m#5^F36LGqEmeer=WJ zC9)0^?AGhHxwDjL#@jfCdVFsr`k%y(xZn`pYKZ$f8`Wmbb!%)%yo+9IsJjPGP%WNJ z<K2KtH*%&z8gChqs%H}t91^b-v&K|QmZNpAzy-P|qaw7m2@KN}i3qlz+$|jgE8)!D zU7@;~8ac9LG>0O^_U1#u5B1_FS0~D4if{MI<yEJ1^KA$P8d-qiTv}iS`b(n?*Xn;u z3*%Z86dkzpW2@81m$Vt$r+#D1`!(|XYwd@nc<}kIQYKeG$zzgus*ra}O^BIDAc^|2 zgi#!AHt7=yEDw*B@*h9EkBuc>jq^Z#eqOqu8L)31DP@_Vc>S0cBa4zp(Ho%IL#3JG z`#xS1i{VYR61L_LZG9q98($3qPAU~RgE5OWU~s?aE|CTuz8_VGH@UI;=z9YpD?uSI zmkdtUjpNC=<*&`@2u0knwpN(R*3`&}+j_JAaM?P-ws`O(=?lUeJ>{BWQX6x3W}$Br ziFppK%~Uj5M5oF`?OTvGAyQg>9$7h(XgHbbKq*jPl=pv@>n9~CoV>jvv!vl5!Ju`d zY1NwU%!X3a2`8$WOVW`dT>`!Va#LuJ^=*uylF1ll0g87g;LgUNAkdP>H?N$r)ghh+ zBVS8NX9+Vm_g9Via&^+Vo_QU%b(hDgnsc2f-K7bM*WuvgcuKUHg*UF@9NK0xZk2{^ zxsl`DrXM8@)aLW3>F>kn?tS0_(aNnd?003w)jn~1)k^5q;%yo4;GA+Kt#%t<yKR_h z?&*DCQ$V3uKzkJpwcBgiIAR`aoX@zqB;sk3JA@^p_4Y_>fIFLL=4Try8%R|)j(21D zj;z$NC9v`K6!d%q-j!4+4KLfIG`@!=b7XnxbXWQYD%qa<xHJ;ce-iJ=wBfBhZ|3o| zlrs!x75k7S^0rq4mtcH@B|Al?g6C5@DWp<hoNB2$g^}tI{vX+jfekU=QO&tjva8fB z&1ClR8S{K767MeJOs)SY0{Uz17FE->ygh<9Qy$>no&D!kqZJos3px0CES<9j?+B!Q zMxiuTbJEN?AKU6<F3ljXAjP?+-Rk^2R8^-TZQ#k2N}yRyV`)-HzQ_icF<ap|X5y(& z=h{(w@NNxD*&_F>Jxk_<a?Tm*LWd4&+QuxE`maV-U|8*6%YFY4t@Vtxb+_R5^5CGJ z5Sk}Vq23ml@$Z5AkQRqz6nKdvP8qf3k3WMelBNz~3>C|Pm2Mql1~;XpLvC&wEk_g^ z(qp(x+gw@{%&u#$m)bRRO|P+9T9y)A$R&CM*O!z$of%&6cm05@&s`Un5XxqfMSI}W zB;d3w(;t#P!g6c`2FNokUuH8X)r-cwA(>2*^v{_V>4UK;`w%SIa@h8MI&tali8mDs zDV&ShXACVu+<hj7@(#IDtk$^eXmFzl(zc&>kA941a^1y7bPf9skxC9PKCo0S3{?rV zv82Xk{MZ?%MK1t4FN}MVek%8Td#m6p<k#VH!SObljp#Z-4>>YmR8Z?|X6M^io_HK1 zk48u!EIXlZqTJu)8;=zd{7CJ_>(BtMoZpcyP5UIG(<-A4O3(JcqqbGBc@VnZa0uz+ z$;=KTRp61{USo>wLhXM~q1KCWfHx9S#YV-=n9;l9$<uBi-(qc!N);i~(p^fUBAGIQ z&w3v!&AHsyZT*9H>)pj71@YLHL4W$2(hprL8QV{|XstGBnc@4)w)HhYy@znA=*-BW zGSj!vbw=we>$NM}nNlB$HFeGnC8ikvZuLpLh^#~Ew$i6n#B+z1+;wP{;y||EV=Gx6 zvR$pYNHL~er8X;YUXt*&{n6#-SMZobG%R_4B3<a*HH|)OXF@1~Vp;DzI8$<EtTujh zw-zJ0xfxt=(fEsUdF5nlE~%DFkp6yeM65w7c;)tFAg(c@t<##CEZ)R6PqGy5i3;jv z`hBHuxeonM+9hSL*qvp|?|LM{TyLJ{KT;|^?CvnmURqPG&&yE8j|gzdvnx5Yf0)MT z-<wh2VK74S4BK6^S8X$1IfatkMeiz(Q103F?qtlOWDMgKLhknAWViJ4==ca;_k?5~ z#jBP4D{B}=C1P<?wrDK(0Q+r+@Z=i2$iBn)uh&+jbZpgC8z+FQ93vQwZIvWv{2w9& zv@^V+DrQW=h7f8%woZpWlRFXG+8bqSleRkrbtSEmO2?=hkxZX`K7F#M#c><&@uq}v z50u&~nk9BL!#7)tuC^|u0~35g-;66=D;Rme*$|wln`uX+6U1d9jPM?0yw+P%lr}*% z>3O^B)|$g2mp9JV?f<9<Ib-XJc#E)Hpa~8`&xz*6-W3|sQ>ryzMD=_Jbl{->%pHj{ zNJQ0VI^`vJTbIX^wwZv~`cd0|l18O~a_+%pm2>(Hupg2Y;vJn5-UQU!{y9ouoS;^| z<a+VcV(g|xmQ1U3dTDxc7T}O9<D5mPRLw(E1VeC6SEQ1ydQan2QS`X6XDB$3oeI<C z>T=!4EpOCdiN|a+EHEinu(yAPH07ke@%R3(fQ$1YVAI*6^rfJJEWI>RwUX{n+bDGp zXA^-1eZM}H{ywc|X9B`F(GyK4(XViqgbE5+<DHD1Z7yLeV_WMb*5LNi1#KxiM<YYG zt!!iLAeGb{D%~hM>Qg6;MB~Sxk`8J~foB3ErJkT&;P%Rb&%_G0TQGP{IceiMwBqlq zjohymy_vI-<wrB!eY<nb7l?-@=~cxW3N?Ayd_?LA!8y3Pnq&!mXlTD^J}u*}(yKe6 zw}Ve_&38A#(#B2iLl)e>Caygs#y?lXIgyv%925AuTm-X;<vgc-x7xl5&Xm?dqYOu3 z+##EqnkiPLI}l{X_q6R{lnS;S5y=R-gl!aE&bvo{hVdUM^+kCiQ97C6pLQf!11DBU zBc)821j#%ad9m~%M&{bFwOd0G4pHl~7JOKero^QWjlXi^zyuD}h(w;9=s-mjuTEPn z)1ATzi?)BweN3~e`25b6d=|q=pX%ne(JtdH!GHt+GU&M|8f_QtQ*rb?cB0=<t_@Xe zNkftpjqA&{BU3|d8$Ea^scjFq@x3fL3-gr#x+5`0Bjp9t>Aj6D#gtTNZPn4&A|(PV zR=!Pe@N#?39M-_<xN$Lrg>NwWp*@hnTeY!+O~bZoZQRB3L`jF1#(BU?L~ZSF&u|ne zrLHknWqeQCs<llOwx0vb(pg|@Qzj@Q0@9?a6dxS&uMSnE)5sc)`3}!bd0?yj;GyP> zbChe%-ednLfAx%Jh}816k{=wy>z9OLpSBBZB9Q#Y8(Qf=lG>07te}mznnbzz=AVr! zdopWlXU43FDuA?FQETRizJD0*1N~SSE<mO&Llp(&g6^|Y&*?3DpVDWl+`%1u&z5yH zlEzW9MU(E)c=?RZBn(BRZK>yb1qVlMKs!I&KkAzMR*YYkXH9F3`n6Mo${ib1!P6o+ z_UK^j8OLCW7`V+ou#&26<gHYb&|V_{pRszhExT>ko!Pq9R=TB5hzLUQ>H9`23mEuD zda86%_{#l0(R8T;uhDcC*p6G2Y?T^}**ROZN!K{{Hb}N7y<*0{woQmSR%%=X39hq= zUEBU6q(L)D#_7;GYz~(iksU~qL3Qk2X*&3~tSdHQlnXU*1iXyPOYez4q#?{Iv>A+P z1=SduL|v4lcQPuN>(<(#JH>`#dC>J;BrwLeJ4>$$vrx1TJUCdg6a=#gUZjtj4Q>rd z_g6h*xj)-I&=&t3Q}^E%v!#zsflum$2s@6kSdMAiw2os-E6KhLYHsLMkoJiGST+{r zl8rY;uSu3|-`hn9H))iV%fxl{LMEdZIw#%Hc!lO$(tm7&sLwEG;6>?KO`y;7r9|&o zj5(^D(U`#LGGf+>RE(-NVx4U;w3YlgWu*^Bt1A9?CCAF3{FI!S)of!<wUx>~jbx`T zf&fHKu9PwUGjN<~==axJfjJkAe$+P6LyD$LGK)kP?9v)#xfQRq!7Tc~5CK!#F@~L! zX6!QCZ#EnG<$?0ZYp}Z4pr<04E!S5}RiDeUUAW#{oLs(VhU9NACmE?-n<4m?Bk#Xq zk!>}ntvWxosy?CJQi~H2Mhr3rY@>H+d|OKf#YVqLV0~2~)7oBXdYK-%6zvG`4ozT$ z8k_SHoEI^-Ml#px8slO(SMw>(r1(W+z0b6!;Q4yJ)x8sld{=7#q9!C$jyMeAorwoY zdfhm^$ytai;^m<|n(0IkI@{Mv0@4<*?@K)_N{krBXB*LFDW%VW)ltM66MzX^EFBnm zy)ub%<9kD|+RnW24#-ICcA}o5!%TtOP`Bt4{KlJAlfX?I^KJ+&D-5}yvCrq$=juKG zt(kU#j^SymF|eZ?tWTZGe*o@BuD+(R0SV?^z4|`$je?`lO(l~SOt4XErj2pw>TAx) zB#~k=YwOu>+4f%Fo(<pSk^%9V^3E<lfwptQw}s6Y!r>+)#owbbTgS%RyJS31yHtGW zGby56*Jn2P91g}nN5vF9?SZ{2l|oyzIbR{m?Z~qWNC&5k`-b#0piQswXPi9}<v};& z8;;vXt{9V%Zu3KRowTaZI~{lcXX+E!<?&FwTv#qkr^(zc1IBgQKu6R|64c&7EK30W zHE4o8_D=guhnl3V;6DAl-bq?oREE^d9H~so7$zpAmGgTY!9lfnH8fgvRvXe2Dotp9 z9H|MCJ#M{Sn!b?jA1GjUj|pZXGWh_b9?m9OgrT0(+emd@Xit~sVXzN<P{EHh1?V$w zr~0@F$(lmwc0iRGRmM9dF0|JNIgEFYoj=7q$9Oy8YRV6fHWzb<depQX$=P)P)Xt9a zFT!D@{Lt!|e=Wp?-XaP$<G)H%F$)nthGy(RC1VMqr&jvOHM6i~@UM8%ZGK^&b>DK- zGAh-9eekT=GSB#?pbW;uD4mhx_$JMe`UB>uncy3>b{d}vt}p2dol8>X*TV;|)h+`T z*;1hoESH34uTD!qXFM*5)xzK}Se8U9-$+8j#DsDZ(7L8f0u0QbQe7=`9KGTCophAw zAfS6?b57nn&3-5Uq7r&vXSe5*^AL$<iJV4eQ(#Q5r68l@zMYX}RR&_F;`=^nS05c` zDEeiPR-|9XwJoQ3Ov($)ys>?nsQs4bIXS=E{^<~U=lm1O74^Q^g@bY#l}o)b-z#`{ z%7b8m2NCEx4wuMBQHo@WsAuF_F+{*|aDCSOOC<T0hXs6(*!}>0-~)EFLu%CVa2Ugi z{@>A)iLuAVf(%3Xn<da0&&D?Zw~9Pa`qPZJM3Zb~9MIjy2DsiPh9~8e+_9WvyE|wK zEBDKo8?lKkt;|3<GNwHAR;+`FKz!e4hLR7%L17f_nn3)&YLGDgozKx@z|6$m7{`)g zz&4D17o$5OBGYqaR@O06ubzgSq`AvDFNdS$X)oSP?4<pK93eXq$y@u#*hIzHK1V<k zdFekg-WPw1bk@ZDd*euW7NseP2HJM90&0Ddu1)Zl%0q!3e_3PRFP6I7+Bz^&Z$6it zSF<`}$9h>tYBU9R$3gX(4L+~Ig6l3%q4M9YYeL#=LqX1-89ds?dk(uH!pcz}?2=3c zi5FcV8e8ZJP8GV!jhk`Uno(x+dvgymp!_@?>am>-CUCj-+Dm2F4sRPf>p?5Jj1BJ< z7ChJo<$!UTrRi*|%qG}YY}M%w#`gn?F7yTJ6Jw4G|6>?qQ(UQBQd6{?uLMWdWB9*G z<~SdO{v!mlhNHJov)9VdVbIvLD7m?vkcB!OvR(~K?>8whm<Xi?z*%*{uQYW|t40wo z?F$UZO4BH-Bc^5+R<JTYLJy9*M)^@SfuXpVx?ERxd2AzCuPq8R6xnTR{Ga0hk~`^) zYtPd-t4tJk#!I@yz4n>;<h)TYbsO!$XDhQZZQ6Y;6w&yWBjRbF8mft*)1XrZ#{Js- zl3SPIy5Qk@ran`jT#4r1p=B2nO>k+EMmvJ(Vt$34kZpTB%YE^`*=>y9HZC+WQ5ZAn z1a7O;2kndtFMu{cBf8ukDOL(O-)YS`6aurgKhLBk7Hs1jjc=LO=x&D#!*Qmev4t28 zERk*^i6AL6(dlS*ZcmryW_0LfbPZ;#Vd6BNp^Qd{BqF3b?e-7MtCn<AlPO?oeo7|B zvPNXild?xUp@P?7Dwp==1s>55k^|V`MgO~~vE<7U=beB%{}+>A-IHZZw_NBN&+Qwd zA>+)7G_{74Idpy)GZhcMHbf=0>bS9QnLLTrm}!p=G3Q%kM0Pf_@ptKQa9pj>?}S@! z(_0Rlh+ATIh17;A0vW96+m&tWM!xqjzXsW6dxxfc+idV}p*;i=%+jfRNHuB~MV*`G zy=H^2Jk2|Rf&<5$G($RMq?Goy)}$<_L_0od0!vX(8XNDF*wZ}KZzpCVp~w~czmNo5 zE-_3_3O!B2&d)lwhi`I~Mz;T8`-I~;ku2~h>8G$WZx~@d>0S+0S4j#m!HrQ%z~|n1 z*1<nDuxfkfg83HMXb6X=p|7r3?mqo{?>;&eQFUmQ@IV*WrmTkeAJFMWoH`I#DEBvZ zx-q9o2b31R?&C<Gy|q2(U^IQo=@66F*{4<hLy__@lvzjTok`l1XqI^c!F!On%YWdZ z1)6tJT&6;rK!jDT@^o$Ar@iwijkkeDk3N1<iS|l*zm=)l!9DHXTCCcFa-`(pDTxsb zJsC_dMLTsiCe@;GSCmOtzBq^VB&)`J37x~Dd2&!@=l4xv#zhYW*5RSTv@n!zf8w4S z3z>Edm<KnNEKH&oHFl{_l$$lSZlQCQe6n-7Fbd#rD*h6i{(!a^ICU-Xg%&gz6>ZOT zVz3iW5!yh=J@P%q*+?qre{FA>D$FhI$mcPtVBRX0pBlGW!>2qqD!}0+8T!*}G-!|7 z8^YgBAorB<;Flz-ZE5AdUB718>U>#jYnLNqEC2qO{8UP@#q5kke=0%+J<P^?nOPGC zQBdF*xlc|cvH>2LrIYz2h!Kc*9s@0!u}d@{EHOXFy~;Mjcm(fYnSoK1I;cjec^&l` z6r5@N4FZc?bEr<!LC_m_e5Sk9+mLnBu`21-t83JKeHWnQuoW8&nxt*^5In`EDirFR z_vO5ji0IG{(nR3=P-CvHJ%`CP(gA>$HyRb$a?Ps>nI-2Ado6kx30R$E?!BX*D^t?F zi*dim9m*-d|DI+otT?%&HL9w!?b<Ww`<_{%&Z;{^zw0~yX-Fd9-i`-KTJp|o^6c4$ zJLV?JU?a-Ds0>?b&Jp;%Mh7E|IRbO|WgH)+jTD1pa6xwBqkAY05k>V9Um|4(Z;GL- zSbMRVEc|;)RwjM8GELvVx)#4<WNHlt^j<GdskLD|QwBm%<Z8q9Ok^}tHftJwKtse1 zQ&i2?fr^E?s_(qAooxh`d*q$lQEX(x+C${`=}<Js!2LhkrxguD6eGSmePV1&FNjtL z?#Sk&+T|AP&+N6XTpR}Xw%Ko=P>=?CHAXV^Ni+f5bg9bcOV!d%V!ZW`qERpu%H{s1 zdKRR7G-jlYWfIJzCES_Z?a+*DgYnI=qm8*n3U%#0b5E9H#spWlhe6@Y%-38iV<6j< z@?(teB%K0b2LqgIG<N^mkiJ*<{!3lfZMV0^>2%Icay@#P=shoYE6OSOS8+BKXk{|+ zrqnyi!)|^4+{^d6#uVB~C|mpo*uR)66}s`v`H@FU5=50mKK)o5tt*zN9|f9pw@D2V z93K6>#+<3wJGCxk0_Px3Y_nVc3dDG~qY<6YVk}ituknu8Z6&a(Py}PxQx8@d1~tEP zEU~w$>MTMWPD|K+g%+8jg3reBXHgZ&%HwC8CGi@p)4TN+Xt-5!KmRn`hwTu;bSZy3 zwu^VSu-j$tN-fX0pM=m2hlkIml%Q4yWT;#I_DO<*&0Pn@TyeIY+7>vZYiz2BQp??6 zw!mXy3t<1~I3^UtnnLJEMH6_09V*jcG43KvF_eq2GsgYDBqFg)4l$XRiS_7O(3!Tz zIY)+L(IF?T-$Y(>1sPSXTnR>ZhT6)t?U5U*-&Kcfu7L->s|(W{HUAuo)3JGA>!(^} z4?I<!mU%Lj9K)G|?W9=6rC_pv_DP!iq`fTZ)tEJ;JjBVe#;KA!kbb(f{9UMKNv_P- z&y_25#(7BlJG5iN+*BLR7IadN`vQjlQB?hHBCqd++TQL8A112y{o6#%g4`it#M#(# zP8)cYnJKT=cprqy-M~7L!(B=Htr|)l`q6t$D{Gah?A|YIpP*+RhcHf)+<QVN^t*4= z#C!jQ#{^cjWtS9hdOQ9fa0j;E#@2`JO-_&q8;iOm(s)?nsWQpl!Bk=SBb+MyX{xyl z^N$-P&%+<)#;SDCSkf(9<*4o8Li%>pzZ5G>&bLVA+Bi=ju4GE6%>=_)Oab*|Y8;+{ z#x@<bHO?r#Z!HFGo`yEdt~F9{rzOJ+bXM0%J>PhBsOO>L=6k9)cL>E|^%~lNF%dgf z?8yuRdmPOUgY`BWDhFh5d%?F%t1vpsYRo8os?nsJoZw^)$No7S#*&djk;Qb&%+_J@ zG&7U&)fL;i(Bf>9+DPzssTgZ}?;vzk=-=v^b*j2E+19G+xN&ZcWAbR$&dNKUq1)Yt z-U%7GurtlfZPGSEg2&Omk(#ee&vMR5pk%Q<3ueoDBui<M8h6!f4qf5Fx0xy`qpUK5 zB`Kr3AeBjPJuLU>v2*v1{dH<P3y3q&Mw4Qkt>WIX)L(H^TH80y9eQA`v$<1?9hr2t zHO28^ovDf59kf7jM>;vFGLEku&3h-%TWnJ$>LS`Bu^aAC{v=cSgc|GRkE3iE>P#*- z{n3ajxBbUsI~~1~-VA+ugTF};Ha!-@-)Z9>ksYDtSDAL^NV!^`Av&kq&YhhrjqyzV zJll&G+>k*hIlB(8xr31zmT*BfL-l2~=gr=t_dvZSCl8Zh<&UY$Pq8^eA}T&d=A;}W zrF*%+*NZeC<1;svt_nQ2!471ede?#LZ3Y-eqb-bDoiQKl{w!HFSv!BoMK)t{s8;H= z`RC2he)v>*DziHU_loME4&T%m|4Z6ggs71IC*S4>obqslZ=9Y{E7npWk;lXYS4Ir! z94q&AmSnhSOo{P^%UFC4kz^BzJ2WP_0OyVww^}Yu2DNQ9ez}$weR||faIIpgRmQiC zdq=rTLvv&Q5ayTCj?-#^w1PaTLfW*d&5R<_u>SSZI2O>%aTaKjF3v{4+dp-5w?nU_ zqz1czgTF&XV$jy28O=ne$p@tps%?k`=|T>?YAfN!tcz`?>rDi1kYlIYDjn8ADK;b@ zHSSFqYekahMfoO6?NqNHy;T!+&`|1{rnx-x0F}Y=O-pl+y*Msr(c_Ti-ZaO~Uel91 zr*Raosm6F521fR&bp-#;8oK3vne{NiQ=T<*mOhh`1d(X%gv*f{$8ybD=k(UlThc$C zls~!fZCj6Cab!5%otT7vIWu(RTQ(bAnWelzyE0X>Pv?m&x%5f?t-1~uk3V@ezEu%l z^6;RK(Re6F&>qyMu&Eo#9Bt@wNHAKK_dW~d!rIvq>p0YHzPEK!{H3qcD%V_@*s3w< z4db7~+G?S3&cili{@P*fOp}fmoA-Ll$`NFzVtM^Exk|^dEkCc788c~{b{~{e%ghuL z+#ZLuxAC_hh%lRBge$Lq0q8qG?%dAOG|ozK?4lDwjeCs-KK9qfIsPy@pUB6$TeA4G z9Vt+477%zI=~d>3cJYs{f?+9D!krlRS{waTh#$1_GHn^@VtQBxF^~*UO_teu@k*n} z_#Z?@i|!K)hH1ry_x)HU{&m8w|M+sXLZUBtvgBzo%<J<~^%}e0ZB<G6GsXFg_~2sP zTe;?-As?KrN5nOtPAn%xuZ|`=Ijf!X=RJWt(iF<9;ziw{+~)Tk%t^J{xZmE+*)GcO z7;KH3!{D6%Es22gs6_BdyM>*3fIlfP-kfYf3JU*M5{a@8lASSYmD{KPm|+%t0C6I- zJ5BHhy?RNVoHZ955SPk{&c(L1>cHmH?H|wvFPBFtoW~gt*HTQYD4OoimkxCOGY;<{ zPAxs49i5@__ZUHarX^@(Wbg$&VYvL)5RUXpRoXeoYA|y&mDbLB;~p+oB0Fjx6S!0} zU|YSA!ooMa75!eQugjlZIx_a7-Dqu@)Zcp-Pt(iG>kxtQAC*A0%htIn<*+7B9HHF0 zcQ(Xzv5^u;V_EAip2lLIY%+KS_R(3#?nx+T5Fo{LI21!;p3QdOZoL((%1UP?xiPsZ zbnY#;k8I^jueq*hpKex@K9bn6lY8_poVqdl43oRj-Klv1{@_ikr<D#+Z!yXb?R&P# zEl`UNZBz^rnB>zg;pSd|^r-bgTZ+Dq&VjZznYM!Y5jwPpf=7RUz`X>eqz<FV?^57* zM{rz;EE6=+<%rgn2^@qF_(ufdkI0-W!Wfjb)y@EZkpr70D&r*HB7FpUr|#pIi|`li zaUI_FEs^xzR1=e#ynfplXNQ9C;;8;Cjr=KsG4*oZanc6&-!0QaQ3usOS97n#$#8KD zAph;SUsNRRz?|>SEFP|+Z3#R3%Cb#Cfq}h=S{oUThdd1vzQ#zG^!AAYf<Pa6=T5o4 zuzkut(DW?zXXI=8C;HwhNG=Ef_cjTcN>85G6z)cCzY{C9&<b9pK@jhquI7fz-N733 z<?6nByfz}r10dc28+7Hr8E{vX0zKExMx}%LKTgp+Nvmm00Y~XYPMXn#juPoJFZXNz zwSX`fmcXU!Okj2cyMxdS)3l_GB4=f3Ysigarso7~`_EA-C$2pW8c=~1%B?!q3!L5b zLPDDMtMVlThcSz_(SYW&@t(3lf}tY)I|N65%!DPHPyUdrJR{vZ2#*W?=pfB{oO7g& z>M&YR<~KxX8+w#6ZXp9UEI@-V)L=~EFMlYyojh2`=4Gf5Q$x|kkDjOADv&3$)HO3h z=8qp$2wcuGR&yz|GW<_qrc?=Ks%Aj`!~WXvvOypG2~7(9GcNzbT0z7y@wWxWZ`=L| z7pd+C9zm~E-)Gi*hV7VL&9$TNwiV=CE*DiEaA?t%Pvz;uBheraouqaAID`f!>T4)y zB$M{+$O$HK+rI_y--slFa<>~J_j5C-OX}<?_fO3Tf(xfq+g#XxinP=#{fei_T_Waj z(#~}GhlYZWb1F9O1c_UI8L5b_1o<H-^J2N4XUwmX$z?H*Rvuq{2+V%jR2DyiByF~9 zacA;ZCU!sPPIR3}uZ#Q+#_WPLb|gx@fpyI`y*KIv0B5`oKG^3nUBGm6#zq~A@&Y=c ztLqZ=_<<-5i$1gW%xs(u$xO02wmlsD2m@~HFD+W<=0pVJfVQMRUc1GSP-@fJF8rM} z{`djgvvV0~q#*5rU^_A!ZQlDIK<bw;&_^c_lOg{a`3(!q`j($sI6$xIFVBLzx7O`> zUB>^Lt=-rjVDAI%BbL8V)dpGMd#$@@A*}h8Kcq9XIHTLWQf~(jD`v5v|7c`&rmamX z;r?Z~>PdzCJZ;waXUPG}Njk8BL|?e~haJ2ggcEMLJZs)B6Yx<(lKKz^89v4*X%1+6 z&YLB_o`Gp$Y+AY(>K&qUNXu_W=H%J9Gv1rU?iP$i;O}w&S6k--WoK30@$<a}l~>hD ziCuIF!h%{Q4T2BAWbO<Z$s_|aF^C{cW+s!syttDI#();kE@>&40^(a#T3Y+AXj`z< zN0rv{P^sElYe6ewMNpxlmPdd8z0djXogk}4X6D}SJCA+#<G=rV9~p*$)-dFs<wu9P z@pS)L>${JqyT=}i<zNU1M7UFF39C-3UG)hfASZ(ZyDQf5SGRj6r|%DD`5GaS=Hup{ zBq6n9r&F79k)cn;N0?B*kw@hSdKtF-mqVeS=qqs|<%4Xu?Y-O5>!eeR_Ls2RkR3j# zo*D-0m3J~DNmI-XMZMU(Qo^n_KH+T)i67Vo&Zha3)gv}zDKGgqAxQDcE<@<%DC2g9 z>V5i_D*ZQ1Y$c&f8!IjAm@@48d$?Y+v;EFx8zqr)s0$bQ*DwK9&fk#KwI9LaKK!eh z8T`a9Vw3MSc><s~@%T_oXlFdF(yAZQLMw9e*(Z5blx4#nNRpKo%GaPzTWVyKNY7zU zTc-cCT9U=#%}!KHi~c6J5ZyUD2-#On?#*E@7klBPUJb=|0WYgKk?4^jJDaDvF*!i4 zq_eLx(0$G^1uKaPP`zu*#18z4H^$(pIM0ZQFnY$I$7Ty2`N#vWATaYNR=v&b7%r06 zIMwL=IVBUyJ?=iF9LZhdgH{vcR`nVQ$k<2}jQVY7E_8Kht7$KSNI92qvV3uaCmYFw zOEHD~yk3wPreJ>^Wm}Z6hYy1$DFS~J3$dboLkKfORn}2YD%rFDALB$$&~ZVBynI8_ z;A#UAGCQ!*Hhs$WC2kAV=N`j3zjbNwjcVlp*BubS)`hCH7SAX*nl?+IdcD7tL+jf1 zzN*sDi+GzV@bf<wP)2yH=)NMS1sJ6Kj0fje`r5Z|Xw;O?=3m^ws<aMv-pF^2BdcXk z<6$&JAROqKlD@7$xyU1JoSMG)`f<uHS&!yoBXj8JfWOlDVs`?RN=j200!P(OUUiRY zA^bR(x>ArR``ncoJsvu~Ei-EwnjZ@~aq>T2yL9#+80?2cTYctt$0mud2@Pu{7{tp9 zv@S)-=s&CbK-z4=v6_O@t!6giT_zohOOvZw|G-Art8Q%mGG>B9@oiRVCOKTitnET9 zEY2=dplMilC{N-qPcLH1&+$eXX8XdAk?0uBJYuxCNyaLv>F@OsPGiuV8v^<I+p&-; ziF^K88>mZm9u&^4b`cC8wZ8}<O<gXFhYVQmbVe_NX;@#ZZ5kR6#j`Yrom6sJ%M}1y ztv`WitTQU!&)+3rtPYeM7KO5tko~fS!fxO?wt{+>@uIEqA97`XERGzV>tijQ%4D#c zUZzBIu+GTooxc8TkjWg7`VYiSvW5j#DR2E*f;Gk!@<;7mu5Qa8$jEh2_-5!zY+lR^ zrhb9Lb0lx%kSX{3e9kzpcV$=nr$sLDjOH@_4B2u9<rm{1-DhfEvT4!1%w~_ANb}XC z6Z%SU>*HP5Do}HUdujBFN7Y3m<d1l<g`AyGJYnU*3731A^|j2MM>e56L<doxh{QdV zf08o)b`YDh7^%fr^|HIh@*-TGKD8lQst{QG9XmIZJqX3J<$$BK*RRBP(sN-6$S{WH zCV8&?PIjX*b{nDWEI?7Hu3DL)3*^2T1>RNLeX04J{R%IU!-#*0NjsU3^w6GW&^At7 z%?LUc`yo-_@9weY$BuSe-CA9VVF2Us)FQ%q#M3;Ls4RXbRnH6M#>QE%wov@Lr?a8z z2r{EFrS<*X$;3#wT8MP&?CwSS#=X;qJvK_kyLCxr%*v-w0Vw@aZW2sqlCDspe7(<m z+#RB3@6ebbAM~C@=~^<xUQ`X(T-#!k%9$fAKpalB{ni_dTCXq}54Ua5SkB^JTU2al zTz09w)^i~7K;&05FjT(8v2B-Hd^s+;71LF-T0_<a%AUHHG&x`Kun!$!>6BCY?N5x% z&W$qE7Cq$$2>y%GTF^Mf=InmmZSpGpaFnE2C#Kph5Q#*KIoX}}=3)yt7qakfl^lb1 z4J$fDzIJNI)`_V(aX&(kGv+Q^bG8vcWukvLPS7hjF%%cbos^)dpK5+RhFaU?zMll0 z$zEl7{&hQMK(u@S&-b%FzF_o?*KdfF1#9B7Lfk`vqVVnHg*xdW{F-^E%EFibz0#aV z!`HlyA=tUhkLSO(M8vo{7g5?lv=dup<gYN%z`pfWyo7(`3?^2YZ$t5zR9k|J8!9!u zaZC0J*%)3BiwdM6>JQjb_ew+SmujKKh&_M(Mxf-b!u0Rjhk6B}^`+Rue)9SFf_H{0 zPF^y_w{w9wK2$$32wY*DIaB3_C`4+z5QVZx&ao-08h%`)JjDb0X_J<;j@5hGCI~vP zp}w=<OQ1Mw?eRc*6yi40Q&Q(4yW9*Fn+<X82cBj%+y8gAlF>=e&fcJS)f)6xdo3xC zd{~|+lrz>4Ed_ICP<w!etdx2H3j(aj8fob|(HCj1cOmwo$e{^Zd#Y?;pgq~mLs19! z7)ZY(eaeS=4%boXA*_OV=CP3BHL18OKSonbK@SB>$S_7v4U-Khj3V)yRK843P<@P1 zL&l}^;V{vo7k8oS@=9wLV~jF)c|_s+>qp?6DbtgJ^Ws6qCQalcIVNsjJl^5$+tlK8 zmyXreu~>0PQ-S<W=DBlXbOG)|D8FN)O2~Uff(wHc!j~e4NTEg?@{h&`Ic;XiF(aEc z$g+j%O|EvxyO=V_$*L&Y*2;%+m2K<T;4YF=Ta6}+8ewgiBY8v8-1S~&5MORCM*TM? zq8RYydCJO3xPQyBA){WAW=Nf>?QP-8&Io;xtRt+W-GOG<kvu&p=qFUSVYeXav0oOV z*WVGcv?Ss!zXGaA7-U#BvoH6u{)SJg-S+C`Hj$w*+<OjxD7V|s7#d3mls}~^yQe*y zgB6zOLHWTH1g9XQ@#Je?g+skCxmxaDs6Hswju{83Q|U-`bjwDzs_5z&=Cg+4>VD@U zC$quwxxov!&P-ch-l=W^=8J9oRerfS8`-t?=@phI9AI-+XPNR+&pNmYlsp<DRQ<?n zhf_z<>=r|0+N6S|M$QJEcLzMbT)|)z!2I`!fQ{h2X)M5M6<u^6&3>O9CnYmu&+PJt zYZW{f>R!QP+#J>KmAYT-72t%UhsGn(G`ouMfO!f;D<2&LjGjtBUi}7Zr#swf2md39 zpF7o+_sWs--l3i!_0J4wL?+Az<EQ+-WSCTJlaRsmH_GdD#-W%_&Z6cZt3U&ZERgy+ zcKk;|_>jC@>o^r&(5FWHFy)}3eVpK^U;kHXzdJF%B$W`te%jm>AV_)au(f!1>qpPJ z@xjfCGH|Xj&O)q5BX@#{g47i!j=7RG1)bg2+QI-yP`P|{FR3meI*0tR+?`f4&ydrx z*<yQQe7NMXGlF@$4FyKNF;oY*RQ<$$!@wzWi%~}S=Qv-Hb9`#eLngqKr)J-!yYEhO zXF}n|4$r~B+h=mPoo`@=yE@$j78AALqWHJ=vtl-LrSiuV7)M#Fff%&8VqsE`&eZ2v zy*7rh6HnGnT1ResBgzCxC@VZQU6mJX;!I=~=WmtE9v@x&S!6|+V_rPQBBsPPj*J~| z*|6+lhVLSyZh$t0A}T;Df(+UIs^5z~&HEWG0ws?`hl$wreQsU#sIMscGi4v@vj#?N zfYpB1#7|+RFULc+9DHhQ=Tc`pl$YDjDHIQKkY&fsVYK~k?iz?8YE71p2vK-j5^DD= zE640DNo7Zy2{6zVJ;M&Q_i%99hG5nD9zEXVFhxH%jm;9!ou2X=himVWau^XsFaFSY z4LoDVR9O6%T|GaY@}BvnL{+J6RdKKFMs&%FvmIigW&wAuI?5cyo{#VSIa5Q&Y~Dt` zQdYO(czf=?R``K(kcWxG(hbEPdBK3sE84SGPxZSwt%Q+2lVBKKCN#KRQ#+@rfy{sA z`)tOo-0oHt^XH*VJRE<b4c4Ycl!me_@`$b7xDy!8g4swY?(1WdP1B$;_Gc`QH`Tl^ zQL&(lis6DX<)PR=K`?60Q@x73H{^}_MYhehr;az$;1R!rwk^UIO~Jr>)%tiCsp%v~ ztNaxgyoAF4b>j9$-#TRT={LRADsGkE;yiGW`}4U9!dl5!5K=ncn8r>}y=G(?wl_+4 zPFRv3o?x|<-TvS&ti}wSVc~l7nLd)DJ*3>@psi_s-gbySYhdQZI%s%Q(_L@SxT>$q zVttyWIW*CzpSLptDFI)P@@QMM7W?1hs(S|ylQFm5e;;@SXpdjQ@QC48_Tv01_cf#I zqouZX;1;0NgmV68{n&?0<g+W8b(Rt-KQS}SK25o!ABu-fiX)6wP<~@rGe{b&=NG4K zZu?Xfn@wfK(5Su*?|N}sSnXPR&7votlsm@oR8e9|q`1dY@%+l1(vL92*#UE!{+MWz zc_`boq!7KKPg`f%o32~)ADZTK!sS`03qt;qxSB%gt&I>jw#=^%;T{`ge}lNHGp+_P zp}8&wOgfiNZn*|`b!O6E8v@5aHi-*XVLK_5D^aZ~57z`^cv=W=K^^E|cdGy2mCj<= zhf$R865TE3n@(WJuCnBA6mO({Z3?GmLR|uK2_-(K)h^WZ!r@1hVd|8Bg07*!!xP7- zJ}45mQ%soOr3CSob#Uca3p)Z4+VQ2#eovv;EC<+%hFqv=k}i9)k20y(@ZR>ECA+7N zx8K*|xhnR&KK(;ALfnS%I+~mEEdHHVE4#s5L(AA?U&lm&I}qd8jTpQEvqA3Ek~ih2 z`MKA<K6|EE#mGvZKU+L(Dk9!MlE;2w(g2}(Cx_7w%cQLt`-94zizcM`vWeUBV%w;T zYY=*c>b^YHz5L2gj4O?o$q5@D3Hc%B)Om$Sb-y=CNJRnFHSv8Khf08cg2zTKB9!Nt zB^GFcPZWwxwxTB4n4M|BY_)H@OH76(PfMVlK9B!T<jLt~lO1fVex_mYq3BU^uMfN2 z;Q@WbrrZX>%0?V&P|Z;lTETa)Y&DJXY0rqK)8`uH{9wqJaR86A;etOuz02kuMoNjs zve}e~*Ko|unW?|3mwAqhRzx_lF`Jfck0;Hc39|_W#h})JU_r_6xtMq?&e;rS-zU_H z9V9~wD=l%0N>XYlh3xhBq;YyNdr*USY;wreY;hC8q7cX82wU{j+#!;tlKWPv?owxs zzMi^mD0{J?1T0|}KU7g2_(B(z5t$M77ww%iN5M(r!6_mw9|nuG$i?KQTF(smGmGGI zbfD{mw1uJmrpd8EU6OFpf%d!<2v+CE5Ikj2ysp*UDFd$Z)BBsqC-3L6cCq75)z9q! zBH7(KHm6XW><E|93PN@tFneqr(r{{6jPW^q4~M)9(gpk`dez}yWl+&3J!ic7Tue4b zIn8giFRWw*SMPy^(1+<(*J^h$m64B99uonLVMr2SJhzxvqzs~8&@w$01M=oa?1PP) zgf`_Wpb?jgfl4zsaU!xo#_E+<A=^E?6gy(!lJI-73+>wHH+$s)hZPeZ65lxmyWv6G z33-?)kxxpJ^Cl<>IH)+tcivrbr~)HCP9G)d)A!3+9`1NDsyW0E0PnSLvd{>q8xq`@ zz0?ksaY%A^+MOs>KkmqO+g!gncq4a*?4UhqbKd9z@v9IB53{)yMasb?0G9Ui@io>F zb8xC@+&wVjq_XBvImx49YaWMw8AJzbl%0i8?q<8DtsBxJIraK`jLzK~caf^bmjhVe z3}v+kHH&q`IWeVO`~{IDn-wW0SFuN~ak0=bdvsV-sUh6t?!8P!gg%>#V*JV>a2;GL zzL(4<1JY2zzp`CJe*QM>8;Z?J%VXwH4|VwJMQjObPR~%4NA?F#^BP-OC{EIe(Lt7@ zQLdFgU=|0~La6>LhW$~zv$N!K(RqN#s(u?OO_5NGtt?pkmF#o;)M~F}G@TrjA2l>G zcG1M5S*zj$?q*%2dzwOVshwtn<Jj3~vbeZo-^eSw06x<hB)~|f*6)@enX!o3l6zSE z<SUnv(iGDY)t~D0GVeImz_l`tNFoNl@ZkeC2-i4#QkE=AWy+w1YO^egh=U>(L!3I< zPQ1j?`w|&nQmYsZ>JW<0arwEq<@tDR4m$O1o|#5Sf;uKK6LTP9b;?_Ly)RllY=0!6 zz*;KxOHqPH$F^hi7gdujbA^lNuv|~;gO?p)@sBCl`hPT(9xxS(OQOQGhgBCCOuCt) z!^bDc|J%EbA)m5o6?3E0fegzyuT!?m+RlVm02_EATXAO8xcuD9jW%_(TM!DMYokeg zmq`Pj&4V-plPgD)cv!qnplIUL%+;*-(+v3VLU(Ef0WYItECm(jK!$(Yw!~_|VxYyH zbB1Cr+_T!91$gAnS8ooJ20cSPI36Z{y)CNR`U*UlaX9|<qg>lDG4C2~qZ&D!rlUp6 zw(L8j-P9c~e~cNV<VM&_T<t4CCsrhdi{N5l*{m9e_G@VIy>5o0dCQN~w1%jILu&=U z2`92LU1uI=g3;Et0&K=gTh-vLzhHI9uD4GZgRMNnqIc$Ern0)ld&H!~Wj)K}Xu1<> zPoedSIh!{mCR6s|;U&Te1$E@{#v#}4n2)ho3azt$Ggn&|uY_j8(om$L!zYQc1&9I4 zA=IKTHW$k8a^)0H+FlEGwBOAhl$$#$YtY<-aQ2t1gk{`1T1nCjk*H^ZKqZ+d7wZgC zKM>`jb^Y(7G3fHnh1c#Nz^TMJ>LWSjw`;IijI}#SFAD7^h_DBjPYNOBFWbBe<A09; zr-PiJ-?3#M@YIK!=5Pt$>r-yDai~w$#ODx+D0|t@$H_#*p+!AbznSm-BIhuFaz!)} zXFg^Ir_H8>`;BR<N21NmldWH92eVi3S#0y~NSVUNO8WD0_R3UVs2+hY0|%s<)5`Zz z_MVq?k0&Ja2V(Fx+~+W4tEivH#Hm|B`BcAwgW`s*#7#g@tdzXESGi$@35FffG&<Fe z#4$CC8}$Kf73Z$2JbL|keT1Tojp-vtnJD)y^pX+%N$Y%^(P=`kdBKyj-9zJXSwsB- zc5!(T(;2Iz>(kbIjxXO!{2{54H=G?dY7PM%twQy93rqMR`>Eqms5BW&u?!xxfIvzP zm?>00h<U>Ze`GIYeJLYUZD)D63<Jm1q8oDUBWni+lLgPOF%e(8YXa&){{0z>_URn} z@)K&#1``s|m5p(T!UyvNoES^m<}Y=nWMFLgLwR|IfrTfO!n%NK41t2J*M~(S#jUBV zPX4^CAPd8dH?-#)3*mMaD0cL4cO3?heWI6k`*Vjztm#|z4w`1hwv|$+;Z7dr{rl4P zRXgnaZAPa!-C*gc*cu@{sB&U!6uj0nP}9kbg))ZcNWWN9WjZ4>FPEA8Y7_W&|6_>n ze4eU<CXpat(z=MYUOB2uUap}}HEqfGvD4NA=A%e$QWW9tKK_3+<2R`^8I_p*wLb<g zgF1LKhcS}K*Jy-}bBApBtm$qn!OtJy_X8McRoLaXsG^W0mMCc9*NpKdHCNIjiH}i8 z-j(`q9=9L+2u0OD@Mi{@1gKPih>s8rQnf*DkMs;{*Pm-sW@_bz1emnG=&kZ>-ov7q zj}Wdy0CZTn@gfR9ooc5O6|H!j<2iZ3sS8BGyVE68%rB;QKEo(ArQp}JcD(zgJ-wjL zmsfAtHM<%dz4;3N9p~c}{Mm$o%vPV0{Vy@-qSyaq8}Q6G%9G;~$yar#tA)Cn7q&+G zpcwC`gTHaIva8I77_8FV9FsLYY~v8*)7v~0CoZesoV%N$`GU4#g+LOIE$+r7;+1{G z#&4cXa?ta0DE@Ct;ciA{oMBh3nAC+sG;b&TrvAJCW7-P=!n1o~^I|NKCEv<wSpBc7 z`TTpPZGN$o*Pnsvt~MAAnx60V5rpb{m;k)Mknf$Hn3~!N8A-w4*T@#n&Ir&Bjm!-m z2rMFTow$H4oz?o1jtOq4Z&&nV_R+&MT{_6ONH}}@ZIQjAYPD8iadOq81`i+sF`8Z< zkCNd|)oy0JiHy;oGh}wu^;dnACN69^Qk=@KuHz6;gJS%WkkN4)*_KBa@?WveiYO~C zpsp{pxeI3W+PLOa8)P4yD!Wl;{fy~^n^=XL7ugXb^L~~v`=SwAz2nG#S?Fup80-EF z6?e5K?ql{k*i{ZNfH<%SD{rdKj%8YI@kj|eiqpb|CJ`A@%X~R5_I7{Nfo|E%gKZA$ ztn+4b*;5-w5|&eZ&mY#_{ooHffqH_;0n6irzeDo3TT7r~qae&wTN4&6|0xh9f3>?S zE}NhCu+4Nox{YY1{8$394e)N9Z`4Qas(i^?E_g`*&1|r%UdQYdH)XqwU0$E2KrBM< zqCh8u7e46aQKE<4+!5p)-4{%%c1%)l4bLbV!#YjOfU$@`*(}Y_r`m1kPH+10O=m6i zT$bWM9@h_p2xK2xRv`(IWOMF@=zM3--rS~3+MrO0ba|1E3Y4!j03wY#d&?-6(((F| z94SK^8x`uXI@Fg)gQE4SZ+PN3Wy14I5fVyN?LMF8V14BmoxJ7+WDNb%x!7{Ckb4|u zkFO)b0z;dZwO16r-Q;hDE~*|TEk8RsW{eY-tJ*)cLyFiDU^!1ky-D?pnNxkXrO?_D zt^bd{2c}qlj3F2mJW#%suMkE@##%i;g>CK<;EdbDR!DO3E_pc#&kY_wDEMW2jiL(e z%n}ox7qFHJX?63<$gt^E_&FS&sIkpwsjg<-ev!J_B(zaTzw6B65P!M{4CQ-li(WIl z$s3{GiP<9KPduWuQK+xhSye*fw_=bhupXs+l}xEYo8z7j&)>nY1RU#DZ|jQhXlJy& zIeZW8>&oW&52U5$Sq{5ANFZTevlkfWC%GV+Wh__4KVE1zk2aTTA0feo>dI6!=MZmx zH)GL?sx4`@4hPrK%aE@z)w|OC=WlVa-qoiLLLVGl{}$~=1kuzJSU3Dsm|S*00EHE7 zerG{WvHBL&UVGCk`OCh5UV>pPDdL414&nfRVdpI4hRg67n|!qM<^9^F){yZ9+v4UN z`%oWCC!6zdSX_x_l6kh@5d(tA#_v@9-O+C1=T#>edf3w7>%)h}Z8YIwwKXx`Bh(vZ zTpVF^IVo?87hikTMgBKa;%O}!Ppdh}>~3^+*6ogp39zTU-S(NsdXD%a8-E|ACO=1d ze0)Lw4&i>63c+r!-b0z&ND}BB&K*-j)b;8Hcz}J_;O-%Bl~rss;yHnci045mbJraE zHr#7QmiEz!@V=KRhXjhf%^JicUwadZk!SQUm-<>^n`88C?sESw`Lf_V5ze&0T;~OX z7V>W4&Hmje_4R++kU5pHBrwoi$)$}FA%c97T-4yr4`UcNpv6F|2p5*`=F~*v;4q!_ z9tt((0EXIy^3!gw;_ZMHG<LqyQsx`q0f%;tBvTz6!LN=t_^dH_30g3tSN$w$M3;o- zc_wBSl(`Su)LfRaqPDYMXdfEY%!wZMc{BC;6B2KhHcllJ=a}wFalv*Q^h!UWJU7aY zhh5pvU2k*oZ^)lD1+pHo+v>~qxi)E4o{jV=y0w%{$PJ`qNpw;PUu}xzEz%u21%_WV zx7uK_B+4u+!h%*GT~gJc9l*%jdX!$NOubILghl-O%WVj24VKjxUg%Vl<eAj(<pGu) zN@8{~0~*374)x(?E2VZU+a0oJb5*+Xo7}%vPg<;wuMW)yDmN4J(!@f2R7SV&UIGk7 zm7KgmppC0a?rddLW}oWk4vlHuL;YfQ$1`@mJN09+3wXk+io?u`vjSG{qMUz9)7XM# zK-J(oh70NP30|*uW#u1QgxyskpY9fWmKShK5qwE*4b?~(!hU^9zBIX7_TU0flZS1Z zpXUEUeMf>iqO)A=ugCbRVRmkaNc#XwVSO_si9XrlEP+PtwOrp-&v{u;gSi`S7&5OF zy%L3*f<xbd@b7|SNoQm5q7pJRHHD+iDK<i^W}*W%lQHuc>T5<<Q;mp+_E&7E4>Q?d zs0AUrKl*+Oe`5Eb5~qX@r!cnqe#=y_1<8M16~(c|Re7%;vkRu@73}AuGh}6=+&7Q6 zK7Z^UP3g=uc&d_ZA-{(IXl(<lg+~}lNV%#Hiz=utwk<74J{qpsY=L|m1(|Ly^$OW4 zixJHNH{TX;pt8y43ND%R8n~l7!|NudjH4H-{kSw?iiM1kV!4$o86fbs4t?9ss-e1( z5%#f%>MwPyFJ-89Yk9PP9{hwMr>e+v{F;4BV3H-0>Qh9X;Sa@|$G}z+IvX7RTM;mA zOT{kcwwHS)7cKiD&;rOgf$i0~;k>kU-PH5Bc_1!R+vh9asP@yGY_+c`9>FnYPL_|R z@Af=5s>Z!4&X4&?TikMu4sxo?4#g*uA(4B@7OFcAPm@Hkl(x#vmry&$?Ob?SC~A7g z;y`K*2>v6=)`%8h4rBf;%a1vsx_<e<h}rslj=#5X?Z?feEpHY01wK!9j$!LP-ts-b zzU{H~EJN4a#V1~iAzX;!9qMCYa!I=|7xPuB!=Yre*~MQ7<k6{6n~?fQ2kE1ij+MU9 zLP?Qyteva}ba(mmels+GMawJGUgdt4IZHu8cJJW)RIIGXUt+4;nM~CdGbM^hEaOsq z+^lF+5an-(+_w0%{>NMVB>0_|4K7l<{eB8RtrUfvUD6ccl%$ogTdpS^sj7d7Q^;L3 zRKVC0vJ{DjQXlKdsZjiF3=%wJ5`(nxa_ym@yAWt>r3Le=ApG?GQq;eOFbK-e$$|)m zwv{d~b82V&F+bSnVy39v*msnLak{$8)HnJ#rE>%ryAjEr&1<(9g*W7LOMQUqX7UMw zkE)xaUF@~Rv;h=1l6r2LCHY5<OmwEXbeU3_WYED(XloUBJt7loLV{$$tnz$I_$pS| z`kSDq=XY*a_q4MeTc(yUlxMjN5n(8kT5_m)b_!LR2U!jtHj9sqo=_pmP5itInsD>+ zQ6e5gM+*o7o&*fXYsIZyNk!bjIQZGQyY&@HwhV8g#z8BRN~g0ow$?_Mt6G54T+!Dq z+4ib>yB6GW#eNr~B2Q%~TTE(HYwe{ifw*}}dR4kBzgrg@nL>z;bgQ>HE^oyJfGnx| zgk+~Mt;I7t@UIxD#eLxomJQQ`n%}nOkeCdjH}hj;YVDq(5zLqB*D1>6mZT}71k3VO zFB=~e+ogD+Dz2>-lzR|z>btwCpF~X-h=h`rOsh`1P2)C)`-FO2k9;kws*|a>tNN+h zf}creERTa^$e5*TqpvXf&emC1ZC@D}aWJRC<>C~#;Zmcd`U<5}o|n#<g%{bHeRQFk zGLa3CT5`Fsp0q*YLPlQl{==I!g{Ym1YlWm}_s<*!Y*ku?F-pdr2Ho6GcTwfBLa~Oi zD3&wgYADcjhM$D$rToEMO>^)<w%sz|`e-P>85u;LwWz;kqt_C6WBKexqJik^W$*NO zOC|2%d8uh$5Oso48EJ=O7Mgb;>~_~@N{CjM7!V@~QoUX%uE#Hsbg02fOMD@C7I>QC zsv1MekG-z$#o6?9re0-GdH2w)>I?TRQ<A;N4!NE2`ns4QPmI}cE8Ig<v!OU)cpl>5 zGy`yF%FbbRXbi!lgH>E@yy@s}7FWm%nZlq=kRhtq@?FNsEfH<{61uNn?o+(Q#vR>7 z>$-+wR9ZjT{+tqHHIIyuhBOd>?sV4_S4|CjhkTcCGdIP<ZRFObNYFLS00u!DuDQEG z_y(g&&~9zrVnl?Q)w5=JU3)I1(geV3*J6Nd-5n-DVBlpQfZ(JgLGzN)t}CbVZktwm zesP>E4{?amdYUH&MqcN9<n27vl!2@!!GmLo&_>;ShiZy(<D(6CT>Oh0&5232(C>Rn z=xqI`Dn5b)QiMc1M@!Ir+%AXi<sY-(k0l3vPHb+qPFwMsFYvs+Y<+RwI%Fu^VG`Tl zp-J~B_OS+iY~`3=3(MI7UJv;V%Brwis=UkwSSB!HrV_%(B#TzOmolW`NR8Wgqvc0q zN@}&b=7f5eM5#+BQ&^bNezDKJ?P2yzmQNoOp0jAerL)M%L91p*LLER`ibOEojc5Bx z@+jaGO%^SI4u?6O%^%4j_N0ZEJJ<ijkWrA_dbd1>Jcj&Q+)KpT=mgoVNK>@6)vF?I zhe)ESLv@Gc$h2T)W9apv_n@NGNjiU%M&$8(sJ`f#R|P8yQ?s{AW1_R<#ywYFo&KLj zt^7Mw$CyyHPHs6lvI9=V5@`aJb!A;a5q^bT^-HP?MiL$}=h4e_xL<>co<+Iyp*m*= zEDU*cq!<`;{($sg%;ARX5D?O_V5JS4&rAtLCl)P-6Ufi20q@9k7Zcsy2^10Gt!*kO z%IiB7#HFi*>s_w<c$hZ|ukUGp;oZfHy;AjZg;77Dd<Og5Ya7zMn#Aku_yC=rkMn%4 z!MDYe(Xlu4nH{aIZCjd}Mao}bk(H1!_gu`8J=SK{Yki)5Z4m&8ls(ea{ENw`cpQT8 z#o>5wXJj2|U-e2Qq+ag7cW?`TT6uEnQzY+F?^|3E^w>2t?v$)s7G|U8LbcoBRpTRZ zZ|cAAUA|!j6y=9@ENj<%!@|gxP3u_a!-M~mg)sQZ5b7`RV-<h3ivP_)S7)Aj%74SZ z`CS(DJN}2uou0RzpMRB5?!?gzkb3y1`tTv2q6zbB`LBaUhqxNH{b&C>_}wuJThE_5 zbWQr@fj{BDF5B9@XsP$RgFyAdDt+#xUr(Pq=vs2xL;BsTUzvV)#Mjg3s`f2M@VsYr j^|_p$X8zA{+>H6H8}z%)kHlYP&v^#_W$!rQnh^dU)#7Wu literal 0 HcmV?d00001 diff --git "a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.\302\265.exp" "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.\302\265.exp" new file mode 100644 index 0000000..b95a258 --- /dev/null +++ "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.\302\265.exp" @@ -0,0 +1 @@ +mexFunction \ No newline at end of file diff --git "a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.\302\265.rsrc" "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.\302\265.rsrc" new file mode 100644 index 0000000..e69de29 diff --git "a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.\317\200.4" "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/range2.\317\200.4" new file mode 100644 index 0000000..e69de29 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.c b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.c new file mode 100644 index 0000000..3708f8a --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.c @@ -0,0 +1,195 @@ +/* +RES = upConv(IM, FILT, EDGES, STEP, START, STOP, RES); + >>> See upConv.m for documentation <<< + This is a matlab interface to the internal_expand function. + EPS, 7/96. +*/ + +#define V4_COMPAT +#include <matrix.h> /* Matlab matrices */ +#include <mex.h> + +#include "convolve.h" + +#define notDblMtx(it) (!mxIsNumeric(it) || !mxIsDouble(it) || mxIsSparse(it) || mxIsComplex(it)) + +void mexFunction(int nlhs, /* Num return vals on lhs */ + mxArray *plhs[], /* Matrices on lhs */ + int nrhs, /* Num args on rhs */ + const mxArray *prhs[] /* Matrices on rhs */ + ) + { + double *image,*filt, *temp, *result, *orig_filt; + int x_fdim, y_fdim, x_idim, y_idim; + int orig_x = 0, orig_y, x, y; + int x_rdim, y_rdim; + int x_start = 1; + int x_step = 1; + int y_start = 1; + int y_step = 1; + int x_stop, y_stop; + mxArray *arg; + double *mxMat; + char edges[15] = "reflect1"; + + if (nrhs<2) mexErrMsgTxt("requres at least 2 args."); + + /* ARG 1: IMAGE */ + arg = prhs[0]; + if notDblMtx(arg) mexErrMsgTxt("IMAGE arg must be a non-sparse double float matrix."); + image = mxGetPr(arg); + x_idim = (int) mxGetM(arg); /* X is inner index! */ + y_idim = (int) mxGetN(arg); + + /* ARG 2: FILTER */ + arg = prhs[1]; + if notDblMtx(arg) mexErrMsgTxt("FILTER arg must be non-sparse double float matrix."); filt = mxGetPr(arg); + x_fdim = (int) mxGetM(arg); + y_fdim = (int) mxGetN(arg); + + /* ARG 3 (optional): EDGES */ + if (nrhs>2) + { + if (!mxIsChar(prhs[2])) + mexErrMsgTxt("EDGES arg must be a string."); + mxGetString(prhs[2],edges,15); + } + + /* ARG 4 (optional): STEP */ + if (nrhs>3) + { + arg = prhs[3]; + if notDblMtx(arg) mexErrMsgTxt("STEP arg must be double float matrix."); + if (mxGetM(arg) * mxGetN(arg) != 2) + mexErrMsgTxt("STEP arg must contain two elements."); + mxMat = mxGetPr(arg); + x_step = (int) mxMat[0]; + y_step = (int) mxMat[1]; + if ((x_step<1) || (y_step<1)) + mexErrMsgTxt("STEP values must be greater than zero."); + } + + /* ARG 5 (optional): START */ + if (nrhs>4) + { + arg = prhs[4]; + if notDblMtx(arg) mexErrMsgTxt("START arg must be double float matrix."); + if (mxGetM(arg) * mxGetN(arg) != 2) + mexErrMsgTxt("START arg must contain two elements."); + mxMat = mxGetPr(arg); + x_start = (int) mxMat[0]; + y_start = (int) mxMat[1]; + if ((x_start<1) || (y_start<1)) + mexErrMsgTxt("START values must be greater than zero."); + } + x_start--; /* convert to standard C indexes */ + y_start--; + + /* ARG 6 (optional): STOP */ + if (nrhs>5) + { + if notDblMtx(prhs[5]) mexErrMsgTxt("STOP arg must be double float matrix."); + if (mxGetM(prhs[5]) * mxGetN(prhs[5]) != 2) + mexErrMsgTxt("STOP arg must contain two elements."); + mxMat = mxGetPr(prhs[5]); + x_stop = (int) mxMat[0]; + y_stop = (int) mxMat[1]; + if ((x_stop<x_start) || (y_stop<y_start)) + mexErrMsgTxt("STOP values must be greater than START values."); + } + else + { /* default: make res dims a multiple of STEP size */ + x_stop = x_step * ((x_start/x_step) + x_idim); + y_stop = y_step * ((y_start/y_step) + y_idim); + } + + /* ARG 6 (optional): RESULT image */ + if (nrhs>6) + { + arg = prhs[6]; + if notDblMtx(arg) mexErrMsgTxt("RES arg must be double float matrix."); + + /* 7/10/97: Returning one of the args causes problems with Matlab's memory + manager, so we don't return anything if the result image is passed */ + /* plhs[0] = arg; */ + result = mxGetPr(arg); + x_rdim = (int) mxGetM(arg); /* X is inner index! */ + y_rdim = (int) mxGetN(arg); + if ((x_stop>x_rdim) || (y_stop>y_rdim)) + mexErrMsgTxt("STOP values must within image dimensions."); + } + else + { + x_rdim = x_stop; + y_rdim = y_stop; + /* x_rdim = x_step * ((x_stop+x_step-1)/x_step); + y_rdim = y_step * ((y_stop+y_step-1)/y_step); */ + + plhs[0] = (mxArray *) mxCreateDoubleMatrix(x_rdim,y_rdim,mxREAL); + if (plhs[0] == NULL) mexErrMsgTxt("Cannot allocate result matrix"); + result = mxGetPr(plhs[0]); + } + + if ( (((x_stop-x_start+x_step-1) / x_step) != x_idim) || + (((y_stop-y_start+y_step-1) / y_step) != y_idim) ) + { + mexPrintf("Im dims: [%d %d]\n",x_idim,y_idim); + mexPrintf("Start: [%d %d]\n",x_start,y_start); + mexPrintf("Step: [%d %d]\n",x_step,y_step); + mexPrintf("Stop: [%d %d]\n",x_stop,y_stop); + mexPrintf("Res dims: [%d %d]\n",x_rdim,y_rdim); + mexErrMsgTxt("Image sizes and upsampling args are incompatible!"); + } + + /* upConv has a bug for even-length kernels when using the + reflect1, extend, or repeat edge-handlers */ + if ((!strcmp(edges,"reflect1") || !strcmp(edges,"extend") || !strcmp(edges,"repeat")) + && + ((x_fdim%2 == 0) || (y_fdim%2 == 0))) + { + orig_filt = filt; + orig_x = x_fdim; + orig_y = y_fdim; + x_fdim = 2*(orig_x/2)+1; + y_fdim = 2*(orig_y/2)+1; + filt = mxCalloc(x_fdim*y_fdim, sizeof(double)); + if (filt == NULL) + mexErrMsgTxt("Cannot allocate necessary temporary space"); + for (y=0; y<orig_y; y++) + for (x=0; x<orig_x; x++) + filt[y*x_fdim + x] = orig_filt[y*orig_x + x]; + } + + if ((x_fdim > x_rdim) || (y_fdim > y_rdim)) + { + mexPrintf("Filter: [%d %d], ",x_fdim,y_fdim); + mexPrintf("Result: [%d %d]\n",x_rdim,y_rdim); + mexErrMsgTxt("FILTER dimensions larger than RESULT dimensions."); + } + + temp = mxCalloc(x_fdim*y_fdim, sizeof(double)); + if (temp == NULL) + mexErrMsgTxt("Cannot allocate necessary temporary space"); + + /* + printf("(%d, %d), (%d, %d), (%d, %d), (%d, %d), (%d, %d), %s\n", + x_idim,y_idim,x_fdim,y_fdim,x_rdim,y_rdim, + x_start,x_step,y_start,y_step,edges); + */ + + if (strcmp(edges,"circular") == 0) + internal_wrap_expand(image, filt, x_fdim, y_fdim, + x_start, x_step, x_stop, y_start, y_step, y_stop, + result, x_rdim, y_rdim); + else internal_expand(image, filt, temp, x_fdim, y_fdim, + x_start, x_step, x_stop, y_start, y_step, y_stop, + result, x_rdim, y_rdim, edges); + + if (orig_x) mxFree((char *) filt); + mxFree((char *) temp); + + return; + } + + + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.c~ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.c~ new file mode 100644 index 0000000..25a1f5a --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.c~ @@ -0,0 +1,201 @@ +/* +RES = upConv(IM, FILT, EDGES, STEP, START, STOP, RES); + >>> See upConv.m for documentation <<< + This is a matlab interface to the internal_expand function. + EPS, 7/96. +*/ + +/* Matlab V4 types should be changed as follows: + mxArray -> mxArray + REAL -> mxREAL + mxCreateDoubleMatrix -> mxCreateDoubleMatrix + */ + +#define V4_COMPAT +#include <matrix.h> /* Matlab matrices */ +#include <mex.h> + +#include "convolve.h" + +#define notDblMtx(it) (!mxIsNumeric(it) || !mxIsDouble(it) || mxIsSparse(it) || mxIsComplex(it)) + +void mexFunction(int nlhs, /* Num return vals on lhs */ + mxArray *plhs[], /* Matrices on lhs */ + int nrhs, /* Num args on rhs */ + const mxArray *prhs[] /* Matrices on rhs */ + ) + { + double *image,*filt, *temp, *result, *orig_filt; + int x_fdim, y_fdim, x_idim, y_idim; + int orig_x = 0, orig_y, x, y; + int x_rdim, y_rdim; + int x_start = 1; + int x_step = 1; + int y_start = 1; + int y_step = 1; + int x_stop, y_stop; + mxArray *arg; + double *mxMat; + char edges[15] = "reflect1"; + + if (nrhs<2) mexErrMsgTxt("requres at least 2 args."); + + /* ARG 1: IMAGE */ + arg = prhs[0]; + if notDblMtx(arg) mexErrMsgTxt("IMAGE arg must be a non-sparse double float matrix."); + image = mxGetPr(arg); + x_idim = (int) mxGetM(arg); /* X is inner index! */ + y_idim = (int) mxGetN(arg); + + /* ARG 2: FILTER */ + arg = prhs[1]; + if notDblMtx(arg) mexErrMsgTxt("FILTER arg must be non-sparse double float matrix."); filt = mxGetPr(arg); + x_fdim = (int) mxGetM(arg); + y_fdim = (int) mxGetN(arg); + + /* ARG 3 (optional): EDGES */ + if (nrhs>2) + { + if (!mxIsChar(prhs[2])) + mexErrMsgTxt("EDGES arg must be a string."); + mxGetString(prhs[2],edges,15); + } + + /* ARG 4 (optional): STEP */ + if (nrhs>3) + { + arg = prhs[3]; + if notDblMtx(arg) mexErrMsgTxt("STEP arg must be double float matrix."); + if (mxGetM(arg) * mxGetN(arg) != 2) + mexErrMsgTxt("STEP arg must contain two elements."); + mxMat = mxGetPr(arg); + x_step = (int) mxMat[0]; + y_step = (int) mxMat[1]; + if ((x_step<1) || (y_step<1)) + mexErrMsgTxt("STEP values must be greater than zero."); + } + + /* ARG 5 (optional): START */ + if (nrhs>4) + { + arg = prhs[4]; + if notDblMtx(arg) mexErrMsgTxt("START arg must be double float matrix."); + if (mxGetM(arg) * mxGetN(arg) != 2) + mexErrMsgTxt("START arg must contain two elements."); + mxMat = mxGetPr(arg); + x_start = (int) mxMat[0]; + y_start = (int) mxMat[1]; + if ((x_start<1) || (y_start<1)) + mexErrMsgTxt("START values must be greater than zero."); + } + x_start--; /* convert to standard C indexes */ + y_start--; + + /* ARG 6 (optional): STOP */ + if (nrhs>5) + { + if notDblMtx(prhs[5]) mexErrMsgTxt("STOP arg must be double float matrix."); + if (mxGetM(prhs[5]) * mxGetN(prhs[5]) != 2) + mexErrMsgTxt("STOP arg must contain two elements."); + mxMat = mxGetPr(prhs[5]); + x_stop = (int) mxMat[0]; + y_stop = (int) mxMat[1]; + if ((x_stop<x_start) || (y_stop<y_start)) + mexErrMsgTxt("STOP values must be greater than START values."); + } + else + { /* default: make res dims a multiple of STEP size */ + x_stop = x_step * ((x_start/x_step) + x_idim); + y_stop = y_step * ((y_start/y_step) + y_idim); + } + + /* ARG 6 (optional): RESULT image */ + if (nrhs>6) + { + arg = prhs[6]; + if notDblMtx(arg) mexErrMsgTxt("RES arg must be double float matrix."); + + /* 7/10/97: Returning one of the args causes problems with Matlab's memory + manager, so we don't return anything if the result image is passed */ + /* plhs[0] = arg; */ + result = mxGetPr(arg); + x_rdim = (int) mxGetM(arg); /* X is inner index! */ + y_rdim = (int) mxGetN(arg); + if ((x_stop>x_rdim) || (y_stop>y_rdim)) + mexErrMsgTxt("STOP values must within image dimensions."); + } + else + { + x_rdim = x_stop; + y_rdim = y_stop; + /* x_rdim = x_step * ((x_stop+x_step-1)/x_step); + y_rdim = y_step * ((y_stop+y_step-1)/y_step); */ + + plhs[0] = (mxArray *) mxCreateDoubleMatrix(x_rdim,y_rdim,mxREAL); + if (plhs[0] == NULL) mexErrMsgTxt("Cannot allocate result matrix"); + result = mxGetPr(plhs[0]); + } + + if ( (((x_stop-x_start+x_step-1) / x_step) != x_idim) || + (((y_stop-y_start+y_step-1) / y_step) != y_idim) ) + { + mexPrintf("Im dims: [%d %d]\n",x_idim,y_idim); + mexPrintf("Start: [%d %d]\n",x_start,y_start); + mexPrintf("Step: [%d %d]\n",x_step,y_step); + mexPrintf("Stop: [%d %d]\n",x_stop,y_stop); + mexPrintf("Res dims: [%d %d]\n",x_rdim,y_rdim); + mexErrMsgTxt("Image sizes and upsampling args are incompatible!"); + } + + /* upConv has a bug for even-length kernels when using the + reflect1, extend, or repeat edge-handlers */ + if ((!strcmp(edges,"reflect1") || !strcmp(edges,"extend") || !strcmp(edges,"repeat")) + && + ((x_fdim%2 == 0) || (y_fdim%2 == 0))) + { + orig_filt = filt; + orig_x = x_fdim; + orig_y = y_fdim; + x_fdim = 2*(orig_x/2)+1; + y_fdim = 2*(orig_y/2)+1; + filt = mxCalloc(x_fdim*y_fdim, sizeof(double)); + if (filt == NULL) + mexErrMsgTxt("Cannot allocate necessary temporary space"); + for (y=0; y<orig_y; y++) + for (x=0; x<orig_x; x++) + filt[y*x_fdim + x] = orig_filt[y*orig_x + x]; + } + + if ((x_fdim > x_rdim) || (y_fdim > y_rdim)) + { + mexPrintf("Filter: [%d %d], ",x_fdim,y_fdim); + mexPrintf("Result: [%d %d]\n",x_rdim,y_rdim); + mexErrMsgTxt("FILTER dimensions larger than RESULT dimensions."); + } + + temp = mxCalloc(x_fdim*y_fdim, sizeof(double)); + if (temp == NULL) + mexErrMsgTxt("Cannot allocate necessary temporary space"); + + /* + printf("(%d, %d), (%d, %d), (%d, %d), (%d, %d), (%d, %d), %s\n", + x_idim,y_idim,x_fdim,y_fdim,x_rdim,y_rdim, + x_start,x_step,y_start,y_step,edges); + */ + + if (strcmp(edges,"circular") == 0) + internal_wrap_expand(image, filt, x_fdim, y_fdim, + x_start, x_step, x_stop, y_start, y_step, y_stop, + result, x_rdim, y_rdim); + else internal_expand(image, filt, temp, x_fdim, y_fdim, + x_start, x_step, x_stop, y_start, y_step, y_stop, + result, x_rdim, y_rdim, edges); + + if (orig_x) mxFree((char *) filt); + mxFree((char *) temp); + + return; + } + + + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.dll b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.dll new file mode 100644 index 0000000000000000000000000000000000000000..024aa0cca13a5b2faafc813917989e9aa26feb65 GIT binary patch literal 51200 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 R?WDc*9EHMnkN;>7{2RFKgKYo+ literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.mex b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.mex new file mode 100644 index 0000000000000000000000000000000000000000..fcbf61275ab6d4c9cce4f6d4d662a92bd2005656 GIT binary patch literal 53570 zcmd?S4|r77wKu%aWReUJAnE`U2{1s=ppgcPb|BFP2pHs#qlAJM+k|A0Tmy+os6#!& zOh~k8OTQbh+G33w5NvEI7jN}_v7!x%78UP<y~@Sb+Cj0RrSHX7--{KU_xD?SpJWnd z)ZW|o-tT)p9*?unI%}`J*4k^Wz4o7Ta%IDYiH)Jvs~c}_tWio?yBBW_<G24`hH~*H zfqxqK=pLn<D<`Pj?xbhu`ji^8OR13;EA>>a%SwLckR0|bN-;O;nSYj2nFS7g=NHd1 za6O6(&oioUZB}a7ZhcSKfPW*C?y{50q~Sbse);$TTxYWY;qq}!#q~v8rMTwex)Rsb zxUR(&!qtfD7F@UC`UhP1fq|dkcNebzf$K?JPvbg>>({v6!S#VlSuR{>;TntUd|Vgf zD#3*|tV&$h<GKM?Gp-0O(6>O}x(8PeuAkw00@pLRUc&V{u6J?$3D-w1<;ujBgX>&e zlW<*xD}W31T|rzcajnJ${$01=0)5x_ac#%-2(Dk?dI8rfxPFW4kGTHbr82;G#xPty zTm`s5H)AHQdAP2^1->)Dcg6->pqX(OF7TYO1J^&|dJNYuas3OfH*kS&M#81s=in;B zbt$egT#IpCgA07R*Wg-@s}<MZ<Lbr*9k@Zyy&u;hT))BfHm>(^op!0rk+>jx=6SfF z+sqPNkUbN!XMPPAXl6pUnV^{onwj_F`Z2CYaqYu}{>uDUT;MVDgiB>X?kwmtYYZ+w zu3}uUi7e2}0<T$L!3Ei~Lb#yQEE^Z(&qAMNf!{39&VpXEp2hVmT*q*M*KCDr2rkgg z9*+zBW`p1C%Wy5gbrmkyT6Qh2wYZ>%><F$lT;MzV2e_cyY}j1(6S!W)^$M;yF4#l% zNn9VglqVC{*~U9Y)4s19UN!Q{?Q`Z=jhHh%cH{ivmv>Is=bxRiFZPSFk?I-OJnNTM zTkDs~md36qyKV98%0;v1sKwPSYZle5QVZ6#gql`Y*MxYpHWZ%M)U>$yhRSdYZ-PyA z>snT;wc)wd_4N%kD9mpPh46DlsAaMKS)zY}P5O6f3##0J@`C22jnz%fL|)Kb-mrdE zy)GspELp!c)Ko{R3!3LPtZl3hg;Ac{6sm3s&0k+%uWqVU>(;NmxHeRya9!No(xjSi zYH9(`buCvkRj*cy8fvQRD;ut;Z&+1buNEx^TXWYp&2C&$y*8xggl?!?x2&-i)KqXz zd8j_r5?Z=pU5%RGgvZx3tY24qO{k_tEeYMcyl!1>!_8`5xUQwLVd<I>+ODXpuWJb{ z4y{|SDnsFx`3>s?Qvgmw<#kO<TN;`|3hgefX{v5iU#YII(^Siws&6Lpoa!b%23ySy zO=@m^U86KwQCAz93z|(0^{R5-f_2Ry$h8za*0eaxtgD937PN%csyWd8jf)$;5mKbM zFtkDO#;MMhOt~4|8lK(QSbtr^x{#_^wvH7w|L9@RclZc4UDX&`2enjab&FntO>^rT z&|~Je935UcZ+1;f-8ZO0He)((VO@QFUyB;Hysoxo4Qi6Cu2^2z+(>FrufwSpQ&dP+ zwD?fjdT3C(u(CmVlnNsjg{Sh>RjXGwhgw8&OV>2?(F-;O>uToL!Lm?cK~2Lt(R4D| zxofJMG;7dGXkD$e9c)>!PG|+^fQ@-q%@^sH)_rq;N~PhY8=AobdW~wF2W;I%Y-f38 zT?<+Uls#Wjy{;B_5Z08~=b96AN!{A@YoQ!CQ+a50_4@i2WwhgH2G&`<K`m{8V#^zD zUZ*P2;9OW}i#F=YI@q(eNT-H$l`)mzocZ<Zo7a4$p<X00w1aS$el<H>%$^r)YN!b{ zH`7c)^S%*68>RwWqNQ$Ks65nM(^S_8!)A3OCS8uoYlh80G)HNRfDaWQJcznLsLyCC zo2n^;HgQy;2Q65)x<M_ku4`F>Ue#?2x%qSF@R9BZ)6w*bI`O$P`GT4u-Q4;RoJ-qW zu=<7&92;#IozPsbXll4w%mQ)*8{lAIqq3o)9;`LauB~l?78LENPmQ8f;bJ}_g2OyT zqjj*lkg1$k9;$ZyqR%<Yt6QoiG*QxKDH*Rf`t56m+6Xo@OGDZ&uL(7aX<l>1ocRbS za~tZZeYEM+(XJ^{()SIR0-7S^y}=Zh&JV6{aooc6Hr3m-wz{PbPBO2lx;dnsNzA*l zy7@+hDmsK+gCHc&n;X_QA!x7{G~s6S^a5J>f_2}ht``Dg{S640WU8_O8ftE-hIu1y ztZ!-fN?qt?JZTCou7(>mu|9P<ry-19TiQ}zURPb;a04s~{nMwA>q1Qpnv-B?-4Zg* z$PNr?t8r0i-3^E|V(?-?&BjIOht5+8(2EgzD?)WQtZ6}OS2nCNt+Des6fpQnw9@Vm zBW`HiKwB1Pr_{PavnpROr@D5rcw=zR@+J%m(sPybV1{bmx>_^Fumeqa2-Y{~cmxr| zau7%6ghGuV&*)7L0KMkWGD3n>j^l$SdQ>0|-bj0c1vSA%O)rvX>Z;FKf=w8&VJb9N z)B6mvI#fcI_3R46p9mXjzHxR<4Jr4#p!Oz?_w(1UgIU8w_>Zaku<6V-@|e3PXXCcV z_23ix5_>u=<+*cWqRj4^9JZghFl@j6#c*I#=AA|3lq*)t34n6Xe9H5Woz-dua985q zGpkoAl&iYkDrZ(V<|3A=?Qp9Rvtr8HVyV@$s+2XWOj%_yl^a-<xxGSddoea!dD}iw zD*EO}VcfsM`yyohvp1<S1A8?IR%Bqmbzo(il+VD9Ixy5F{U<<gEn&%Y?1r)7WPCf^ zcmED?!He6zxeqokiKfHPf+U#3&teCb#Lv|Z%<%JGh1x27oA!l{eM?_kf^UDb@BUh; z4}IGk#)ivURUo!ec_5R9Lq})}a%L5P?ybb-^FXUw5$IMUfv5Q#r!r7C4!Lr4yIXHc z;>*aib$t@d$h38X1M8P*Ys7(RnX<~z_7K7h?Hw%JjgAZ&-_B?~T!g8bsk6F5bxS{+ zI<r~lz+|NkWGK&Rzi0eurN$qbs2Vr5s+J>`T2tgz)~4C2es)ad6d^m-_LKD;(D|P5 zGY*pxEn}{xY2X9wsQY%o)i5Jt_gxOGU&ijc9hl+wVYD-aFhhGE%l$HH{6R7vsZjU7 zmsIC^mQ%>MX46(x4;dSaMnT4E)gm&U(<kG{pz{#x!tXL?J(@_&YEC35EBe}tXQFS% zUkps+8#xW^r$PfT%4uK^J1{M0_7u>&j4<>3RhB7dGX6k0vlpU{^uNIoJ4z|%L@lR% zR*%|bX*uoOEed^E6j+trP@(P<y;fj8Z?Avguzk)QhwbpWUVDtoyKzR|;f-fohoOTk z$o>dy+4%f@1LW8JbKd~@4Qzn?1~yp!`@n<9pG?QL9b3Ln@a;(7{bQn^vyLl!<Jj=* zR+VGto>bs(CFFU!LftF<4|x`CyzIN-jpN(G(Fgtzj_&_+82+goc{^>TV);rHA|z{n z&i*6nJ}UiyXTX~%?SKz^eMc~mkx1BHm)BO%5mswZC*N+4Y53WMLvLdwezpWwd4@&Z zPlq?Y^*CbdeRZS**tm_`e-hppx`(i32KI%G?GJ=E&bxy!@kijz-dF&>GusHe$lxuF zZifud{F$&k1A{-`n<-_C1%XYTEfvTvt00fD%NYR;-wOERBzV4o_W*v01BX0^qGcl* zZDrkAsXV2&I+Tmp!SNtJ>Q9Cr5IFF=qhI-#@W!X{tj4-C8h9ZbRR*utQ(BqfDJ?0- zqRnJw+24HbaP;Qigaa|g(R*(q&y2r?W3}!hPd7uZu9+fBH+8Q{fy>`QJM{2jJM*Q( zb}eku?ebRE_yYEr{9TpG7YMY2_Sno_wtKgl9ZMVu?7)3yFU$MwbB`;rjXbf90QCB5 zwESPf(J3#mtyhc=|In}3F7X54ovu*#h~1KJ&2!fi!ZXIFLi921Me}^mtwKliJmjJZ zb@f|G`Yiv4*(&f4mMXoYRh8YbRh38Hyd@m1{Y^MJ4}6^WLU`kkU=JPW|EcKjzq==V z$39h2p{6V#4chNNRHOcERSFtqpivGQ6~I{(u+$2N7Hup#AN0-#y&ll}Ht1dO-7xZj zAZT1B{9r|cu_jvc8_52XyUFv$H))$c`5wzLOC1PIRK2z*<H5&}gDi<DzvLrZ6OVun z^N~j29BSLA4&eR}#)pH5pD%CPr;fB%tJm->Zb#uKe~+AHH*%Jjz8JRuR1&`3QhOs` zTo{flSsIQ$eEZ>|vk+f5shj|q0&kv;lfN70xDuVaJ2(J7_l_`eqmx$%d}g=C$FC*h z5XWE8Kn_$2I;3Z@9IIA)H<r*I8-sxw_-pgI-e|@>hoiSxcWzt>ct%Dz+GX8Yp|Yx} z7v>wLKS3jr0DJ~y*&F#yW6&O}f{=AD<+ev0Qg*%yMqfKg*dfGDPvqClVR@zwFqV4S zCc=MS`*XMige#QQ3tjC6ZyoF>@n`t>Mo(LK<B7+^f!7m>!0AL{re9eV>c<jimRG^9 zzwX|((f?igi84A0RIc^~DsRQJ;u*W_QAN7~HOivhV-fG0_Na??*&J_TiP!9hcL(kE z3lN9CgX=irVd8l7^&fgmZh=pXUqhU5N?yQ6pjRo)%R_h39>8~%!w=)8@Fa4nzY#x& z$WJ%g*=+y%WH2RP&qB^V9rb)nzWR8AAOG!nY9voB(XMUuhf?%6?msDIKf?D)?|?6Y z-<>IWWq-yU9rj#JUfWQoP1mWiyB<F5@cuXB8+=A@dCF_&9}r!__5<v1+6R0gVEVi= zCBNwJetv(n)%1Bs63?}^J&<SnzH_~Q6Pp~!ch{MGi)|n_sYgE5Hv07a;L$<)K9lz! z{#WrXHnb?<OC+LIM-YFlmrWelY=0O}ZRfO|x0R*+@4-=&#lCx>?*Arw9~cW->{rw9 z^LzLm>_hXjL&i7sMXkMIAWwfYd+6g!`n?Nn-N}AWt1rfdK7DO}OY}9Ex4%_?_wgqE zT5n>*Arl)4*)NC{TQGKZ%GinV(iuDNIGQ+p$G*g=JGLg?zoRvA65|HP(cR2zOP(6? zr;;~@*d^UEuFY89jre}Qnig$)6L!B~E67R?hcVH+`~l=S8JHVK)imhFE_p&(h2xY5 zvFc!8)sVf>cGfAnnsp4lGUV&bQM}QonJ*Sej)%IKv%2@-ehP7&HUWDau(PCoKkZ(? zpR7<9en_~Ha|PrKQqDHW)&|+yAX^(`6PdS9JzSKftl6z9zbGq_z<kPElr8r;McJ4; z#Z)23HSpm*;Bp_TjG6q+!~Cs~G3*4MIXFH(w=>+kQs5mYKWsBnE^RXR&zZTJ<G1pG z2ad<M=h&(|Gl2^}1SbGK1c&#)34lN11R$fm-8xLW$GzsS7yQB2Z1R^C6#ncVU1;VI zs){rrW6;hHl2(QN;DzBx-B+P+Ra`Vgp84$|em?V6f)-`5v#<14DwIK!v}aCbzB<Wk zgJ<@qy#wX9ab-$--Hx2Un3y<byOU&X7dbpLWBsztoM&KVSkpOnHTyzjE_rsKUP{m| zWiElNj$US7F;FivuQ0kJt?h;u){gA15sf;3Qn@qB6Nw0ND&7knKHq^HYX|cy*xC-{ zU*<kqJN58P&;nd^yKJ5>F!M_47WvCik^Ka9R<_CVM81AJsOM?wr2P<dT7Qyx?4f1n z`2t12wI|Qm#kqQ9{!;4NV?U4l?AcRS1Lo)RGoJna6zivc_Ux&k{d;w&Xqc(DTKdmp zzd)K*nr7-}nr513_Oqz}%Zt60&$6#)>|#I9yb(E@@?2nhF4<*2gFYTo%sww-pGU4_ zpNk%HE0pU5{TFgzuB1HCC&1tMr2E&AXTJLp)&?n;RUY|nO*nFS75TA?ga+orKfh3P z6P<^;+7@#nGZ$*uRMemKym$FbN1q3^KCjdIj9!_fj}2NM(F^<Q*q(#CX5NV0b!sA^ z<#};ew4f?z4?!N%nuyus<D6@3r~To#Yx%c5rID#sLCxot%q{<Od|qq#yda6sZyG)q zg3oJz<z0Rq_5Si8K3~}tEhnFcG@siGgOT!JFye;|WL5z7$sT*$5%6r)i*IkTYL|yF z58iPqsP%mTcu%A6$Bn*2N%}rt>)U<@w(!v`Z{^#LzDu>fziQ<8yCgYoF!uL{{yMg& zbdVgE?Xr(ijzDUCe+xXn?dW^fKz;vr@@e#K$Ek1f{>dK3x5p9N7|Z{E6yw&=z8K>; zZrR_SEPjc6OWBFz!N`ID{aRuj#&8c~1AU3HP{ujTbr}~puGuFrce;`I>V3vA;xo=H zJAaU^U14J7yRfUbq5osEMj^fw^u^0T&!YumH))@vzBhV)8oPz<%|L!8^qu&aY}a_s z{0%%8^u^s2&+WIt>xbHJ#0Lh%Q24-GjG?fjSi&<fhJJDYF*N>H#L%+;x5ZEsJG-6O z$yodUf%v(1aNM+?xWFs16TT0dPOazv#+cNnXA?7Lo}Wg~|BXD_XU5IF$#IkGbY^bR z%NVjS@t4Q=JZ7m1<m+Y3*CoDICr(gai6ONnR|KBqZiqvHObuf$9BIdzzmq@yeo+4S zdy_xLlj{C*VE!2RrN&`CZQqL=@d@iryIZdf+sCFKj_#j&_|x<4lk{to6RIBj_a$NS zg_zN4XJQTS?T;8U8!I0|oMUX9yoh6JzMX}&UgU=M^Izoi+(^0PjvnToVw=Rt_G_GX zN(5&nPEZ2ZL)}F#xYE09DszWLySSFjIHhx(#k(SY=4i+hVu{VRLit%-O89K7P#G<D zHpXP;Uz@C*Y%6kGO&C1o*l}scV`n3tDduUGZU16L&>n|5&nC6AXaaB%|A-rXOXTv{ zzX0xz6^!e)tihAc&<q(TB4voXY=<z63FJL8MICZ@Ptu2@2Tx=^>gf4Oj;-bPL=eB7 zIwJ4eScgE)-Y0JXc$B;-5knijpTXyy_K$^^a38;8HNVj+wC&{O3-mY?LGBhQ(YhYM z?{B2vJkix@_%(IN@60O)@j8?_T%w&a1RzVKpZ_(sTLta?#X<W?^bvM^kb6KTtM@bd z=}vnHWw643Rew48c8SjaqIF6ArFG<qATN)6^&0Q8D;@i-l$_8`CI7qHej-=&*Reg7 zuum<g?yqILBIWF_pyY&qRew4BmKuJ)oz!1RIcn7YwRia~4!^IZ=l8VcH~KB);`hAa zUEW21I+oO5Z|#b<gV&*$CnWb*KmThY1r@rlhDcwvr|7>m5(5#_B(_<Jc=G(X<e2v9 zl6ZfN8ZbZJpEN&ya8P`E(8Rayq`FrOjBf+x$L&e;<9iV6u-5?n>-q6l^*!wjaVh=$ z80#2}QK<JB^JCY^=y%>UYY?s@#;;Cu4h{P6Gaf{L@(0F*BPO>hvWH2$E3lux&da<| z=A@HLcX3{-ZRe6*!0+ZW`*$m@w((42%kL!q<Ny|w`K+E}7Z4}SbH=MreJ*sK$GrF; zZK8IU{rq2qC-70I=gOg72j;jBkO$$9dmNZAJM-tHc{9#lScm%Mwe}c!cN%%Oi#)Ff z`{j8(Nd9tc{AzhlQjP-LYkAImuI2fZ=R)U&Bza!fI{qwqz`OcS^Y?oh+dh?lu5Elu ze`)#uv;E0+4yQj~|Bv?PC*=ck_>T)KROX^0*@H3bAYF({gVsf&&;L1W@1-7GD*A_y z!ja2PvCsO~7xu`Q<cVgYt`p~qbexMI&PBGY@-Ex#%#~`z?jtMo7!@6gI?nv1{;PVN z{ce99+V8-1kkGD3`zg%Jt0V?<TthBUrPmZx_wqWfgJ3N|_#Ctj@?Xbiq3s#SC-k+~ z;f?c*B>uKUw5~*-^h@#k$Ba&qa}?$1JS4KEM)VWSLCnv4%Ddd>=yZR2ohGj>1@wB9 ztSxQExGsLrbtULC=YZ(b(RGrJYn|LU;>Ui0<SHMZmON)uMy{QYb)HSun&tDjhI2Bg zZAGu)q_mZtTCT{gNw$)_hI1mt8qOk<&wMAzR+8tkrp}->9P|O#aA+%f4M*FG+HP#6 zYxxaa!*Oh7&>GHvBcG1G?Kt(V*KiQawmUku_hP<BpVafc7}v}3yf#VSG4@ZNE&avh z3dn6z`sWW*_-Cqh%4GjEbq4sS*wX;Jw~fyCQ|DMW`D`CZ<~u3J>GOdf8Xs5$A6Ti^ zAUQtUlV8?8u+qepWLrsIw={KR-LlUIxMoQofGuNfHKh+63t$Zs{gKW5_meGL)1>~B z`pA}C2|3adtg~^x_?x5HmpYm_f&HoD*q=Iv{i(Q_Lw56=Rb>3!F!dvI#iaR><S~Qi zisjbf=rO(bL;Of>F=H_HVPwx|@IH)19N3P=$<{an_F-zV4};tbH1s}9H}+w8u4g>< zVKPt2ywDDfb>@R7d8Q+>M&k3K%6i0|Oz8YF9n0+`Ux{p%ao*48633FBMK?=skn$Po z1*4l`pB@wIa^~u>paWyU<_eCX{xr`hW7=mC(2R6x`?kl|%DIl29y8w@4_l34ewk54 zd5dJe$-N;Z^5+`cEsFSMEX%LV@C6P`a`)Qf^LG*Vv{Fs>_;Dx;{xKaBRdHml*kFET zm4ok=b~QfqJCtow&P4o$H{6FzKjc?p53&;dU|$aU<536wkvMv4mg$dUr~RioE7Z59 zaxXR!_jH1nGwWWDy5n@+(~~@Xbt}|ua$YZy@D!N#eA1R_=d?Oikkt3G_ZP$2RIF`O zy#PBl`;jNwV9VH#Jcj+qK0ANnXkxFi>sVX0+Jo~Ad)u}up3T|cc2pg(*W=96_i<+F zf8xy2sgiIcZ*Dj;3+I)tS{mLMH|rHYfNwpc_qFWRr-B=QF#YhXTAWQPI~26f-J)jA zMOpO*BX5O+(OcueS$?HvDapq@(WU<qw(~ogn|q@F@Md`Vo4K<p)cJQ+;d!As6B<}G z)K#HI+)kK2gOphy>n6{Ak#?3}x!)I9=FgpF-;2I!v!=<O;j@3j+NbW@$UC=$_1wYQ z9`!uUI_=BK&{xZFmgw!r!}fE3@djezPb=-7KXE^xJaXGdha;gsALia_Wb=oIBR9T> z3;Q9Pi-XHH=gx|>RZUxVBWPTTJ<FVxyLjG+eJ<m2&h^-@4bVpR%KqrvKlj?%-G~*5 z?GexOUcIl^!RI#G3a8;E7|9er3fNg69k$hnxQc_73T@Y@X_d&y#0D<K9AOx2Cb|7# z+%J~)4-9I5cYpg^*nY>S>B6-CU!V)bZs;O1_1EaL7|Nfl#F!W}ebuL*$axFH>@U+- zLDN?OJM+)b&3m{CgQAxgsG}9rWFPrItRLwg>Zji6pF!=H8~qej_Wo6U^75cQ**mCD zI5$o!bDvH8Uy)h*p+omWC;NeGKxg>OAU*W^%xc&v_+lSKZlt~HK8f52pSkgK_sL)7 zGlO{fFZY>2?XT?fng8p$NcNey@tFxnb&Qm??GD8Mn4GymjAvdGcxvd37;=_E#8KpP za-Ng$*lmcb+s5n;xD$y^JZFrtL)J9rL{2`Gd{(FLoDTA!z$#y9$x}m%V~EuyZ}`f% zwh7uZV8aEm`;cd}O%4a#IB$pj`N}HT0M77KsF<Apivb2+Cc*cQ@ccRIOd<amyHcK` z`7~Ziw)q0!V@AmvV|L?Aj*K6l&O`J?j>XA5#4vXTKU{OpZM~P{K~&D`SE$IVg8SF= zCAnhB8zWmNAL17F^ej1R#B=!peBHnvugaXh0KccPhL1c>m4Sy7T+cV<LQ|hP-v`u@ zoYz12XXq>{=i33_i!)Cnaki);uxiBq<=yB*j1zVp_cq-AlBY(L0jD0n^YL4Y-{tsS ziC?_mpepgpv1k!~@4#<)$v!ok?QcOJ;diJV$vBKN?6`3D1ozP=GX523u8O<HBR}1g zh@;IPMUQ<1elqq6e>hiV?jPnop6@pIa&`;0Wi3p6{E$4u|Ip`>uM9pr#Xjd*{lGTg zLFC0gl>J;M6y3S|bw@nfm;DUJM*cpH^VPRn(+1m&vk!zm*;&#nV}9ZCUf@qq(+a^S z^zM~=eU_|_{FS_}tU~q)>=b<V?HM^|yqq>1+A){=i17m-bY;a>W$ft$Y+>SbE9oWE zaO$S?FW5-Qwvjva88wUB*{U1;!E@x5Dyx}xig#Pw6>97|e8&EQpSgR+E0@`0$nV*x zkULF!mCwyP51x{EA_2QEHu4sOMlsfsZao7>;A6i>xS?Il_R;oqv|YjY09z>(eUF2! zsgty2FYo!xj#%(@^cBwAB9{~WX<5dKEO=H<y1Qv(<JG0$J;(g!n&0!xuh;xuV19l0 zodo=Rz7GR^{?+k<IxNJ#Qpr;zcY^0dCEX~;MV{j2aoEH7K6}WQ`;BVa!bIXx>X5l= zNp~Vql28`*d??o;6Tf=8L9<f1cW9p$dUv+{j(wymV-xgyZagn;Kgo9w&Km_a>3(Td z#dz*!e%lE=mhtN~zZZ0aZk2MW-S`EqvgqsQ@>!0=hghP=;N=hx?bnEHOi&)u06yul zd;$CAuhG}wbD8%2lNqOv$D%@$b0NsD{QA8l_Yg-O=*YY;piXO^GH(P=`8>agIEbC7 z2@esMaS-(6tQ~wzVy|tV43<0~dkkKE-gCl-f{XDcsa@<-9WP@$^kaKmhCJh0&*%=0 zCF5UV9mt(Sy0&`P3;A=RUGI9qM<Mw|{CSHw#xF$IM*lJg=*VZi?DdFmUL(U))&)&B z>r=O&A@R)6aAfv;nx6a4gJPY5XL?NB=uUp0HG2A;f93l>{dQ#K7lI$$$F;3lIq=&Y z__5OmKJ8nsem{<>z1m+z_kO<H!u?aN|8auHcREG?WpLzkjs9;r6y!TeghxMwfAzNm zogdIT2fm#Lo#UCjuOsgajjN_U!BY-t+3I;OeL8x}^WNx(r-IO30eM6mTuVHovs~c2 zfhTrKpM<^(4d2wakIz|;IH)_Fb?y9j4kKm<?W#Aw4}0z#JDjspT*Gl<suP!KYxXZN zk3~*GJw%_y`)(MM7bZU0AT%fVWGvQt#F<wBLHje~eJ9?l>)fiUI`^sC&ZBA#-s!2o z9q)+VK3lcmJ%bg9|N8@*MwZ65B2Mj7nA>=sVSCB6opHe775?#JIvmR7;87mECq7ne z*{=Bu-_01nvqL+%UOIjm7by>TJ^+4Kg5N4VZhPeXv-BB#8~oc7@^*cmwn#I{Z^eG7 zTjWA+?N{#FB1AXXw!FuR^BM9k9_;TJpEs&bj%R#Fx7grML^&rAb1@cr0<k%YaQd#T zCWm*U47kL^LhuQ?^?|Bfz{XrgopN2FGm7_eVUK|c7<b^$;LnYG#zNV%FmXz9G|-qq zx~Nk|ni?lp5hsQ^_&v}3UVu6lX`6c|e&^y|VsN+6sgn4;F!Apan^M`A(^p)7{6%%* zHQmpjG%^-2KE%eVq8C1b@1U)=k5n#WAIC186RE6DJO|&!#4|ZaK{S@#g7OW}S*|Hx z0omDy7V!=4Ib3%H>>R>~7rRAhgmzb3wWwQ)HVQ#!KFUG1hw?o9VxLhl@2@~PfU@7T z<s&}s^LtRAy4`Kz7kqEAtW|(Z`z&*9EKqH&3hc8`zhMe<ZG#sOc&il%Y*jPyY@$4? zW;svn-H~kz-sc%4-)kL~3c!8?_OmW8{G8_r<xE{i7Hl^oy9Mv79<tTc!}&Xq-@091 zyB&Bq3(n_|Aq0B)rhFl3oAO17PrdzRoUd-j+NV2l8sp#^>e5zzt_!cEekmJeB%HDU zH^_OG=tAUOcS(AA*G=!2*Y`mcbq6^i*UUob*{)LORn|=Sg!vVG$%psr1Gd|@3(v@V zQPTZ1^fz)AtWg=9EwD%CFX)FO-DC02n#!IDoC?Q2D7&Luz>yzfoW%#!O7JdD$Am-z z`YE2hDRI)2Nx$#8u_yYS-=Ph9?9*vZyUeMR+H&l29_avY9@^tO2O;9KAIU3njUd`} z0jEIT@uMv5zFoj8-g3WET@&ywE$~3wMf${HU9Q)bwSIEU;RW?$DcZgP@HHLiE40CP zFjvZ6>Lyj0BxA0l1MpYs=mEI@A^p&%jIP*TvBMwW1xbAP$OoQd&SUfk+3xs_%7=dv z23vk_7wa}+KLEVv0+&8L1JAw44};VjeA)+?56>AZsADBC%fh=kR;RO0{5WEc6N8-b zbI|)aoqRvX)-h!T+R7<;BNy+%z`owd-D%(r0`HZ5=|TewLoT0F4`t?U$O9$!%Qf)Y z*j|ZeKI+E6>OjjI%hxdvyyGmZI#ie`I`IMS#JL>21K<I!A8SzGch;Wl32Il#6F3J{ zjrUJ7-ogIJpTFM;T4=XC)`fXA-WSI+#GR4*s-P3TYlktd6ytUoVsAOhWvtISD3=Qz z&?K!so)9<1R$3Fg4G%NA^R-VwjzZn`aqKln9ERU0ufr2<m$dxjln-s>!#^uxHtb?A z&f&Gci=4<iT==rl-;h;o88H_)&V3N|d~B~#CH`$UenmD%FNn$dS)XkbqAvA01M>T5 z8>GeaL(vD+)rec3JN7CcWDR5esB!Rod_e9xJ8|6PA;tFI3&Y5N-iO{|-K*Sj<Phz& zv65}W_LMx8dkD61WOub%5Bwg&OS@x=xjMeR(gOXo$XTs@YJG*uy_@nPFWrE(43qz# z^Pz!-;m;h)rigugQ=egqe)V6%MPupXitjhKx3<E+IS&Z^CS0M`%KL9J=HnUb={*D& z`?kkczxI+R(v5cgivBYN{o~`k$^9!qvj^uVWK05XH?A&RTX5Zps}t8|%Cy^3yP<o( zJ>Dnl^n4$!8?cft#4a^9%;z1nIpnf-dv;5OI(rA@()%2VgPd=m{R_ZjIof<5@yiW; zz8}kwd~YZC-D&(cpJf~G{GjcfYy))Mq|dg%1IHf4XDA0st75d>o$|i7^3nhOyeBXD zRT%rgi;RUB16hYO$V)7Oet^xwM({0xtVc2K?J+z~qknP@2Kd|2M*HS`Wf|W6<efAI z@lQO5FP0s?wh!WKdm6sBe=1*)1@Gg%ruBN3<d4)VeT_V`E@eTx@-7?f?w>mLqE0pJ zyw&i#Pkd)K`-FKe`hnkp;B)v?)-!$Z*vDnGA?WZ3eB=;)<Z<{ya@>So^t+76eeDNC zzrQI|YU%7&_x8Z5+>^4#nzTOGF+t6O{_4SRA-`c1cmRFB9eogmuilzCZE{nueOunH z3gvE(;TiKs>^W&X;-EjafY&X^kIej3asc43?dRQ%bsPGPyWD9La{8oA+8f%Yy+Kdj z!7${z%G6ndI?QcpA2SGNxz9Gib0DTJ8pyM%Kn~12;|a)^Pq~0|;UJs>gOdP`&*1oz zanO#;5$r7FYugcXCaBzni4T`iKCC^~|0iYQ8UWW%@F`0fBYdQ%<AAJpF!$$NL-Hl? zxQO_a8|5;)TjD#%xm;7`_*iJ<C>|gO<=68Kul*qAQ7Pp*7146J?lf{OO6n^Q`|3bO z;#5*!^}&v4J}C?5N{+t&3;X2HGS@<0dL+qa{In^^S}d`F<(kCl-S9Qw?RNSO{HDa~ z)Oa1KXqad9^b6X4pI>CcFJg*z!glc<DPo-1%)d|6y0rpH?e0%u^SRyq{apzfI^T%F z{-c-^2v5?-xv~3I5$`dUax6-I&iP^y+GRiFntsnkzwJ$;=jF2sHC)DfJS*mX>=(%6 zW7N+unKPQ0M&HY|t9(J=d4N}h`D{MQXUdPb0C<xBbKO?P&2rSE4^HW`Ly0Z;o=kW4 zdh|h#z1_r1;0Uf`ufQ{N*8%IUPW($+(+cwYVD=9uhhusDdi!#33~TCo>~4FN-&h*{ zWbAG=qoW4C<#NAa*JQWswve~v;d>4ErVV1oEwK9>d<&-xIYDm8Q8lNeN|iyb0{y*~ z>=66XS<@x1k@0ki=uSP-@k5FAvoMcDEFW^M;726K$SH{lFIzg!m3W5rKD2?HFWN18 zQXc*yk5-u9wLlJ>F?rXEZ=aNvArIp?8=Z{r`e5&)Gf(!t?j>y*e}PMUu1DHY<PWV1 zXB&o!UpRD7$Lq8UoqJ2J!@TIXCxh}nYinYWLmRTr6S|g~L)~|7P&1I*mf@G{ndaMK z8Apl3HB*dDdoVWbma)maKgcz)q`v9yTT{S1LFNnhARnwzLCz&&k0U3n^#x=1AfE~0 z_i>y9#y$H2utGc27c6<|>{TUioLv^(j`e^|DlGGqR@E4NO!QV&n1{U@<i;gs$`AfM z(OEBqi=bn`$}l&{X}t$9=#Ag{sZh1@eJk2`C!SFk;HlVFzw%<9QjGde-gZ1X>p-w5 z5B<@a=mrjRHqtC7P4MXzy2$@3RLwh_KPS=jaZaS^o;#RsC*XR11R2`Cs(fg(3hS6! z2EUQvTI8B&dw>jB&)45fs@X88J<}G}K?llE5WV(Lkh(B3<PVVH9{4@<PdOlitcMJe zAwRVY)<MAih8AU@-v3G&Rz3RpWU#6R$xvY0T?G5!yq5D*_D2Eb;Mz)sT6OIp+U$>l zG_okbx!y!wQx>iz{gtv*5AOdo{h{tmmZe*-hui`i?6>Kk8=L+-_CTAK_3-MtLGq?+ z-<#aNiLGa>Y10M*+w!^=Z&LntjQfS~sl_pjm4L%9qu|%W7#zz~_*#VIB)Kdje`l=n zvW#)k-5HYosP@=1^6QB`tK2vj&|e2-Tlu)Jb)4q~B-a8BwnaF6JwMil@s!WF&x-SO zJU4*;DNdr}BVRaMfcBBAxpjR$7amrlP4GfKDUZ;@z1@a0T)<rfn8Z-b^YM(hD%Q^U zjJ8-N4Bz=AEg5&*7as1k5+`H0>`d%aD?h$Nm3TjfZ*Kthekb_t!%f;7;MzuVu3qv~ zUKjQ>oU><@0oh+Q{JGIS_xmtMhO95gYS14wnm5XU`O#~D*NQ9yaeGqX@_Yp8GiO0P zt%HH}8k6hcd=qq^c<swr$18avhCQ!S>{n0pW7wOVpRlG>fe)VjH0vYzf+ORhZe#fq zr#50A^S~WD&~}Jx-5>vybpXqWeU5!pqpM!A#SAsF61frV0kK)=ciPxPfqtC(SRvNG z$zw?zd?GKyUdyfaYVZepNvgLZ_8|H+1fF2mIFm`a#CDBc71^185gVfo$5!jUL|L(n zJ_*t$?syCJH|2FvuFm~<W~JT-NtS`*OodvK=lCgjI%D65_QkcZLN~to<MJH{yfM5N zc=^axj_rmVu^W`?M*Ec+ncVMwA8W(bx5?LcCWmMGVN2i>_};q#+k$7vO+EqMK|2TY zg&eHc#jr++xv8A(`xf?{bHsNGc#g4f$jFm;?&}yzAIJL<n_bhE#oS*eJ@`jKrw20Y ze9i`Z;<EcQr$yuQ8!1;Ln%%NIp{6bSZr0_|KYTU3?0)y#{qQoJU+jZ(zc~N9?}At4 z$tdUYj3U=$$p5m<?j2a`EoGnMndj~rr5su8+F+39Ao_F!9HXNr15b^h+<xfk_sH>j zceB4xH%V8gIx^+EPHJWu>QzB!{W>Y{)5&dpIw|hJ8FRvIwSwb<pL`Y$6&-miW5Z8> zihec^){lL^(N8<{aBOm)el)ynT4g^R@~aukzLWK3{N_N9m!tnY#EZV0y*~1HU&VKO zug1GBitD(1Pu8M5&|3}ebL8AU_B6LZ)=14)!;Zc{!{6~V`ZbnyIlgaG#=6uaVv6Wq z+YQdvKre(ldzy~@GT)WGOpG@bYS}BaVft7smEFVV$TQC#a_>UVX%p`QmP1&e9q{dd zBlq9(pu{qHZxGM(JJ6>ZU;DMgW5)x4$Iur$aEXm4j_{etm8OoggL?S(vXXl2OVovZ z9qMQYob_r|P~@#OJd-!#>%I8*?Ha#+o)pK8PUJj+`4)^9zpkWMv<3dcHM+{5?ZX}n z%BXW?pqlf6YZp*=)MqrFeF^%ZyvI^Y@QiDA{}1px@!d-K4rCIJpZ!8StkHdkc*F-S z`92xx(2sCF?f}X&7@rJnCpIF^a1F`wVEtVsud^oiwex)}@XGb17~egx@56a)?EA`^ zGsboN8aX+SvBEf$V*PBZ3f{3#tp*Q8Wr(GGHyOW(b@=wu1eJj@^QnC3!2<8KDD$jR zhADG@z{RrG&w{f=KULW?id5oN=;wsf2Iv<KqF-z1uLR8*;Gq(~K~1OPsG&n0my$== z>S|m4iR+HU<61fTqvE9`Jg>p4bnpz$Gf6lr9e)0HGFOaq=u1Ct@*S`tf2SLESS2=+ zgLO`PUzX#AtOa&pz9r`^opWLQ_LtL_kPrR$Nh9W;-$orT?Huud`GcGr@At99anASg z{n8G*sxY|aR$b;ADQH|tyG6e&;qR7e)q!=)YqUPTB6&M`OUEzmwVz+T??bzDcy#uA zG_SBV$IdYC2hAL;iE{6)6l?S!f|R3&g21Yg?uCh8-%S|TwmGM(Q0I)}J=&`^<I_s4 z|I;Q{+;LQ|149nk4@P^d`{a`TUozx#=)S677IlX19hr<Qy$chEtI1DtY;<r2$-Nu% zTG_kUGM-~=&;77R%@5*3pla(+E7TPq3V#`=%AgmlV>fRI)HHts^LyCt6(2afLswj< z4;0~V^w<h}wQA%iYv6CB3;2Mw6TF*oYA`<oa?>Qg@5X+hUXNFc81H$W47!-X7>W7P zP_)Z^!QoqQ54g|3hXYQ(9!falFxR+gSI8+3Xqwra^Az?(luK-|Te%h{KH5ON72(^? zQeWp9KH{)lo;^Vh`Ha!+88RjN0QKzjN68y`+ymfT1&a-G=8gHEr}b9ONh)RE8*5)C zcS^jL+;7hK$??#khw~~Y;7iX}sB(!5_?7Xnv<m(O87U87ud;9O`;PgQeymXQq<^)4 z%#-*Hn9RHJdx^%KH;=#2pS8u6`FZT9mtzIy6FtcDJ)BcuZ=Uv29MJFH`<ct2zt}H4 z1Ld)Akna(9@!Je`Hs)D)$B6w~p{{(6ZDS3N`4e)FD<A8-Z&R1|WI&I#p#LW4*oZB7 zXN+{wR<1(}>kKET&)9y9S+@co{79R(VZQY(zw8l1|CdMilg7eo(${S-Tqb4s_254E zJT_bMhW8QdBMsHQQK9_?=dchv;VV-ljzoJouBZ(8RypR}WgOF>XYikoas|dTuDNF7 zT~&8k%<@A<t|_~i4*-TW)6tgLAKHPh{+9e!sC=<W^eOkla85z?f4HtG=jUSLt4r!M zt~v<6)#t$hH~r*gZiTtQ^#-SBd9UPu-3G4hVO8D%#_mFWE&*fe5`kA%2`=v!vp(<P zXYaFrC_BHYU7;?Lm}z)iWayXidF)>3Y?~MRcS{~+eS?Fu%0f5a!NFPgsg&J3cjhji z>4(fK9N(ed;g9=a6RrwX5F$Ope`hyh6?C5k8|An6@%+5&`5bc8<JkzTJ8-XtdmOaQ zF8Ip_<k#GHga5aT{tEhWmWcl);k@V6flUZ~KEr!pvYt6ewhD~1W$E%IM<&d{U6iRZ zHve+k5@^WWg?v}W&fs~r(>`P%&k}!to6NJsfh3+~y;Ad8@DO!kc)o~b@;umIlH<GK zvm5KD?P%{|Y2W2OjrEmaA^yh1?3iT(emCKm(>~X^%6*z~9M336K`H15y5aNqrl!O< z?0qAy?IS+;_M<HJEO?B6`uR(I-i`AOpfhH6E6xn9I=f@=UL>AhS*bGr4ec;LyBuT9 z<-q3|AAVCDW5OvdZ~wEKfSUuHtAUdrSe5s@#7T}X8ehf`*zD!7E7HmUURPz+vn(${ z-A;pdHFZ}3RU)S;#n|%@$~+%{^2ZBMUZcyOj6!)Oe42BD7UZNdHaX|^44l4>^JCP@ zqKAxL3gP#c+p*gkQIC0&FXnQeKwkvtPrws>L*_NGu`0*LlKaic$CJ-RBgXHCt@SXb zwmqP_^jeG_M`BNCyXbiaXA`g%V(-tM!8LZ<eJ)~Llz%UyD^L@&z{hd<et&KD48FG} zu~^njbw6@19%q(jF#h9GcALa{kIbiF7qD@RBUtYO9$|t9{oCpd>{s}M(Jtc8`!@9; zIMDO%42%Q!f-csMe%7ug;k&wLInR5Z#`nFS2CtZd>GRYJhRZYfCFPJkjW&)~3nku? z4(0FJkH1R*f7_Cw9t0lN2W5ZQ<Iuq#7{>Psu~V(5a)}p#Ro+JsN4ZDOe#^l*-&fJc zIe2&BUfKluBxOwNJCA}rBdi_$qEM+Xajds*oy@;`u?F^ie6W27ViEcd_`v#*F5}H` z{yhbO4?(#YWfyQVP%bcK;-g~(jxQ-7m(pcVWm{}K=FRBWjId)XeQ~HAywqgR=yA*1 zDff_aQJw@p=X}fuyT_O{=UVC(W!gSt_<-2q(ELUJd7Dny+<}r+c?Ubj<7~sGv)c=y zqmpfT``g~gI04@>bIgqQ3t<D$XQ8Y~VyzVCa>~G4Iqp4JQ_aDB1@0H2-5~t-IWv}} zi!o&ts>~S=5o5|^{7i~5e7=^l;5WkGZVRy*XUxGL;!Q>s`nhm$e?;eU|7YAEA-*&2 zY}bBUx`8zG^UE$09aXC<L3<|4Vsp61x^NfQhGF*}Jd-$W#xH+tmD|yQmwtoiLI?8Z z2BPX~xF459cdF2hz}{pmE0b{mu>mop^rwP{zQI|bE?xJ_M+f0syvK8%DJxr;_}}kn zK3r?qr-0WQStVaF&lW*POVGv~#@tFf>vHs0Bl{IPbEE8>!%T|5f1XNR8J{tE5YOS} z=zOY;`?gnHrg=H%3F1OtIZLJe>YRt9zVKuna^f)T##0hg!%f?a(Z?7odLD;9+EiDM z%YBM@W={=b1NH<tcjb9B*tD_ZFW+u-g!Zg(6nwxZKh}Lu`#R^q;J!zD84@obFL*41 zo-n@rX@TK6A8WZdpMUyc>Z;$aEk`GQ_)w0HeUdY&o?E~x>;ZKmrjDO7#1NMeQ#J3h zu2e4ik@yEbS*JqHpQv><Ui53uh~`5+wlM**I@iQbiEp}3F?Q*`en|JH;<qH2a~d1? z_c{Z|JXqjWJdZSR+<GrUc@5kdx5^N&-_!iSe_Pd@LE{#`mu|+bd18m4&o~*z*d^!o z2A@efbL{$LH)BT0ro87VSIJY}M;I?Smci~$A{IP|zGE!tf=ysgNMduR&gCz^i@ce6 z7yPL773q5!N5Akf<>7h>^u}}hE74CpFK*!%{-GA3j9gxoql~>>eYU}@T@<4&XB?3I zb$-8M3v>qDD%c9nyY}4&$v1MH4}}-@v-s^i@k9M=-f-s`^qD6-f=1^!;9`8jc*OJh zZuSk<;xNWoL1*0O{AR%S+mqHCljr8lcNmWuJ2~H>&Y;&G*lVuwCF;;w_dAi4pLjc5 znUd4d_ZBAJn~r#OoPJfIF8w2UWq))+E<ES>Ff`!G+k;&2xbP1d@aw_l22CdpV9fN4 zs{#)gJ746lvA;&(h+f5y&=)vcolz3UAB6q{u|(E6z9ja~`2g;#D%6)GAFwk{mI?nD zAMSaRxa4o9jN36+#%b{Leqa;6L4wA(K8AjB*2Ged*-K*mYuS!Xn(=ZsZ0`Vc`8;(* z+oUeh_9HRK$};r?`Zz=9E5-Q5yob-Z-jT_(;&{e24mZoX|Hs}7wh$}x4$^jz^9Wqq z$;<`RafLc}rpA#RB*WM_*F$BkMrZ;7`DLWPKNBYrV~o!yj)9*5>2sY|+D?<NII=&v zFLA`k+{wSOV{e&^cd21VoAUOH9c{}yKzZqt#vhISxQ`*;AXmNQda-MpGG8kFg!Wxq zXx9QecL!yPj(r+qt2_4HFQGhH;_-)|n>Fj-F~4rjxD#W@8TmivF+3wV96224G$>>K z0Gq@aBc3(#@ZA~s4D8J9VO!MY!o<H>^e3Ew@-W|&aiNvxi?I(2|H3oYLEmM(%yZXv zH_nvQA|}@$CTCzg$;2KWXbKIq!Fdp`L3OwEJgKte`!t&@FWM6RbnXoN5dQv^ejgFO z^#0ZTy#23G&wVNj=THzkCSz}SA}(Jr>h~jmRlT5-Q-pUiU|Rvm=Z5Tlk)3>NUbr`t zW6nuY2hO`f%n5C_v*~Hb@(nGEvB`X{6Ks6uXJO{!73#7VwXI>F!N37~j4=3(f8+k2 zp`X6IRr)mA*H#W`l0VTAd`tVTte55RtdM;!zWo(Tlp(jUQ^+yo^UL8X{hV@So+(GE zj8l+fh?e8>S3g@03;w9(K(5eBn}A+rZqd_@?|fm7)Hf&U>(f6)$m37u%9&%HkNZ?R zEx8W#(O0x9bJpe%+N#v?>r%5WVU>%`{f;(Qd^KW88P>_%c4jeSp3i;&^XpsrcN+N3 zrdc-`xje{g_@1t@1u4@OPKnJW=NjBAz~4mV9Ds8m&ebba$v&Y2S#%sKx!dS;Pf{Pw zpq<?_S#<I@w8Iivp8~H*c33i<?K3{;{<}=ZNwn|S{HNL>cpm77ef@Rv#gbdF7C9C% zy7i;j!o<lZ;9FLIj56zX63?bD79KL5<~n0v4)b%wNhf9|tsn0$jaAMIw6Cb-c|P<f zV&E(p=dtFx0eOY_d!i~<G$F!$V#Ll*hC${=j9a&AU0<?Z|IU=(WO~4n{xP)jaeuYO zy;Q~vy)Mdpd*)07*ZPyS+L`wfMxG$YfblPd9K97P@LNqIAme?7n&I5bFV~QP^A2&y zBiC>%YuuMpb_Z^7eyZtQvV*_m5$z9HD|6a6<4$j&DuVM8nTSo(#Qr*0W#-0k1vYuH zjy_G~D2<h0Be3?bTmzVnPsE8)=hGfyTcBg14(99AL{FfTgE~2Yy$;wi;>f+OBl<=i zS76hq$#_1F&r!z%91mbvGo3ck)WN%*(#~w&JM@#~a%4)fjb4nG`%QcB$%{n}bB}rc z#otS!oq_vE(mnClCf#G6fARH6_gT1KoOF-z?BdIKkFmRN9T;)rWQCe8bn#x%D42qi zgB?lYV_Xs)wlh5G9(1RFEcc9w7+*Pm@2OROSv$y(oQFE4ejvm2mp&&h<eM(`A+h$; z=|a}&8yvdGNu0TW)0d=mtvpX-XU@Lb!1u>Kj&r>%=E`(C>t)Q-e$s|_t}F{nDkAUY zp#6%_-iZ4Q^<y)p?k|bsoX=6~PS$0<gS=!{XSMZ1IZIV-bzto1+1+a0hj%U?AS~uq zKL*`Bpm#6nnY~+^?JyQWub1P!%nq&}bhcVOceGkN@owfLXybpNPHTT1>y+@;YVGbH zi>+g*gS85)qe5M9NfPcs4b%G3ZITD;gz(+U{B64Si)t$Xo3EBQcGM~j^wQp^iyz?~ zK(5mwzqNMuSk@fYMgH1@=Msk~AKn4@F@HO@TJzE7eB>JP?K$iVyhwfm-N4xjeF29& z1>De=rS%0{>Vd5HZP{x5XppWfM;7MRdLEZJgxur(3RNt237umsEq;%9j7zwGnK7xf zYVLCCF;KIBu$}C$pB=S!Ykd^I>d*zP9`+ymNk997&^7(D`SbP97mg;;TXAOpsPg{) zDZDEQm+#`D&%W?j5{!R)SOwY?-mfVZ{bIZ*6`Hc=R&4xU_8BqXz3460l{&CNtY1Z{ z&{t-!yCA9FD8Zxt@m%JvZuMZyauo(9y8NFt*K}evV;bi$9BZ-uV%9kRAp1vVeplA# z(+>a#dwe~aSZ74eh(0WE;uzkQX(b+QAGzU!c;DbM@|_%0Q|+&!?fuNvB^I4YKNs}Z zQ%=yIm`p2Od_Gf_ca!I;GceaW%h*DpBNy7x@n!)3IimOEHk0`uJT9bYcNyh3IxKbC z!g|qQ9s1#SV($a>H|*ojrN2$+KOo9`Td`;&wu9?U)5ZR<{_)sg8p(PaI7h~s4b~Xs z9MHzwkk4Ew_JukBPf0_|VJ*^osuAv?Rv{n4+6(d^S$nZ?#yyfz7URCDdL)W<Ys6OK zVa(zCC%$o{gYrp?FS*>OWNgCUzms<K+_PvR`x-b0P5o@tF9Us^W5+(NdIV*j2j?0O z@wTHp1n@$Xx4=f;!fz+y;d;|nJH9`()s(}|ItB3S(O-RgNvN~Zw3mfv<)%HZk@5@@ z_lO~vv`3jdroBSU(;r1$KlYHO<JX7ZoA8VG#y&oZU(6Lhxi+ay`MbG@0hfs1rdbn8 z?jOfTF{b$np*zI3D#VA&w2m&4xItS6Kh7Eu*Mq~rkvN0g#|K^e3Nyr4iySz9&ms-u z2hgL&M_uG>*qcNhz=Xbxi*LyN6xR7X`5(^w&Ng;mjQ;(e=C>$$oD{y$hKvWmd5$>A zzLu;9+Nq-p8+%pEOQTQAK2=c(-pjWqU>zxj^Suw?d%fK<FEV-L`PB~3vext&-`RR{ zVq(8;=aZ9m7;7hY<2>9y;kz!s##!`_O2Q?*_`c|*y#2G@7_~n7TbxnB-yGhEzn3iM zRq(zy<dF94Z!otmctzTlJ&1y%QpR_30RN+uaqa=-4_S`=6XIsI+7r7K^S(^kJLv@< z`|(`jLQkvuInD#_>8VyvM&pyv2Y>Mb){Fc7JOjx0XE6Uevau%Pa1`^L3RNieHf>RA z<6RHn-c_~nX{;B-=zkXqU$L7JGsY-4|E49*8HUlG4VVWoe9P#EUch32wa0#dwdpZ3 z@5sQOP6uF{0rLTtk9)qOd?)VxxG%u{7TkB?z7Y3CxbMdOcH9@^eg^J)aK97x0o<43 zemCwPsZf*mQ4g>`?2%1=(Uf6}lV4>Say~_Qk&}6mhX7}aj@LIqZ<6yAir#e$xo|k^ za37KPn1^8Oc<g${0Nl$vw+j=mEOzdp5Amm-t?F56BQtS=YXrI-t$)@-9T`XD`^Tgs zx}0LA;BO@QP2w;3Ce5cXr$558r@BtTqr#uq#U!zN{jS+0=@-Uwtgni_pwHRIPi-vw zi+9#F_`BidcVM2+I8-3=!&g_td>H%jJtTXSyg%UW7^U}YXFZBF@lE*Kl`TENKpWN> zV&WG$8`~a$ET<n5y4U<AnPw*W+W5#%!txCb?5}cPSk~KkMkBc${2d<J6LQl$)*1Nh z<1N|-&tEU}G~N)wvn(Ih!E>3L{2abE*vALv^9k-n?r-}9b{f^|c|Uo8`}Kc$%fy!B zu=DApi{IJ&HSz3F|K35t-O{eav%;UUZ0c@@p53soZ_9J!AJFMqmeJRh70NIAWgKK~ zf;kG$jPw1y9Ly)?K<~kln8eBo=4r8Qg4fmaJM4b~zbApcL*#ZG<9OD9{Z3lkJGO7b zdhAh-dsD?uOS<qrAo>R9sP<s5j%`bv#2FQ_6U4;6HH+l)pMCq&X72!g)c0OEV>H@? z|D5-*$W(>BF!7V~9^<`v4w=upUF84l^@QCLb7dW(;4Z0iKh}M5k9m<NfN#|7w&2r% z;eM#OpJncIFgM^g1WL{Q2y>6Q*p#bD3%|k#`XqyES-6*egABRU8T}YAqn9b6bUX)` z3w1-+Zsx=K+&k_quC*oGn$cA+asbIa+ujuW>PDYT723am9GS|8Tvypud52N<Am0tz zIF~>_!g%YI@12RS>V8Zfy9Vcp1I91xfxxD_FfZaexI8O|IllLiPQ?CB#D2oiE_9SQ ziT4^t!1glDzCpg|uNHi{p>w<+WUF(%yHS?BF@}5Us)qU21c`^S-<dvoP<eW8!&+|^ z)*Wxf8oE2<@b2-5%Xr>{Up({m0LOOY{iaNp7w?|rNLy|-0`xIoFMP@9e89TT;B$J( zHmLh-+*zzgJHb5W8J2tQS7-N3P@{YB4zk^@f+*wL1MrJC5g)N19%xUz7wG0%=7fug zPZ-KG`{_)WC-7A~!!}_e%kUf6$GEh1G3fmUv1QF){!RUK$4%)kkFS$9<h|+f634_= zkVo-7EyRHtTBh-R^^xm+tYOxzFbf>SL;v2-Tzvco{d6Z-ENg!A9sf?dmX~Zdvi1~( zy|iJ!yas)@AAR>AuG`SJreCA`GY$h*iu<o|FN5}qHA+9;WxAYuT6V~V^WpjoCuEQ_ zJ~A%EP>z8%>B~8_@mqyY+%vZ^upI&$v?epy1_sV461$!E3iO$rDbJCH#1eV0Y|1-w ze;@KTj!#%$B_D{duv3gZRk$DrWYFh)q|W$phK~VybM{mnKOe9U#(hWlddVi78D%`r zSDE<jqF?d8WYwrgOXiGvs$|lr10}9euOh#Dr{s;%nLmD7;d?=@9N0=3_VUE;^f&y@ z{g6ELysk!*UnfT48(;4Q{x{dnv|aK1vGWYyQhkwijNNJbLX1v&{!>0L=~h9!moQ7? zjg@wo69m35bj7dn?Nw<PIp2F|OY9yWoWUIH+zrB)t<FaIR#QfNJ@<BL8)KechtJRB zJ@bx*iGv@2yu91Td#(Tcsq!59*7#$kpP)loi{yL=F|Y;w#rK*y$Md6HhBEtZKYlq^ z>jG>K?i+bF1?_yVuN~a$cE;{wJHYAW`{=-_>%+ml!7*`P)ibXE&b&Sx+#4K`8+0l* zzWF$DCOSC0H#o~oTLtvfg^3qFc5rxaaHbOn@ffk?+-F#ZucGhshDbSSEKc4(!1wfc z){o<_e3uz{tu6M3`852Md1o2Vfp9JGC;OET-wTv})jr{qevh%vHt%)~n=E|bJ^Br^ zH(CBbgngU$N8zoC=Nf$PvCQvf!8Uk*l=so9+Zv-G_>3DD_J#0wC6D9#K!@$#qlW{v ziBp`rW1Z-*{UrWw2>LdFxR38ycmlobH{V-AU)nNxDR3~Sz6^8NOq|QlrN0Coz~qke zO`hA>;qvy}t43o@s+(~ed8_oN;NOe$Xc6#;Ix;_bAo1tEdfkOQU(pSnL#|0X*e=e? zbkpX!j*&DE3P7)j|C8<}4sySDuzquy?vpVRmoe`4ovFk(#^l|y<n#N1ZF&0{Td*#o zaCL!)dfam!KN|MQvm;*o(gurBcD^l`1D$X#oF97&G4_{;u|LB2nT@#gApX9~Gti-? zF^V#w-WbMHn}2(J{}-XNzkGmiG2WG&6F6}x_1ZP!B)@%j?_{3qKPYQ*GNz4sN&2<z zO^lzT#h+mdIM<hVyXXvMevb<4D9};<U4)q&xSQiQbUf6tJIrU07v$YU9FqgT);&&* zARf+#{Zw$bGbZwVk_n%zaZ`T3CGBurz_`P{=?R(jKa3}kxfrns=NJA}{FZb9(|HQu z!0*!e+ysdyu%)TcX)WVAbk+)7e$%NGeLs|W8)Bry8Juss7I>vNv$6%>;_PJ(hq3+@ zkq@!lsl#uqq0Xa(>$p7OIpJ69Zkdz^<+jc^k(@s#eY*ntR-?zmW?trbv>5W%woMr) zFc&@qJA9evyf8m^mux$`9k6o1Dgcu?JI_-9wg|8wV0_2e%YFo`60jApX&+$x?o%1! z!%D!a0ONZqoHy6vehuymanE^kJ?<NEUyOUsn_F-n#(e<yoHyIJkKtXYhbd#nIK=M( z=apZO9K^tR?yD5-_5xq@gLlBldk5BPu{WZ>r-t9X#KAlPYi8#>M!M(&KgtpZ`A#OD zl_OrDFEpJF=)kNkHR87f=VI*u&f4PLv2vd6hFz8;K25_n|924={@#%M9N$rQ;Oo=C zan7%w9`V5w&X$ipPk8B8XMvZ?$Sd0UUwD7)A(pW>FS!hPgN>QBv5XGJIs2Db%fa7w z;oqqRjYH&dCe90h&T!TpRHu?T5uOd<GuS%f)j6X~8Ds1@6HOVqI_Dymp~C|x&lEV` zy}`P|KVz=_JnUUzE#N@(0sNh=?f6zSavJDAh&<eb9DFFB8<-EUp*RoJm-nOHq11z2 z_0D1Z=In+oLJwZnONQyO;B4^|Jo9kw0(>9v596C~8opP3rKd|>hqZ;5WiEhsUQ22c z$D=$)pnM9?R`lenmCVhNcjY6;c%N&dGHyih_n}PtpwGBR{q970geiA}?qU0G(mKGr zjeF=ApU$35eek@lxt}ig9Ha6QFUuHJ^-?mgQ$>HR>g6b61$lw4GHv9ynBVxg27`P@ z_=HXmW3Goe4X+W6>@T|=fAjdk3%u;_3U$^8qy>HD^BK<TjKEnR#&<q@mCpnYI_RsH z0f&7X`2Db>TKKXXHf3S}`VxF5-h)nmrOV2qeo=lI@ISF{P(Fk*zQw8zb@cb67rHrw z_^sz{D9`jOb^Ap4H28{~kH39XxKP{Vw#<C;F|&;Jc2-Du1TWZ=>n1K>bpq>B&wmPk zhd-@t_@bUKf>+R!{($Ws(((E%v0si2XtRsI=r@aF32-lA+tA}s@`8R*yW7-umbdV1 zK7Mgl?Z^DZdE0O6v3lfltRpm%-b+sPP3@%fkDc)I0MDH>hr;~DjeEvU9e3f|nD75{ zC*Bq5<};kRhQ8;ZuM}W`ZnNe9+q+BJu2w7Yx1L&s_b6;<f?5gNxw6l8#_7M6jeT{= z$9Pr|<*kB$KYV6_y3S^9Rf{<*;y%wQ^Q>1%oPLVGPt*M;__eG#mZMEaUd4Wtm{W)G z{qJD^;6H%=)iGzp-K5X93df5tiH=ZT+QmLbtsd7#d|PCwV&9L@@>Fr}ZG_-auP6)O z=tHcloV|hgvPPlfF8Meah^sF_rdNd4s?qcLKCQ%P@Q6Csn>KL%Zp4D5_LfOm#?-SX znlfWKl#F*GG~I=u8<A(LMlTYYF*T90gKp-aItxvmucMA`XVvI+rjAe7IqRiCb-r%u zG^5Ta)6Ta{opVhcnI}LOd?#=b#sV1^bgq*)q4jvy?W_x%ge?reM9N7yee(L6ldmP^ z_I}P~1KUP#gU#pQ?^8brd;BrRWXTC=r?AcKu)QAe6~LP7sghoNz_J$k0c`P3<Ox{c zanDisZVcCNV6V7GPB!ubBWo}A>yEOFwGqcYf81xEW1YWmJY2>p=8KTQ68tmmvq$W+ z3i|?#o6PyU-|+H#`mm4f(9Kk76ZS;i4YJSe{q{NRL*jA1UO1u8K9PUsO1s!sSfSTE zhP~s^gA7`pDxTxa5j^w>>^4XEX8W+6i(xzNK(FP7O-_Rxv!y<AqlJklLqJ!yjj^Fs zm32G;9wXqf{SCzMVOJBcBZ4`5H{cu-ZF~c$W~ld`2UHnomtnns+`_~YYe|FmpeN^K z<cu7jZ$<mP{7%ZqwbCZnK6>%pF|3_Y4_ZGt5A&Ixi{(oGLw!rGt@Zbu;g_=1L6(a_ zV+Uk`@8_(Sx|mZ&fAoiNv<KHie+b_}n`lMb+cN#s`OGr*{jhHnmv*%<@$T&yqYfGS z-3^_HKbc&8PdC27iZPbo0kL7fKL@S-@Ke#R$*1{VMJMJQ`{g?~n~>K54|MeSfwJ*; z%x!b)q+Okd^S$mBpt%!s(4RvV^i^)PdCs-Y(h~7w#hjgO6rqiOVt%J{PI(`gxd5N# zQfCVj@2q7V{Z473*ywSYqZjZ!M9MO+$rU)-hy4%PN;v2r$GZk`?h_=>>7G35e78QK zc(xgTTWSRCd${(+F{2${EZH>X2k^yRZQC+VNL~(p`Mq|`T~D>^eBFKLYWO3*872OB ztMYVX?G<+RwN9+3as9Id_Jh8>mi$1E2eA)6k7dkhSM-dNvEz|G-#iz-c^&`u_>h~3 zLw`Y8^p5%QSAd^9cKp+szWEn#v>a<9)jaQ!^F3)3`r~>BZ8AFK>2P%D(;Pc?_4}sh zdT9%`Q#ek1(?{DueQ8&p7jZAry7w#~uHKjNh`xaf|MW;d8@Tod@Bo`$0y{vCWUYry z7dia`{@_nPe}=wgf7AHq|Ae32O#l29{4-nprUQG6flXuD#XrAk{1fZ(y8dG?vA&_T zL1@*YFST#((!M$DCDDQAWsK$pV~yrzlsv0aF4*=|(E;~^IhKk3hF?S&avzIp53t{E z!i`Kb;d}Ri&SJ>^BJrr7=&kssb2fC0zu`z--(iWbf)~e6vyVzU%wILF55N;>S;dA{ zE1$z2w+X#Zr*)Um!uKoT?_BdHZ}CC&rvDYZiCs!=EwrpzhSoPUZ`p4NZ`Ap=F%OYH zJ3Au`-wMNTxbMrjlq74`2f`oYovhov^&#>Q?w4^~-3z@5Jsp><&E1$cnz+RMt7n0O zd~!%~d_i2WYT?s|<nQWivQ|LmXC3{sjyVgm2k}t)-NZA*C94R}_aH7k3z^`L!=4k~ zs<;PZ<$~rOTgAB^?<uK5ek%8eoO@T24KStv7k^_$<7U9Wk(;Q4CT{J=^Cv6ah-r9d z3*WD}7Iu@5U#!33n*ka4zB1Q&GE_6_``8x0g}E?s?AB=bH|)oDJX->sBK)qyZvlSG z@k<)~8yBR(?<SB2<0NUgw0@7xHoTN2@jC-}@?KuIrJm>ed#K}lw|*?jUewRfYo^C6 z)?cpp{{AN`_1`rb`i|HS`VZd){VmH$v~yVx@Mi=E_JF?7`69+F2M)a>=DE)j9IOi` ze^2P=h{Mc}S~nrr2JKi5a-c<+Par4a--H9aC=I+I4cwmwUYrK*O9RhM1NWwZ7p8&d zr-9E%19zu^ds4$)2h+gIQp2ry8hA?@cshB@)8N0H8tw|Ffv3^G)tDOJ+L9XXN{4?W zH9pRdq_j6zntrjmQ{!WOEhQZ*Ck^~qYPd=Vw^QR=2hzYFNey?U@gr9{J*2b4MXBlI zyiQ6zV0|(r+}fQQuGXZ6Tl-VPaqcHI{f;znPinYpMQXV9ej50R)Nqx~zxJfYccp`; z>33IgYC3o~Eu|h@Y2?NHG9|usXKJ`=PYt(rriQx;Q^T!r8hDyG>FQ05?~0{{<E&Xq zxzvHwaH}dcTpdphw>GDSyK>UN)3w`^8egTcD=Rk*ej0zrHxp9o!Ie(WY3Nw#^qIy^ zTxskCe|IG{Kb@)JRvP`g0%`DHOAS{iQ^Q?p;)yGbU$|=1&`D>{dsE|Eg{k2#l^U)Z z)4<cwUz8f(wKFx`s!t79>G0F=>FP*L$Cb_wH>bu|D^kO)-Zbzu_GSgs;FqO=m!^i} zZ!x5_TeT-O+_gJ3+$v53Ph-z2jl8bz)O1|w_+ObCUmZyex6;_ZI+zCkP-?hJCs!Ii z)yt{rSSM4%)&4Z_)2ZREy=ma(so_>pYPhR14Lmmud`)UN_F+@nm1|KNcvl*DRcg3Z zkQ$Et;gs!K{?u@s%TA4-MsKbysqtO)so|D8HQbeke``i+d@GH9tTg(!(%6Z0Dm8sq z8vR&yYJ8kmPpvm!YB<i#r^LtKY)uVMBd_buH27)cveNi9&gZ9W*GgkQt~B<H^A0KL zsMk`%t;#g;m8s!sb85JiX56vT+4G9jba3V(HUDL4;5n(_T-P9+>l$3&;M#^#Ukt~T z+U&!68a|Ecj$zx=l)GZeTB*yIVo6Wc<^n^hO95A<QdE~7>BkAoK)G1s&#Xnc-Y-bA z4iP6H<<g><QdOEx>1LEG1*}TrC>QARWp0!M9=W-!6y<tT?g5=LUB3J{wtL$P%ZN0$ zKBioLKZ|PK=9tRx6-&8ddrV<NO3I5-wz@PASCs*$SC=a*0H5I#oMm=QsRJ7SE9EF_ z6m_jaxm3fi%SHJ$&Hr^LQ1_s&yK)cU+m-ygekIB;Yn-nYqip2*S|!Sz27V0XBf9R_ z_o7^>=_~#3)@vpWxoDGXzUQ>(51v;&|LE!QZ1rsMtoAJR%=Uc2GtM(C`;XaAXWy6I zki9T_O4i3&N3tHy`cBsBtg@_v%=a>%$lRWJ=a4@Q**nA@>Ke0q=nP-k&|+V}S30s~ z*q#w;c<=BhN9-T5d&G}M+%du)(J*59i1{PRd<RFmN0w&RkKE}yklB)H=kCmXGWSsK zk=&DKuR6Odugg8@?DkEr;=JwNj?DJFJ?9+o7Ums1`}o-%dC%uPm$%=$Gw*=+k-VN! z)uReWP4>R-ebxK?sP$tW8nbQ855}~Q89ipi=pT>XHu_tm*Nt8@dVbzNk1iV>7=2#e z%cI9<ZuV{;ojK~AQLm0VFzTs-QI8h+tw~dwt%<{}sbBuz-S@4Imb_SY&g3=qi-t{f zxhB?H&VR!vSzdjgGkHpVZPujor&*I-S1lYiDYy4F*RZo@<X4@YkJowv6H6~xb7`Qo z=rVW1!AXCA$X(bJT3sKiX_@W`G=*+j-xO;0SGV}<L)FbK{)_$9O*b@8v;1FNuz2<r z^LXc9yB-f#h5Xh2bq(t-YHqA<Y7Y5p8`iI?5BXQuH=yp?>XxRuFlt>qf5D>4dDjf6 z_F0um=9OPDZ|Q(4)&6D>Tz3N~PFY$xFF4>~>Xs)D#H(po*HT@#&fju#gFjRsS{qu| zLaELZtZ!7;uZPf%TsJg@s#`)${+2b>>-^sgH8p6&+1FHlj&=){Rt`W+)A0Ek?Q^sY zfv@_U0w?38X?L1X`?O}08H3;j*9_{5)assk2Hl(MTGl|}b!)3{fOXVC<IQyq>!9?@ z=2ov;*U;jxuCH&Xfuj8|xb^jp(OA<LtR;H$EdN)h)cU8?UO(KLzO<#fsb!YmKL8YJ zBxC@nVG!uzYtXHOi22a~S!%BPCJlXEt$%%EbM@NBde|5H7qF&~ziwSk!`jB`mO2>q zM61t3tn)(Qme9Id>%68=Bdo;oPaQ1Hx=>B1xw*P&gTE!Twy~j!CHP29$eKRCt{!&P zCm0;N7z{%8KG1N>Uu;~aUuFJ!u;thzx?|a*$^i;3tf_0NSq~(us1{~^5jkJq60!<t zyM3JY%ixqQwx-@>T>s)e!3skL<eoI-(oL=rnMFh9X3iK=ky$$As?72sD>4@ism`n% za%1MoAx-`-W!BDXYHEN;=TB)q-(S~^h|mJR3HjGmuMPPdRwG8h*6M2gq1qcl7r~!u z>qAY5WMA<6uWD?eJy6@T{FeWs1xpYpmdsxC_2t*h4$kt=udb^P)%sf+`t5}J1bS2T zhKcTplQR6RYLZL;%T4#sGvJ@gHQ?5ho11h`N`3da$(W`Q{&@JmJ}i&rZ;i&Be`WmV z-1PstliFZ$V&6aWAVdC<@Zf(M;Vk)=N<u!5nM$di3(T})e*Wev$e1*Ak85Jw^0!6f zR@@cOh`ZyN@vL}u+!G%X9~vJP&xsF@kBE<q=f=;9pB+CZ?v0O%kB*Ot`{H@=bK_&< z`SEe_@$m_9e|%zmQhai}AU-92Ui|!cVSH-*g7}5;qWDGeY4I<_i{sPd7stOCpAo+# zerfzm@j!fLd{(?9UK+nFetG=M@v`{r_?-CMczJwYe180jctw0c{L1*k_@emY_>%Zl z@nHPw_%-pR@yhtJ_*de~|4(UG8Wcwnh3RoY#Z;Cmt5V6o*#U$qWp@ELoTbHO0RgiS zP>3;Rm~EJWVFqSrIn=0-cwbRtM2+{E7&YGUidWQlU#O_4pBnF|QKLph@%0dh6;rXS z^qbf7_Py7~>{NgKb=6ian$d!VI39~|0v6*$EP;wvXo!KM4eiijpaY#S(FF@Oy3qp% zakxmJ7k%i*08YZmI0Z{_Do(@c7{m~kVL8sgnK%n);~boe^Kd>cz=gO7D{wI`!KGM< z%diTUV;EQ9N?e82xEj~sT3m<gaRY9|O}H7i;8xs*HCT(=u?~0OPTYm{xEuH2UfhTK z@c<sg20Vm^@dzHpW7vqt@dTd4Q+OJi@C=^CbJ&dM@d94NOL!Tt;8nba*YO74#0cKP z+js|~co*;CeT?A)e29+#e2h=<DYoD<e2y>hCBDMf_y$|?ExyC|*oGhQBYwhm{ET1l zD|X;F{Ej~`jz94iCfI(;K^v2f5LIcW+G;y43#$%o0$toSG?@#WU<HP?6A${imT*-; z88kb_*<pr7(C8#QP+)VX(&8=wXgg62O@J!Pr<^XsB3QO9+BSM<*LGQU+-SE{Q%+}L zIVXoucV~*#o|>XWOv12;8EGV~BP}JZBsC+8yxLSE#Gu#=#a}!m`TWJ695PGsN#spc z{EqNCo-CfF96(-aNZNl+-JI2=B>uJjRkIbpPg4A)q;Arn8xH5@<sTlITTob}wrVln zCjG-xR$ftAb(EATADWXMP6;sTK1oWVAB-iX`IP$TkaSGFzAsWcUat$?yVPdvDPBER z6RjN=Qm@xUr!wYksLiPJ^6Q$ZZ_kpI+6=Mx?yb-nB>W#m3QQy`ZTgTjn9R4f>0B4e zceGWKl07ZHX=~D#rmxV4^?uSlOQXJoBGq1WIo0OB^8RQ0&MloI<_sa7+b8d2jZRs+ z-#bT)(T;Upa>pj2=CC<#4tL4B#9Y727M8i$t#+FoU(d?KaC}VZ(FLVfVoO<ou4Ufk z+3Ac*fJp%#3q)C9cCs)Il;pwOnPshZ!j&6p<~KE$Was#ZXz<GHqj_I27%a)2-_0%0 zs4(p~7gmGX%R>#6SrQeitAV?T?vf}mY?q>;s0b`b7;b2RuPSD^h1pG3%nmIS?(B+$ z8=^5P?Cyb31vQVmJajC5rsIMm5*mnIYpz^onxV3T#W-{_&=P`g%W9l@7Xuc{^rzL{ zWQo@k11x5l1`&fG3wsPf5HWfj;xIuLn)Vo$=O|ITiK-EA6cC`R@#*!>V?kE9d(gun ziqJ}9c`R*m%tqpH#~JiUeJS(}r*E5>@MU@tCI=b}VuD<*5rc*1dy|lx;zYi9vqn>C z=d7@Npja;F#Oq>)Wy@7Txm<Nr*Hu~ZntJX!b{}^-<J5x|lyi%U@^h$)q{!*>*vv9( z5(Z^k(-MwD^rlazHzmi_Uh&LXNi~HnY^c(f2keC0XT)_ue<;W))RLD)XRbDzxM>f) a8kZUz$qG^{Z7YjjJmsVi5!JZq6ZYSY8Z0^h literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.mex4 b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.mex4 new file mode 100644 index 0000000000000000000000000000000000000000..e83c8e1429c899d9caf77306db55f459dd740530 GIT binary patch literal 142295 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 literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.mexglx b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.mexglx new file mode 100644 index 0000000000000000000000000000000000000000..10915e5d7ac2f4f92f292e2e9f53195b2296d917 GIT binary patch literal 27798 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 K0|e6_srmntcO5YR literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.mexlx b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.mexlx new file mode 100644 index 0000000000000000000000000000000000000000..92008776e861a065890b7aaa59d403507fcbe41a GIT binary patch literal 23430 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 KqPAot+5Zm{@38v- literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.mexmac b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.mexmac new file mode 100644 index 0000000000000000000000000000000000000000..160360fde8b6822c6d79c2ca271ce66821b4f7f7 GIT binary patch literal 30320 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 literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.mexsol b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.mexsol new file mode 100644 index 0000000000000000000000000000000000000000..71ebe87164151db5674241b326ff0e8917545f38 GIT binary patch literal 31148 zcmd^o4|G-4neV=Tl3W6m1VVEEg&aa4sX_vXNKwnd1eH}(s<irMc#9j73yJ1mlZ(YJ z*YoH@2Vd)Ih!H8Z_83ECtgFLwv3$HfXXQ>OSnPuLc$Ql0(CHn^>(E)e4%6rBSjSG@ z@3+t1_ne#rMJtwB@3zPD?eBd1+uy(a?eFY!$a!Ghh8qLHfXM$sA_$m>K^!ZDxc6)F z+6rNakf;-7Vz#<2(awMF$qK<k6v&>kKiUC_BgqkU6shYNW5V?miSR3OPNE9u<v8Zy zSc0P(M-0b&9Qv04a3zig99Q62grf!rf1h?vVlmF;I1C&~9Q8QJdnt}(IP|XqKorM9 zg{adPKH+nGit#EvxH1o{!MOky=!QDi`r7^`eG7LgZ-_unwds5O3gmxr9slRAP}&2H zuxdB)jJ8843J<Dwp>w@FqT0%z<)>6z;)U3jQtfFx>o@_wVyE3<@Qn6!)oxYo8LGWg zwP(t<`VZ(o<!jIKwM%^MQeT^~o&SN~95gr=<WF@j7J&{qK00&!{21yw<4FEgoAKst zGfus2#<#bPIX9twov*##*S^iy-sEeieC@QhH{_?iyL{JoV9LN>kuxv`{q-RHMV>QM z+sOw&DE*%F^?%maKH_WtrLX-1U;DrN+HZR7P5=L$zFsQE{|WHF=(ZzIz{xE@LO;Y; zz=<)m)%CIo^qo7`_cgXP_lhm)u2#{xv$46Oqq_ybP3g=n&goX1ZtP8`MW^T5#$M5x z-np)~_m;lxn|5YI{f^EZ9iqNB-RX3?Bh%a7wO#amsW&6GH2u3<*WR+eQS<<p*~X4H z?&xaCw0CzA{$jefPl6ETj-KY;K8ytL)*YSc-gb)8*qd(7q?@{TZ0$(j(hSBs#WpEV zdgn%mV_&AXrL#wNYwYgq=}7N{KCR7}X0c`C?YA|qYx=_N>$YrIf9vPg-n4GZrnNV0 zShocuclM<rTso76{2b94LDaXl-z#?XG<J90TMzO2x;tR8fb+j;_u8A$QZ@`QCx4h< zelGbs5zi4O{v3?LmcIjc!k5e)<?jJTED)|hPSS8Z>(I2p)fJFa()S1vf5U@EE|K)W z&m%qf++7Fy`xSjZ@Q7LVm3XuzADm;m9C$nWRt&rNc?SWLPYLiZd+>@z;>R4CZRGPc z2PU7`A%}kZK8!o);M?C3qB5!ARnF2RWjF>JB?D=q@IxMtu_;44Xrj<3kB>O8#G5X@ z(pL1aLG)$^-iE$0$_d>mPbCh*?VzdLt>}*cwiF(4l)8{!01thnZBxK2T_nEEp`pJj zBMwcw0h(i~FW^f0i}G8*pZ4H4Ik3c^ck%HW1!o~Mc~S=QX#z|>ZNMv=NWAIL5FcOc z&}>KF%B6~aBj~SlXtv)BJZY#q@roz$@eW0ER*1w&2X5<!U(P7{W56q!+fslPo-_&i z3$nGX0{o8KH~F^e8^O3y1%oE`h6B?VN#fZTd}8Nad_vicW5wQaXr%AL4o$lOp2ESm zgMR`%s262OYB`TUube}}xx*!kW8IyCUguO_=oQa6@b<Il3p&XM^2GNk7`XTgE}R^6 z=-WU)kFsH0@=ShB(U6apA2P&lhJ31Kh;DG<_)-^6KIOs{$6Pp>bm2tQg)3K~98^3j z!BfM@_guIVa%=oN@Yir<jSJ5^<ib(Nx=8V?IPbzS+lAx1UAUsdg%ep9j)J~Q>x&q; zQp1Z~H~~2|K6cuL<6|ydanJ+9hV@!s$X2f4c_&>sx)Ui};j4}#J`^0sSQ@_Ga^cTH z7mcr5;leHZT=+AGUHF<-7dAJ0VAxIbS?b~61erBHUgpA0_j_Q^SnGDV_-kgk@H*H* z^SM#DaKbaz=aMcy20Lr|&zT<BGuG!|Lrt@y$%Q}fk#nUN-{I0+?ctdicJZJ0=+*eL zi@)(M7yi8M!e8{*|IV-n|AGrwo^|2o6)rsQm<!*z*@c_?UAU#r1AAm{+3Dif47zYK zBSfu^G3a}RhM)4lyIgqQdoJ7<b>XFBxD8W%S1)zp1Z30r<QpFNunQ+JZk`76SLhf% z<H9kFtMRci7mmWt8eehBg_A3=_9#9TITwzf_rMVsju|c-ZFS))_%5dSR2_8TD0nW^ z{0Ch)an^-n$6PoHTWR|EAs4Q&a0{#WM8hr|hy67^cG!iZ$6Yu9eKk!Ic1S8dN!VP& z^B|9gD?K#xX1MryFS~G}#D(KME*vvmxFY4k@j4fdz3syB(=Hs_?ZU}27fyKOiFxFS zdgPBbx%3rT7hZI~vmV`T3sHwSk?RrUtzF^bYnLiKY0fD;XbcSlKOa2h`Utp&^pJx* zYmU2pYfifO1sM;1u?sKS>B7~POK)gA#;vBzTsOhr&@_|>KGOIFq*pR5e8I&pJmli% z!(W<yDQsA${0>*-;e|P@(+YpZCKsMx<H8HybKxsXJTUaqeLp?yf#FAupZ~TCFOInI zl9UVAuX5pqVHa*V<$;fQV91~6Z@O^3NB#w{gQlrI?83FMZ61Hpg=;<XEIR1o>p&A% z_Ay#rxb7_cr0|V5dtmU_c*6rX+Ah9vw+pYTQ~o-L+y)(`zW}c~=i*n@xcIAJD@}9N zbuP_{6)t`SX&4*ebM;aezwBifzkH{QUv<`nmqTXV_nNyrFl?*GUFqS!(lhSWgw?o> zO%8ldRES3Sh<zo@aY1v>M&K1s33Dvczz>a^72F0mqv(krR&WpCrxXp~<~oHx2>dPu zqwiKt4}5b@(Gx!7(r>jr_!<{Zw<?-LLZn|%c)+ci&k?|y58!mvrAaUL^j)g(q*3;{ zhcNV!`jS8WLfr|ExqTa9r|HwM7h*s!(C6V2z%vvca%y;68FGY*$@F0t-UfS08t~x0 zj^vX<|GO|2_Db(Q1h~$D@4;Pp2W2My9l#qEoCSQdf{y_<75oO^RSG@}*l^%`B7iY2 z_hMTJLwCX(&jYS;;Ksv%Hz@oVVAzc`O(tN-N%)I90bl39>oS0w9Qbq8KZPx-a-3Vg z^^4J^zo{KPeW=6`-z_l$-^1}djw3kwi$;Gn06aH*-zd(B!4jiz@9dm-vp5%cqhT}$ zT=30?(Z54Gg!Wr#htd88+68EzLAwy`|AlrD+P{3gI2S?t?@jP~y<zmMHDU)=SfcQ) z!Yucn1o8c|4Z*gAOGK$PWQd?8X6LWFxS4+3Y)eG^IP@*xrbr$S{+jp6+R;-Ucud1@ z73RXY_OfnYN*P`(5fMGkK@SYu1jCm2)C&rCvM?8+9Lr%Z!d`vY9w-{kkq>+{3w=ZA zyBg;(beTbXziYQkVoTd2`+y6VK;|HP5cbNe<vEHS{D<xM4M%H7&mWB&5yI~l0Y=+; zE+xY7-8*Po&l#c&dQ%@SAGT|t=XVRn$DwD5=8G{eS<HM~dj4ALc_1hC{0HiJASE~- zsE=1qwxMeQ?6La!f(OQ_CwyM!*VBW`&kc?9&JB%&U#6TJysq^md@=qc-BkYkrPgye zTTzJd&QQ-`Yi_wE;?Swkt7nNN<`Rckt)Pw=w~}Ljzi4y}xJro&nt>7E(4MPkl8WYK z;F6kV7&PQnV~Hg%m54crk0`H!=2GXB<9Zy7o1fd(a5jM$E;vlNhOKzm64CyeY=uw% zImCfxHsnk|uQ+*OP7B!JH2n=f7MwK93HglINOw}00(t8=dGrTGWq)vuj1}6EHnfIB z0R3mYMtjy+b3v2z&?G_gGHDPORW|Yo=_ubR;K`r4nQflIQ~GESe(>O=kAO>haC6uf zIGJ};--N=&Nk^D?jtRX><|y32?3AF+kmpkuz%vde(L=|T)&Y^Q9y6#**m}&S-phzP zR3ggutTd|n3q|DMY$Jd;FW<8Q?XZZvfHwG*Q6A`5?wpOtP>G1WI3Q^I!hI!<4S0<* zvu!;qN)XR6@_!obM{w*VekdDV3E7_xWuv=FL}-7Bm^CP@>HQ&d`rcqJ!0UUiFhVDj zX5@)0>`>w8`0q}B)+{FdzK{_hU*LZIh{%?aH{+)i<5~x-c#S1yQC7+TS*6UdaXGIm z+>|z+Qa_~|?a%(E;&CB=EVsm*cNf^3e~IHC7TBqG7TB$47T9f&BL*4D_CgNC((!$W zk?$|CJAS*s?s<EGojF;=^)|QycBsT$pJR;}0z6XS(Fz`I;L)LYl!8Z@;!zGBJ>Zc6 zkDa*%_Wcf@!d>7~K_2um*LW#6WKieQ2Y--@Ja|?J)HrRZan8M6J9-BCCv!!18)-0B z<-j5{IS@<*UPBEuu*j-Z@Tn)RF{%cOMDY`=?ZD&Lq^iDGWKR2UYf=HbMpTX!*_*j8 zzgc9r?lP?6v08gGa6S7Mn8j#UqTMsb`TDFGL|la5thHN7`zFR9-J7t3Wm_|GtpM;D z;>J*m5T;yvu1p0FJ3c7_pEF*clvshc4wbAKf3XDdHDU%=T4Lslm;(c7pRYFKkUtDQ z=UyyK1=tt7LZoAC9YV~L)*49(jQtGiJn>8DVh!imUO}1vVo55LfDHTRqy%a~aR~Mz zA8SOEpFl(*2ImhKnn8|XJ!eMIFJ_0cGhx@+$QM%n6Kh6~{rMF}@Y#k`=tR}%F<dLb zwR6;s*Ip~M%8n+@1Y`fzxEXo$nQ1qW?y+ZfH+`=NHVz~9!5cFFW+<GBK<*^R508%j zVmNF=FFW&mK`H>7rcPX+4US-Z>HzxJzFUxsP!DT3OWQYqw)NQ$)+s@qls;Vh=J@q_ z68b!$^nv`-kH)RUp2e>GQ^@|#V9@r;{wvB3nWgNID|O;Jb0%b`Eh+Cz$o~`SOPQ7Y z@QK}V5k4_I^2er<{}TD*%p{$z&nlgy4%A8c#O`>JHb(3%8Xa$C+(GYCh|QTRE%6xi z?D53n5*>>Lj2UeGV?B>C78wVK!6akT6N6=p!9QPY%b5EZ<L&GR#M@7O@m9-u{tXpx zClV<+f0WGSl=+GJl#DazJd1JtdeDkLzBm`!gV@4cKwOCg=Yx(X#$<och`^4&!`$}9 z(?24<!myh=7p@g@F6j72pPyqLk$H;oh4}!xI`MP?yCx{3cOF~<n@*kwlVe8N)$U-7 zIB{dnMBLoR7-6h1r$L{mnD;$#vz&8D&llR?7dP{%AME4JT|xg`zeICI=B^3zU+JxK z*D1yl<@fkX=B|tNm0yofC};iDm$TplH)l=Z1H%(zpLnjCFkjT#0i4XYm@mo)b_Zh& zaW|83hPZ2IjB)*fjpN)a@zfS~ov$4|hx+2oJGG;y-^DtP`XWWTcfo^wP-i3tYUSF@ zI^*~gEA6VmLQB>bs9}<<8&qwO`L0t}v<(<mLe(N;kFU&Cy;PW;_Fq1mWBri;eFE}r zMqSZ{csafcHHhWZ6XCI1IX^a|o;VIav?12VR2@=4-HF3kV}vQ&o;o{tWI)!oMYxtJ z1&(;ukf=3&=BYK9r)8~i3jSriajII@PGQy>%wOb5d%=$H4hAi6t?{iFK!298eZXL? z!FhW8KQFOEHt>MY;a(~3^v_nDm?vf;$5)SVy%-h=&?klpa6f}}`86ds>WCxX!J2#k zYcOhuBe+(|dXBR58hD-|{%F#g`S3H3-tbzHnCsRXksDZJAZ`QXj~vhZdj8ebW(0P| zeQCA=wZ>Z`;T&tIQ-=zT$iV^;r0k557YewJj~=%U2<Fs!*lqIxr3-Tlb)hZE=S0#9 zLYGSDf*M8YQjYtHGQTczt}0!?;|%JHpptv~p2c!)K%F#EZq^r&=l}ZT{(H(zogm{W z@H!6JXF^u`<qb!6)O?QYS3%BJ?T1OS&l8lLe$cWfrjq^r{6JllAGAIn$q)2_qmRAW zqtB0&KCRANm9<41;|$}DS%^i%ENcsiqyNxeOq)<=>?0umxba7S(N~PWysr><-&vfK zapsS)k3l!-E9#|U41SU^_9peBob(%Ftd24EjSI^hJ(0-ETuL8337MZjJW<9!AePQC zmYf=5QY`(gFP2za$XL>L#n^H#c<id@vz!ALvMcPNW9FmIU1?X^6f)qxO2!Q4uV6j; zQ^&TvCmS8}))r3O*lmm(*!-KUEp*O8+$^I%-Y0IVJ#q7)^A-K{am<q`V(G`eSXx4R zFkfjuq0dA=A!p{}|Bsieq@O6O%2mrhAiijS9bX?hPkjtAC)bM$#GG6+C_nUR^TgcU zj4!TP$Sp}<U6JCR#Tl%%zpWiTgLO~WA9DY}vTg2dh4{?i@FENM6e-z02VcIh(5iez zuKlP(jBF5aEBd!$zb_=m3a%L+sKVN3i)p(|)WfJ-K(m>($H^l5{()%Dd+ikWKL)V> z@$BkU;PIuossWLmW{U8Ccn0m424w9JM*mca6|7{vFkEAmK-acMjBM#EwRUQkVU?mT zX#-8hvaNF9xnCB-waht3PU7Q>ED?MgG_PRJTEkWdG*1m7KQoU!k9`%^Rk()wScEVi zmu9j5^c>bkp1Jn#4X+u;-q4wSSiDiAZ2tBuS;6|M0QTKgV#CIAudMP!)WY7JS%zFc zmwT($kTnhbW(@?*%5Pv#;z{hqy_yiwqw#E#_hMLQ1H2!@eHixatZCT0<GT9}^CJ6@ z7l!;t*mo{;+{wCvzCLkXHe`nd?C;2oKCdI6M)LAv?5X61e&ywsSOi{e--LdYpZCCs z5$yBeh0;$#_G?WkJ7s~~x&5J3g!0h#kPW%e?wMfw8d1(Y&8hUE{Eq!aIpzQ4?eEA9 zJ$_94Q+CGKa2WFjaR&T7j4d8#YUMh|7~>l7+2>JLg7(~tMz%8VHyvm2pEu6VIB^?C zzbmi?&!v4lzT^H_eh-Xs=k+CW|FMrT4r6<k<U&p?nibTSv8eQoL*Ks{31{igR?Mx_ zh|v)B1^yWK)$)4k`1I+?n1GJgfG_5>V;hg|SALN0m?tHFWc}aN`YYWT<0q**byB`x z+mCsy^~>AD8|OZ|d`KIVUoJMF&Yl=}g?4asN4|FQ@W@cLKpZ)FSjRE)QT#=$8NR%{ zg0}i@jTN7eAM~6l$OXJ}#xp<SnlJZ=FR^VtC{O>$pQrahADP?mT*fQEnhTS2b)k8= z<Z9MUJ(K+5jpHeNBJ*{jc^TzvJEQaUqS5g*W6oDE<@aH*2Xh*+nK*;|W@7C@p2fa# zE`VAiqiZJAND1pXBf$1~tl5Va;aTWBS@%R#O?0Zi3hTWsB9EX(dZm{8HaYCuWQ(80 zGa=YC#b-pw52pw5oT%Thxc{;F8C+wnh8!2<*nGaqx(d&|mY+mz^}PXIFO8l?y>z9g zUP?Lj(&*`3PQ8R$$L_G~3H4G3bVy+w;-jpWAbSU7IIiaD(@wo)XYhO|fSM_hgM7G- zddjJpexqt8o?({+p4TN=H?d}7e1H1~CTpfRpI>qga?X>^a%zs~iDWjY)~VS8K|aHg z>rBr#P%}a2(9wj5bKl}syxYP33f4}}vrcOo>!nv$3+|!(GxxOFpL{X&xxK;cT(vfD zro611C^KkZXFWxEDPLY@$VQp9yrAWpR12G>STo`Ip<H7o$)7MUnf&xW>m(&R*OZ@A zcFIIuARp_dHs-|%_E&RpvJZq@BPQwaiTJ=yd3^9=Rnv04Kd$E?^t+q!#RGNIamdLy zW8JjYshbdoMmB-EJ8;q;Z}6Wt-p)8N%;$-Vb^SoS8E=@&sGXesN~{f8_%@=}2RAOO zMzfbFE@Si=>nYX@N_Re+#J;y#0pH?zgp5~RLmidtr_y;+%tCKp%&r1|&UI<44`m0p zj=C)DplS%l{r^z46yu)p(5UN)DdR!M{~r<)L1(T^$W?#Tn2_^F$HbVYrs`0+`a7(t z7}tpJDA$VTtIfoVvYwLrmwGN;vkS3=^*hSEfp<#+ulVN@)^G1z^30p)A93DXD4(BX zE}>3iQ{{B%iFG32n<KTHBQmd}uHxKB9-6o=CCre2{-cjxmx6!Dy2LrI@;d#Q&+C*) z#rIW!+b-xM9p64b?JYDfm;8Rp&F^-H&hLvx$G0%I`|7NI))=LTR~yfWUJDET-c8gR zGWd>En7r_Qk8wV1gstIJQ3UI~9X8}Ut9-7+SjRk#lFz3B*Wy@+gFFx6I``z!kGw+t zWjWD5*XcvP{bjc7k8z`l_ir_C6aC5GFE8eod?yHF#$PJT1yBnHu?2*8x$qugk%2uO zBN)MZTC920ds{P*v+xdxfqe_-eXg<9*k8i_hBcI(f&BJ+)-OvfQOq`I<$5IdKjIeb zkezXIwN(ka_xOy4&kFaPHTWJ<zgHH>A;Pd1-q(o0UIjyi<Ky5JqFsh4=W_<H^L<E1 z{-QPGpeyFHH_#PPKKGhIn}>Lf2kI*Bu}!D^d`E3R4$hl5AQzu2@;ddPe5A2#i}VW~ zfh<pBJj>1r)Rzgoiv~DbvJ&qr5=Lzp1nn%)&VfBk596J-Z`9eCdwBK&*;wO&cMSAJ zg!{2qcnW)IeD-!~jTs>ha|!RZncRo?Ka_=hcL@vQSd{54yzdtC+l;<L?JM^{Wqdfc zllz}`;REB7Yz0QN2llulBh*jXIv@m|YhKXSVcHYd3kP6p=vXw2zQhe6PE7P=f9KuO z9G@i>^keKjD^peI6YeiGBabh~yM#e8jq;#>;dfRW0rr0!&wM4{LTj4j2l<{@j(ydj zSxml<V=wg~#v^4N5@qN+-8x`PpD`xs(^IQWywhpGccKj4f6w<pNP~G|TEn)CRoD=H z0~NSmodaLSP%F`2vi2OPF-zdv&^PI?XQg~0$TFkf5HkjAvJpSd8qP+Nh;91Te{HZD z@9zN*Imu%hcucc~MPvqS=Eqa-{u&YS()L%2l72iRW?b|anGxPE98H)}-ZO9>IWd}@ z#k>n$f6V&^#)XO#>i@%iArV_@iPMVjY{)QM`Ubf};Yxuk#XO(0Yk`<OumG>G+19kM zC0bBpMh@2q?31MeFF>~4&;c=4vbWmA`@z{bXzHwCbMDjCX3Vd<)(`hi(*~jU{>PDb zf})sX{u%Vy4|{4FZJWV<OW?gvX@hTq2K{g!lGAcdhn&-Ck5{YAnY78#c|tz#9SA-! zzBh>XzlXB3%0|ck_SH35=O9-#-fi1uV9t!>1mMMl_ZC=M_FC$4Im#|&wyiL9Ik0bm zh*`rH@4@fke8IV$zS>iVJikChb_FN+Z0oS{*FpFT^V;jL+5a~E#dp!Ol>Kt|*BtGy zsq*r#KgPT~tkyv0-C=hPoRpWjM#?<u$;+J6oDVBM=Df^zeJAGS+(qQ&9P{!mtYhT* ziui_~L;GvYIe34EYaR1+VyMPqPDYMNaUKV;zQ!;I@SbFj{}u$fmFtIGpSk8<g&ZE? zn)_#J&1D~~4Oma}Id3L%$xQqkfXLp5L~Jpx??rC$=OgCh{)dbJuY*1^__&E2mX-Ml z@1ih2kw@{M;(<15o%|Rw-}`y!e2yFzIU3E%T+Uiv=JIDn{1G9aoBaqmY`SO7XD<J% z{UMXN{3p<n>xs<U(x1b&&XF>|!#>F6X6e8JQ|Iz#=6s#YDbsG`4XmXyKkTbEXImH> zwy&d2ot&80L)uE~rSth-X$v=>!+tY0&4heD(OyCSI-&CUbbmhI7g{q8ncRF1x!^~c z!}kT`HOlMB3740=Du)M<6AsE)Mr;Qy(MI3wSz;r1n-Q#srMs$8H@SXF4XON1A032` zbPiWOD*ZR(qXOw8%6qx{h<RK3$dk8sXK~++IF6!5;J??vUav?X=OiB(|JSd=hm{`M ze$JV*$nVfqzN`0swKnG=^EUf{J{%AquGW4Def>H8C7FBO`?n*i&3bwOwKVJICs2P6 z7CLqGbJ%}Z_diMGl49uP+?z?>tfBF5KAiiXBx`8i$5{vDzpGr*Ut=W>OZhGI4b0yK zyTCTQ=fOLH)^zZj2Ya!eoc?${YG~UQg{W<j%ab@4K=vSN-B5q6h&k(px;|vZaBmc5 zjmYN#IL9W`y>X}R-H-bs?w4E7nlo72L%y@Dd$BhjJ6y<G595rE|BN*-a^>%=Au$8< z?mpTZvd&hyGtqB|#Niq%0)6n@!-~KczkaAjl)i-dXW8Z)^jQWyO1L(8^X-1jON^bU zvBVa<Qxbbb(&zIp*9p|DP8+dPJb*P}FY8*|?~o7Qoj|V4)4(2hE&{r}q;c04^ovhg zuY$M-s4^$y%E931`2NrX$dzUYam?Cx2JE|vvP~sB#!G-U0{I&x4PfZL2tJ(o^hM~h z&!Y?L_<a}BCFI=8P+zIbP)^%X)$vl78Q#3_so{Ul8lHL~4`SUnBhc+9)Ri)8p8>a* zc@}<tpnq>x@~4ksPpowleEa3y@Gbny_@KUBxbKTw&j{&f+KIlN!p{NNX$zh?#V*D+ z7v<;vtl!VL&rE6CICaSsex@y`KWw4bMCoVB)<0;<{?viGGe+TO&JpQn(h!E;($7we z+j`6?W7g~EZ(qpI)McWdvB#0qd_Ty~3HXnG#{KJLKTEwhH|;Ea|0I3o^ZnQ9dv6|w z&N0ln_%ElZwOOCOUtVS%#d_KD<>iB_);@@92j8dG{v`K6_^i~)o$`6!bZhv6wKn%* zojnlHpw|AWHEau&zws<E_$P9{gw2w_fRFJ!3b{|_<BiDId{%gy%Io~M$YY4FvVLKe zaNeUHpF2<^iucspp?yK@Ga~09zoUk>VxTSVAF@h7TP)`{YF)f5CLXqTHz7AIJBmFn zUY~*Wz#10ZKPhAz^BDi`7k|J*wSg~U9fUpwI8Q@6B=<zBP4breB73nf@^SIv9t;0{ zwvu)1=<2M5vER~kw8{)oe#jou`*YlPz`U9T8~+v8B*=OH^980}3u&`2(`HyBibrb9 zAnp}PAHx2{UOc<*ug;bp0X&R*otJ{v?A<k}_k&j0XU}EIo=Z8exPDsC7@S{)Y&-U{ ziI;8Qi}qZZ3(;PC>T}%B!oQg^LVM~`a$b@S?<ht-Dv!zbG4uB651V;kD?iuM&lf8< z?%AeOZk*>(?g7|m0QPzx--a#_C!u_t7+LI}nfd**iN1CGtbALcd|RP?`-m7He@LVP zM{w`V{qUzlIp)*3@b!NBntoRG2ItsSPQ4L$gt8+Kx%+IWn-s1Lxw%Zfi&|sO?yoV+ z)mpR{bFg#-YZLd`uues=PL&~tmtnj)$l0}sp_0q7&ajXxt1Yor))5E9T+~d9_XqNF z|LJ8Q_xCSQA6-qE_Y15$xF3U^xi&UXUIo|wG3p_iE3v1ESiAvs-VA4-cYMOWrf;o$ z-K~k7c*0uQ%XQIuPTp_6Wer;u@Jl<M&Et6@_YADaVeT0k7UPfmygy}a!`K@}>|q_8 zrebf_WfFT+`cTE5Q^O+m5QmGUPs0}H&1EgSoG&9*DSS0TUm=h0L_U~(xEl9FZeHl4 zzu=P?azmNQ7458Bm49Z#KXr`RPr5es#p!g$sb`+CKK&W*LzItJ$@&vMT5gG}3GWY& zbKYUkY3g}*1Uj=0QF-%{*QY*xyz?#zU3gFBuTkZ^b81w~JJhHvM#rC`U+7!yL-ZY_ ze?2v-1-)an0`ICPb9}xVKci|@yt9+T`^~vWZL#R9wy34;;NK5=?&;t2#d9+wzd!Km zn$fc+#{%zHt47a~zq;@LD9=3?BlaSc{eMDs&-2e}&-2eJ-}BEnbd=9O@oy+qohYAy zmT;Z5oM)gj3HLkCKm~olXP|f&K|FZyKOGBTyjrZOh_UZ8&h+|>*x|F$|IK|0&ps)i zjs6Xvfmx_?QSah!<DjM=GWl#a{@62*j%oR6C)5K`?-=;^3*X0agWCHbuXnijp?M%4 zr;!J0LDaI3-l*wN=kR^Kf5G2n@IJ@3ln>RjYSfCz$zjxBi~$pR4WJWhp3pGts_!2p zp7*9Bxd3Rj{|iSJL8lSt+4l%!A93zQNaOOW6>;#JF6DjBc{Z!#LGnc{!|{0CqtkRg z_x_;g-=u-f88@qub0S<Hv0o9hhUA{bGWeO#QX>yvkwdMSpSyBz1J7CE>xnq5OYU=1 z-?e?!aNST!&wusY)O?@krl$Y7X({hZ8B45L<#W@h<$rD(+9mA#b5riEQ$M)mhxm87 zuyv06wWZduS%Q0@Qs_O4{`<5*-B@Yx?~jBA@b`m`#$_xt>Hd4_Q=y})Wjwq)fZCIN zz^9D;V6)l%VeocrR&sEz%kM?lj_-+Lp9nm8uk>gWpYeh=b`<+tj4#F_`LN%KO2iL+ z;>7m!2kn9zRZLf+FaI`zH;!dr(mZ&u*bIQj9K;QIAveezaT57~?Z<3kP(RHZdKZ7) z7W4IdA#ct@9s61?@NV+(mUD*rhkQ+E9GTxdd^wl0YA(H^`As#KLg@eCU*{qxMN0Ih zw{@gjGRuIHzuxqhcJ!wEjOL8dk#6qG7|V_3-tB$$`uh4?@Pz`RjLsdnx;1Sy8(rO9 zOZwz@5sX&(4FqFbM>iOB%1<FUU2j~!Vbi+XCv?1+Zem^2P3!KM(5>0P#}x4C28Zt* zo7QcdaQOlfOr&e+?#eW`cNv*4cN^)BbZ5FNqg0f1_cnLzfDN>U+vVpSdW}q5bC>az zbZ<9?zGKtc+c#arz&^SQ4(!l<@W6L$y6qzM_0nB%Sm*(|_Z!wL81%l~=Zy=PdotfI zw`ba5@%GN<?P;U69VX{DHS&Sg*xc3CoiXGGJn$_I12MRxLx&K8Z+#~_^{qDkbYZKp zu=U>;tAM;C)7+a`Z5WgB=^mmd<GZKC-wuCIHNbi)Z(sXYI48PVjU7FG&G>!?;*ZV; zt~YJ8ceUV~9?h9{eEws;k_(^g;P*-}zk2X(5d1|@pMG8GmULfVbMJjdCf(W7-Af2_ zs3ooX-`L)fN%!W}U2G^k<b+-Fcx?uu=9g<&qXY7#RnWp~U)Zo|3bTur_TH8qAXV(e z`dcwgZ(X}#%bmBc-MHGgvAMk?-D+gIUC&TnsNLIqpVn3P<vFbqipFU>d`aP#s|&v7 z6nV(88>bt)v|`3Cp_zANq>1ohmu{G+c41$w(cXs?l)>~&8(qzvX`_1^k`iLNz12v! zZci`4v~BH3_s*xW4CA&Qe%D2MZnYt_VHfr}g5?eBG(Ylx*ZkIgdfNlnp6DJQe-Eoo z9nQZ8GcFZj9D_It<o^Y~@e`;;yAbCb&eL&};3&tzUlA@H#5n@=Vw|Vpn1SPC``xm3 z(}uM-7%L1njHlvF+2t?neAkCC_274))HNwT+d<-$er)6a{QZCZovO!#SlR*iEroI5 zOL15T{Eb{uuurxBQV9H=Tv2dDwND9AR|e9%oOWO~vIzQ!uc<bsQX^yOkZPNPf3H^* z;8g_j4{Stx4A&Q{_Sc2@%u^V@O|}13@Nf5uzzU}woQuD;oJ9MaYNH~mIs#UkRU6~A zfNyAnYNIdy-mfSgcG_YV#*#l3A5nxbbdW#l%NUnGbseh-`O6=#U$0<Hknw*4e6wS( z{PjD1*SFwr2^+wf2tLl4c4ZHeksoApev042&fg%G&xlF?Eq$Gn4Zjgwmwifwn2Gjx zBo_Zs*I)6qPx#uu^0na$=coGrv#&iqu^q_IX@@=lUpPP2p6_cf@wIQ7_}#F;pZKmf zJO0q$4GVON3EvG1<n5)#`;Wf<-}bc`i}I)F|EsV4*S_`-eeKsh_J;0(pXuw)cf$fc zdj*k0?#Yq{{y`25=2NvZe(+k|U$!THA4|1b#P*h!<y)BNxUSWUFZVY0)K9{qT)MZr z<KFb-D_l?dfaZD2w(jmeKSO+v>t5$`VW3iwz(>W>y<N>6TYA&2JFvuG;G1UoT0Flv zc24-pS)L80-jd$ggLMtOF7nf7UEO;5ocbeZj!OEoXR2<=e;LhPzdzD9((<C`rM{%! zOp{f^<PWFy!2azm8P^}ukjg3f%0+%&ZJny$no)Az(YT_1xzU=w*SKn_aclRz#<I_R z=IUZ`Q)A<5qwc0#zwl{edHpr@%j<Cyby<<OY<FZ|YAjo2+}4tja*Jk$!4wyaMq@?& zQZ<LTo+GUX*5drB>-5CJ2MShbxW28quMMA~yRWP7zE0<y=@s>NeBstRx9GU{wR+PX z&GqtQc8EZL^80rh(e1RruelQ+)l(OVTqf$b_VtN+jFV~JigTt{o}mYC+=yu2THoH) zijV5m_qFNEE*2QU@A$bB^R8y&TH}k?Usb;h=i9HRgC`hC*`i@b!;WPQX_TN1xR>o{ z-n#L=-c8-z9eoYAth?)4qoKPe(?Es$dO#tWG;D3}YG`ROmf-*E8xZW>y_tr#?#^_> z9o?w1+xwO)PFL51F=DK@s{ywU9Xndn7tx`w9p5l)@4CnB(&W@`TOiLC+ybmKmNb2F z#g@j~ZrQkYld<GBG;eKMcf%KMGK`B9rmwf9!D}jG$(>6VFWK3n-F}g0#t-USSqBc{ zj3cl?wQ-U)Fl!gowsP%etmT{|WB|u{u?z=kn9f;S5C=N4<soZkoaK+>@mHbhY|ydR zl=UXpQT8Pb`SG_9bX<Q)*W?_c)oJsxq{B6Fl?$^5=P@e<9Ivs)AV03#pH(pM{I;t6 zzUpz{NXJ@3)2#<gISQS%nDx<ZUqf5}NXOr8I7o;7+fvR^fOG!GvH4?71YXcDz_n4X zk15&4fAAwe(xz~bALu#^A$W);9Qvon-3ElFYXuz+=?6buClKUIeyAIqx=9n^OdkAU z;z=9GhC>(5qCtOh1Bc_%zhA*YAF1D$R-xNXx`ngm_mBq$*!KYb^BWxcr|G^5goXiT qGWbu8Cc>HH(r-`V@Qj<;hxQ>H`loq31B8ce$IW2BRukbY>HZ&v{EYhm literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.o b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.o new file mode 100644 index 0000000000000000000000000000000000000000..437886ce35304773a6ca70ecc20a5d7a220d91b2 GIT binary patch literal 7460 zcmb_he{56N6+X|g6aPv`*K|uuIz6<Y5iPCKHE0gYHm4BkY=LFO-Ka_x8|RgHwH?=X z%1iegJCsULT8RRan2OXy?GP22L^mpdpi&T2f(}hc?IJ3QmT7cjDwU|#N_1jm-@W%3 zznGHtk6L;<_dEAHKkt3_+0QpV{_kIi=o`4iN5fSGaY!PGwGfXhMBOS(pCuBKYWQ*r z(!fB@Fmqz0J_7^c?)BjkD#;qe5ccFCs;`H9uSn8d5(Wlh*<2=`+Qjr*eF*!i6GR?M z`Cy{-r^W*V>3A$Vn%p>?7|7;EHs0#Phb$f2h-!n%$2Z}V63D}?JW%t%Kq5N8KGL}i zYFpJ6?&4V~YOh0}M~hBFqLzC^Eux>IC#AkZPmM&2+aMc=nsn4IiuK{@!)5=7H4xXG zcIEu>Jrlsq^L0d)+p+(x$+^QjHFED+GS~LdE95F%cI^MrPcZl9_sou#ntdHnT3_@4 zzxW*!y!G3A$ZdV_pb4Eb5T)o&A7qi}cRwR{V1lYcR2yx*i?kI8wju(l<0|3`lGZg& z^_>NxK&<9Kh<wJg9}pEz{>Oxkrxm-XYYVk2?7hgiSz-TjfrDG9fpHJdm;9ZAzq@$u z7glPqsm8vStl^vE*AdTYjh3+gw-qtt^JDr>%#Z2&Yemd!A@WXgoQu}eCBMFVE%WAh zIeOu+HZL}V<J4BP$PF8rJ8I$F-L23)D&_*?v>rWN6e52Y?5bdM8aewp#)tFs^&G9p z_l}Bum(I`E9SV`>6XnZ0YUN8gdS5EMb@xo`z2rduOF5;%eVgNIXPzZG6C-y%{+Ri{ ziO9FF)B10}KS}16C1jn~$ZWlXXiFDa$k*SB9b8^#_a6AkqZTLEQqMl`o?nam<N39C zyXV*9eYB#M<M6vw`SSdsTnlo(wU$dEa(~WsFTZUqQLY7d(Ux(p1$SP#7LOl(-asv` z71_DD6?^99L`_(?hSHjf{j0G1-cmgZdqzt2Fy21D9#1=bKf<;bMLj(J?ACfb8^CR0 zKgR9qd6w(37Vo8Ju{K>r@>@6tf<<ao_n@a3qME<sAZoJi+%c1H-#uf|GY$EccNz*$ zX)}d&Ju|4a8a3|49&F@ZM>%i4Piy3TiMshdb-!4uQ}NxC6?Gm$%p}jfZjF@oV9mcR zt2B0N*5X+bJwWe~^JPK~eVp@o*x!eogN4W6H4Cu|X5qDuOx!a#P~DRS>w+ob?M%wE zg7>o58KUaXi_n3yT*S;jc)l;+@_a)_%iLVPWyg%=F~!-^ly5%={Vvv{AD+|VOv;Ja z`Afes3rqiO24dc3`1?fY#s*(D$DVst=mOAPl)B~}=2-V`q3eb2jL;PZk!Sb2LKlJV zO{v@Z4}o)q-+zSjuX<AGfVW}1rt=kyaqb4T*6a(B>$6hN%X%;NzpHdcHrezz2VHOT z8cbygXYLmAXJ$!5eftXaC(W@N$IM^Sq8q<Dv*?CZ?`X*X_@@n#M$)1`Ak8w5&fqL} zkG=mVk<$Y>(?-kZl=m!rztN%NS>U-U_EB#uo?IP0@I6lLmS=os%u}^L-*RFmOpSqj z<ei2`S|D5g*l-$8t@C(>bUaD!juvu1L~~d3J^iNe(^Z^1ZZ*z|`^;~BORjZ5_Q#1_ zKRhOSbPaLG%RTe?RnJ^W)ia-t`MXQGV?1h&Rp#ydyxb#SI7CjlFHu`?R~H5HC$r}6 zF6u0}PMW(WDLD4eW9II0S~a%mWpno=g~pccFbnYu=GgPEnq#L#Z(QTpgP{PPhr7m= zJ^XYQs!s|(!LffG6Mj~W4Z(gK_ANVvpWec+FNkMopYTz5TRiui&xsz2H5xl9{T@~K zhU<-@M&|=d=$z%Q+J6+!=(R=CGsY7MBbIvrk5<YUPmN@ZtRBtj2_u@#>EG9*nN8XI z#az#tu7|q?)RQBa*=XodJvE%VFPn~LvW7l5JhCxi=uaeuVVsQOTa$S|t?ua!cdwgg z^kpX0z3Soa{&^-*U403=pZdeyee<TiFe+8>V#BFiG@jCPn}>BHVI+-I4kbxnPe&6Y zsJB$nri>BI85un{6iw;R7@1*I-XHE-7yb%CD|lZV6n#{@FAv-w{`ps|)z16ku+rB; zA?-<_=5-Y-aGN%x7R0vu-5k#iq0{kXbQ88j9IejAhf{I`t&FBp!#O>gNDRl&WbC`_ zNTRe=#QsVOgX{|Zv899h(!s~QqF1?SCbvS@=j)8LP|ep3-=bTGb**&RBlF6}pAmaJ zHK>oIv(aQafiL)CfuYM7dOQ^yPNt)|IJWZ=<bWR$Mru&p8)<9~qRKi_M$E`&qnS}X zXC%|Z88N~=5i?-BI-bCGx>-`I4juAB-8Xfj%+h^QZkV1xKBbL_)p(>gT+vR7#WS%H z(1gAC&Mm%Y=ZEk;`$>VT_K)vy6!Y7w_IEt#D6TC!_1kbF%!w?(2{I?R07qwzz5s`q zL$~K>vx=k5F2I>)&h!GD3Fb^Jz$r4PxBw@@oX7&4AajBXaCGMA3vh@zbbAiXDh|yq zz?o*w^a7j-=1eTWDKe+H04Ktnh~S95`1O2h_TqQ-N&I}>$+E~Ypk(zmArDgZr}+6g zG^v6%Oi}d}g?(YD@J+k=GV?AGd1r0BS%tmgx4+=M$9_*U{}lYR+xXK8`*h|XXWn7x zbsKL=VV|FQ2blL7^nM!;^$F}n9Ws6!^I9wNTvm~1li(4#WWEQ<bq@3A%YI$RUtllt z7k*uwr|Ssx=WM(~3VSgxdB{)n(=~yfAF}a~r@%G)n74;{SQqa;8}9{$z1x@vDg70p z-)7^P3VU<RgOt29^f?=EP+@O`d61H~0s4rI*Qc<zmwAwq7lOXm#_Lqr8(<!!<h4T| zu<@2D>}^&&=T*TYa$Z(^=OxTHmif+Eg}qMZpJo1G<{!elp({52l)|3#%-_R&*)PPg z7;|5o=!@r+%|4;92Y$u6IU~&PV;N-G#u7A9XVrDs?J4`Ix~8zF2m<_6O)GxY5#}Gp zeA>oGJb^vvzvNFae-FzS*ba4gLN>dt3VYhw&Sd@&%k?ZnEM?xvw-t7_`>JZ0!XCf! z<G8B$j>|$GBnQ^TeXShVF{`i}dXcZ=9P>}HJkEBg*L}`rhq?uJV_w=FVE$f~+gNfP zjzRVlf!zU{AM{CJH~J&}G_ze3^BXb0)y7AT0=v`9cPhSijis#jAZb^?+fcUCP`|)< z1tjBWA29zcOVlCuuQtV!>(FE!@V6EAL7Ts#!tPe~mt(sK%P>pClYWCj!cQmcZ0DO6 zP`C#9i~2SAlYCh}uwP-i&hiS&S(fjyJS*fuqSH8saIVP@&Ureea1EsJPe+)4fF;*S zvQErf?8k)Nahso<!Zomye!|Stp+98fH7cymLF~68-Z^vMYG;Arw~VLAfpwHPg7>;& zegkl)@>hEt7;(xN{9eZJE9V2id@j}Q1;5RX!C%IB0(>!#9@O#ksx}Agw`1_JpXB^B z_?XwQpX%B;pFZHrc05JeEMv%8F^_eqYh`{bF#2A`;2&35Bk;vM`dPP(`EK9|I|hHR z!kP}gnBNNAtoZ&*z*w&`1|RDruofhe^ATV^AN<qcueW3H`xMr|lk=UxP3(Uk`0aKK zeyhS-5qvS<2+Zfa-vq9=WANPyi@L--eG1&b{=>jm?0AaklET_F_+tJXa6R+e)c!7G z@WB&Utb<?7LsiH3m){TknjK?upTgo5zntF&>{kALm%%UEG5Ds!4jtb^#QY$zlliBB zH`p=wVTBz*@Wni29Wj3bIAF)%w<+w1fG_5ou+G<+Zvi*hG5CIk#eL<oh-el5dcYcr zI8t`9L>!5+eo`Wil&vh6v213kvqXH!!@5d|_)^xhM0|;{u2MQ#A_a*TVIclTsl|mk z(r~$ORpY{2C=$QpMDy|18jV2_xZq3v|AH9e|141>eO-REMIr<B>Bq2yw%f*6Y~ya* zc+fT;wvEr&#wTp!QQLUjHa=n-e`*{5&^A738-Ld}{+n(5if#O$ZCr=3`V1rubM;6n zmc!cw8XQdws=v}U##4j%@jftQB+>@{7E78v*;VpI6oHV5CDTf`atObZg^%t`W=(ce z82<|n#8dcbo{A<03^R>)0dl$z|Mlgb5H>62dkQgn*vPG6xz=X2ITKBnO%b<Wz6TS` zp6p7zK}Z-ToAt@eR%Z-DC|1gMOe)JY@;#ZdSv!(6GVvIIk<1!MP=@Zm`S;`h0b6^Y AV*mgE literal 0 HcmV?d00001 diff --git "a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.\302\265" "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.\302\265" new file mode 100644 index 0000000000000000000000000000000000000000..0ff0d5e68b04f086852b237bfee0acb0a7083871 GIT binary patch literal 97060 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 literal 0 HcmV?d00001 diff --git "a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.\302\265.exp" "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.\302\265.exp" new file mode 100644 index 0000000..b95a258 --- /dev/null +++ "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.\302\265.exp" @@ -0,0 +1 @@ +mexFunction \ No newline at end of file diff --git "a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.\302\265.rsrc" "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.\302\265.rsrc" new file mode 100644 index 0000000..e69de29 diff --git "a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.\317\200.4" "b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/upConv.\317\200.4" new file mode 100644 index 0000000..e69de29 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/wrap.c b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/wrap.c new file mode 100644 index 0000000..a081123 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/wrap.c @@ -0,0 +1,281 @@ +/* +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;;; File: wrap.c +;;; Author: Eero Simoncelli +;;; Description: Circular convolution on 2D images. +;;; Creation Date: Spring, 1987. +;;; MODIFICATIONS: +;;; 6/96: Switched array types to double float. +;;; 2/97: made more robust and readable. Added STOP arguments. +;;; ---------------------------------------------------------------- +;;; Object-Based Vision and Image Understanding System (OBVIUS), +;;; Copyright 1988, Vision Science Group, Media Laboratory, +;;; Massachusetts Institute of Technology. +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +*/ + +#include <stdlib.h> + +#include "convolve.h" + +/* + -------------------------------------------------------------------- + Performs correlation (i.e., convolution with filt(-x,-y)) of FILT + with IMAGE followed by subsampling (a.k.a. REDUCE in Burt&Adelson81). + The operations are combined to avoid unnecessary computation of the + convolution samples that are to be discarded in the subsampling + operation. The convolution is done in 9 sections so that mod + operations are not performed unnecessarily. The subsampling lattice + is specified by the START, STEP and STOP parameters. + -------------------------------------------------------------------- */ + +/* abstract out the inner product computation */ +#define INPROD(YSTART,YIND,XSTART,XIND) \ + { \ + sum=0.0; \ + for (y_im=YSTART, filt_pos=0, x_filt_stop=x_fdim; \ + x_filt_stop<=filt_size; \ + y_im++, x_filt_stop+=x_fdim) \ + for (x_im=XSTART ; \ + filt_pos<x_filt_stop; \ + filt_pos++, x_im++) \ + sum += imval[YIND][XIND] * filt[filt_pos]; \ + result[res_pos] = sum; \ + } + +int internal_wrap_reduce(image, x_dim, y_dim, filt, x_fdim, y_fdim, + x_start, x_step, x_stop, y_start, y_step, y_stop, + result) + register image_type *filt, *result; + register int x_dim, y_dim, x_fdim, y_fdim; + image_type *image; + int x_start, x_step, x_stop, y_start, y_step, y_stop; + { + register double sum; + register int filt_size = x_fdim*y_fdim; + image_type **imval; + register int filt_pos, x_im, y_im, x_filt_stop; + register int x_pos, y_pos, res_pos; + int x_ctr_stop = x_dim - x_fdim + 1; + int y_ctr_stop = y_dim - y_fdim + 1; + int x_ctr_start = 0; + int y_ctr_start = 0; + int x_fmid = x_fdim/2; + int y_fmid = y_fdim/2; + + /* shift start/stop coords to filter upper left hand corner */ + x_start -= x_fmid; y_start -= y_fmid; + x_stop -= x_fmid; y_stop -= y_fmid; + + if (x_stop < x_ctr_stop) x_ctr_stop = x_stop; + if (y_stop < y_ctr_stop) y_ctr_stop = y_stop; + + /* Set up pointer array for rows */ + imval = (image_type **) malloc(y_dim*sizeof(image_type *)); + if (imval IS NULL) + { + printf("INTERNAL_WRAP: Failed to allocate temp array!"); + return(-1); + } + for (y_pos=y_im=0;y_pos<y_dim;y_pos++,y_im+=x_dim) + imval[y_pos] = (image+y_im); + + for (res_pos=0, y_pos=y_start; /* TOP ROWS */ + y_pos<y_ctr_start; + y_pos+=y_step) + { + for (x_pos=x_start; + x_pos<x_ctr_start; + x_pos+=x_step, res_pos++) + INPROD(y_pos+y_dim, y_im%y_dim, x_pos+x_dim, x_im%x_dim) + + for (; + x_pos<x_ctr_stop; + x_pos+=x_step, res_pos++) + INPROD(y_pos+y_dim, y_im%y_dim, x_pos, x_im) + + for (; + x_pos<x_stop; + x_pos+=x_step, res_pos++) + INPROD(y_pos+y_dim, y_im%y_dim, x_pos, x_im%x_dim) + } /* end TOP ROWS */ + + for (; /* MID ROWS */ + y_pos<y_ctr_stop; + y_pos+=y_step) + { + for (x_pos=x_start; + x_pos<x_ctr_start; + x_pos+=x_step, res_pos++) + INPROD(y_pos, y_im, x_pos+x_dim, x_im%x_dim) + + for (; /* CENTER SECTION */ + x_pos<x_ctr_stop; + x_pos+=x_step, res_pos++) + INPROD(y_pos, y_im, x_pos, x_im) + + for (; + x_pos<x_stop; + x_pos+=x_step, res_pos++) + INPROD(y_pos, y_im, x_pos, x_im%x_dim) + } /* end MID ROWS */ + + for (; /* BOTTOM ROWS */ + y_pos<y_stop; + y_pos+=y_step) + { + for (x_pos=x_start; + x_pos<x_ctr_start; + x_pos+=x_step, res_pos++) + INPROD(y_pos, y_im%y_dim, x_pos+x_dim, x_im%x_dim) + + for (; + x_pos<x_ctr_stop; + x_pos+=x_step, res_pos++) + INPROD(y_pos, y_im%y_dim, x_pos, x_im) + + for (; + x_pos<x_stop; + x_pos+=x_step, res_pos++) + INPROD(y_pos, y_im%y_dim, x_pos, x_im%x_dim) + } /* end BOTTOM ROWS */ + + free ((image_type **) imval); + + return(0); + } /* end of internal_wrap_reduce */ + + + +/* + -------------------------------------------------------------------- + Performs upsampling (padding with zeros) followed by convolution of + FILT with IMAGE (a.k.a. EXPAND in Burt&Adelson81). The operations + are combined to avoid unnecessary multiplication of filter samples + with zeros in the upsampled image. The convolution is done in 9 + sections so that mod operation is not performed unnecessarily. + Arguments are described in the comment above internal_wrap_reduce. + + WARNING: this subroutine destructively modifes the RESULT image, so + the user must zero the result before invocation! + -------------------------------------------------------------------- */ + +/* abstract out the inner product computation */ +#define INPROD2(YSTART,YIND,XSTART,XIND) \ + { \ + val = image[im_pos]; \ + for (y_res=YSTART, filt_pos=0, x_filt_stop=x_fdim; \ + x_filt_stop<=filt_size; \ + y_res++, x_filt_stop+=x_fdim) \ + for (x_res=XSTART; \ + filt_pos<x_filt_stop; \ + filt_pos++, x_res++) \ + imval[YIND][XIND] += val * filt[filt_pos]; \ + } + +int internal_wrap_expand(image, filt, x_fdim, y_fdim, + x_start, x_step, x_stop, y_start, y_step, y_stop, + result, x_dim, y_dim) + register image_type *filt, *result; + register int x_fdim, y_fdim, x_dim, y_dim; + image_type *image; + int x_start, x_step, x_stop, y_start, y_step, y_stop; + { + register double val; + register int filt_size = x_fdim*y_fdim; + image_type **imval; + register int filt_pos, x_res, y_res, x_filt_stop; + register int x_pos, y_pos, im_pos; + int x_ctr_stop = x_dim - x_fdim + 1; + int y_ctr_stop = y_dim - y_fdim + 1; + int x_ctr_start = 0; + int y_ctr_start = 0; + int x_fmid = x_fdim/2; + int y_fmid = y_fdim/2; + + /* shift start/stop coords to filter upper left hand corner */ + x_start -= x_fmid; y_start -= y_fmid; + x_stop -= x_fmid; y_stop -= y_fmid; + + if (x_stop < x_ctr_stop) x_ctr_stop = x_stop; + if (y_stop < y_ctr_stop) y_ctr_stop = y_stop; + + /* Set up pointer array for rows */ + imval = (image_type **) malloc(y_dim*sizeof(image_type *)); + if (imval IS NULL) + { + printf("INTERNAL_WRAP: Failed to allocate temp array!"); + return(-1); + } + for (y_pos=y_res=0;y_pos<y_dim;y_pos++,y_res+=x_dim) + imval[y_pos] = (result+y_res); + + for (im_pos=0, y_pos=y_start; /* TOP ROWS */ + y_pos<y_ctr_start; + y_pos+=y_step) + { + for (x_pos=x_start; + x_pos<x_ctr_start; + x_pos+=x_step, im_pos++) + INPROD2(y_pos+y_dim, y_res%y_dim, x_pos+x_dim, x_res%x_dim) + + for (; + x_pos<x_ctr_stop; + x_pos+=x_step, im_pos++) + INPROD2(y_pos+y_dim, y_res%y_dim, x_pos, x_res) + + for (; + x_pos<x_stop; + x_pos+=x_step, im_pos++) + INPROD2(y_pos+y_dim, y_res%y_dim, x_pos, x_res%x_dim) + } /* end TOP ROWS */ + + for (; /* MID ROWS */ + y_pos<y_ctr_stop; + y_pos+=y_step) + { + for (x_pos=x_start; + x_pos<x_ctr_start; + x_pos+=x_step, im_pos++) + INPROD2(y_pos, y_res, x_pos+x_dim, x_res%x_dim) + + for (; /* CENTER SECTION */ + x_pos<x_ctr_stop; + x_pos+=x_step, im_pos++) + INPROD2(y_pos, y_res, x_pos, x_res) + + for (; + x_pos<x_stop; + x_pos+=x_step, im_pos++) + INPROD2(y_pos, y_res, x_pos, x_res%x_dim) + } /* end MID ROWS */ + + for (; /* BOTTOM ROWS */ + y_pos<y_stop; + y_pos+=y_step) + { + for (x_pos=x_start; + x_pos<x_ctr_start; + x_pos+=x_step, im_pos++) + INPROD2(y_pos, y_res%y_dim, x_pos+x_dim, x_res%x_dim) + + for (; + x_pos<x_ctr_stop; + x_pos+=x_step, im_pos++) + INPROD2(y_pos, y_res%y_dim, x_pos, x_res) + + for (; + x_pos<x_stop; + x_pos+=x_step, im_pos++) + INPROD2(y_pos, y_res%y_dim, x_pos, x_res%x_dim) + } /* end BOTTOM ROWS */ + + free ((image_type **) imval); + return(0); + } /* end of internal_wrap_expand */ + + + +/* Local Variables: */ +/* buffer-read-only: t */ +/* End: */ diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/wrap.o b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/MEX/wrap.o new file mode 100644 index 0000000000000000000000000000000000000000..504f19e53d64553655f3969be93bc885a061687c GIT binary patch literal 5476 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 literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/README b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/README new file mode 100644 index 0000000..8f339f3 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/README @@ -0,0 +1,55 @@ +This package contains some MatLab tools for multi-scale image +processing. Briefly, the tools include: + - Recursive multi-scale image decompositions (pyramids), including + Laplacian pyramids, QMFs, Wavelets, and steerable pyramids. These + operate on 1D or 2D signals of arbitrary dimension. Data + structures are compatible with the MatLab wavelet toolbox. + - Fast 2D convolution routines, with subsampling and boundary-handling. + - Fast point-operations, histograms, histogram-matching. + - Fast synthetic image generation: sine gratings, zone plates, fractals, etc. + - Display routines for images and pyramids. These include several + auto-scaling options, rounding to integer zoom factors to avoid + resampling artifacts, and useful labeling (dimensions and gray-range). + +The package is available as a gnu-zipped UNIX "tar" file, +accessible from the web page: + http://www.cns.nyu.edu/~lcv/software.html + +The code works in Matlab versions 4.2 and higher, and has been fully tested +on Linux and Macintosh OSX platforms (it should, however, port easily to +others). To use the code (these lines are for UNIX): + 1) gunzip matlabPyrTools.tar.gz # unpack g'zipped file + 2) tar tvf matlabPyrTools.tar # view contents + 3) tar xvf matlabPyrTools.tar # extract contents + 4) rm matlabPyrTools.tar # delete tarfile + 5) Run matlab, and execute: + path(<pathname-of-matlabPyrTools>, path); + help matlabPyrTools + +A few functions are actually MEX interfaces to C code. These are +contained in the subdirectory called MEX. The MEX files have been +tested on Sun (Solaris), LinuX on a Pentium platform, and Macintosh +OSX on a PowerPC, but should not be difficult to compile on most other +platforms. Source code is included in the MEX directory, as well as +Make files. I've included pre-compiled versions for a number of +platforms (Solaris,Linux,Mac,Windows). To make sure these are in your +matlab path, you can do *one* of the following: + 1) Create a symbolic link (or macintosh "alias") for the relavent files + in the main matlabPyrTools directory, or + 2) Copy the relavent files into the main matlabPyrTools directory, or + 3) Put the MEX subdirectory in your matlab path. + +Some example script files showing usage of the code are in the +directory <dir>/TUTORIALS. There is a README file in that directory +describing the contents. + +Incremental changes to the code are documented in the ChangeLog file. + +Comments/Suggestions/Bugs to: + Eero P. Simoncelli + Associate Professor, + Center for Neural Science, and + Courant Institute for Mathematical Sciences + New York University + eero.simoncelli@nyu.edu + http://www.cns.nyu.edu/~eero/ diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/TUTORIALS/README b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/TUTORIALS/README new file mode 100644 index 0000000..06960a4 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/TUTORIALS/README @@ -0,0 +1,18 @@ + +This directory contains some Matlab script files that serve to give +example usage of this code, and also to explain some of the +representations and algorithms. + +The files are NOT meant to be executed from the MatLab prompt (like many +of the MatLab demos). You should instead read through the comments, +executing the subsequent pieces of code. This gives you a chance to +explore as you go... + +matlabPyrTools.m - Example usage of the code in the distribution. + +pyramids.m - An introduction to multi-scale pyramid representations, + covering Laplacian, QMF/Wavelet, and Steerable pyramids. The + file assumes a knowledge of linear systems, matrix algebra, + and 2D Fourier transforms. + +more to come.... diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/TUTORIALS/matlabPyrTools.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/TUTORIALS/matlabPyrTools.m new file mode 100644 index 0000000..44c27ce --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/TUTORIALS/matlabPyrTools.m @@ -0,0 +1,145 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Some examples using the tools in this distribution. +%%% Eero Simoncelli, 2/97. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% Add directory to path (YOU'LL NEED TO ADJUST THIS): +path('/lcv/matlab/lib/matlabPyrTools',path); + +%% Load an image, and downsample to a size appropriate for the machine speed. +oim = pgmRead('einstein.pgm'); +tic; corrDn(oim,[1 1; 1 1]/4,'reflect1',[2 2]); time = toc; +imSubSample = min(max(floor(log2(time)/2+3),0),2); +im = blurDn(oim, imSubSample,'qmf9'); +clear oim; + +%%% ShowIm: +%% 3 types of automatic graylevel scaling, 2 types of automatic +%% sizing, with or without title and Range information. +help showIm +clf; showIm(im,'auto1','auto','Al') +clf; showIm('im','auto2') +clf; showIm(im,'auto3',2) + +%%% Statistics: +mean2(im) +var2(im) +skew2(im) +kurt2(im) +entropy2(im) +imStats(im) + +%%% Synthetic images. First pick some parameters: +sz = 200; +dir = 2*pi*rand(1) +slope = 10*rand(1)-5 +int = 10*rand(1)-5; +orig = round(1+(sz-1)*rand(2,1)); +expt = 0.8+rand(1) +ampl = 1+5*rand(1) +ph = 2*pi*rand(1) +per = 20 +twidth = 7 + +clf; +showIm(mkRamp(sz,dir,slope,int,orig)); +showIm(mkImpulse(sz,orig,ampl)); +showIm(mkR(sz,expt,orig)); +showIm(mkAngle(sz,dir)); +showIm(mkDisc(sz,sz/4,orig,twidth)); +showIm(mkGaussian(sz,(sz/6)^2,orig,ampl)); +showIm(mkZonePlate(sz,ampl,ph)); +showIm(mkAngularSine(sz,3,ampl,ph,orig)); +showIm(mkSine(sz,per,dir,ampl,ph,orig)); +showIm(mkSquare(sz,per,dir,ampl,ph,orig,twidth)); +showIm(mkFract(sz,expt)); + + +%%% Point operations (lookup tables): +[Xtbl,Ytbl] = rcosFn(20, 25, [-1 1]); +plot(Xtbl,Ytbl); +showIm(pointOp(mkR(100,1,[70,30]), Ytbl, Xtbl(1), Xtbl(2)-Xtbl(1), 0)); + + +%%% histogram Modification/matching: +[N,X] = histo(im, 150); +[mn, mx] = range2(im); +matched = histoMatch(rand(size(im)), N, X); +showIm(im + sqrt(-1)*matched); +[Nm,Xm] = histo(matched,150); +nextFig(2,1); + subplot(1,2,1); plot(X,N); axis([mn mx 0 max(N)]); + subplot(1,2,2); plot(Xm,Nm); axis([mn mx 0 max(N)]); +nextFig(2,-1); + +%%% Convolution routines: + +%% Compare speed of convolution/downsampling routines: +noise = rand(400); filt = rand(10); +tic; res1 = corrDn(noise,filt(10:-1:1,10:-1:1),'reflect1',[2 2]); toc; +tic; ires = rconv2(noise,filt); res2 = ires(1:2:400,1:2:400); toc; +imStats(res1,res2) + +%% Display image and extension of left and top boundaries: +fsz = [9 9]; +fmid = ceil((fsz+1)/2); +imsz = [16 16]; + +% pick one: +im = eye(imsz); +im = mkRamp(imsz,pi/6); +im = mkSquare(imsz,6,pi/6); + +% pick one: +edges='reflect1'; +edges='reflect2'; +edges='repeat'; +edges='extend'; +edges='zero'; +edges='circular'; +edges='dont-compute'; + +filt = mkImpulse(fsz,[1 1]); +showIm(corrDn(im,filt,edges)); +line([0,0,imsz(2),imsz(2),0]+fmid(2)-0.5, ... + [0,imsz(1),imsz(1),0,0]+fmid(1)-0.5); +title(sprintf('Edges = %s',edges)); + +%%% Multi-scale pyramids (see pyramids.m for more examples, +%%% and explanations): + +%% A Laplacian pyramid: +[pyr,pind] = buildLpyr(im); +showLpyr(pyr,pind); + +res = reconLpyr(pyr, pind); % full reconstruction +imStats(im,res); % essentially perfect + +res = reconLpyr(pyr, pind, [2 3]); %reconstruct 2nd and 3rd levels only +showIm(res); + +%% Wavelet/QMF pyramids: +filt = 'qmf9'; edges = 'reflect1'; +filt = 'haar'; edges = 'qreflect2'; +filt = 'qmf12'; edges = 'qreflect2'; +filt = 'daub3'; edges = 'circular'; + +[pyr,pind] = buildWpyr(im, 5-imSubSample, filt, edges); +showWpyr(pyr,pind,'auto2'); + +res = reconWpyr(pyr, pind, filt, edges); +clf; showIm(im + i*res); +imStats(im,res); + +res = reconWpyr(pyr, pind, filt, edges, 'all', [2]); %vertical only +clf; showIm(res); + +%% Steerable pyramid: +[pyr,pind] = buildSpyr(im,4-imSubSample,'sp3Filters'); +showSpyr(pyr,pind); + +%% Steerable pyramid, constructed in frequency domain: +[pyr,pind] = buildSFpyr(im,5-imSubSample,4); %5 orientation bands +showSpyr(pyr,pind); +res = reconSFpyr(pyr,pind); +imStats(im,res); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/TUTORIALS/pyramids.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/TUTORIALS/pyramids.m new file mode 100644 index 0000000..2123c69 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/TUTORIALS/pyramids.m @@ -0,0 +1,903 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% IMAGE PYRAMID TUTORIAL +%%% +%%% A brief introduction to multi-scale pyramid decompositions for image +%%% processing. You should go through this, reading the comments, and +%%% executing the corresponding MatLab instructions. This file assumes +%%% a basic familiarity with matrix algebra, with linear systems and Fourier +%%% theory, and with MatLab. If you don't understand a particular +%%% function call, execute "help <functionName>" to see documentation. +%%% +%%% EPS, 6/96. +%%% Based on the original OBVIUS tutorial. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% Determine a subsampling factor for images, based on machine speed: +oim = pgmRead('einstein.pgm'); +tic; corrDn(oim,[1 1; 1 1]/4,'reflect1',[2 2]); time = toc; +imSubSample = min(max(floor(log2(time)/2+3),0),2); +im = blurDn(oim, imSubSample,'qmf9'); +clear oim; +clf; showIm(im, 'auto2', 'auto', 'im'); + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%% LAPLACIAN PYRAMIDS: + +%% Images may be decomposed into information at different scales. +%% Blurring eliminates the fine scales (detail): + +binom5 = binomialFilter(5); +lo_filt = binom5*binom5'; +blurred = rconv2(im,lo_filt); +subplot(1,2,1); showIm(im, 'auto2', 'auto', 'im'); +subplot(1,2,2); showIm(blurred, 'auto2', 'auto', 'blurred'); + +%% Subtracting the blurred image from the original leaves ONLY the +%% fine scale detail: +fine0 = im - blurred; +subplot(1,2,1); showIm(fine0, 'auto2', 'auto', 'fine0'); + +%% The blurred and fine images contain all the information found in +%% the original image. Trivially, adding the blurred image to the +%% fine scale detail will reconstruct the original. We can compare +%% the original image to the sum of blurred and fine using the +%% "imStats" function, which reports on the statistics of the +%% difference between it's arguments: +imStats(im, blurred+fine0); + +%% Since the filter is a lowpass filter, we might want to subsample +%% the blurred image. This may cause some aliasing (depends on the +%% filter), but the decomposition structure given above will still be +%% possible. The corrDn function correlates (same as convolution, but +%% flipped filter) and downsamples in a single operation (for +%% efficiency). The string 'reflect1' tells the function to handle +%% boundaries by reflecting the image about the edge pixels. Notice +%% that the blurred1 image is half the size (in each dimension) of the +%% original image. +lo_filt = 2*binom5*binom5'; %construct a separable 2D filter +blurred1 = corrDn(im,lo_filt,'reflect1',[2 2]); +subplot(1,2,2); showIm(blurred1,'auto2','auto','blurred1'); + +%% Now, to extract fine scale detail, we must interpolate the image +%% back up to full size before subtracting it from the original. The +%% upConv function does upsampling (padding with zeros between +%% samples) followed by convolution. This can be done using the +%% lowpass filter that was applied before subsampling or it can be +%% done with a different filter. +fine1 = im - upConv(blurred1,lo_filt,'reflect1',[2 2],[1 1],size(im)); +subplot(1,2,1); showIm(fine1,'auto2','auto','fine1'); + +%% We now have a technique that takes an image, computes two new +%% images (blurred1 and fine1) containing the coarse scale information +%% and the fine scale information. We can also (trivially) +%% reconstruct the original from these two (even if the subsampling of +%% the blurred1 image caused aliasing): + +recon = fine1 + upConv(blurred1,lo_filt,'reflect1',[2 2],[1 1],size(im)); +imStats(im, recon); + +%% Thus, we have described an INVERTIBLE linear transform that maps an +%% input image to the two images blurred1 and fine1. The inverse +%% transformation maps blurred1 and fine1 to the result. This is +%% depicted graphically with a system diagram: +%% +%% IM --> blur/down2 ---------> BLURRED1 --> up2/blur --> add --> RECON +%% | | ^ +%% | | | +%% | V | +%% | up2/blur | +%% | | | +%% | | | +%% | V | +%% --------------> subtract --> FINE1 ------------------- +%% +%% Note that the number of samples in the representation (i.e., total +%% samples in BLURRED1 and FINE1) is 1.5 times the number of samples +%% in the original IM. Thus, this representation is OVERCOMPLETE. + +%% Often, we will want further subdivisions of scale. We can +%% decompose the (coarse-scale) BLURRED1 image into medium coarse and +%% very coarse images by applying the same splitting technique: +blurred2 = corrDn(blurred1,lo_filt,'reflect1',[2 2]); +showIm(blurred2) + +fine2 = blurred1 - upConv(blurred2,lo_filt,'reflect1',[2 2],[1 1],size(blurred1)); +showIm(fine2) + +%% Since blurred2 and fine2 can be used to reconstruct blurred1, and +%% blurred1 and fine1 can be used to reconstruct the original image, +%% the set of THREE images (also known as "subbands") {blurred2, +%% fine2, fine1} constitute a complete representation of the original +%% image. Note that the three subbands are displayed at the same size, +%% but they are actually three different sizes. + +subplot(1,3,1); showIm(fine1,'auto2',2^(imSubSample-1),'fine1'); +subplot(1,3,2); showIm(fine2,'auto2',2^(imSubSample),'fine2'); +subplot(1,3,3); showIm(blurred2,'auto2',2^(imSubSample+1),'blurred2'); + +%% It is useful to consider exactly what information is stored in each +%% of the pyramid subbands. The reconstruction process involves +%% recursively interpolating these images and then adding them to the +%% image at the next finer scale. To see the contribution of ONE of +%% the representation images (say blurred2) to the reconstruction, we +%% imagine filling all the other subbands with zeros and then +%% following our reconstruction procedure. For the blurred2 subband, +%% this is equivalent to simply calling upConv twice: +blurred2_full = upConv(upConv(blurred2,lo_filt,'reflect1',[2 2],[1 1],size(blurred1)),... + lo_filt,'reflect1',[2 2],[1 1],size(im)); +subplot(1,3,3); showIm(blurred2_full,'auto2',2^(imSubSample-1),'blurred2-full'); + +%% For the fine2 subband, this is equivalent to calling upConv once: +fine2_full = upConv(fine2,lo_filt,'reflect1',[2 2],[1 1],size(im)); +subplot(1,3,2); showIm(fine2_full,'auto2',2^(imSubSample-1),'fine2-full'); + +%% If we did everything correctly, we should be able to add together +%% these three full-size images to reconstruct the original image: +recon = blurred2_full + fine2_full + fine1; +imStats(im, recon) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%% FUNCTIONS for CONSTRUCTING/MANIPULATING LAPLACIAN PYRAMIDS + +%% We can continue this process, recursively splitting off finer and +%% finer details from the blurred image (like peeling off the outer +%% layers of an onion). The resulting data structure is known as a +%% "Laplacian Pyramid". To make things easier, we have written a +%% MatLab function called buildLpyr to construct this object. The +%% function returns two items: a long vector containing the subbands +%% of the pyramid, and an index matrix that is used to access these +%% subbands. The display routine showLpyr shows all the subbands of the +%% pyramid, at the their correct relative sizes. It should now be +%% clearer why these data structures are called "pyramids". +[pyr,pind] = buildLpyr(im,5-imSubSample); +showLpyr(pyr,pind); + +%% There are also "accessor" functions for pulling out a single subband: +showIm(pyrBand(pyr,pind,2)); + +%% The reconLpyr function allows you to reconstruct from a laplacian pyramid. +%% The third (optional) arg allows you to select any subset of pyramid bands +%% (default is to use ALL of them). +clf; showIm(reconLpyr(pyr,pind,[1 3]),'auto2','auto','bands 1 and 3 only'); + +fullres = reconLpyr(pyr,pind); +showIm(fullres,'auto2','auto','Full reconstruction'); +imStats(im,fullres); + +%% buildLpyr uses 5-tap filters by default for building Laplacian +%% pyramids. You can specify other filters: +namedFilter('binom3') +[pyr3,pind3] = buildLpyr(im,5-imSubSample,'binom3'); +showLpyr(pyr3,pind3); +fullres3 = reconLpyr(pyr3,pind3,'all','binom3'); +imStats(im,fullres3); + +%% Here we build a "Laplacian" pyramid using random filters. filt1 is +%% used with the downsampling operations and filt2 is used with the +%% upsampling operations. We normalize the filters for display +%% purposes. Of course, these filters are (almost certainly) not very +%% "Gaussian", and the subbands of such a pyramid will be garbage! +%% Nevertheless, it is a simple property of the Laplacian pyramid that +%% we can use ANY filters and we will still be able to reconstruct +%% perfectly. + +filt1 = rand(1,5); filt1 = sqrt(2)*filt1/sum(filt1) +filt2 = rand(1,3); filt2 = sqrt(2)*filt2/sum(filt2) +[pyrr,pindr] = buildLpyr(im,5-imSubSample,filt1,filt2); +showLpyr(pyrr,pindr); +fullresr = reconLpyr(pyrr,pindr,'all',filt2); +imStats(im,fullresr); + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%% ALIASING in the Gaussian and Laplacian pyramids: + +%% Unless one is careful, the subsampling operations will introduce aliasing +%% artifacts in these pyramid transforms. This is true even though the +%% Laplacian pyramid can be used to reconstruct the original image perfectly. +%% When reconstructing, the pyramid is designed in such a way that these +%% aliasing artifacts cancel out. So it's not a problem if the only thing we +%% want to do is reconstruct. However, it can be a serious problem if we +%% intend to process each of the subbands independently. + +%% One way to see the consequences of the aliasing artifacts is by +%% examining variations that occur when the input is shifted. We +%% choose an image and shift it by some number of pixels. Then blur +%% (filter-downsample-upsample-filter) the original image and blur the +%% shifted image. If there's no aliasing, then the blur and shift +%% operations should commute (i.e., +%% shift-filter-downsample-upsample-filter is the same as +%% filter-downsample-upsample-filter-shift). Try this for 2 different +%% filters (by replacing 'binom3' with 'binom5' or 'binom7' below), +%% and you'll see that the aliasing is much worse for the 3 tap +%% filter. + +sig = 100*randn([1 16]); +sh = [0 7]; %shift amount +lev = 2; % level of pyramid to look at +flt = 'binom3'; %filter to use: + +shiftIm = shift(sig,sh); +[pyr,pind] = buildLpyr(shiftIm, lev, flt, flt, 'circular'); +shiftBlur = reconLpyr(pyr, pind, lev, flt, 'circular'); + +[pyr,pind] = buildLpyr(sig, lev, flt, flt, 'circular'); +res = reconLpyr(pyr, pind, lev, flt, 'circular'); +blurShift = shift(res,sh); + +subplot(2,1,1); r = showIm(shiftBlur,'auto2','auto','shiftBlur'); +subplot(2,1,2); showIm(blurShift,r,'auto','blurShift'); +imStats(blurShift,shiftBlur); + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%% PROJECTION and BASIS functions: + +%% An invertible, linear transform can be characterized in terms +%% of a set of PROJECTION and BASIS functions. In matlab matrix +%% notation: +% +%% c = P' * x +%% x = B * c +% +%% where x is an input, c are the transform coefficients, P and B +%% are matrices. The columns of P are the projection functions (the +%% input is projected onto the the columns of P to get each successive +%% transform coefficient). The columns of B are the basis +%% functions (x is a linear combination of the columns of B). + +%% Since the Laplacian pyramid is a linear transform, we can ask: what +%% are its BASIS functions? We consider these in one dimension for +%% simplicity. The BASIS function corresponding to a given +%% coefficient tells us how much that coefficient contributes to each +%% pixel in the reconstructed image. We can construct a single basis +%% function by setting one sample of one subband equal to 1.0 (and all +%% others to zero) and reconstructing. To build the entire matrix, we +%% have to do this for every sample of every subband: +sz = min(round(48/(sqrt(2)^imSubSample)),36); +sig = zeros(sz,1); +[pyr,pind] = buildLpyr(sig); +basis = zeros(sz,size(pyr,1)); +for n=1:size(pyr,1) + pyr = zeros(size(pyr)); + pyr(n) = 1; + basis(:,n) = reconLpyr(pyr,pind); +end +clf; showIm(basis) + +%% The columns of the basis matrix are the basis functions. The +%% matrix is short and fat, corresponding to the fact that the +%% representation is OVERCOMPLETE. Below, we plot the middle one from +%% each subband, starting with the finest scale. Note that all of +%% these basis functions are lowpass (Gaussian-like) functions. +locations = round(sz * (2 - 3./2.^[1:max(4,size(pind,1))]))+1; +for lev=1:size(locations,2) + subplot(2,2,lev); + showIm(basis(:,locations(lev))); + axis([0 sz 0 1.1]); +end + +%% Now, we'd also like see the inverse (we'll them PROJECTION) +%% functions. We need to ask how much of each sample of the input +%% image contributes to a given pyramid coefficient. Thus, the matrix +%% is constructed by building pyramids on the set of images with +%% impulses at each possible location. The rows of this matrix are +%% the projection functions. +projection = zeros(size(pyr,1),sz); +for pos=1:sz + [pyr,pind] = buildLpyr(mkImpulse([1 sz], [1 pos])); + projection(:,pos) = pyr; +end +clf; showIm(projection); + +%% Building a pyramid corresponds to multiplication by the projection +%% matrix. Reconstructing from this pyramid corresponds to +%% multiplication by the basis matrix. Thus, the product of the two +%% matrices (in this order) should be the identity matrix: +showIm(basis*projection); + +%% We can plot a few example projection functions at different scales. +%% Note that all of the projection functions are bandpass functions, +%% except for the coarsest subband which is lowpass. +for lev=1:size(locations,2) + subplot(2,2,lev); + showIm(projection(locations(lev),:)); + axis([0 sz -0.3 0.8]); +end + +%% Now consider the frequency response of these functions, plotted over the +%% range [-pi,pi]: +for lev=1:size(locations,2) + subplot(2,2,lev); + proj = projection(locations(lev),:); + plot(pi*[-32:31]/32,fftshift(abs(fft(proj',64)))); + axis([-pi pi -0.1 3]); +end + +%% The first projection function is highpass, and the second is bandpass. Both +%% of these look something like the Laplacian (2nd derivative) of a Gaussian. +%% The last is lowpass, as are the basis functions. Thus, the basic operation +%% used to create each level of the pyramid involves a simple highpass/lowpass +%% split. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%% QMF/WAVELET PYRAMIDS. + +%% Two things about Laplacian pyramids are a bit unsatisfactory. +%% First, there are more pixels (coefficients) in the representation +%% than in the original image. Specifically, the 1-dimensional +%% transform is overcomplete by a factor of 4/3, and the 2-dimensional +%% transform is overcomplete by a factor of 2. Secondly, the +%% "bandpass" images (fineN) do not segregate information according to +%% orientation. + +%% There are other varieties of pyramid. One type that arose in the +%% speech coding community is based on a particular pairs of filters +%% known as a "Quadrature Mirror Filters" or QMFs. These are closely +%% related to Wavelets (essentially, they are approximate wavelet +%% filters). + +%% Recall that the Laplacian pyramid is formed by simple hi/low +%% splitting at each level. The lowpass band is subsampled by a +%% factor of 2, but the highpass band is NOT subsampled. In the QMF +%% pyramid, we apply two filters (hi- and lo- pass) and subsample BOTH +%% by a factor of 2, thus eliminating the excess coefficients of the +%% Laplacian pyramid. + +%% The two filters must have a specific relationship to each +%% other. In particular, let n be an index for the filter samples. +%% The highpass filter may be constructed from the lowpass filter by +%% (1) modulating (multiplying) by (-1)^n (equivalent to shifting by +%% pi in the Fourier domain), (2) flipping (i.e., reversing the order +%% of the taps), (3) spatially shifting by one sample. Try to +%% convince yourself that the resulting filters will always be +%% orthogonal to each other (i.e., their inner products will be zero) +%% when shifted by any multiple of two. + +%% The function modulateFlip performs the first two of these operations. The +%% third (spatial shifting) step is built into the convolution code. +flo = namedFilter('qmf9')'; +fhi = modulateFlip(flo)'; +subplot(2,1,1); lplot(flo); axis([0 10 -0.5 1.0]); title('lowpass'); +subplot(2,1,2); lplot(fhi); axis([0 10 -0.5 1.0]); title('highpass'); + +%% In the Fourier domain, these filters are (approximately) +%% "power-complementary": the sum of their squared power spectra is +%% (approximately) a constant. But note that neither is a perfect +%% bandlimiter (i.e., a sinc function), and thus subsampling by a +%% factor of 2 will cause aliasing in each of the subbands. See below +%% for a discussion of the effect of this aliasing. + +%% Plot the two frequency responses: +freq = pi*[-32:31]/32; +subplot(2,1,1); +plot(freq,fftshift(abs(fft(flo,64))),'--',freq,fftshift(abs(fft(fhi,64))),'-'); +axis([-pi pi 0 1.5]); title('FFT magnitudes'); +subplot(2,1,2); +plot(freq,fftshift(abs(fft(flo,64)).^2)+fftshift(abs(fft(fhi,64)).^2)); +axis([-pi pi 0 2.2]); title('Sum of squared magnitudes'); + +%% We can split an input signal into two bands as follows: +sig = mkFract([1,64],1.6); +subplot(2,1,1); showIm(sig,'auto1','auto','sig'); +lo1 = corrDn(sig,flo,'reflect1',[1 2],[1 1]); +hi1 = corrDn(sig,fhi,'reflect1',[1 2],[1 2]); +subplot(2,1,2); +showIm(lo1,'auto1','auto','low and high bands'); hold on; plot(hi1,'--r'); hold off; + +%% Notice that the two subbands are half the size of the original +%% image, due to the subsampling by a factor of 2. One subtle point: +%% the highpass and lowpass bands are subsampled on different +%% lattices: the lowpass band retains the odd-numbered samples and the +%% highpass band retains the even-numbered samples. This was the +%% 1-sample shift relating the high and lowpass kernels (mentioned +%% above). We've used the 'reflect1' to handle boundaries, which +%% works properly for symmetric odd-length QMFs. + +%% We can reconstruct the original image by interpolating these two subbands +%% USING THE SAME FILTERS: +reconlo = upConv(lo1,flo,'reflect1',[1 2]); +reconhi = upConv(hi1,fhi,'reflect1',[1 2],[1 2]); +subplot(2,1,2); showIm(reconlo+reconhi,'auto1','auto','reconstructed'); +imStats(sig,reconlo+reconhi); + +%% We have described an INVERTIBLE linear transform that maps an input +%% image to the two images lo1 and hi1. The inverse transformation +%% maps these two images to the result. This is depicted graphically +%% with a system diagram: +%% +%% IM ---> flo/down2 --> LO1 --> up2/flo --> add --> RECON +%% | ^ +%% | | +%% | | +%% -> fhi/down2 --> HI1 --> up2/fhi ----- +%% +%% Note that the number of samples in the representation (i.e., total +%% samples in LO1 and HI1) is equal to the number of samples in the +%% original IM. Thus, this representation is exactly COMPLETE, or +%% "critically sampled". + +%% So we've fixed one of the problems that we had with Laplacian +%% pyramid. But the system diagram above places strong constraints on +%% the filters. In particular, for these filters the reconstruction +%% is no longer perfect. Turns out there are NO +%% perfect-reconstruction symmetric filters that are +%% power-complementary, except for the trivial case [1] and the +%% nearly-trivial case [1 1]/sqrt(2). + +%% Let's consider the projection functions of this 2-band splitting +%% operation. We can construct these by applying the transform to +%% impulse input signals, for all possible impulse locations. The +%% rows of the following matrix are the projection functions for each +%% coefficient in the transform. +M = [corrDn(eye(32),flo','circular',[1 2]), ... + corrDn(eye(32),fhi','circular',[1 2],[1 2])]'; +clf; showIm(M,'auto1','auto','M'); + +%% The transform matrix is composed of two sub-matrices. The top half +%% contains the lowpass kernel, shifted by increments of 2 samples. +%% The bottom half contains the highpass. Now we compute the inverse +%% of this matrix: +M_inv = inv(M); +showIm(M_inv,'auto1','auto','M_inv'); + +%% The inverse is (very close to) the transpose of the original +%% matrix! In other words, the transform is orthonormal. +imStats(M_inv',M); + +%% This also points out a nice relationship between the corrDn and +%% upConv functions, and the matrix representation. corrDn is +%% equivalent to multiplication by a matrix with copies of the filter +%% on the ROWS, translated in multiples of the downsampling factor. +%% upConv is equivalent to multiplication by a matrix with copies of +%% the filter on the COLUMNS, translated by the upsampling factor. + +%% As in the Laplacian pyramid, we can recursively apply this QMF +%% band-splitting operation to the lowpass band: +lo2 = corrDn(lo1,flo,'reflect1',[1 2]); +hi2 = corrDn(lo1,fhi,'reflect1',[1 2],[1 2]); + +%% The representation of the original signal is now comprised of the +%% three subbands {hi1, hi2, lo2} (we don't hold onto lo1, because it +%% can be reconstructed from lo2 and hi2). Note that hi1 is at 1/2 +%% resolution, and hi2 and lo2 are at 1/4 resolution: The total number +%% of samples in these three subbands is thus equal to the number of +%% samples in the original signal. +imnames=['hi1'; 'hi2'; 'lo2']; +for bnum=1:3 + band = eval(imnames(bnum,:)); + subplot(3,1,bnum); showIm(band); ylabel(imnames(bnum,:)); + axis([1 size(band,2) 1.1*min(lo2) 1.1*max(lo2)]); +end + +%% Reconstruction proceeds as with the Laplacian pyramid: combine lo2 and hi2 +%% to reconstruct lo1, which is then combined with hi1 to reconstruct the +%% original signal: +recon_lo1 = upConv(hi2,fhi,'reflect1',[1 2],[1 2]) + ... + upConv(lo2,flo,'reflect1',[1 2],[1 1]); +reconstructed = upConv(hi1,fhi,'reflect1',[1 2],[1 2]) + ... + upConv(recon_lo1,flo,'reflect1',[1 2],[1 1]); +imStats(sig,reconstructed); + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%% FUNCTIONS for CONSTRUCTING/MANIPULATING QMF/Wavelet PYRAMIDS + +%% To make things easier, we have bundled these qmf operations and +%% data structures into an object in MATLAB. + +sig = mkFract([1 64], 1.5); +[pyr,pind] = buildWpyr(sig); +showWpyr(pyr,pind); + +nbands = size(pind,1); +for b = 1:nbands + subplot(nbands,1,b); lplot(pyrBand(pyr,pind,b)); +end + +res = reconWpyr(pyr,pind); +imStats(sig,res); + +%% Now for 2D, we use separable filters. There are 4 ways to apply the two +%% filters to the input image (followed by the relavent subsampling operation): +%% (1) lowpass in both x and y +%% (2) lowpass in x and highpass in y +%% (3) lowpass in y and highpass in x +%% (4) highpass in both x and y. +%% The pyramid is built by recursively subdividing the first of these bands +%% into four new subbands. + +%% First, we'll take a look at some of the basis functions. +sz = 40; +zim = zeros(sz); +flo = 'qmf9'; edges = 'reflect1'; +[pyr,pind] = buildWpyr(zim); + +% Put an impulse into the middle of each band: +for lev=1:size(pind,1) + mid = sum(prod(pind(1:lev-1,:)')); + mid = mid + floor(pind(lev,2)/2)*pind(lev,1) + floor(pind(lev,1)/2) + 1; + pyr(mid,1) = 1; +end + +% And take a look at the reconstruction of each band: +for lnum=1:wpyrHt(pind)+1 + for bnum=1:3 + subplot(wpyrHt(pind)+1,3,(wpyrHt(pind)+1-lnum)*3+bnum); + showIm(reconWpyr(pyr, pind, flo, edges, lnum, bnum),'auto1',2,0); + end +end + +%% Note that the first column contains horizontally oriented basis functions at +%% different scales. The second contains vertically oriented basis functions. +%% The third contains both diagonals (a checkerboard pattern). The bottom row +%% shows (3 identical images of) a lowpass basis function. + +%% Now look at the corresponding Fourier transform magnitudes (these +%% are plotted over the frequency range [-pi, pi] ): +nextFig(2,1); +freq = 2 * pi * [-sz/2:(sz/2-1)]/sz; +for lnum=1:wpyrHt(pind)+1 + for bnum=1:3 + subplot(wpyrHt(pind)+1,3,(wpyrHt(pind)+1-lnum)*3+bnum); + basisFn = reconWpyr(pyr, pind, flo, edges, lnum, bnum); + basisFmag = fftshift(abs(fft2(basisFn,sz,sz))); + imagesc(freq,freq,basisFmag); + axis('square'); axis('xy'); colormap('gray'); + end +end +nextFig(2,-1); + +%% The filters at a given scale sum to a squarish annular region: +sumSpectra = zeros(sz); +lnum = 2; +for bnum=1:3 + basisFn = reconWpyr(pyr, pind, flo, edges, lnum, bnum); + basisFmag = fftshift(abs(fft2(basisFn,sz,sz))); + sumSpectra = basisFmag.^2 + sumSpectra; +end +clf; imagesc(freq,freq,sumSpectra); axis('square'); axis('xy'); title('one scale'); + +%% Now decompose an image: +[pyr,pind] = buildWpyr(im); + +%% View all of the subbands (except lowpass), scaled to be the same size +%% (requires a big figure window): +nlevs = wpyrHt(pind); +for lnum=1:nlevs + for bnum=1:3 + subplot(nlevs,3,(lnum-1)*3+bnum); + showIm(wpyrBand(pyr,pind,lnum,bnum), 'auto2', 2^(lnum+imSubSample-2)); + end +end + +%% In addition to the bands shown above, there's a lowpass residual: +nextFig(2,1); +clf; showIm(pyrLow(pyr,pind)); +nextFig(2,-1); + +% Alternatively, display the pyramid with the subbands shown at their +% correct relative sizes: +clf; showWpyr(pyr, pind); + +%% The reconWpyr function can be used to reconstruct the entire pyramid: +reconstructed = reconWpyr(pyr,pind); +imStats(im,reconstructed); + +%% As with Laplacian pyramids, you can specify sub-levels and subbands +%% to be included in the reconstruction. For example: +clf +showIm(reconWpyr(pyr,pind,'qmf9','reflect1',[1:wpyrHt(pind)],[1])); %Horizontal only +showIm(reconWpyr(pyr,pind,'qmf9','reflect1',[2,3])); %two middle scales + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%% PERFECT RECONSTRUCTION: HAAR AND DEBAUCHIES WAVELETS + +%% The symmetric QMF filters used above are not perfectly orthogonal. +%% In fact, it's impossible to construct a symmetric filter of size +%% greater than 2 that is perfectly orthogonal to shifted copies +%% (shifted by multiples of 2) of itself. For example, consider a +%% symmetric kernel of length 3. Shift by two and the right end of +%% the original kernel is aligned with the left end of the shifted +%% one. Thus, the inner product of these two will be the square of +%% the end tap, which will be non-zero. + +%% However, one can easily create wavelet filters of length 2 that +%% will do the job. This is the oldest known wavelet, known as the +%% "Haar". The two kernels are [1,1]/sqrt(2) and [1,-1]/sqrt(2). +%% These are trivially seen to be orthogonal to each other, and shifts +%% by multiples of two are also trivially orthogonal. The projection +%% functions of the Haar transform are in the rows of the following +%% matrix, constructed by applying the transform to impulse input +%% signals, for all possible impulse locations: + +haarLo = namedFilter('haar') +haarHi = modulateFlip(haarLo) +subplot(2,1,1); lplot(haarLo); axis([0 3 -1 1]); title('lowpass'); +subplot(2,1,2); lplot(haarHi); axis([0 3 -1 1]); title('highpass'); + +M = [corrDn(eye(32), haarLo, 'reflect1', [2 1], [2 1]); ... + corrDn(eye(32), haarHi, 'reflect1', [2 1], [2 1])]; +clf; showIm(M) +showIm(M*M') %identity! + +%% As before, the filters are power-complementary (although the +%% frequency isolation is rather poor, and thus the subbands will be +%% heavily aliased): +plot(pi*[-32:31]/32,abs(fft(haarLo,64)).^2,'--',... + pi*[-32:31]/32,abs(fft(haarHi,64)).^2,'-'); + +sig = mkFract([1,64],0.5); +[pyr,pind] = buildWpyr(sig,4,'haar','reflect1'); +showWpyr(pyr,pind); + +%% check perfect reconstruction: +res = reconWpyr(pyr,pind, 'haar', 'reflect1'); +imStats(sig,res) + +%% If you want perfect reconstruction, but don't like the Haar +%% transform, there's another option: drop the symmetry requirement. +%% Ingrid Daubechies developed one of the earliest sets of such +%% perfect-reconstruction wavelets. The simplest of these is of +%% length 4: + +daub_lo = namedFilter('daub2'); +daub_hi = modulateFlip(daub_lo); + +%% The daub_lo filter is constructed to be orthogonal to 2shifted +%% copy of itself. For example: +[daub_lo;0;0]'*[0;0;daub_lo] + +M = [corrDn(eye(32), daub_lo, 'circular', [2 1], [2 1]); ... + corrDn(eye(32), daub_hi, 'circular', [2 1], [2 1])]; +clf; showIm(M) +showIm(M*M') % identity! + +%% Again, they're power complementary: +plot(pi*[-32:31]/32,abs(fft(daub_lo,64)).^2,'--',... + pi*[-32:31]/32,abs(fft(daub_hi,64)).^2,'-'); + +%% The sum of the power spectra is again flat +plot(pi*[-32:31]/32,... + fftshift(abs(fft(daub_lo,64)).^2)+fftshift(abs(fft(daub_hi,64)).^2)); + +%% Make a pyramid using the same code as before (except that we can't +%% use reflected boundaries with asymmetric filters): +[pyr,pind] = buildWpyr(sig, maxPyrHt(size(sig),size(daub_lo)), daub_lo, 'circular'); +showWpyr(pyr,pind,'indep1'); + +res = reconWpyr(pyr,pind, daub_lo,'circular'); +imStats(sig,res); + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%% ALIASING IN WAVELET TRANSFORMS + +%% All of these orthonormal pyramid/wavelet transforms have a lot +%% of aliasing in the subbands. You can see that in the frequency +%% response plots since the frequency response of each filter +%% covers well more than half the frequency domain. The aliasing +%% can have serious consequences... + +%% Get one of the basis functions of the 2D Daubechies wavelet transform: +[pyr,pind] = buildWpyr(zeros(1,64),4,daub_lo,'circular'); +lev = 3; +pyr(1+sum(pind(1:lev-1,2))+pind(lev,2)/2,1) = 1; +sig = reconWpyr(pyr,pind, daub_lo,'circular'); +clf; lplot(sig) + +%% Since the basis functions are orthonormal, building a pyramid using this +%% input will yield a single non-zero coefficient. +[pyr,pind] = buildWpyr(sig, 4, daub_lo, 'circular'); +figure(1); +nbands = size(pind,1) +for b=1:nbands + subplot(nbands,1,b); lplot(pyrBand(pyr,pind,b)); + axis([1 size(pyrBand(pyr,pind,b),2) -0.3 1.3]); +end + +%% Now shift the input by one sample and re-build the pyramid. +shifted_sig = [0,sig(1:size(sig,2)-1)]; +[spyr,spind] = buildWpyr(shifted_sig, 4, daub_lo, 'circular'); + +%% Plot each band of the unshifted and shifted decomposition +nextFig(2); +nbands = size(spind,1) +for b=1:nbands + subplot(nbands,1,b); lplot(pyrBand(spyr,spind,b)); + axis([1 size(pyrBand(spyr,spind,b),2) -0.3 1.3]); +end +nextFig(2,-1); + +%% In the third band, we expected the coefficients to move around +%% because the signal was shifted. But notice that in the original +%% signal decomposition, the other bands were filled with zeros. +%% After the shift, they have significant content. Although these +%% subbands are supposed to represent information at different scales, +%% their content also depends on the relative POSITION of the input +%% signal. + +%% This problem is not unique to the Daubechies transform. The same +%% is true for the QMF transform. Try it... In fact, the same kind +%% of problem occurs for almost any orthogonal pyramid transform (the +%% only exception is the limiting case in which the filter is a sinc +%% function). + +%% Orthogonal pyramid transforms are not shift-invariant. Although +%% orthogonality may be an important property for some applications +%% (e.g., data compression), orthogonal pyramid transforms are +%% generally not so good for image analysis. + +%% The overcompleteness of the Laplacian pyramid turns out to be a +%% good thing in the end. By using an overcomplete representation +%% (and by choosing the filters properly to avoid aliasing as much as +%% possible), you end up with a representation that is useful for +%% image analysis. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%% The "STEERABLE PYRAMID" + +%% The steerable pyramid is a multi-scale representation that is +%% translation-invariant, but that also includes representation of +%% orientation. Furthermore, the representation of orientation is +%% designed to be rotation-invariant. The basis/projection functions +%% are oriented (steerable) filters, localized in space and frequency. +%% It is overcomplete to avoid aliasing. And it is "self-inverting" +%% (like the QMF/Wavelet transform): the projection functions and +%% basis functions are identical. The mathematical phrase for a +%% transform obeying this property is "tight frame". + +%% The system diagram for the steerable pyramid (described in the +%% reference given below) is as follows: +% +% IM ---> fhi0 -----------------> H0 ---------------- fhi0 ---> RESULT +% | | +% | | +% |-> flo0 ---> fl1/down2 --> L1 --> up2/fl1 ---> flo0 -| +% | | +% |----> fb0 -----> B0 ----> fb0 ---| +% | | +% |----> fb1 -----> B1 ----> fb1 ---| +% . . +% . . +% |----> fbK -----> BK ----> fbK ---| +% +%% The filters {fhi0,flo0} are used to initially split the image into +%% a highpass residual band H0 and a lowpass subband. This lowpass +%% band is then split into a low(er)pass band L1 and K+1 oriented +%% subbands {B0,B1,...,BK}. The representatation is substantially +%% overcomplete. The pyramid is built by recursively splitting the +%% lowpass band (L1) using the inner portion of the diagram (i.e., +%% using the filters {fl1,fb0,fb1,...,fbK}). The resulting transform is +%% overcomplete by a factor of 4k/3. + +%% The scale tuning of the filters is constrained by the recursive +%% system diagram. The orientation tuning is constrained by requiring +%% the property of steerability. A set of filters form a steerable +%% basis if they 1) are rotated copies of each other, and 2) a copy of +%% the filter at any orientation may be computed as a linear +%% combination of the basis filters. The simplest examples of +%% steerable filters is a set of N+1 Nth-order directional +%% derivatives. + +%% Choose a filter set (options are 'sp0Filters', 'sp1Filters', +%% 'sp3Filters', 'sp5Filters'): +filts = 'sp3Filters'; +[lo0filt,hi0filt,lofilt,bfilts,steermtx,harmonics] = eval(filts); +fsz = round(sqrt(size(bfilts,1))); fsz = [fsz fsz]; +nfilts = size(bfilts,2); +nrows = floor(sqrt(nfilts)); + +%% Look at the oriented bandpass filters: +for f = 1:nfilts + subplot(nrows,ceil(nfilts/nrows),f); + showIm(conv2(reshape(bfilts(:,f),fsz),lo0filt)); +end + +%% Try "steering" to a new orientation (new_ori in degrees): +new_ori = 360*rand(1) +clf; showIm(conv2(reshape(steer(bfilts, new_ori*pi/180 ), fsz), lo0filt)); + +%% Look at Fourier transform magnitudes: +lo0 = fftshift(abs(fft2(lo0filt,64,64))); +fsum = zeros(size(lo0)); +for f = 1:size(bfilts,2) + subplot(nrows,ceil(nfilts/nrows),f); + flt = reshape(bfilts(:,f),fsz); + freq = lo0 .* fftshift(abs(fft2(flt,64,64))); + fsum = fsum + freq.^2; + showIm(freq); +end + +%% The filters sum to a smooth annular ring: +clf; showIm(fsum); + +%% build a Steerable pyramid: +[pyr,pind] = buildSpyr(im, 4-imSubSample, filts); + +%% Look at first (vertical) bands, different scales: +for s = 1:min(4,spyrHt(pind)) + band = spyrBand(pyr,pind,s,1); + subplot(2,2,s); showIm(band); +end + +%% look at all orientation bands at one level (scale): +for b = 1:spyrNumBands(pind) + band = spyrBand(pyr,pind,1,b); + subplot(nrows,ceil(nfilts/nrows),b); + showIm(band); +end + +%% To access the high-pass and low-pass bands: +low = pyrLow(pyr,pind); +showIm(low); +high = spyrHigh(pyr,pind); +showIm(high); + +%% Display the whole pyramid (except for the highpass residual band), +%% with images shown at proper relative sizes: +showSpyr(pyr,pind); + +%% Spin a level of the pyramid, interpolating (steering to) +%% intermediate orienations: + +[lev,lind] = spyrLev(pyr,pind,2); +lev2 = reshape(lev,prod(lind(1,:)),size(bfilts,2)); +figure(1); subplot(1,1,1); showIm(spyrBand(pyr,pind,2,1)); +M = moviein(16); +for frame = 1:16 + steered_im = steer(lev2, 2*pi*(frame-1)/16, harmonics, steermtx); + showIm(reshape(steered_im, lind(1,:)),'auto2'); + M(:,frame) = getframe; +end + +%% Show the movie 3 times: +movie(M,3); + +%% Reconstruct. Note that the filters are not perfect, although they are good +%% enough for most applications. +res = reconSpyr(pyr, pind, filts); +showIm(im + i * res); +imStats(im,res); + +%% As with previous pyramids, you can select subsets of the levels +%% and orientation bands to be included in the reconstruction. For example: + +%% All levels (including highpass and lowpass residuals), one orientation: +clf; showIm(reconSpyr(pyr,pind,filts,'reflect1','all', [1])); + +%% Without the highpass and lowpass: +clf; showIm(reconSpyr(pyr,pind,filts,'reflect1',[1:spyrHt(pind)], [1])); + +%% We also provide an implementation of the Steerable pyramid in the +%% Frequency domain. The advantages are perfect-reconstruction +%% (within floating-point error), and any number of orientation +%% bands. The disadvantages are that it is typically slower, and the +%% boundary handling is always circular. + +[pyr,pind] = buildSFpyr(im,4,4); % 4 levels, 5 orientation bands +showSpyr(pyr,pind); +res = reconSFpyr(pyr,pind); +imStats(im,res); % nearly perfect + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% The steerable pyramid transform given above is described in: +% +% E P Simoncelli and W T Freeman. +% The Steerable Pyramid: A Flexible Architecture for Multi-Scale +% Derivative Computation. IEEE Second Int'l Conf on Image Processing. +% Washington DC, October 1995. +% +% Online access: +% Abstract: http://www.cis.upenn.edu/~eero/ABSTRACTS/simoncelli95b-abstract.html +% Full (PostScript): ftp://ftp.cis.upenn.edu/pub/eero/simoncelli95b.ps.Z +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% Local Variables: +%% buffer-read-only: t +%% End: diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/binomialFilter.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/binomialFilter.m new file mode 100644 index 0000000..e5670c7 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/binomialFilter.m @@ -0,0 +1,18 @@ +% KERNEL = binomialFilter(size) +% +% Returns a vector of binomial coefficients of order (size-1) . + +% Eero Simoncelli, 2/97. + +function [kernel] = binomialFilter(sz) + +if (sz < 2) + error('size argument must be larger than 1'); +end + +kernel = [0.5 0.5]'; + +for n=1:sz-2 + kernel = conv([0.5 0.5]', kernel); +end + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/blur.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/blur.m new file mode 100644 index 0000000..f993d09 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/blur.m @@ -0,0 +1,28 @@ +% RES = blur(IM, LEVELS, FILT) +% +% Blur an image, by filtering and downsampling LEVELS times +% (default=1), followed by upsampling and filtering LEVELS times. The +% blurring is done with filter kernel specified by FILT (default = +% 'binom5'), which can be a string (to be passed to namedFilter), a +% vector (applied separably as a 1D convolution kernel in X and Y), or +% a matrix (applied as a 2D convolution kernel). The downsampling is +% always by 2 in each direction. + +% Eero Simoncelli, 3/04. + +function res = blur(im, nlevs, filt) + +%------------------------------------------------------------ +%% OPTIONAL ARGS: + +if (exist('nlevs') ~= 1) + nlevs = 1; +end + +if (exist('filt') ~= 1) + filt = 'binom5'; +end + +%------------------------------------------------------------ + +res = upBlur(blurDn(im,nlevs,filt)); \ No newline at end of file diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/blurDn.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/blurDn.m new file mode 100644 index 0000000..8120c04 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/blurDn.m @@ -0,0 +1,59 @@ +% RES = blurDn(IM, LEVELS, FILT) +% +% Blur and downsample an image. The blurring is done with filter +% kernel specified by FILT (default = 'binom5'), which can be a string +% (to be passed to namedFilter), a vector (applied separably as a 1D +% convolution kernel in X and Y), or a matrix (applied as a 2D +% convolution kernel). The downsampling is always by 2 in each +% direction. +% +% The procedure is applied recursively LEVELS times (default=1). + +% Eero Simoncelli, 3/97. + +function res = blurDn(im, nlevs, filt) + +%------------------------------------------------------------ +%% OPTIONAL ARGS: + +if (exist('nlevs') ~= 1) + nlevs = 1; +end + +if (exist('filt') ~= 1) + filt = 'binom5'; +end + +%------------------------------------------------------------ + +if isstr(filt) + filt = namedFilter(filt); +end + +filt = filt/sum(filt(:)); + +if nlevs > 1 + im = blurDn(im,nlevs-1,filt); +end + +if (nlevs >= 1) + if (any(size(im)==1)) + if (~any(size(filt)==1)) + error('Cant apply 2D filter to 1D signal'); + end + if (size(im,2)==1) + filt = filt(:); + else + filt = filt(:)'; + end + res = corrDn(im,filt,'reflect1',(size(im)~=1)+1); + elseif (any(size(filt)==1)) + filt = filt(:); + res = corrDn(im,filt,'reflect1',[2 1]); + res = corrDn(res,filt','reflect1',[1 2]); + else + res = corrDn(im,filt,'reflect1',[2 2]); + end +else + res = im; +end diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildGpyr.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildGpyr.m new file mode 100644 index 0000000..3f3d07b --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildGpyr.m @@ -0,0 +1,82 @@ +% [PYR, INDICES] = buildGpyr(IM, HEIGHT, FILT, EDGES) +% +% Construct a Gaussian pyramid on matrix IM. +% +% HEIGHT (optional) specifies the number of pyramid levels to build. Default +% is 1+maxPyrHt(size(IM),size(FILT)). +% You can also specify 'auto' to use this value. +% +% FILT (optional) can be a string naming a standard filter (see +% namedFilter), or a vector which will be used for (separable) +% convolution. Default = 'binom5'. EDGES specifies edge-handling, and +% defaults to 'reflect1' (see corrDn). +% +% PYR is a vector containing the N pyramid subbands, ordered from fine +% to coarse. INDICES is an Nx2 matrix containing the sizes of +% each subband. This is compatible with the MatLab Wavelet toolbox. + +% Eero Simoncelli, 6/96. + +function [pyr,pind] = buildGpyr(im, ht, filt, edges) + +if (nargin < 1) + error('First argument (IM) is required'); +end + +im_sz = size(im); + +%------------------------------------------------------------ +%% OPTIONAL ARGS: + +if (exist('filt') ~= 1) + filt = 'binom5'; +end + +if isstr(filt) + filt = namedFilter(filt); +end + +if ( (size(filt,1) > 1) & (size(filt,2) > 1) ) + error('FILT should be a 1D filter (i.e., a vector)'); +else + filt = filt(:); +end + +max_ht = 1 + maxPyrHt(im_sz, size(filt,1)); +if ( (exist('ht') ~= 1) | (ht == 'auto') ) + ht = max_ht; +else + if (ht > max_ht) + error(sprintf('Cannot build pyramid higher than %d levels.',max_ht)); + end +end + +if (exist('edges') ~= 1) + edges= 'reflect1'; +end + +%------------------------------------------------------------ + +if (ht <= 1) + + pyr = im(:); + pind = im_sz; + +else + + if (im_sz(2) == 1) + lo2 = corrDn(im, filt, edges, [2 1], [1 1]); + elseif (im_sz(1) == 1) + lo2 = corrDn(im, filt', edges, [1 2], [1 1]); + else + lo = corrDn(im, filt', edges, [1 2], [1 1]); + lo2 = corrDn(lo, filt, edges, [2 1], [1 1]); + end + + [npyr,nind] = buildGpyr(lo2, ht-1, filt, edges); + + pyr = [im(:); npyr]; + pind = [im_sz; nind]; + +end + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildLpyr.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildLpyr.m new file mode 100644 index 0000000..facb0f3 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildLpyr.m @@ -0,0 +1,109 @@ +% [PYR, INDICES] = buildLpyr(IM, HEIGHT, FILT1, FILT2, EDGES) +% +% Construct a Laplacian pyramid on matrix (or vector) IM. +% +% HEIGHT (optional) specifies the number of pyramid levels to build. Default +% is 1+maxPyrHt(size(IM),size(FILT)). You can also specify 'auto' to +% use this value. +% +% FILT1 (optional) can be a string naming a standard filter (see +% namedFilter), or a vector which will be used for (separable) +% convolution. Default = 'binom5'. FILT2 specifies the "expansion" +% filter (default = filt1). EDGES specifies edge-handling, and +% defaults to 'reflect1' (see corrDn). +% +% PYR is a vector containing the N pyramid subbands, ordered from fine +% to coarse. INDICES is an Nx2 matrix containing the sizes of +% each subband. This is compatible with the MatLab Wavelet toolbox. + +% Eero Simoncelli, 6/96. + +function [pyr,pind] = buildLpyr(im, ht, filt1, filt2, edges) + +if (nargin < 1) + error('First argument (IM) is required'); +end + +im_sz = size(im); + +%------------------------------------------------------------ +%% OPTIONAL ARGS: + +if (exist('filt1') ~= 1) + filt1 = 'binom5'; +end + +if isstr(filt1) + filt1 = namedFilter(filt1); +end + +if ( (size(filt1,1) > 1) & (size(filt1,2) > 1) ) + error('FILT1 should be a 1D filter (i.e., a vector)'); +else + filt1 = filt1(:); +end + +if (exist('filt2') ~= 1) + filt2 = filt1; +end + +if isstr(filt2) + filt2 = namedFilter(filt2); +end + +if ( (size(filt2,1) > 1) & (size(filt2,2) > 1) ) + error('FILT2 should be a 1D filter (i.e., a vector)'); +else + filt2 = filt2(:); +end + +max_ht = 1 + maxPyrHt(im_sz, max(size(filt1,1), size(filt2,1))); +if ( (exist('ht') ~= 1) | (ht == 'auto') ) + ht = max_ht; +else + if (ht > max_ht) + error(sprintf('Cannot build pyramid higher than %d levels.',max_ht)); + end +end + +if (exist('edges') ~= 1) + edges= 'reflect1'; +end + +%------------------------------------------------------------ + +if (ht <= 1) + + pyr = im(:); + pind = im_sz; + +else + + if (im_sz(2) == 1) + lo2 = corrDn(im, filt1, edges, [2 1], [1 1]); + elseif (im_sz(1) == 1) + lo2 = corrDn(im, filt1', edges, [1 2], [1 1]); + else + lo = corrDn(im, filt1', edges, [1 2], [1 1]); + int_sz = size(lo); + lo2 = corrDn(lo, filt1, edges, [2 1], [1 1]); + end + + [npyr,nind] = buildLpyr(lo2, ht-1, filt1, filt2, edges); + + if (im_sz(1) == 1) + hi2 = upConv(lo2, filt2', edges, [1 2], [1 1], im_sz); + elseif (im_sz(2) == 1) + hi2 = upConv(lo2, filt2, edges, [2 1], [1 1], im_sz); + else + hi = upConv(lo2, filt2, edges, [2 1], [1 1], int_sz); + hi2 = upConv(hi, filt2', edges, [1 2], [1 1], im_sz); + end + + hi2 = im - hi2; + + pyr = [hi2(:); npyr]; + pind = [im_sz; nind]; + +end + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSCFpyr.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSCFpyr.m new file mode 100644 index 0000000..101b6d2 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSCFpyr.m @@ -0,0 +1,90 @@ +% [PYR, INDICES, STEERMTX, HARMONICS] = buildSCFpyr(IM, HEIGHT, ORDER, TWIDTH) +% +% This is a modified version of buildSFpyr, that constructs a +% complex-valued steerable pyramid using Hilbert-transform pairs +% of filters. Note that the imaginary parts will *not* be steerable. +% +% To reconstruct from this representation, either call reconSFpyr +% on the real part of the pyramid, *or* call reconSCFpyr which will +% use both real and imaginary parts (forcing analyticity). +% +% Description of this transform appears in: Portilla & Simoncelli, +% Int'l Journal of Computer Vision, 40(1):49-71, Oct 2000. +% Further information: http://www.cns.nyu.edu/~eero/STEERPYR/ + +% Original code: Eero Simoncelli, 5/97. +% Modified by Javier Portilla to return complex (quadrature pair) channels, +% 9/97. + +function [pyr,pind,steermtx,harmonics] = buildSCFpyr(im, ht, order, twidth) + +%----------------------------------------------------------------- +%% DEFAULTS: + +max_ht = floor(log2(min(size(im)))) - 2; + +if (exist('ht') ~= 1) + ht = max_ht; +else + if (ht > max_ht) + error(sprintf('Cannot build pyramid higher than %d levels.',max_ht)); + end +end + +if (exist('order') ~= 1) + order = 3; +elseif ((order > 15) | (order < 0)) + fprintf(1,'Warning: ORDER must be an integer in the range [0,15]. Truncating.\n'); + order = min(max(order,0),15); +else + order = round(order); +end +nbands = order+1; + +if (exist('twidth') ~= 1) + twidth = 1; +elseif (twidth <= 0) + fprintf(1,'Warning: TWIDTH must be positive. Setting to 1.\n'); + twidth = 1; +end + +%----------------------------------------------------------------- +%% Steering stuff: + +if (mod((nbands),2) == 0) + harmonics = [0:(nbands/2)-1]'*2 + 1; +else + harmonics = [0:(nbands-1)/2]'*2; +end + +steermtx = steer2HarmMtx(harmonics, pi*[0:nbands-1]/nbands, 'even'); + +%----------------------------------------------------------------- + +dims = size(im); +ctr = ceil((dims+0.5)/2); + +[xramp,yramp] = meshgrid( ([1:dims(2)]-ctr(2))./(dims(2)/2), ... + ([1:dims(1)]-ctr(1))./(dims(1)/2) ); +angle = atan2(yramp,xramp); +log_rad = sqrt(xramp.^2 + yramp.^2); +log_rad(ctr(1),ctr(2)) = log_rad(ctr(1),ctr(2)-1); +log_rad = log2(log_rad); + +%% Radial transition function (a raised cosine in log-frequency): +[Xrcos,Yrcos] = rcosFn(twidth,(-twidth/2),[0 1]); +Yrcos = sqrt(Yrcos); + +YIrcos = sqrt(1.0 - Yrcos.^2); +lo0mask = pointOp(log_rad, YIrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); +imdft = fftshift(fft2(im)); +lo0dft = imdft .* lo0mask; + +[pyr,pind] = buildSCFpyrLevs(lo0dft, log_rad, Xrcos, Yrcos, angle, ht, nbands); + +hi0mask = pointOp(log_rad, Yrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); +hi0dft = imdft .* hi0mask; +hi0 = ifft2(ifftshift(hi0dft)); + +pyr = [real(hi0(:)) ; pyr]; +pind = [size(hi0); pind]; diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSCFpyrLevs.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSCFpyrLevs.m new file mode 100644 index 0000000..bd75695 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSCFpyrLevs.m @@ -0,0 +1,73 @@ +% [PYR, INDICES] = buildSCFpyrLevs(LODFT, LOGRAD, XRCOS, YRCOS, ANGLE, HEIGHT, NBANDS) +% +% Recursive function for constructing levels of a steerable pyramid. This +% is called by buildSCFpyr, and is not usually called directly. + +% Original code: Eero Simoncelli, 5/97. +% Modified by Javier Portilla to generate complex bands in 9/97. + +function [pyr,pind] = buildSCFpyrLevs(lodft,log_rad,Xrcos,Yrcos,angle,ht,nbands); + +if (ht <= 0) + + lo0 = ifft2(ifftshift(lodft)); + pyr = real(lo0(:)); + pind = size(lo0); + +else + + bands = zeros(prod(size(lodft)), nbands); + bind = zeros(nbands,2); + +% log_rad = log_rad + 1; + Xrcos = Xrcos - log2(2); % shift origin of lut by 1 octave. + + lutsize = 1024; + Xcosn = pi*[-(2*lutsize+1):(lutsize+1)]/lutsize; % [-2*pi:pi] + order = nbands-1; + %% divide by sqrt(sum_(n=0)^(N-1) cos(pi*n/N)^(2(N-1)) ) + %% Thanks to Patrick Teo for writing this out :) + const = (2^(2*order))*(factorial(order)^2)/(nbands*factorial(2*order)); + +% +% Ycosn = sqrt(const) * (cos(Xcosn)).^order; +% + % analityc version: only take one lobe + alfa= mod(pi+Xcosn,2*pi)-pi; + Ycosn = 2*sqrt(const) * (cos(Xcosn).^order) .* (abs(alfa)<pi/2); + + himask = pointOp(log_rad, Yrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); + + for b = 1:nbands + anglemask = pointOp(angle, Ycosn, Xcosn(1)+pi*(b-1)/nbands, Xcosn(2)-Xcosn(1)); + banddft = ((-i)^(nbands-1)) .* lodft .* anglemask .* himask; + band = ifft2(ifftshift(banddft)); + +% bands(:,b) = real(band(:)); + % analytic version: full complex value + bands(:,b)=band(:); + bind(b,:) = size(band); + end + + dims = size(lodft); + ctr = ceil((dims+0.5)/2); + lodims = ceil((dims-0.5)/2); + loctr = ceil((lodims+0.5)/2); + lostart = ctr-loctr+1; + loend = lostart+lodims-1; + + log_rad = log_rad(lostart(1):loend(1),lostart(2):loend(2)); + angle = angle(lostart(1):loend(1),lostart(2):loend(2)); + lodft = lodft(lostart(1):loend(1),lostart(2):loend(2)); + YIrcos = abs(sqrt(1.0 - Yrcos.^2)); + lomask = pointOp(log_rad, YIrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); + + lodft = lomask .* lodft; + + [npyr,nind] = buildSCFpyrLevs(lodft, log_rad, Xrcos, Yrcos, angle, ht-1, nbands); + + pyr = [bands(:); npyr]; + pind = [bind; nind]; + +end + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSFpyr.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSFpyr.m new file mode 100644 index 0000000..ae67206 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSFpyr.m @@ -0,0 +1,102 @@ +% [PYR, INDICES, STEERMTX, HARMONICS] = buildSFpyr(IM, HEIGHT, ORDER, TWIDTH) +% +% Construct a steerable pyramid on matrix IM, in the Fourier domain. +% This is similar to buildSpyr, except that: +% +% + Reconstruction is exact (within floating point errors) +% + It can produce any number of orientation bands. +% - Typically slower, especially for non-power-of-two sizes. +% - Boundary-handling is circular. +% +% HEIGHT (optional) specifies the number of pyramid levels to build. Default +% is maxPyrHt(size(IM),size(FILT)); +% +% The squared radial functions tile the Fourier plane, with a raised-cosine +% falloff. Angular functions are cos(theta-k\pi/(K+1))^K, where K is +% the ORDER (one less than the number of orientation bands, default= 3). +% +% TWIDTH is the width of the transition region of the radial lowpass +% function, in octaves (default = 1, which gives a raised cosine for +% the bandpass filters). +% +% PYR is a vector containing the N pyramid subbands, ordered from fine +% to coarse. INDICES is an Nx2 matrix containing the sizes of +% each subband. This is compatible with the MatLab Wavelet toolbox. +% See the function STEER for a description of STEERMTX and HARMONICS. + +% Eero Simoncelli, 5/97. +% See http://www.cns.nyu.edu/~eero/STEERPYR/ for more +% information about the Steerable Pyramid image decomposition. + +function [pyr,pind,steermtx,harmonics] = buildSFpyr(im, ht, order, twidth) + +%----------------------------------------------------------------- +%% DEFAULTS: + +max_ht = floor(log2(min(size(im)))) - 2; + +if (exist('ht') ~= 1) + ht = max_ht; +else + if (ht > max_ht) + error(sprintf('Cannot build pyramid higher than %d levels.',max_ht)); + end +end + +if (exist('order') ~= 1) + order = 3; +elseif ((order > 15) | (order < 0)) + fprintf(1,'Warning: ORDER must be an integer in the range [0,15]. Truncating.\n'); + order = min(max(order,0),15); +else + order = round(order); +end +nbands = order+1; + +if (exist('twidth') ~= 1) + twidth = 1; +elseif (twidth <= 0) + fprintf(1,'Warning: TWIDTH must be positive. Setting to 1.\n'); + twidth = 1; +end + +%----------------------------------------------------------------- +%% Steering stuff: + +if (mod((nbands),2) == 0) + harmonics = [0:(nbands/2)-1]'*2 + 1; +else + harmonics = [0:(nbands-1)/2]'*2; +end + +steermtx = steer2HarmMtx(harmonics, pi*[0:nbands-1]/nbands, 'even'); + +%----------------------------------------------------------------- + +dims = size(im); +ctr = ceil((dims+0.5)/2); + +[xramp,yramp] = meshgrid( ([1:dims(2)]-ctr(2))./(dims(2)/2), ... + ([1:dims(1)]-ctr(1))./(dims(1)/2) ); +angle = atan2(yramp,xramp); +log_rad = sqrt(xramp.^2 + yramp.^2); +log_rad(ctr(1),ctr(2)) = log_rad(ctr(1),ctr(2)-1); +log_rad = log2(log_rad); + +%% Radial transition function (a raised cosine in log-frequency): +[Xrcos,Yrcos] = rcosFn(twidth,(-twidth/2),[0 1]); +Yrcos = sqrt(Yrcos); + +YIrcos = sqrt(1.0 - Yrcos.^2); +lo0mask = pointOp(log_rad, YIrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); +imdft = fftshift(fft2(im)); +lo0dft = imdft .* lo0mask; + +[pyr,pind] = buildSFpyrLevs(lo0dft, log_rad, Xrcos, Yrcos, angle, ht, nbands); + +hi0mask = pointOp(log_rad, Yrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); +hi0dft = imdft .* hi0mask; +hi0 = ifft2(ifftshift(hi0dft)); + +pyr = [real(hi0(:)) ; pyr]; +pind = [size(hi0); pind]; diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSFpyrLevs.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSFpyrLevs.m new file mode 100644 index 0000000..472d861 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSFpyrLevs.m @@ -0,0 +1,63 @@ +% [PYR, INDICES] = buildSFpyrLevs(LODFT, LOGRAD, XRCOS, YRCOS, ANGLE, HEIGHT, NBANDS) +% +% Recursive function for constructing levels of a steerable pyramid. This +% is called by buildSFpyr, and is not usually called directly. + +% Eero Simoncelli, 5/97. + +function [pyr,pind] = buildSFpyrLevs(lodft,log_rad,Xrcos,Yrcos,angle,ht,nbands); + +if (ht <= 0) + + lo0 = ifft2(ifftshift(lodft)); + pyr = real(lo0(:)); + pind = size(lo0); + +else + + bands = zeros(prod(size(lodft)), nbands); + bind = zeros(nbands,2); + +% log_rad = log_rad + 1; + Xrcos = Xrcos - log2(2); % shift origin of lut by 1 octave. + + lutsize = 1024; + Xcosn = pi*[-(2*lutsize+1):(lutsize+1)]/lutsize; % [-2*pi:pi] + order = nbands-1; + %% divide by sqrt(sum_(n=0)^(N-1) cos(pi*n/N)^(2(N-1)) ) + %% Thanks to Patrick Teo for writing this out :) + const = (2^(2*order))*(factorial(order)^2)/(nbands*factorial(2*order)); + Ycosn = sqrt(const) * (cos(Xcosn)).^order; + himask = pointOp(log_rad, Yrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); + + for b = 1:nbands + anglemask = pointOp(angle, Ycosn, Xcosn(1)+pi*(b-1)/nbands, Xcosn(2)-Xcosn(1)); + banddft = ((-sqrt(-1))^(nbands-1)) .* lodft .* anglemask .* himask; + band = ifft2(ifftshift(banddft)); + + bands(:,b) = real(band(:)); + bind(b,:) = size(band); + end + + dims = size(lodft); + ctr = ceil((dims+0.5)/2); + lodims = ceil((dims-0.5)/2); + loctr = ceil((lodims+0.5)/2); + lostart = ctr-loctr+1; + loend = lostart+lodims-1; + + log_rad = log_rad(lostart(1):loend(1),lostart(2):loend(2)); + angle = angle(lostart(1):loend(1),lostart(2):loend(2)); + lodft = lodft(lostart(1):loend(1),lostart(2):loend(2)); + YIrcos = abs(sqrt(1.0 - Yrcos.^2)); + lomask = pointOp(log_rad, YIrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); + + lodft = lomask .* lodft; + + [npyr,nind] = buildSFpyrLevs(lodft, log_rad, Xrcos, Yrcos, angle, ht-1, nbands); + + pyr = [bands(:); npyr]; + pind = [bind; nind]; + +end + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSpyr.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSpyr.m new file mode 100644 index 0000000..b2bead6 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSpyr.m @@ -0,0 +1,61 @@ +% [PYR, INDICES, STEERMTX, HARMONICS] = buildSpyr(IM, HEIGHT, FILTFILE, EDGES) +% +% Construct a steerable pyramid on matrix IM. +% +% HEIGHT (optional) specifies the number of pyramid levels to build. Default +% is maxPyrHt(size(IM),size(FILT)). +% You can also specify 'auto' to use this value. +% +% FILTFILE (optional) should be a string referring to an m-file that +% returns the rfilters. (examples: 'sp0Filters', 'sp1Filters', +% 'sp3Filters','sp5Filters'. default = 'sp1Filters'). EDGES specifies +% edge-handling, and defaults to 'reflect1' (see corrDn). +% +% PYR is a vector containing the N pyramid subbands, ordered from fine +% to coarse. INDICES is an Nx2 matrix containing the sizes of +% each subband. This is compatible with the MatLab Wavelet toolbox. +% See the function STEER for a description of STEERMTX and HARMONICS. + +% Eero Simoncelli, 6/96. +% See http://www.cis.upenn.edu/~eero/steerpyr.html for more +% information about the Steerable Pyramid image decomposition. + +function [pyr,pind,steermtx,harmonics] = buildSpyr(im, ht, filtfile, edges) + +%----------------------------------------------------------------- +%% DEFAULTS: + +if (exist('filtfile') ~= 1) + filtfile = 'sp1Filters'; +end + +if (exist('edges') ~= 1) + edges= 'reflect1'; +end + +if (isstr(filtfile) & (exist(filtfile) == 2)) + [lo0filt,hi0filt,lofilt,bfilts,steermtx,harmonics] = eval(filtfile); +else + fprintf(1,'\nUse buildSFpyr for pyramids with arbitrary numbers of orientation bands.\n'); + error('FILTFILE argument must be the name of an M-file containing SPYR filters.'); +end + +max_ht = maxPyrHt(size(im), size(lofilt,1)); +if ( (exist('ht') ~= 1) | (ht == 'auto') ) + ht = max_ht; +else + if (ht > max_ht) + error(sprintf('Cannot build pyramid higher than %d levels.',max_ht)); + end +end + +%----------------------------------------------------------------- + +hi0 = corrDn(im, hi0filt, edges); +lo0 = corrDn(im, lo0filt, edges); + +[pyr,pind] = buildSpyrLevs(lo0, ht, lofilt, bfilts, edges); + +pyr = [hi0(:) ; pyr]; +pind = [size(hi0); pind]; + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSpyrLevs.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSpyrLevs.m new file mode 100644 index 0000000..4c00077 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildSpyrLevs.m @@ -0,0 +1,37 @@ +% [PYR, INDICES] = buildSpyrLevs(LOIM, HEIGHT, LOFILT, BFILTS, EDGES) +% +% Recursive function for constructing levels of a steerable pyramid. This +% is called by buildSpyr, and is not usually called directly. + +% Eero Simoncelli, 6/96. + +function [pyr,pind] = buildSpyrLevs(lo0,ht,lofilt,bfilts,edges); + +if (ht <= 0) + + pyr = lo0(:); + pind = size(lo0); + +else + + % Assume square filters: + bfiltsz = round(sqrt(size(bfilts,1))); + + bands = zeros(prod(size(lo0)),size(bfilts,2)); + bind = zeros(size(bfilts,2),2); + + for b = 1:size(bfilts,2) + filt = reshape(bfilts(:,b),bfiltsz,bfiltsz); + band = corrDn(lo0, filt, edges); + bands(:,b) = band(:); + bind(b,:) = size(band); + end + + lo = corrDn(lo0, lofilt, edges, [2 2], [1 1]); + + [npyr,nind] = buildSpyrLevs(lo, ht-1, lofilt, bfilts, edges); + + pyr = [bands(:); npyr]; + pind = [bind; nind]; + +end diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildWpyr.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildWpyr.m new file mode 100644 index 0000000..22ae32f --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/buildWpyr.m @@ -0,0 +1,100 @@ +% [PYR, INDICES] = buildWpyr(IM, HEIGHT, FILT, EDGES) +% +% Construct a separable orthonormal QMF/wavelet pyramid on matrix (or vector) IM. +% +% HEIGHT (optional) specifies the number of pyramid levels to build. Default +% is maxPyrHt(IM,FILT). You can also specify 'auto' to use this value. +% +% FILT (optional) can be a string naming a standard filter (see +% namedFilter), or a vector which will be used for (separable) +% convolution. Filter can be of even or odd length, but should be symmetric. +% Default = 'qmf9'. EDGES specifies edge-handling, and +% defaults to 'reflect1' (see corrDn). +% +% PYR is a vector containing the N pyramid subbands, ordered from fine +% to coarse. INDICES is an Nx2 matrix containing the sizes of +% each subband. This is compatible with the MatLab Wavelet toolbox. + +% Eero Simoncelli, 6/96. + +function [pyr,pind] = buildWpyr(im, ht, filt, edges) + +if (nargin < 1) + error('First argument (IM) is required'); +end + +%------------------------------------------------------------ +%% OPTIONAL ARGS: + +if (exist('filt') ~= 1) + filt = 'qmf9'; +end + +if (exist('edges') ~= 1) + edges= 'reflect1'; +end + +if isstr(filt) + filt = namedFilter(filt); +end + +if ( (size(filt,1) > 1) & (size(filt,2) > 1) ) + error('FILT should be a 1D filter (i.e., a vector)'); +else + filt = filt(:); +end + +hfilt = modulateFlip(filt); + +% Stagger sampling if filter is odd-length: +if (mod(size(filt,1),2) == 0) + stag = 2; +else + stag = 1; +end + +im_sz = size(im); + +max_ht = maxPyrHt(im_sz, size(filt,1)); +if ( (exist('ht') ~= 1) | (ht == 'auto') ) + ht = max_ht; +else + if (ht > max_ht) + error(sprintf('Cannot build pyramid higher than %d levels.',max_ht)); + end +end + +if (ht <= 0) + + pyr = im(:); + pind = im_sz; + +else + + if (im_sz(2) == 1) + lolo = corrDn(im, filt, edges, [2 1], [stag 1]); + hihi = corrDn(im, hfilt, edges, [2 1], [2 1]); + elseif (im_sz(1) == 1) + lolo = corrDn(im, filt', edges, [1 2], [1 stag]); + hihi = corrDn(im, hfilt', edges, [1 2], [1 2]); + else + lo = corrDn(im, filt, edges, [2 1], [stag 1]); + hi = corrDn(im, hfilt, edges, [2 1], [2 1]); + lolo = corrDn(lo, filt', edges, [1 2], [1 stag]); + lohi = corrDn(hi, filt', edges, [1 2], [1 stag]); % horizontal + hilo = corrDn(lo, hfilt', edges, [1 2], [1 2]); % vertical + hihi = corrDn(hi, hfilt', edges, [1 2], [1 2]); % diagonal + end + + [npyr,nind] = buildWpyr(lolo, ht-1, filt, edges); + + if ((im_sz(1) == 1) | (im_sz(2) == 1)) + pyr = [hihi(:); npyr]; + pind = [size(hihi); nind]; + else + pyr = [lohi(:); hilo(:); hihi(:); npyr]; + pind = [size(lohi); size(hilo); size(hihi); nind]; + end + +end + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/cconv2.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/cconv2.m new file mode 100644 index 0000000..efba438 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/cconv2.m @@ -0,0 +1,50 @@ +% RES = CCONV2(MTX1, MTX2, CTR) +% +% Circular convolution of two matrices. Result will be of size of +% LARGER vector. +% +% The origin of the smaller matrix is assumed to be its center. +% For even dimensions, the origin is determined by the CTR (optional) +% argument: +% CTR origin +% 0 DIM/2 (default) +% 1 (DIM/2)+1 + +% Eero Simoncelli, 6/96. Modified 2/97. + +function c = cconv2(a,b,ctr) + +if (exist('ctr') ~= 1) + ctr = 0; +end + +if (( size(a,1) >= size(b,1) ) & ( size(a,2) >= size(b,2) )) + large = a; small = b; +elseif (( size(a,1) <= size(b,1) ) & ( size(a,2) <= size(b,2) )) + large = b; small = a; +else + error('one arg must be larger than the other in both dimensions!'); +end + +ly = size(large,1); +lx = size(large,2); +sy = size(small,1); +sx = size(small,2); + +%% These values are the index of the small mtx that falls on the +%% border pixel of the large matrix when computing the first +%% convolution response sample: +sy2 = floor((sy+ctr+1)/2); +sx2 = floor((sx+ctr+1)/2); + +% pad: +clarge = [ ... + large(ly-sy+sy2+1:ly,lx-sx+sx2+1:lx), large(ly-sy+sy2+1:ly,:), ... + large(ly-sy+sy2+1:ly,1:sx2-1); ... + large(:,lx-sx+sx2+1:lx), large, large(:,1:sx2-1); ... + large(1:sy2-1,lx-sx+sx2+1:lx), ... + large(1:sy2-1,:), ... + large(1:sy2-1,1:sx2-1) ]; + +c = conv2(clarge,small,'valid'); + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/clip.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/clip.m new file mode 100644 index 0000000..28804f3 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/clip.m @@ -0,0 +1,32 @@ +% [RES] = clip(IM, MINVALorRANGE, MAXVAL) +% +% Clip values of matrix IM to lie between minVal and maxVal: +% RES = max(min(IM,MAXVAL),MINVAL) +% The first argument can also specify both min and max, as a 2-vector. +% If only one argument is passed, the range defaults to [0,1]. + +function res = clip(im, minValOrRange, maxVal) + +if (exist('minValOrRange') ~= 1) + minVal = 0; + maxVal = 1; +elseif (length(minValOrRange) == 2) + minVal = minValOrRange(1); + maxVal = minValOrRange(2); +elseif (length(minValOrRange) == 1) + minVal = minValOrRange; + if (exist('maxVal') ~= 1) + maxVal=minVal+1; + end +else + error('MINVAL must be a scalar or a 2-vector'); +end + +if ( maxVal < minVal ) + error('MAXVAL should be less than MINVAL'); +end + +res = im; +res(find(im < minVal)) = minVal; +res(find(im > maxVal)) = maxVal; + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/corrDn.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/corrDn.m new file mode 100644 index 0000000..ff1ab9c --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/corrDn.m @@ -0,0 +1,67 @@ +% RES = corrDn(IM, FILT, EDGES, STEP, START, STOP) +% +% Compute correlation of matrices IM with FILT, followed by +% downsampling. These arguments should be 1D or 2D matrices, and IM +% must be larger (in both dimensions) than FILT. The origin of filt +% is assumed to be floor(size(filt)/2)+1. +% +% EDGES is a string determining boundary handling: +% 'circular' - Circular convolution +% 'reflect1' - Reflect about the edge pixels +% 'reflect2' - Reflect, doubling the edge pixels +% 'repeat' - Repeat the edge pixels +% 'zero' - Assume values of zero outside image boundary +% 'extend' - Reflect and invert +% 'dont-compute' - Zero output when filter overhangs input boundaries +% +% Downsampling factors are determined by STEP (optional, default=[1 1]), +% which should be a 2-vector [y,x]. +% +% The window over which the convolution occurs is specfied by START +% (optional, default=[1,1], and STOP (optional, default=size(IM)). +% +% NOTE: this operation corresponds to multiplication of a signal +% vector by a matrix whose rows contain copies of the FILT shifted by +% multiples of STEP. See upConv.m for the operation corresponding to +% the transpose of this matrix. + +% Eero Simoncelli, 6/96, revised 2/97. + +function res = corrDn(im, filt, edges, step, start, stop) + +%% NOTE: THIS CODE IS NOT ACTUALLY USED! (MEX FILE IS CALLED INSTEAD) + +%%%MM%%% +%%%MM%%% comment out the warning +%%%MM%%% + +%%%MM%%% %fprintf(1,'WARNING: You should compile the MEX version of "corrDn.c",\n found in the MEX subdirectory of matlabPyrTools, and put it in your matlab path. It is MUCH faster, and provides more boundary-handling options.\n'); + +%------------------------------------------------------------ +%% OPTIONAL ARGS: + +if (exist('edges') == 1) + if (strcmp(edges,'reflect1') ~= 1) + warning('Using REFLECT1 edge-handling (use MEX code for other options).'); + end +end + +if (exist('step') ~= 1) + step = [1,1]; +end + +if (exist('start') ~= 1) + start = [1,1]; +end + +if (exist('stop') ~= 1) + stop = size(im); +end + +%------------------------------------------------------------ + +% Reverse order of taps in filt, to do correlation instead of convolution +filt = filt(size(filt,1):-1:1,size(filt,2):-1:1); + +tmp = rconv2(im,filt); +res = tmp(start(1):step(1):stop(1),start(2):step(2):stop(2)); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/einstein.pgm b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/einstein.pgm new file mode 100644 index 0000000000000000000000000000000000000000..99b974c468ae20ffabb8ac163820e56b94c959fe GIT binary patch literal 65596 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 AO#lD@ literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/entropy2.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/entropy2.m new file mode 100644 index 0000000..68a2a9f --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/entropy2.m @@ -0,0 +1,31 @@ +% E = ENTROPY2(MTX,BINSIZE) +% +% Compute the first-order sample entropy of MTX. Samples of VEC are +% first discretized. Optional argument BINSIZE controls the +% discretization, and defaults to 256/(max(VEC)-min(VEC)). +% +% NOTE: This is a heavily biased estimate of entropy when you +% don't have much data. + +% Eero Simoncelli, 6/96. + +function res = entropy2(mtx,binsize) + +%% Ensure it's a vector, not a matrix. +vec = mtx(:); +[mn,mx] = range2(vec); + +if (exist('binsize') == 1) + nbins = max((mx-mn)/binsize, 1); +else + nbins = 256; +end + +[bincount,bins] = histo(vec,nbins); + +%% Collect non-zero bins: +H = bincount(find(bincount)); +H = H/sum(H); + +res = -sum(H .* log2(H)); + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/factorial.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/factorial.m new file mode 100644 index 0000000..9255f43 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/factorial.m @@ -0,0 +1,16 @@ +%% RES = factorial(NUM) +% +% Factorial function that works on matrices (matlab's does not). + +% EPS, 11/02 + +function res = factorial(num) + +res = ones(size(num)); + +ind = find(num > 0); +if ( ~isempty(ind) ) + subNum = num(ind); + res(ind) = subNum .* factorial(subNum-1); +end + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/feynman.pgm b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/feynman.pgm new file mode 100644 index 0000000000000000000000000000000000000000..7d14101bfc44ac4c134b1c8af9b3d6c36e1f0b1c GIT binary patch literal 65593 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%0APbh$2QHESQ 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 literal 0 HcmV?d00001 diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/histo.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/histo.m new file mode 100644 index 0000000..3366301 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/histo.m @@ -0,0 +1,58 @@ +% [N,X] = histo(MTX, nbinsOrBinsize, binCenter); +% +% Compute a histogram of (all) elements of MTX. N contains the histogram +% counts, X is a vector containg the centers of the histogram bins. +% +% nbinsOrBinsize (optional, default = 101) specifies either +% the number of histogram bins, or the negative of the binsize. +% +% binCenter (optional, default = mean2(MTX)) specifies a center position +% for (any one of) the histogram bins. +% +% How does this differ from MatLab's HIST function? This function: +% - allows uniformly spaced bins only. +% +/- operates on all elements of MTX, instead of columnwise. +% + is much faster (approximately a factor of 80 on my machine). +% + allows specification of number of bins OR binsize. Default=101 bins. +% + allows (optional) specification of binCenter. + +% Eero Simoncelli, 3/97. + +function [N, X] = histo(mtx, nbins, binCtr) + +%% NOTE: THIS CODE IS NOT ACTUALLY USED! (MEX FILE IS CALLED INSTEAD) + +fprintf(1,'WARNING: You should compile the MEX version of "histo.c",\n found in the MEX subdirectory of matlabPyrTools, and put it in your matlab path. It is MUCH faster.\n'); + +mtx = mtx(:); + +%------------------------------------------------------------ +%% OPTIONAL ARGS: + +[mn,mx] = range2(mtx); + +if (exist('binCtr') ~= 1) + binCtr = mean(mtx); +end + +if (exist('nbins') == 1) + if (nbins < 0) + binSize = -nbins; + else + binSize = ((mx-mn)/nbins); + tmpNbins = round((mx-binCtr)/binSize) - round((mn-binCtr)/binSize); + if (tmpNbins ~= nbins) + warning('Using %d bins instead of requested number (%d)',tmpNbins,nbins); + end + end +else + binSize = ((mx-mn)/101); +end + +firstBin = binCtr + binSize*round( (mn-binCtr)/binSize ); + +tmpNbins = round((mx-binCtr)/binSize) - round((mn-binCtr)/binSize); + +bins = firstBin + binSize*[0:tmpNbins]; + +[N, X] = hist(mtx, bins); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/histoMatch.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/histoMatch.m new file mode 100644 index 0000000..ab82782 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/histoMatch.m @@ -0,0 +1,35 @@ +% RES = histoMatch(MTX, N, X) +% +% Modify elements of MTX so that normalized histogram matches that +% specified by vectors X and N, where N contains the histogram counts +% and X the histogram bin positions (see histo). + +% Eero Simoncelli, 7/96. + +function res = histoMatch(mtx, N, X) + +if ( exist('histo') == 3 ) + [oN, oX] = histo(mtx(:), size(X(:),1)); +else + [oN, oX] = hist(mtx(:), size(X(:),1)); +end + +oStep = oX(2) - oX(1); +oC = [0, cumsum(oN)]/sum(oN); +oX = [oX(1)-oStep/2, oX+oStep/2]; + +N = N(:)'; +X = X(:)'; +N = N + mean(N)/(1e8); %% HACK: no empty bins ensures nC strictly monotonic + +nStep = X(2) - X(1); +nC = [0, cumsum(N)]/sum(N); +nX = [X(1)-nStep/2, X+nStep/2]; + +nnX = interp1(nC, nX, oC, 'linear'); + +if ( exist('pointOp') == 3 ) + res = pointOp(mtx, nnX, oX(1), oStep); +else + res = reshape(interp1(oX, nnX, mtx(:)),size(mtx,1),size(mtx,2)); +end diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/ifftshift.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/ifftshift.m new file mode 100644 index 0000000..2ade297 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/ifftshift.m @@ -0,0 +1,15 @@ +% [RES] = ifftshift (MTX) +% +% Inverse of MatLab's FFTSHIFT. That is, +% ifftshift(fftshift(MTX)) = MTX +% for any size MTX. + +% Eero Simoncelli, 2/97. + +function [res] = ifftshift(mtx) + +sz = size(mtx); +DC = ceil((sz+1)./2); % location of DC term in a matlab fft. + +res = [mtx(DC(1):sz(1), DC(2):sz(2)) , mtx(DC(1):sz(1), 1:DC(2)-1); ... + mtx(1:DC(1)-1, DC(2):sz(2)) , mtx(1:DC(1)-1, 1:DC(2)-1)]; diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/imGradient.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/imGradient.m new file mode 100644 index 0000000..23187e3 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/imGradient.m @@ -0,0 +1,48 @@ +% [dx, dy] = imGradient(im, edges) +% +% Compute the gradient of the image using smooth derivative filters +% optimized for accurate direction estimation. Coordinate system +% corresponds to standard pixel indexing: X axis points rightward. Y +% axis points downward. EDGES specify boundary handling (see corrDn +% for options). + +% EPS, 1997. +% original filters from Int'l Conf Image Processing, 1994. +% updated filters 10/2003. +% Added to matlabPyrTools 10/2004. + +function [dx, dy] = imGradient(im, edges) + +%% 1D smoothing and differentiation kernels. +%% See Farid & Simoncelli, IEEE Trans Image Processing, 13(4):496-508, April 2004. + +if (exist('edges') ~= 1) + edges = 'dont-compute'; +end + +gp = [0.037659 0.249153 0.426375 0.249153 0.037659]'; +gd = [-0.109604 -0.276691 0.000000 0.276691 0.109604]'; + +dx = corrDn(corrDn(im, gp, edges), gd', edges); +dy = corrDn(corrDn(im, gd, edges), gp', edges); + +return + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% TEST: + +%%Make a ramp with random slope and direction +dir = 2*pi*rand - pi; +slope = 10*rand; + +sz = 32 +im = mkRamp(sz, dir, slope); +[dx,dy] = imGradient(im); +showIm(dx + sqrt(-1)*dy); + +ctr = (sz*sz/2)+sz/2; +slopeEst = sqrt(dx(ctr).^2 + dy(ctr).^2); +dirEst = atan2(dy(ctr), dx(ctr)); + +[slope, slopeEst] +[dir, dirEst] diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/imStats.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/imStats.m new file mode 100644 index 0000000..3d79b4c --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/imStats.m @@ -0,0 +1,41 @@ +% imStats(IM1,IM2) +% +% Report image (matrix) statistics. +% When called on a single image IM1, report min, max, mean, stdev, +% and kurtosis. +% When called on two images (IM1 and IM2), report min, max, mean, +% stdev of the difference, and also SNR (relative to IM1). + +% Eero Simoncelli, 6/96. + +function [] = imStats(im1,im2) + +if (~isreal(im1)) + error('Args must be real-valued matrices'); +end + +if (exist('im2') == 1) + difference = im1 - im2; + [mn,mx] = range2(difference); + mean = mean2(difference); + v = var2(difference,mean); + if (v < realmin) + snr = Inf; + else + snr = 10 * log10(var2(im1)/v); + end + fprintf(1, 'Difference statistics:\n'); + fprintf(1, ' Range: [%c, %c]\n',mn,mx); + fprintf(1, ' Mean: %f, Stdev (rmse): %f, SNR (dB): %f\n',... + mean,sqrt(v),snr); +else + [mn,mx] = range2(im1); + mean = mean2(im1); + var = var2(im1); + stdev = sqrt(real(var))+sqrt(imag(var)); + kurt = kurt2(im1, mean, stdev^2); + fprintf(1, 'Image statistics:\n'); + fprintf(1, ' Range: [%f, %f]\n',mn,mx); + fprintf(1, ' Mean: %f, Stdev: %f, Kurtosis: %f\n',mean,stdev,kurt); +end + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/innerProd.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/innerProd.m new file mode 100644 index 0000000..da82321 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/innerProd.m @@ -0,0 +1,12 @@ +% RES = innerProd(MTX) +% +% Compute (MTX' * MTX) efficiently (i.e., without copying the matrix) + +function res = innerProd(mtx) + +fprintf(1,['WARNING: You should compile the MEX version of' ... + ' "innerProd.c",\n found in the MEX subdirectory' ... + ' of matlabPyrTools, and put it in your matlab path.' ... + ' It is MUCH faster and requires less memory.\n']); + +res = mtx' * mtx; diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/kurt2.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/kurt2.m new file mode 100644 index 0000000..8351eb4 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/kurt2.m @@ -0,0 +1,24 @@ +% K = KURT2(MTX,MEAN,VAR) +% +% Sample kurtosis (fourth moment divided by squared variance) +% of a matrix. Kurtosis of a Gaussian distribution is 3. +% MEAN (optional) and VAR (optional) make the computation faster. + +% Eero Simoncelli, 6/96. + +function res = kurt2(mtx, mn, v) + +if (exist('mn') ~= 1) + mn = mean(mean(mtx)); +end + +if (exist('v') ~= 1) + v = var2(mtx,mn); +end + +if (isreal(mtx)) + res = mean(mean(abs(mtx-mn).^4)) / (v^2); +else + res = mean(mean(real(mtx-mn).^4)) / (real(v)^2) + ... + i*mean(mean(imag(mtx-mn).^4)) / (imag(v)^2); +end diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/lplot.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/lplot.m new file mode 100644 index 0000000..3c67d8b --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/lplot.m @@ -0,0 +1,43 @@ +% lplot(VEC, XRANGE) +% +% Plot VEC, a vector, in "lollipop" format. +% XRANGE (optional, default = [1,length(VEC)]), should be a 2-vector +% specifying the X positions (for labeling purposes) of the first and +% last sample of VEC. + +% Mark Liberman, Linguistics Dept, UPenn, 1994. + +function lplot(x,xrange) + +if (exist('xrange') ~= 1) + xrange = [1,length(x)]; +end + +msize = size(x); +if ( msize(2) == 1) + x = x'; +elseif (msize(1) ~= 1) + error('First arg must be a vector'); +end + +if (~isreal(x)) + fprintf(1,'Warning: Imaginary part of signal ignored\n'); + x = abs(x); +end + +N = length(x); +index = xrange(1) + (xrange(2)-xrange(1))*[0:(N-1)]/(N-1) +xinc = index(2)-index(1); + +xx = [zeros(1,N);x;zeros(1,N)]; +indexis = [index;index;index]; +xdiscrete = [0 xx(:)' 0]; +idiscrete = [index(1)-xinc indexis(:)' index(N)+xinc]; + +[mn,mx] = range2(xdiscrete); +ypad = (mx-mn)/12; % MAGIC NUMBER: graph padding + +plot(idiscrete, xdiscrete, index, x, 'o'); +axis([index(1)-xinc, index(N)+xinc, mn-ypad, mx+ypad]); + +return diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/lpyrHt.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/lpyrHt.m new file mode 100644 index 0000000..d6834d7 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/lpyrHt.m @@ -0,0 +1,11 @@ +% [HEIGHT] = lpyrHt(INDICES) +% +% Compute height of Laplacian pyramid with given its INDICES matrix. +% See buildLpyr.m + +% Eero Simoncelli, 6/96. + +function [ht] = lpyrHt(pind) + +% Don't count lowpass residual band +ht = size(pind,1)-1; diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/maxPyrHt.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/maxPyrHt.m new file mode 100644 index 0000000..84bcf29 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/maxPyrHt.m @@ -0,0 +1,25 @@ +% HEIGHT = maxPyrHt(IMSIZE, FILTSIZE) +% +% Compute maximum pyramid height for given image and filter sizes. +% Specifically: the number of corrDn operations that can be sequentially +% performed when subsampling by a factor of 2. + +% Eero Simoncelli, 6/96. + +function height = maxPyrHt(imsz, filtsz) + +imsz = imsz(:); +filtsz = filtsz(:); + +if any(imsz == 1) % 1D image + imsz = prod(imsz); + filtsz = prod(filtsz); +elseif any(filtsz == 1) % 2D image, 1D filter + filtsz = [filtsz(1); filtsz(1)]; +end + +if any(imsz < filtsz) + height = 0; +else + height = 1 + maxPyrHt( floor(imsz/2), filtsz ); +end diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mean2.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mean2.m new file mode 100644 index 0000000..177f7ac --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mean2.m @@ -0,0 +1,7 @@ +% M = MEAN2(MTX) +% +% Sample mean of a matrix. + +function res = mean2(mtx) + +res = mean(mean(mtx)); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkAngle.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkAngle.m new file mode 100644 index 0000000..bd54f8d --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkAngle.m @@ -0,0 +1,32 @@ +% IM = mkAngle(SIZE, PHASE, ORIGIN) +% +% Compute a matrix of dimension SIZE (a [Y X] 2-vector, or a scalar) +% containing samples of the polar angle (in radians, CW from the +% X-axis, ranging from -pi to pi), relative to angle PHASE (default = +% 0), about ORIGIN pixel (default = (size+1)/2). + +% Eero Simoncelli, 6/96. + +function [res] = mkAngle(sz, phase, origin) + +sz = sz(:); +if (size(sz,1) == 1) + sz = [sz,sz]; +end + +% ----------------------------------------------------------------- +% OPTIONAL args: + +if (exist('origin') ~= 1) + origin = (sz+1)/2; +end + +% ----------------------------------------------------------------- + +[xramp,yramp] = meshgrid( [1:sz(2)]-origin(2), [1:sz(1)]-origin(1) ); + +res = atan2(yramp,xramp); + +if (exist('phase') == 1) + res = mod(res+(pi-phase),2*pi)-pi; +end diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkAngularSine.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkAngularSine.m new file mode 100644 index 0000000..f5238cc --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkAngularSine.m @@ -0,0 +1,42 @@ +% IM = mkAngularSine(SIZE, HARMONIC, AMPL, PHASE, ORIGIN) +% +% Make an angular sinusoidal image: +% AMPL * sin( HARMONIC*theta + PHASE), +% where theta is the angle about the origin. +% SIZE specifies the matrix size, as for zeros(). +% AMPL (default = 1) and PHASE (default = 0) are optional. + +% Eero Simoncelli, 2/97. + +function [res] = mkAngularSine(sz, harmonic, ampl, ph, origin) + +sz = sz(:); +if (size(sz,1) == 1) + sz = [sz,sz]; +end + +mxsz = max(sz(1),sz(2)); + +%------------------------------------------------------------ +%% OPTIONAL ARGS: + +if (exist('harmonic') ~= 1) + harmonic = 1; +end + +if (exist('ampl') ~= 1) + ampl = 1; +end + +if (exist('ph') ~= 1) + ph = 0; +end + +if (exist('origin') ~= 1) + origin = (sz+1)/2; +end + +%------------------------------------------------------------ + +res = ampl * sin(harmonic*mkAngle(sz,ph,origin) + ph); + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkDisc.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkDisc.m new file mode 100644 index 0000000..33e7d6d --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkDisc.m @@ -0,0 +1,61 @@ +% IM = mkDisc(SIZE, RADIUS, ORIGIN, TWIDTH, VALS) +% +% Make a "disk" image. SIZE specifies the matrix size, as for +% zeros(). RADIUS (default = min(size)/4) specifies the radius of +% the disk. ORIGIN (default = (size+1)/2) specifies the +% location of the disk center. TWIDTH (in pixels, default = 2) +% specifies the width over which a soft threshold transition is made. +% VALS (default = [0,1]) should be a 2-vector containing the +% intensity value inside and outside the disk. + +% Eero Simoncelli, 6/96. + +function [res] = mkDisc(sz, rad, origin, twidth, vals) + +if (nargin < 1) + error('Must pass at least a size argument'); +end + +sz = sz(:); +if (size(sz,1) == 1) + sz = [sz sz]; +end + +%------------------------------------------------------------ +% OPTIONAL ARGS: + +if (exist('rad') ~= 1) + rad = min(sz(1),sz(2))/4; +end + +if (exist('origin') ~= 1) + origin = (sz+1)./2; +end + +if (exist('twidth') ~= 1) + twidth = 2; +end + +if (exist('vals') ~= 1) + vals = [1,0]; +end + +%------------------------------------------------------------ + +res = mkR(sz,1,origin); + +if (abs(twidth) < realmin) + res = vals(2) + (vals(1) - vals(2)) * (res <= rad); +else + [Xtbl,Ytbl] = rcosFn(twidth, rad, [vals(1), vals(2)]); + res = pointOp(res, Ytbl, Xtbl(1), Xtbl(2)-Xtbl(1), 0); +% +% OLD interp1 VERSION: +% res = res(:); +% Xtbl(1) = min(res); +% Xtbl(size(Xtbl,2)) = max(res); +% res = reshape(interp1(Xtbl,Ytbl,res), sz(1), sz(2)); +% +end + + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkFract.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkFract.m new file mode 100644 index 0000000..af95cd5 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkFract.m @@ -0,0 +1,36 @@ +% IM = mkFract(SIZE, FRACT_DIM) +% +% Make a matrix of dimensions SIZE (a [Y X] 2-vector, or a scalar) +% containing fractal (pink) noise with power spectral density of the +% form: 1/f^(5-2*FRACT_DIM). Image variance is normalized to 1.0. +% FRACT_DIM defaults to 1.0 + +% Eero Simoncelli, 6/96. + +%% TODO: Verify that this matches Mandelbrot defn of fractal dimension. +%% Make this more efficient! + +function res = mkFract(dims, fract_dim) + +if (exist('fract_dim') ~= 1) + fract_dim = 1.0; +end + +res = randn(dims); +fres = fft2(res); + +sz = size(res); +ctr = ceil((sz+1)./2); + +shape = ifftshift(mkR(sz, -(2.5-fract_dim), ctr)); +shape(1,1) = 1; %%DC term + +fres = shape .* fres; +fres = ifft2(fres); + +if (max(max(abs(imag(fres)))) > 1e-10) + error('Symmetry error in creating fractal'); +else + res = real(fres); + res = res / sqrt(var2(res)); +end diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkGaussian.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkGaussian.m new file mode 100644 index 0000000..fa8a554 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkGaussian.m @@ -0,0 +1,58 @@ +% IM = mkGaussian(SIZE, COVARIANCE, MEAN, AMPLITUDE) +% +% Compute a matrix with dimensions SIZE (a [Y X] 2-vector, or a +% scalar) containing a Gaussian function, centered at pixel position +% specified by MEAN (default = (size+1)/2), with given COVARIANCE (can +% be a scalar, 2-vector, or 2x2 matrix. Default = (min(size)/6)^2), +% and AMPLITUDE. AMPLITUDE='norm' (default) will produce a +% probability-normalized function. All but the first argument are +% optional. + +% Eero Simoncelli, 6/96. + +function [res] = mkGaussian(sz, cov, mn, ampl) + +sz = sz(:); +if (size(sz,1) == 1) + sz = [sz,sz]; +end + +%------------------------------------------------------------ +%% OPTIONAL ARGS: + +if (exist('cov') ~= 1) + cov = (min(sz(1),sz(2))/6)^2; +end + +if (exist('mn') ~= 1) + mn = (sz+1)/2; +end + +if (exist('ampl') ~= 1) + ampl = 'norm'; +end + +%------------------------------------------------------------ + +[xramp,yramp] = meshgrid([1:sz(2)]-mn(2),[1:sz(1)]-mn(1)); + +if (sum(size(cov)) == 2) % scalar + if (strcmp(ampl,'norm')) + ampl = 1/(2*pi*cov(1)); + end + e = (xramp.^2 + yramp.^2)/(-2 * cov); +elseif (sum(size(cov)) == 3) % a 2-vector + if (strcmp(ampl,'norm')) + ampl = 1/(2*pi*sqrt(cov(1)*cov(2))); + end + e = xramp.^2/(-2 * cov(2)) + yramp.^2/(-2 * cov(1)); +else + if (strcmp(ampl,'norm')) + ampl = 1/(2*pi*sqrt(det(cov))); + end + cov = -inv(cov)/2; + e = cov(2,2)*xramp.^2 + (cov(1,2)+cov(2,1))*(xramp.*yramp) ... + + cov(1,1)*yramp.^2; +end + +res = ampl .* exp(e); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkImpulse.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkImpulse.m new file mode 100644 index 0000000..9844ee8 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkImpulse.m @@ -0,0 +1,25 @@ +% IM = mkImpulse(SIZE, ORIGIN, AMPLITUDE) +% +% Compute a matrix of dimension SIZE (a [Y X] 2-vector, or a scalar) +% containing a single non-zero entry, at position ORIGIN (defaults to +% ceil(size/2)), of value AMPLITUDE (defaults to 1). + +% Eero Simoncelli, 6/96. + +function [res] = mkImpulse(sz, origin, amplitude) + +sz = sz(:)'; +if (size(sz,2) == 1) + sz = [sz sz]; +end + +if (exist('origin') ~= 1) + origin = ceil(sz/2); +end + +if (exist('amplitude') ~= 1) + amplitude = 1; +end + +res = zeros(sz); +res(origin(1),origin(2)) = amplitude; diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkR.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkR.m new file mode 100644 index 0000000..a1e8448 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkR.m @@ -0,0 +1,32 @@ +% IM = mkR(SIZE, EXPT, ORIGIN) +% +% Compute a matrix of dimension SIZE (a [Y X] 2-vector, or a scalar) +% containing samples of a radial ramp function, raised to power EXPT +% (default = 1), with given ORIGIN (default = (size+1)/2, [1 1] = +% upper left). All but the first argument are optional. + +% Eero Simoncelli, 6/96. + +function [res] = mkR(sz, expt, origin) + +sz = sz(:); +if (size(sz,1) == 1) + sz = [sz,sz]; +end + +% ----------------------------------------------------------------- +% OPTIONAL args: + +if (exist('expt') ~= 1) + expt = 1; +end + +if (exist('origin') ~= 1) + origin = (sz+1)/2; +end + +% ----------------------------------------------------------------- + +[xramp,yramp] = meshgrid( [1:sz(2)]-origin(2), [1:sz(1)]-origin(1) ); + +res = (xramp.^2 + yramp.^2).^(expt/2); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkRamp.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkRamp.m new file mode 100644 index 0000000..dd37164 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkRamp.m @@ -0,0 +1,47 @@ +% IM = mkRamp(SIZE, DIRECTION, SLOPE, INTERCEPT, ORIGIN) +% +% Compute a matrix of dimension SIZE (a [Y X] 2-vector, or a scalar) +% containing samples of a ramp function, with given gradient DIRECTION +% (radians, CW from X-axis, default = 0), SLOPE (per pixel, default = +% 1), and a value of INTERCEPT (default = 0) at the ORIGIN (default = +% (size+1)/2, [1 1] = upper left). All but the first argument are +% optional. + +% Eero Simoncelli, 6/96. 2/97: adjusted coordinate system. + +function [res] = mkRamp(sz, dir, slope, intercept, origin) + +sz = sz(:); +if (size(sz,1) == 1) + sz = [sz,sz]; +end + +% ----------------------------------------------------------------- +% OPTIONAL args: + +if (exist('dir') ~= 1) + dir = 0; +end + +if (exist('slope') ~= 1) + slope = 1; +end + +if (exist('intercept') ~= 1) + intercept = 0; +end + +if (exist('origin') ~= 1) + origin = (sz+1)/2; +end + +% ----------------------------------------------------------------- + +xinc = slope*cos(dir); +yinc = slope*sin(dir); + +[xramp,yramp] = meshgrid( xinc*([1:sz(2)]-origin(2)), ... + yinc*([1:sz(1)]-origin(1)) ); + +res = intercept + xramp + yramp; + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkSine.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkSine.m new file mode 100644 index 0000000..147eb01 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkSine.m @@ -0,0 +1,67 @@ +% IM = mkSine(SIZE, PERIOD, DIRECTION, AMPLITUDE, PHASE, ORIGIN) +% or +% IM = mkSine(SIZE, FREQ, AMPLITUDE, PHASE, ORIGIN) +% +% Compute a matrix of dimension SIZE (a [Y X] 2-vector, or a scalar) +% containing samples of a 2D sinusoid, with given PERIOD (in pixels), +% DIRECTION (radians, CW from X-axis, default = 0), AMPLITUDE (default +% = 1), and PHASE (radians, relative to ORIGIN, default = 0). ORIGIN +% defaults to the center of the image. +% +% In the second form, FREQ is a 2-vector of frequencies (radians/pixel). + +% Eero Simoncelli, 6/96. + +function [res] = mkSine(sz, per_freq, dir_amp, amp_phase, phase_orig, orig) + +%------------------------------------------------------------ +%% OPTIONAL ARGS: + +if (prod(size(per_freq)) == 2) + frequency = norm(per_freq); + direction = atan2(per_freq(1),per_freq(2)); + if (exist('dir_amp') == 1) + amplitude = dir_amp; + else + amplitude = 1; + end + if (exist('amp_phase') == 1) + phase = amp_phase; + else + phase = 0; + end + if (exist('phase_orig') == 1) + origin = phase_orig; + end + if (exist('orig') == 1) + error('Too many arguments for (second form) of mkSine'); + end +else + frequency = 2*pi/per_freq; + if (exist('dir_amp') == 1) + direction = dir_amp; + else + direction = 0; + end + if (exist('amp_phase') == 1) + amplitude = amp_phase; + else + amplitude = 1; + end + if (exist('phase_orig') == 1) + phase = phase_orig; + else + phase = 0; + end + if (exist('orig') == 1) + origin = orig; + end +end + +%------------------------------------------------------------ + +if (exist('origin') == 1) + res = amplitude*sin(mkRamp(sz, direction, frequency, phase, origin)); +else + res = amplitude*sin(mkRamp(sz, direction, frequency, phase)); +end diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkSquare.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkSquare.m new file mode 100644 index 0000000..84ef466 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkSquare.m @@ -0,0 +1,89 @@ +% IM = mkSquare(SIZE, PERIOD, DIRECTION, AMPLITUDE, PHASE, ORIGIN, TWIDTH) +% or +% IM = mkSine(SIZE, FREQ, AMPLITUDE, PHASE, ORIGIN, TWIDTH) +% +% Compute a matrix of dimension SIZE (a [Y X] 2-vector, or a scalar) +% containing samples of a 2D square wave, with given PERIOD (in +% pixels), DIRECTION (radians, CW from X-axis, default = 0), AMPLITUDE +% (default = 1), and PHASE (radians, relative to ORIGIN, default = 0). +% ORIGIN defaults to the center of the image. TWIDTH specifies width +% of raised-cosine edges on the bars of the grating (default = +% min(2,period/3)). +% +% In the second form, FREQ is a 2-vector of frequencies (radians/pixel). + +% Eero Simoncelli, 6/96. + +% TODO: Add duty cycle. + +function [res] = mkSquare(sz, per_freq, dir_amp, amp_phase, phase_orig, orig_twidth, twidth) + +%------------------------------------------------------------ +%% OPTIONAL ARGS: + +if (prod(size(per_freq)) == 2) + frequency = norm(per_freq); + direction = atan2(per_freq(1),per_freq(2)); + if (exist('dir_amp') == 1) + amplitude = dir_amp; + else + amplitude = 1; + end + if (exist('amp_phase') == 1) + phase = amp_phase; + else + phase = 0; + end + if (exist('phase_orig') == 1) + origin = phase_orig; + end + if (exist('orig_twidth') == 1) + transition = orig_twidth; + else + transition = min(2,2*pi/(3*frequency)); + end + if (exist('twidth') == 1) + error('Too many arguments for (second form) of mkSine'); + end +else + frequency = 2*pi/per_freq; + if (exist('dir_amp') == 1) + direction = dir_amp; + else + direction = 0; + end + if (exist('amp_phase') == 1) + amplitude = amp_phase; + else + amplitude = 1; + end + if (exist('phase_orig') == 1) + phase = phase_orig; + else + phase = 0; + end + if (exist('orig_twidth') == 1) + origin = orig_twidth; + end + if (exist('twidth') == 1) + transition = twidth; + else + transition = min(2,2*pi/(3*frequency)); + end + +end + +%------------------------------------------------------------ + +if (exist('origin') == 1) + res = mkRamp(sz, direction, frequency, phase, origin) - pi/2; +else + res = mkRamp(sz, direction, frequency, phase) - pi/2; +end + +[Xtbl,Ytbl] = rcosFn(transition*frequency,pi/2,[-amplitude amplitude]); + +res = pointOp(abs(mod(res+pi, 2*pi)-pi),Ytbl,Xtbl(1),Xtbl(2)-Xtbl(1),0); + +% OLD threshold version: +%res = amplitude * (mod(res,2*pi) < pi); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkZonePlate.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkZonePlate.m new file mode 100644 index 0000000..2b6a4a5 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mkZonePlate.m @@ -0,0 +1,33 @@ +% IM = mkZonePlate(SIZE, AMPL, PHASE) +% +% Make a "zone plate" image: +% AMPL * cos( r^2 + PHASE) +% SIZE specifies the matrix size, as for zeros(). +% AMPL (default = 1) and PHASE (default = 0) are optional. + +% Eero Simoncelli, 6/96. + +function [res] = mkZonePlate(sz, ampl, ph) + +sz = sz(:); +if (size(sz,1) == 1) + sz = [sz,sz]; +end + +mxsz = max(sz(1),sz(2)); + +%------------------------------------------------------------ +%% OPTIONAL ARGS: + +if (exist('ampl') ~= 1) + ampl = 1; +end + +if (exist('ph') ~= 1) + ph = 0; +end + +%------------------------------------------------------------ + +res = ampl * cos( (pi/mxsz) * mkR(sz,2) + ph ); + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mod_modified.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mod_modified.m new file mode 100644 index 0000000..3b83016 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/mod_modified.m @@ -0,0 +1,19 @@ +%%%MM%%% +%%%MM%%% This file ('mod.m') has been renamed to 'mod_modified.m' to prevent +%%%MM%%% complaints from newer versions of Matlab. +%%%MM%%% + +% M = mod(A,B) +% +% Modulus operator: returns A mod B. +% Works on matrics, vectors or scalars. +% +% NOTE: This function is a Matlab-5 builtin, but was missing from Matlab-4. + +% Eero Simoncelli, 7/96. + +function m = mod(a,n) + +m = a - n .* floor(a./n); +return; + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/modulateFlip.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/modulateFlip.m new file mode 100644 index 0000000..eb27303 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/modulateFlip.m @@ -0,0 +1,19 @@ +% [HFILT] = modulateFlipShift(LFILT) +% +% QMF/Wavelet highpass filter construction: modulate by (-1)^n, +% reverse order (and shift by one, which is handled by the convolution +% routines). This is an extension of the original definition of QMF's +% (e.g., see Simoncelli90). + +% Eero Simoncelli, 7/96. + +function [hfilt] = modulateFlipShift(lfilt) + +lfilt = lfilt(:); + +sz = size(lfilt,1); +sz2 = ceil(sz/2); + +ind = [sz:-1:1]'; + +hfilt = lfilt(ind) .* (-1).^(ind-sz2); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/namedFilter.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/namedFilter.m new file mode 100644 index 0000000..0689dbc --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/namedFilter.m @@ -0,0 +1,71 @@ +% KERNEL = NAMED_FILTER(NAME) +% +% Some standard 1D filter kernels. These are scaled such that +% their L2-norm is 1.0. +% +% binomN - binomial coefficient filter of order N-1 +% haar: - Haar wavelet. +% qmf8, qmf12, qmf16 - Symmetric Quadrature Mirror Filters [Johnston80] +% daub2,daub3,daub4 - Daubechies wavelet [Daubechies88]. +% qmf5, qmf9, qmf13: - Symmetric Quadrature Mirror Filters [Simoncelli88,Simoncelli90] +% +% See bottom of file for full citations. + +% Eero Simoncelli, 6/96. + +function [kernel] = named_filter(name) + +if strcmp(name(1:min(5,size(name,2))), 'binom') + kernel = sqrt(2) * binomialFilter(str2num(name(6:size(name,2)))); +elseif strcmp(name,'qmf5') + kernel = [-0.076103 0.3535534 0.8593118 0.3535534 -0.076103]'; +elseif strcmp(name,'qmf9') + kernel = [0.02807382 -0.060944743 -0.073386624 0.41472545 0.7973934 ... + 0.41472545 -0.073386624 -0.060944743 0.02807382]'; +elseif strcmp(name,'qmf13') + kernel = [-0.014556438 0.021651438 0.039045125 -0.09800052 ... + -0.057827797 0.42995453 0.7737113 0.42995453 -0.057827797 ... + -0.09800052 0.039045125 0.021651438 -0.014556438]'; +elseif strcmp(name,'qmf8') + kernel = sqrt(2) * [0.00938715 -0.07065183 0.06942827 0.4899808 ... + 0.4899808 0.06942827 -0.07065183 0.00938715 ]'; +elseif strcmp(name,'qmf12') + kernel = sqrt(2) * [-0.003809699 0.01885659 -0.002710326 -0.08469594 ... + 0.08846992 0.4843894 0.4843894 0.08846992 -0.08469594 -0.002710326 ... + 0.01885659 -0.003809699 ]'; +elseif strcmp(name,'qmf16') + kernel = sqrt(2) * [0.001050167 -0.005054526 -0.002589756 0.0276414 -0.009666376 ... + -0.09039223 0.09779817 0.4810284 0.4810284 0.09779817 -0.09039223 -0.009666376 ... + 0.0276414 -0.002589756 -0.005054526 0.001050167 ]'; +elseif strcmp(name,'haar') + kernel = [1 1]' / sqrt(2); +elseif strcmp(name,'daub2') + kernel = [0.482962913145 0.836516303738 0.224143868042 -0.129409522551]'; +elseif strcmp(name,'daub3') + kernel = [0.332670552950 0.806891509311 0.459877502118 -0.135011020010 ... + -0.085441273882 0.035226291882]'; +elseif strcmp(name,'daub4') + kernel = [0.230377813309 0.714846570553 0.630880767930 -0.027983769417 ... + -0.187034811719 0.030841381836 0.032883011667 -0.010597401785]'; +elseif strcmp(name,'gauss5') % for backward-compatibility + kernel = sqrt(2) * [0.0625 0.25 0.375 0.25 0.0625]'; +elseif strcmp(name,'gauss3') % for backward-compatibility + kernel = sqrt(2) * [0.25 0.5 0.25]'; +else + error(sprintf('Bad filter name: %s\n',name)); +end + +% [Johnston80] - J D Johnston, "A filter family designed for use in quadrature +% mirror filter banks", Proc. ICASSP, pp 291-294, 1980. +% +% [Daubechies88] - I Daubechies, "Orthonormal bases of compactly supported wavelets", +% Commun. Pure Appl. Math, vol. 42, pp 909-996, 1988. +% +% [Simoncelli88] - E P Simoncelli, "Orthogonal sub-band image transforms", +% PhD Thesis, MIT Dept. of Elec. Eng. and Comp. Sci. May 1988. +% Also available as: MIT Media Laboratory Vision and Modeling Technical +% Report #100. +% +% [Simoncelli90] - E P Simoncelli and E H Adelson, "Subband image coding", +% Subband Transforms, chapter 4, ed. John W Woods, Kluwer Academic +% Publishers, Norwell, MA, 1990, pp 143--192. diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/nextFig.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/nextFig.m new file mode 100644 index 0000000..e0ac73f --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/nextFig.m @@ -0,0 +1,19 @@ +% nextFig (MAXFIGS, SKIP) +% +% Make figure number mod((GCF+SKIP), MAXFIGS) the current figure. +% MAXFIGS is optional, and defaults to 2. +% SKIP is optional, and defaults to 1. + +% Eero Simoncelli, 2/97. + +function nextFig(maxfigs, skip) + +if (exist('maxfigs') ~= 1) + maxfigs = 2; +end + +if (exist('skip') ~= 1) + skip = 1; +end + +figure(1+mod(gcf-1+skip,maxfigs)); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pgmRead.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pgmRead.m new file mode 100644 index 0000000..86c3b62 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pgmRead.m @@ -0,0 +1,59 @@ +% IM = pgmRead( FILENAME ) +% +% Load a pgm image into a MatLab matrix. +% This format is accessible from the XV image browsing utility. +% Only works for 8bit gray images (raw or ascii) + +% Hany Farid, Spring '96. Modified by Eero Simoncelli, 6/96. + +function im = pgmRead( fname ); + +[fid,msg] = fopen( fname, 'r' ); + +if (fid == -1) + error(msg); +end + +%%% First line contains ID string: +%%% "P1" = ascii bitmap, "P2" = ascii greymap, +%%% "P3" = ascii pixmap, "P4" = raw bitmap, +%%% "P5" = raw greymap, "P6" = raw pixmap +TheLine = fgetl(fid); +format = TheLine; + +if ~((format(1:2) == 'P2') | (format(1:2) == 'P5')) + error('PGM file must be of type P2 or P5'); +end + +%%% Any number of comment lines +TheLine = fgetl(fid); +while TheLine(1) == '#' + TheLine = fgetl(fid); +end + +%%% dimensions +sz = sscanf(TheLine,'%d',2); +xdim = sz(1); +ydim = sz(2); +sz = xdim * ydim; + +%%% Maximum pixel value +TheLine = fgetl(fid); +maxval = sscanf(TheLine, '%d',1); + +%%im = zeros(dim,1); +if (format(2) == '2') + [im,count] = fscanf(fid,'%d',sz); +else + [im,count] = fread(fid,sz,'uchar'); +end + +fclose(fid); + +if (count == sz) + im = reshape( im, xdim, ydim )'; +else + fprintf(1,'Warning: File ended early!'); + im = reshape( [im ; zeros(sz-count,1)], xdim, ydim)'; +end + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pgmWrite.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pgmWrite.m new file mode 100644 index 0000000..09c14c9 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pgmWrite.m @@ -0,0 +1,120 @@ +% RANGE = pgmWrite(MTX, FILENAME, RANGE, TYPE, COMMENT) +% +% Write a MatLab matrix to a pgm (graylevel image) file. +% This format is accessible from the XV image browsing utility. +% +% RANGE (optional) is a 2-vector specifying the values that map to +% black and white, respectively. Passing a value of 'auto' (default) +% sets RANGE=[min,max] (as in MatLab's imagesc). 'auto2' sets +% RANGE=[mean-2*stdev, mean+2*stdev]. 'auto3' sets +% RANGE=[p1-(p2-p1)/8, p2+(p2-p1)/8], where p1 is the 10th percentile +% value of the sorted MATRIX samples, and p2 is the 90th percentile +% value. +% +% TYPE (optional) should be 'raw' or 'ascii'. Defaults to 'raw'. + +% Hany Farid, Spring '96. Modified by Eero Simoncelli, 6/96. + +function range = pgmWrite(mtx, fname, range, type, comment ); + +[fid,msg] = fopen( fname, 'w' ); + +if (fid == -1) + error(msg); +end + +%------------------------------------------------------------ +%% optional ARGS: + +if (exist('range') ~= 1) + range = 'auto'; +end + +if (exist('type') ~= 1) + type = 'raw'; +end +%------------------------------------------------------------ + +%% Automatic range calculation: +if (strcmp(range,'auto1') | strcmp(range,'auto')) + [mn,mx] = range2(mtx); + range = [mn,mx]; + +elseif strcmp(range,'auto2') + stdev = sqrt(var2(mtx)); + av = mean2(mtx); + range = [av-2*stdev,av+2*stdev]; % MAGIC NUMBER: 2 stdevs + +elseif strcmp(range, 'auto3') + percentile = 0.1; % MAGIC NUMBER: 0<p<0.5 + [N,X] = histo(mtx); + binsz = X(2)-X(1); + N = N+1e-10; % Ensure cumsum will be monotonic for call to interp1 + cumN = [0, cumsum(N)]/sum(N); + cumX = [X(1)-binsz, X] + (binsz/2); + ctrRange = interp1(cumN,cumX, [percentile, 1-percentile]); + range = mean(ctrRange) + (ctrRange-mean(ctrRange))/(1-2*percentile); + +elseif isstr(range) + error(sprintf('Bad RANGE argument: %s',range)) + +end + +if ((range(2) - range(1)) <= eps) + range(1) = range(1) - 0.5; + range(2) = range(2) + 0.5; +end + + +%%% First line contains ID string: +%%% "P1" = ascii bitmap, "P2" = ascii greymap, +%%% "P3" = ascii pixmap, "P4" = raw bitmap, +%%% "P5" = raw greymap, "P6" = raw pixmap +if strcmp(type,'raw') + fprintf(fid,'P5\n'); + format = 5; +elseif strcmp(type,'ascii') + fprintf(fid,'P2\n'); + format = 2; +else + error(sprintf('PGMWRITE: Bad type argument: %s',type)); +end + +fprintf(fid,'# MatLab PGMWRITE file, saved %s\n',date); + +if (exist('comment') == 1) + fprintf(fid,'# %s\n', comment); +end + +%%% dimensions +fprintf(fid,'%d %d\n',size(mtx,2),size(mtx,1)); + +%%% Maximum pixel value +fprintf(fid,'255\n'); + + +%% MatLab's "fprintf" floors when writing floats, so we compute +%% (mtx-r1)*255/(r2-r1)+0.5 +mult = (255 / (range(2)-range(1))); +mtx = (mult * mtx) + (0.5 - mult * range(1)); + +mtx = max(-0.5+eps,min(255.5-eps,mtx)); + +if (format == 2) + count = fprintf(fid,'%d ',mtx'); +elseif (format == 5) + count = fwrite(fid,mtx','uchar'); +end + +fclose(fid); + +if (count ~= size(mtx,1)*size(mtx,2)) + fprintf(1,'Warning: File output terminated early!'); +end + +%%% TEST: +% foo = 257*rand(100)-1; +% pgmWrite(foo,'foo.pgm',[0 255]); +% foo2=pgmRead('foo.pgm'); +% size(find((foo2-round(foo))~=0)) +% foo(find((foo2-round(foo))~=0)) diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pixelAxes.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pixelAxes.m new file mode 100644 index 0000000..f88210d --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pixelAxes.m @@ -0,0 +1,70 @@ +% [ZOOM] = pixelAxes(DIMS, ZOOM) +% +% Set the axes of the current plot to cover a multiple of DIMS pixels, +% thereby eliminating screen aliasing artifacts when displaying an +% image of size DIMS. +% +% ZOOM (optional, default='same') expresses the desired number of +% samples displayed per screen pixel. It should be a scalar, which +% will be rounded to the nearest integer, or 1 over an integer. It +% may also be the string 'same' or 'auto', in which case the value is chosen so +% as to produce an image closest in size to the currently displayed +% image. It may also be the string 'full', in which case the image is +% made as large as possible while still fitting in the window. + +% Eero Simoncelli, 2/97. + +function [zoom] = pixelAxes(dims, zoom) + +%------------------------------------------------------------ +%% OPTIONAL ARGS: + +if (exist('zoom') ~= 1) + zoom = 'same'; +end + +%% Reverse dimension order, since Figure Positions reported as (x,y). +dims = dims(2:-1:1); + +%% Use MatLab's axis function to force square pixels, etc: +axis('image'); +ax = gca; + +oldunits = get(ax,'Units'); + +if strcmp(zoom,'full'); + set(ax,'Units','normalized'); + set(ax,'Position',[0 0 1 1]); + zoom = 'same'; +end + +set(ax,'Units','pixels'); +pos = get(ax,'Position'); +ctr = pos(1:2)+pos(3:4)/2; + +if (strcmp(zoom,'same') | strcmp(zoom,'auto')) + %% HACK: enlarge slightly so that floor doesn't round down + zoom = min( pos(3:4) ./ (dims - 1) ); +elseif isstr(zoom) + error(sprintf('Bad ZOOM argument: %s',zoom)); +end + +%% Force zoom value to be an integer, or inverse integer. +if (zoom < 0.75) + zoom = 1/ceil(1/zoom); + %% Round upward, subtracting 0.5 to avoid floating point errors. + newsz = ceil(zoom*(dims-0.5)); +else + zoom = floor(zoom + 0.001); % Avoid floating pt errors + if (zoom < 1.5) % zoom=1 + zoom = 1; + newsz = dims + 0.5; + else + newsz = zoom*(dims-1) + mod(zoom,2); + end +end + +set(ax,'Position', [floor(ctr-newsz/2)+0.5, newsz] ) + +% Restore units +set(ax,'Units',oldunits); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pointOp.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pointOp.m new file mode 100644 index 0000000..890e60a --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pointOp.m @@ -0,0 +1,28 @@ +% RES = pointOp(IM, LUT, ORIGIN, INCREMENT, WARNINGS) +% +% Apply a point operation, specified by lookup table LUT, to image IM. +% LUT must be a row or column vector, and is assumed to contain +% (equi-spaced) samples of the function. ORIGIN specifies the +% abscissa associated with the first sample, and INCREMENT specifies the +% spacing between samples. Between-sample values are estimated via +% linear interpolation. If WARNINGS is non-zero, the function prints +% a warning whenever the lookup table is extrapolated. +% +% This function is much faster than MatLab's interp1, and allows +% extrapolation beyond the lookup table domain. The drawbacks are +% that the lookup table must be equi-spaced, and the interpolation is +% linear. + +% Eero Simoncelli, 8/96. + +function res = pointOp(im, lut, origin, increment, warnings) + +%% NOTE: THIS CODE IS NOT ACTUALLY USED! (MEX FILE IS CALLED INSTEAD) + +fprintf(1,'WARNING: You should compile the MEX version of "pointOp.c",\n found in the MEX subdirectory of matlabPyrTools, and put it in your matlab path. It is MUCH faster.\n'); + +X = origin + increment*[0:size(lut(:),1)-1]; +Y = lut(:); + +res = reshape(interp1(X, Y, im(:), 'linear', 'extrap'),size(im)); + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pwd2path.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pwd2path.m new file mode 100644 index 0000000..15aecf0 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pwd2path.m @@ -0,0 +1,6 @@ +% PWD2PATH() +% +% add current working directory (pwd) to path. + +P = path; +path(pwd,P); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pyrBand.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pyrBand.m new file mode 100644 index 0000000..1fb6461 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pyrBand.m @@ -0,0 +1,11 @@ +% RES = pyrBand(PYR, INDICES, BAND_NUM) +% +% Access a subband from a pyramid (gaussian, laplacian, QMF/wavelet, +% or steerable). Subbands are numbered consecutively, from finest +% (highest spatial frequency) to coarsest (lowest spatial frequency). + +% Eero Simoncelli, 6/96. + +function res = pyrBand(pyr, pind, band) + +res = reshape( pyr(pyrBandIndices(pind,band)), pind(band,1), pind(band,2) ); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pyrBandIndices.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pyrBandIndices.m new file mode 100644 index 0000000..f94c217 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pyrBandIndices.m @@ -0,0 +1,24 @@ +% RES = pyrBandIndices(INDICES, BAND_NUM) +% +% Return indices for accessing a subband from a pyramid +% (gaussian, laplacian, QMF/wavelet, steerable). + +% Eero Simoncelli, 6/96. + +function indices = pyrBandIndices(pind,band) + +if ((band > size(pind,1)) | (band < 1)) + error(sprintf('BAND_NUM must be between 1 and number of pyramid bands (%d).', ... + size(pind,1))); +end + +if (size(pind,2) ~= 2) + error('INDICES must be an Nx2 matrix indicating the size of the pyramid subbands'); +end + +ind = 1; +for l=1:band-1 + ind = ind + prod(pind(l,:)); +end + +indices = ind:ind+prod(pind(band,:))-1; diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pyrLow.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pyrLow.m new file mode 100644 index 0000000..290e806 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/pyrLow.m @@ -0,0 +1,12 @@ +% RES = pyrLow(PYR, INDICES) +% +% Access the lowpass subband from a pyramid +% (gaussian, laplacian, QMF/wavelet, steerable). + +% Eero Simoncelli, 6/96. + +function res = pyrLow(pyr,pind) + +band = size(pind,1); + +res = reshape( pyr(pyrBandIndices(pind,band)), pind(band,1), pind(band,2) ); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/range2.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/range2.m new file mode 100644 index 0000000..1709a0e --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/range2.m @@ -0,0 +1,18 @@ +% [MIN, MAX] = range2(MTX) +% +% Compute minimum and maximum values of MTX, returning them as a 2-vector. + +% Eero Simoncelli, 3/97. + +function [mn, mx] = range2(mtx) + +%% NOTE: THIS CODE IS NOT ACTUALLY USED! (MEX FILE IS CALLED INSTEAD) + +fprintf(1,'WARNING: You should compile the MEX version of "range2.c",\n found in the MEX subdirectory of matlabPyrTools, and put it in your matlab path. It is MUCH faster.\n'); + +if (~isreal(mtx)) + error('MTX must be real-valued'); +end + +mn = min(min(mtx)); +mx = max(max(mtx)); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/rconv2.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/rconv2.m new file mode 100644 index 0000000..0c12490 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/rconv2.m @@ -0,0 +1,50 @@ +% RES = RCONV2(MTX1, MTX2, CTR) +% +% Convolution of two matrices, with boundaries handled via reflection +% about the edge pixels. Result will be of size of LARGER matrix. +% +% The origin of the smaller matrix is assumed to be its center. +% For even dimensions, the origin is determined by the CTR (optional) +% argument: +% CTR origin +% 0 DIM/2 (default) +% 1 (DIM/2)+1 + +% Eero Simoncelli, 6/96. + +function c = rconv2(a,b,ctr) + +if (exist('ctr') ~= 1) + ctr = 0; +end + +if (( size(a,1) >= size(b,1) ) & ( size(a,2) >= size(b,2) )) + large = a; small = b; +elseif (( size(a,1) <= size(b,1) ) & ( size(a,2) <= size(b,2) )) + large = b; small = a; +else + error('one arg must be larger than the other in both dimensions!'); +end + +ly = size(large,1); +lx = size(large,2); +sy = size(small,1); +sx = size(small,2); + +%% These values are one less than the index of the small mtx that falls on +%% the border pixel of the large matrix when computing the first +%% convolution response sample: +sy2 = floor((sy+ctr-1)/2); +sx2 = floor((sx+ctr-1)/2); + +% pad with reflected copies +clarge = [ + large(sy-sy2:-1:2,sx-sx2:-1:2), large(sy-sy2:-1:2,:), ... + large(sy-sy2:-1:2,lx-1:-1:lx-sx2); ... + large(:,sx-sx2:-1:2), large, large(:,lx-1:-1:lx-sx2); ... + large(ly-1:-1:ly-sy2,sx-sx2:-1:2), ... + large(ly-1:-1:ly-sy2,:), ... + large(ly-1:-1:ly-sy2,lx-1:-1:lx-sx2) ]; + +c = conv2(clarge,small,'valid'); + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/rcosFn.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/rcosFn.m new file mode 100644 index 0000000..5dac344 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/rcosFn.m @@ -0,0 +1,45 @@ +% [X, Y] = rcosFn(WIDTH, POSITION, VALUES) +% +% Return a lookup table (suitable for use by INTERP1) +% containing a "raised cosine" soft threshold function: +% +% Y = VALUES(1) + (VALUES(2)-VALUES(1)) * +% cos^2( PI/2 * (X - POSITION + WIDTH)/WIDTH ) +% +% WIDTH is the width of the region over which the transition occurs +% (default = 1). POSITION is the location of the center of the +% threshold (default = 0). VALUES (default = [0,1]) specifies the +% values to the left and right of the transition. + +% Eero Simoncelli, 7/96. + +function [X, Y] = rcosFn(width,position,values) + +%------------------------------------------------------------ +% OPTIONAL ARGS: + +if (exist('width') ~= 1) + width = 1; +end + +if (exist('position') ~= 1) + position = 0; +end + +if (exist('values') ~= 1) + values = [0,1]; +end + +%------------------------------------------------------------ + +sz = 256; %% arbitrary! + +X = pi * [-sz-1:1] / (2*sz); + +Y = values(1) + (values(2)-values(1)) * cos(X).^2; + +% Make sure end values are repeated, for extrapolation... +Y(1) = Y(2); +Y(sz+3) = Y(sz+2); + +X = position + (2*width/pi) * (X + pi/4); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconLpyr.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconLpyr.m new file mode 100644 index 0000000..cddcc12 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconLpyr.m @@ -0,0 +1,83 @@ +% RES = reconLpyr(PYR, INDICES, LEVS, FILT2, EDGES) +% +% Reconstruct image from Laplacian pyramid, as created by buildLpyr. +% +% PYR is a vector containing the N pyramid subbands, ordered from fine +% to coarse. INDICES is an Nx2 matrix containing the sizes of +% each subband. This is compatible with the MatLab Wavelet toolbox. +% +% LEVS (optional) should be a list of levels to include, or the string +% 'all' (default). The finest scale is number 1. The lowpass band +% corresponds to lpyrHt(INDICES)+1. +% +% FILT2 (optional) can be a string naming a standard filter (see +% namedFilter), or a vector which will be used for (separable) +% convolution. Default = 'binom5'. EDGES specifies edge-handling, +% and defaults to 'reflect1' (see corrDn). + +% Eero Simoncelli, 6/96 + +function res = reconLpyr(pyr, ind, levs, filt2, edges) + +if (nargin < 2) + error('First two arguments (PYR, INDICES) are required'); +end + +%%------------------------------------------------------------ +%% DEFAULTS: + +if (exist('levs') ~= 1) + levs = 'all'; +end + +if (exist('filt2') ~= 1) + filt2 = 'binom5'; +end + +if (exist('edges') ~= 1) + edges= 'reflect1'; +end +%%------------------------------------------------------------ + +maxLev = 1+lpyrHt(ind); +if strcmp(levs,'all') + levs = [1:maxLev]'; +else + if (any(levs > maxLev)) + error(sprintf('Level numbers must be in the range [1, %d].', maxLev)); + end + levs = levs(:); +end + +if isstr(filt2) + filt2 = namedFilter(filt2); +end + +filt2 = filt2(:); +res_sz = ind(1,:); + +if any(levs > 1) + + int_sz = [ind(1,1), ind(2,2)]; + + nres = reconLpyr( pyr(prod(res_sz)+1:size(pyr,1)), ... + ind(2:size(ind,1),:), levs-1, filt2, edges); + + if (res_sz(1) == 1) + res = upConv(nres, filt2', edges, [1 2], [1 1], res_sz); + elseif (res_sz(2) == 1) + res = upConv(nres, filt2, edges, [2 1], [1 1], res_sz); + else + hi = upConv(nres, filt2, edges, [2 1], [1 1], int_sz); + res = upConv(hi, filt2', edges, [1 2], [1 1], res_sz); + end + +else + + res = zeros(res_sz); + +end + +if any(levs == 1) + res = res + pyrBand(pyr,ind,1); +end diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconSCFpyr.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconSCFpyr.m new file mode 100644 index 0000000..a86f03d --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconSCFpyr.m @@ -0,0 +1,87 @@ +% RES = reconSCFpyr(PYR, INDICES, LEVS, BANDS, TWIDTH) +% +% The inverse of buildSCFpyr: Reconstruct image from its complex steerable pyramid representation, +% in the Fourier domain. +% +% The image is reconstructed by forcing the complex subbands to be analytic +% (zero on half of the 2D Fourier plane, as they are supossed to be unless +% they have being modified), and reconstructing from the real part of those +% analytic subbands. That is equivalent to compute the Hilbert transforms of +% the imaginary parts of the subbands, average them with their real +% counterparts, and then reconstructing from the resulting real subbands. +% +% PYR is a vector containing the N pyramid subbands, ordered from fine +% to coarse. INDICES is an Nx2 matrix containing the sizes of +% each subband. This is compatible with the MatLab Wavelet toolbox. +% +% LEVS (optional) should be a list of levels to include, or the string +% 'all' (default). 0 corresonds to the residual highpass subband. +% 1 corresponds to the finest oriented scale. The lowpass band +% corresponds to number spyrHt(INDICES)+1. +% +% BANDS (optional) should be a list of bands to include, or the string +% 'all' (default). 1 = vertical, rest proceeding anti-clockwise. +% +% TWIDTH is the width of the transition region of the radial lowpass +% function, in octaves (default = 1, which gives a raised cosine for +% the bandpass filters). + +% Javier Portilla, 7/04, basing on Eero Simoncelli's Matlab Pyrtools code +% and our common code on texture synthesis (textureSynthesis.m). + +function res = reconSCFpyr(pyr, indices, levs, bands, twidth) + +%%------------------------------------------------------------ +%% DEFAULTS: + +if ~exist('levs'), + levs = 'all'; +end + +if ~exist('bands') + bands = 'all'; +end + +if ~exist('twidth'), + twidth = 1; +elseif (twidth <= 0) + fprintf(1,'Warning: TWIDTH must be positive. Setting to 1.\n'); + twidth = 1; +end + +%%------------------------------------------------------------ + + +pind = indices; +Nsc = log2(pind(1,1)/pind(end,1)); +Nor = (size(pind,1)-2)/Nsc; + +for nsc = 1:Nsc, + firstBnum = (nsc-1)*Nor+2; + +%% Re-create analytic subbands + dims = pind(firstBnum,:); + ctr = ceil((dims+0.5)/2); + ang = mkAngle(dims, 0, ctr); + ang(ctr(1),ctr(2)) = -pi/2; + for nor = 1:Nor, + nband = (nsc-1)*Nor+nor+1; + ind = pyrBandIndices(pind,nband); + ch = pyrBand(pyr, pind, nband); + ang0 = pi*(nor-1)/Nor; + xang = mod(ang-ang0+pi, 2*pi) - pi; + amask = 2*(abs(xang) < pi/2) + (abs(xang) == pi/2); + amask(ctr(1),ctr(2)) = 1; + amask(:,1) = 1; + amask(1,:) = 1; + amask = fftshift(amask); + ch = ifft2(amask.*fft2(ch)); % "Analytic" version + %f = 1.000008; % With this factor the reconstruction SNR goes up around 6 dB! + f = 1; + ch = f*0.5*real(ch); % real part + pyr(ind) = ch; + end % nor +end % nsc + +res = reconSFpyr(pyr, indices, levs, bands, twidth); + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconSFpyr.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconSFpyr.m new file mode 100644 index 0000000..0e3109e --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconSFpyr.m @@ -0,0 +1,108 @@ +% RES = reconSFpyr(PYR, INDICES, LEVS, BANDS, TWIDTH) +% +% Reconstruct image from its steerable pyramid representation, in the Fourier +% domain, as created by buildSFpyr. +% +% PYR is a vector containing the N pyramid subbands, ordered from fine +% to coarse. INDICES is an Nx2 matrix containing the sizes of +% each subband. This is compatible with the MatLab Wavelet toolbox. +% +% LEVS (optional) should be a list of levels to include, or the string +% 'all' (default). 0 corresonds to the residual highpass subband. +% 1 corresponds to the finest oriented scale. The lowpass band +% corresponds to number spyrHt(INDICES)+1. +% +% BANDS (optional) should be a list of bands to include, or the string +% 'all' (default). 1 = vertical, rest proceeding anti-clockwise. +% +% TWIDTH is the width of the transition region of the radial lowpass +% function, in octaves (default = 1, which gives a raised cosine for +% the bandpass filters). + +%%% MODIFIED VERSION, 7/04, uses different lookup table for radial frequency! + +% Eero Simoncelli, 5/97. + +function res = reconSFpyr(pyr, pind, levs, bands, twidth) + +%%------------------------------------------------------------ +%% DEFAULTS: + +if (exist('levs') ~= 1) + levs = 'all'; +end + +if (exist('bands') ~= 1) + bands = 'all'; +end + +if (exist('twidth') ~= 1) + twidth = 1; +elseif (twidth <= 0) + fprintf(1,'Warning: TWIDTH must be positive. Setting to 1.\n'); + twidth = 1; +end + +%%------------------------------------------------------------ + +nbands = spyrNumBands(pind); + +maxLev = 1+spyrHt(pind); +if strcmp(levs,'all') + levs = [0:maxLev]'; +else + if (any(levs > maxLev) | any(levs < 0)) + error(sprintf('Level numbers must be in the range [0, %d].', maxLev)); + end + levs = levs(:); +end + +if strcmp(bands,'all') + bands = [1:nbands]'; +else + if (any(bands < 1) | any(bands > nbands)) + error(sprintf('Band numbers must be in the range [1,3].', nbands)); + end + bands = bands(:); +end + +%---------------------------------------------------------------------- + +dims = pind(1,:); +ctr = ceil((dims+0.5)/2); + +[xramp,yramp] = meshgrid( ([1:dims(2)]-ctr(2))./(dims(2)/2), ... + ([1:dims(1)]-ctr(1))./(dims(1)/2) ); +angle = atan2(yramp,xramp); +log_rad = sqrt(xramp.^2 + yramp.^2); +log_rad(ctr(1),ctr(2)) = log_rad(ctr(1),ctr(2)-1); +log_rad = log2(log_rad); + +%% Radial transition function (a raised cosine in log-frequency): +[Xrcos,Yrcos] = rcosFn(twidth,(-twidth/2),[0 1]); +Yrcos = sqrt(Yrcos); +YIrcos = sqrt(abs(1.0 - Yrcos.^2)); + +if (size(pind,1) == 2) + if (any(levs==1)) + resdft = fftshift(fft2(pyrBand(pyr,pind,2))); + else + resdft = zeros(pind(2,:)); + end +else + resdft = reconSFpyrLevs(pyr(1+prod(pind(1,:)):size(pyr,1)), ... + pind(2:size(pind,1),:), ... + log_rad, Xrcos, Yrcos, angle, nbands, levs, bands); +end + +lo0mask = pointOp(log_rad, YIrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); +resdft = resdft .* lo0mask; + +%% residual highpass subband +if any(levs == 0) + hi0mask = pointOp(log_rad, Yrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); + hidft = fftshift(fft2(subMtx(pyr, pind(1,:)))); + resdft = resdft + hidft .* hi0mask; +end + +res = real(ifft2(ifftshift(resdft))); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconSFpyrLevs.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconSFpyrLevs.m new file mode 100644 index 0000000..420f278 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconSFpyrLevs.m @@ -0,0 +1,69 @@ +% RESDFT = reconSFpyrLevs(PYR,INDICES,LOGRAD,XRCOS,YRCOS,ANGLE,NBANDS,LEVS,BANDS) +% +% Recursive function for reconstructing levels of a steerable pyramid +% representation. This is called by reconSFpyr, and is not usually +% called directly. + +% Eero Simoncelli, 5/97. + +function resdft = reconSFpyrLevs(pyr,pind,log_rad,Xrcos,Yrcos,angle,nbands,levs,bands); + +lo_ind = nbands+1; +dims = pind(1,:); +ctr = ceil((dims+0.5)/2); + +% log_rad = log_rad + 1; +Xrcos = Xrcos - log2(2); % shift origin of lut by 1 octave. + +if any(levs > 1) + + lodims = ceil((dims-0.5)/2); + loctr = ceil((lodims+0.5)/2); + lostart = ctr-loctr+1; + loend = lostart+lodims-1; + nlog_rad = log_rad(lostart(1):loend(1),lostart(2):loend(2)); + nangle = angle(lostart(1):loend(1),lostart(2):loend(2)); + + if (size(pind,1) > lo_ind) + nresdft = reconSFpyrLevs( pyr(1+sum(prod(pind(1:lo_ind-1,:)')):size(pyr,1)),... + pind(lo_ind:size(pind,1),:), ... + nlog_rad, Xrcos, Yrcos, nangle, nbands,levs-1, bands); + else + nresdft = fftshift(fft2(pyrBand(pyr,pind,lo_ind))); + end + + YIrcos = sqrt(abs(1.0 - Yrcos.^2)); + lomask = pointOp(nlog_rad, YIrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); + + resdft = zeros(dims); + resdft(lostart(1):loend(1),lostart(2):loend(2)) = nresdft .* lomask; + +else + + resdft = zeros(dims); + +end + + +if any(levs == 1) + + lutsize = 1024; + Xcosn = pi*[-(2*lutsize+1):(lutsize+1)]/lutsize; % [-2*pi:pi] + order = nbands-1; + %% divide by sqrt(sum_(n=0)^(N-1) cos(pi*n/N)^(2(N-1)) ) + const = (2^(2*order))*(factorial(order)^2)/(nbands*factorial(2*order)); + Ycosn = sqrt(const) * (cos(Xcosn)).^order; + himask = pointOp(log_rad, Yrcos, Xrcos(1), Xrcos(2)-Xrcos(1),0); + + ind = 1; + for b = 1:nbands + if any(bands == b) + anglemask = pointOp(angle,Ycosn,Xcosn(1)+pi*(b-1)/nbands,Xcosn(2)-Xcosn(1)); + band = reshape(pyr(ind:ind+prod(dims)-1), dims(1), dims(2)); + banddft = fftshift(fft2(band)); + resdft = resdft + (sqrt(-1))^(nbands-1) * banddft.*anglemask.*himask; + end + ind = ind + prod(dims); + end +end + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconSpyr.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconSpyr.m new file mode 100644 index 0000000..270009d --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconSpyr.m @@ -0,0 +1,96 @@ +% RES = reconSpyr(PYR, INDICES, FILTFILE, EDGES, LEVS, BANDS) +% +% Reconstruct image from its steerable pyramid representation, as created +% by buildSpyr. +% +% PYR is a vector containing the N pyramid subbands, ordered from fine +% to coarse. INDICES is an Nx2 matrix containing the sizes of +% each subband. This is compatible with the MatLab Wavelet toolbox. +% +% FILTFILE (optional) should be a string referring to an m-file that returns +% the rfilters. examples: sp0Filters, sp1Filters, sp3Filters +% (default = 'sp1Filters'). +% EDGES specifies edge-handling, and defaults to 'reflect1' (see +% corrDn). +% +% LEVS (optional) should be a list of levels to include, or the string +% 'all' (default). 0 corresonds to the residual highpass subband. +% 1 corresponds to the finest oriented scale. The lowpass band +% corresponds to number spyrHt(INDICES)+1. +% +% BANDS (optional) should be a list of bands to include, or the string +% 'all' (default). 1 = vertical, rest proceeding anti-clockwise. + +% Eero Simoncelli, 6/96. + +function res = reconSpyr(pyr, pind, filtfile, edges, levs, bands) + +%%------------------------------------------------------------ +%% DEFAULTS: + +if (exist('filtfile') ~= 1) + filtfile = 'sp1Filters'; +end + +if (exist('edges') ~= 1) + edges= 'reflect1'; +end + +if (exist('levs') ~= 1) + levs = 'all'; +end + +if (exist('bands') ~= 1) + bands = 'all'; +end + +%%------------------------------------------------------------ + +if (isstr(filtfile) & (exist(filtfile) == 2)) + [lo0filt,hi0filt,lofilt,bfilts,steermtx,harmonics] = eval(filtfile); + nbands = spyrNumBands(pind); + if ((nbands > 0) & (size(bfilts,2) ~= nbands)) + error('Number of pyramid bands is inconsistent with filter file'); + end +else + error('filtfile argument must be the name of an M-file containing SPYR filters.'); +end + +maxLev = 1+spyrHt(pind); +if strcmp(levs,'all') + levs = [0:maxLev]'; +else + if (any(levs > maxLev) | any(levs < 0)) + error(sprintf('Level numbers must be in the range [0, %d].', maxLev)); + end + levs = levs(:); +end + +if strcmp(bands,'all') + bands = [1:nbands]'; +else + if (any(bands < 1) | any(bands > nbands)) + error(sprintf('Band numbers must be in the range [1,3].', nbands)); + end + bands = bands(:); +end + +if (spyrHt(pind) == 0) + if (any(levs==1)) + res1 = pyrBand(pyr,pind,2); + else + res1 = zeros(pind(2,:)); + end +else + res1 = reconSpyrLevs(pyr(1+prod(pind(1,:)):size(pyr,1)), ... + pind(2:size(pind,1),:), ... + lofilt, bfilts, edges, levs, bands); +end + +res = upConv(res1, lo0filt, edges); + +%% residual highpass subband +if any(levs == 0) + upConv( subMtx(pyr, pind(1,:)), hi0filt, edges, [1 1], [1 1], size(res), res); +end + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconSpyrLevs.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconSpyrLevs.m new file mode 100644 index 0000000..f8e456c --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconSpyrLevs.m @@ -0,0 +1,46 @@ +% RES = reconSpyrLevs(PYR,INDICES,LOFILT,BFILTS,EDGES,LEVS,BANDS) +% +% Recursive function for reconstructing levels of a steerable pyramid +% representation. This is called by reconSpyr, and is not usually +% called directly. + +% Eero Simoncelli, 6/96. + +function res = reconSpyrLevs(pyr,pind,lofilt,bfilts,edges,levs,bands); + +nbands = size(bfilts,2); +lo_ind = nbands+1; +res_sz = pind(1,:); + +% Assume square filters: +bfiltsz = round(sqrt(size(bfilts,1))); + +if any(levs > 1) + + if (size(pind,1) > lo_ind) + nres = reconSpyrLevs( pyr(1+sum(prod(pind(1:lo_ind-1,:)')):size(pyr,1)), ... + pind(lo_ind:size(pind,1),:), ... + lofilt, bfilts, edges, levs-1, bands); + else + nres = pyrBand(pyr,pind,lo_ind); % lowpass subband + end + + res = upConv(nres, lofilt, edges, [2 2], [1 1], res_sz); + +else + + res = zeros(res_sz); + +end + +if any(levs == 1) + ind = 1; + for b = 1:nbands + if any(bands == b) + bfilt = reshape(bfilts(:,b), bfiltsz, bfiltsz); + upConv(reshape(pyr(ind:ind+prod(res_sz)-1), res_sz(1), res_sz(2)), ... + bfilt, edges, [1 1], [1 1], res_sz, res); + end + ind = ind + prod(res_sz); + end +end diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconWpyr.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconWpyr.m new file mode 100644 index 0000000..fc31226 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/reconWpyr.m @@ -0,0 +1,148 @@ +% RES = reconWpyr(PYR, INDICES, FILT, EDGES, LEVS, BANDS) +% +% Reconstruct image from its separable orthonormal QMF/wavelet pyramid +% representation, as created by buildWpyr. +% +% PYR is a vector containing the N pyramid subbands, ordered from fine +% to coarse. INDICES is an Nx2 matrix containing the sizes of +% each subband. This is compatible with the MatLab Wavelet toolbox. +% +% FILT (optional) can be a string naming a standard filter (see +% namedFilter), or a vector which will be used for (separable) +% convolution. Default = 'qmf9'. EDGES specifies edge-handling, +% and defaults to 'reflect1' (see corrDn). +% +% LEVS (optional) should be a vector of levels to include, or the string +% 'all' (default). 1 corresponds to the finest scale. The lowpass band +% corresponds to wpyrHt(INDICES)+1. +% +% BANDS (optional) should be a vector of bands to include, or the string +% 'all' (default). 1=horizontal, 2=vertical, 3=diagonal. This is only used +% for pyramids of 2D images. + +% Eero Simoncelli, 6/96. + +function res = reconWpyr(pyr, ind, filt, edges, levs, bands) + +if (nargin < 2) + error('First two arguments (PYR INDICES) are required'); +end + +%%------------------------------------------------------------ +%% OPTIONAL ARGS: + +if (exist('filt') ~= 1) + filt = 'qmf9'; +end + +if (exist('edges') ~= 1) + edges= 'reflect1'; +end + +if (exist('levs') ~= 1) + levs = 'all'; +end + +if (exist('bands') ~= 1) + bands = 'all'; +end + +%%------------------------------------------------------------ + +maxLev = 1+wpyrHt(ind); +if strcmp(levs,'all') + levs = [1:maxLev]'; +else + if (any(levs > maxLev)) + error(sprintf('Level numbers must be in the range [1, %d].', maxLev)); + end + levs = levs(:); +end + +if strcmp(bands,'all') + bands = [1:3]'; +else + if (any(bands < 1) | any(bands > 3)) + error('Band numbers must be in the range [1,3].'); + end + bands = bands(:); +end + +if isstr(filt) + filt = namedFilter(filt); +end + +filt = filt(:); +hfilt = modulateFlip(filt); + +%% For odd-length filters, stagger the sampling lattices: +if (mod(size(filt,1),2) == 0) + stag = 2; +else + stag = 1; +end + +%% Compute size of result image: assumes critical sampling (boundaries correct) +res_sz = ind(1,:); +if (res_sz(1) == 1) + loind = 2; + res_sz(2) = sum(ind(:,2)); +elseif (res_sz(2) == 1) + loind = 2; + res_sz(1) = sum(ind(:,1)); +else + loind = 4; + res_sz = ind(1,:) + ind(2,:); %%horizontal + vertical bands. + hres_sz = [ind(1,1), res_sz(2)]; + lres_sz = [ind(2,1), res_sz(2)]; +end + + +%% First, recursively collapse coarser scales: +if any(levs > 1) + + if (size(ind,1) > loind) + nres = reconWpyr( pyr(1+sum(prod(ind(1:loind-1,:)')):size(pyr,1)), ... + ind(loind:size(ind,1),:), filt, edges, levs-1, bands); + else + nres = pyrBand(pyr, ind, loind); % lowpass subband + end + + if (res_sz(1) == 1) + res = upConv(nres, filt', edges, [1 2], [1 stag], res_sz); + elseif (res_sz(2) == 1) + res = upConv(nres, filt, edges, [2 1], [stag 1], res_sz); + else + ires = upConv(nres, filt', edges, [1 2], [1 stag], lres_sz); + res = upConv(ires, filt, edges, [2 1], [stag 1], res_sz); + end + +else + + res = zeros(res_sz); + +end + + +%% Add in reconstructed bands from this level: +if any(levs == 1) + if (res_sz(1) == 1) + upConv(pyrBand(pyr,ind,1), hfilt', edges, [1 2], [1 2], res_sz, res); + elseif (res_sz(2) == 1) + upConv(pyrBand(pyr,ind,1), hfilt, edges, [2 1], [2 1], res_sz, res); + else + if any(bands == 1) % horizontal + ires = upConv(pyrBand(pyr,ind,1),filt',edges,[1 2],[1 stag],hres_sz); + upConv(ires,hfilt,edges,[2 1],[2 1],res_sz,res); %destructively modify res + end + if any(bands == 2) % vertical + ires = upConv(pyrBand(pyr,ind,2),hfilt',edges,[1 2],[1 2],lres_sz); + upConv(ires,filt,edges,[2 1],[stag 1],res_sz,res); %destructively modify res + end + if any(bands == 3) % diagonal + ires = upConv(pyrBand(pyr,ind,3),hfilt',edges,[1 2],[1 2],hres_sz); + upConv(ires,hfilt,edges,[2 1],[2 1],res_sz,res); %destructively modify res + end + end +end + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/setPyrBand.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/setPyrBand.m new file mode 100644 index 0000000..baa9f77 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/setPyrBand.m @@ -0,0 +1,32 @@ +% NEWPYR = setPyrBand(PYR, INDICES, BAND, BAND_NUM) +% +% Insert an image (BAND) into a pyramid (gaussian, laplacian, QMF/wavelet, +% or steerable). Subbands are numbered consecutively, from finest +% (highest spatial frequency) to coarsest (lowest spatial frequency). + +% Eero Simoncelli, 1/03. + +function pyr = pyrBand(pyr, pind, band, bandNum) + +%% Check: PIND a valid index matrix? +if ( ~(ndims(pind) == 2) | ~(size(pind,2) == 2) | ~all(pind==round(pind)) ) + pind + error('pyrTools:badArg',... + 'PIND argument is not an Nbands X 2 matrix of integers'); +end + +%% Check: PIND consistent with size of PYR? +if ( length(pyr) ~= sum(prod(pind,2)) ) + error('pyrTools:badPyr',... + 'Pyramid data vector length is inconsistent with index matrix PIND'); +end + +%% Check: size of BAND consistent with desired BANDNUM? +if (~all(size(band) == pind(bandNum,:))) + size(band) + pind(bandNum,:) + error('pyrTools:badArg',... + 'size of BAND to be inserted is inconsistent with BAND_NUM'); +end + +pyr(pyrBandIndices(pind,bandNum)) = vectify(band); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/shift.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/shift.m new file mode 100644 index 0000000..497297e --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/shift.m @@ -0,0 +1,15 @@ +% [RES] = shift(MTX, OFFSET) +% +% Circular shift 2D matrix samples by OFFSET (a [Y,X] 2-vector), +% such that RES(POS) = MTX(POS-OFFSET). + +function res = shift(mtx, offset) + +dims = size(mtx); + +offset = mod(-offset,dims); + +res = [ mtx(offset(1)+1:dims(1), offset(2)+1:dims(2)), ... + mtx(offset(1)+1:dims(1), 1:offset(2)); ... + mtx(1:offset(1), offset(2)+1:dims(2)), ... + mtx(1:offset(1), 1:offset(2)) ]; diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/showIm.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/showIm.m new file mode 100644 index 0000000..a9e2bd1 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/showIm.m @@ -0,0 +1,221 @@ +% RANGE = showIm (MATRIX, RANGE, ZOOM, LABEL, NSHADES ) +% +% Display a MatLab MATRIX as a grayscale image in the current figure, +% inside the current axes. If MATRIX is complex, the real and imaginary +% parts are shown side-by-side, with the same grayscale mapping. +% +% If MATRIX is a string, it should be the name of a variable bound to a +% MATRIX in the base (global) environment. This matrix is displayed as an +% image, with the title set to the string. +% +% RANGE (optional) is a 2-vector specifying the values that map to +% black and white, respectively. Passing a value of 'auto' (default) +% sets RANGE=[min,max] (as in MatLab's imagesc). 'auto2' sets +% RANGE=[mean-2*stdev, mean+2*stdev]. 'auto3' sets +% RANGE=[p1-(p2-p1)/8, p2+(p2-p1)/8], where p1 is the 10th percentile +% value of the sorted MATRIX samples, and p2 is the 90th percentile +% value. +% +% ZOOM specifies the number of matrix samples per screen pixel. It +% will be rounded to an integer, or 1 divided by an integer. A value +% of 'same' or 'auto' (default) causes the zoom value to be chosen +% automatically to fit the image into the current axes. A value of +% 'full' fills the axis region (leaving no room for labels). See +% pixelAxes.m. +% +% If LABEL (optional, default = 1, unless zoom='full') is non-zero, the range +% of values that are mapped into the gray colormap and the dimensions +% (size) of the matrix and zoom factor are printed below the image. If label +% is a string, it is used as a title. +% +% NSHADES (optional) specifies the number of gray shades, and defaults +% to the size of the current colormap. + +% Eero Simoncelli, 6/96. + +%%TODO: should use "newplot" + +function range = showIm( im, range, zoom, label, nshades ); + +%------------------------------------------------------------ +%% OPTIONAL ARGS: + +if (nargin < 1) + error('Requires at least one input argument.'); +end + +MLv = version; + +if isstr(im) + if (strcmp(MLv(1),'4')) + error('Cannot pass string arg for MATRIX in MatLab version 4.x'); + end + label = im; + im = evalin('base',im); +end + +if (exist('range') ~= 1) + range = 'auto1'; +end + +if (exist('nshades') ~= 1) + nshades = size(colormap,1); +end +nshades = max( nshades, 2 ); + +if (exist('zoom') ~= 1) + zoom = 'auto'; +end + +if (exist('label') ~= 1) + if strcmp(zoom,'full') + label = 0; % no labeling + else + label = 1; % just print grayrange & dims + end +end + +%------------------------------------------------------------ + +%% Automatic range calculation: +if (strcmp(range,'auto1') | strcmp(range,'auto')) + if isreal(im) + [mn,mx] = range2(im); + else + [mn1,mx1] = range2(real(im)); + [mn2,mx2] = range2(imag(im)); + mn = min(mn1,mn2); + mx = max(mx1,mx2); + end + if any(size(im)==1) + pad = (mx-mn)/12; % MAGIC NUMBER: graph padding + range = [mn-pad, mx+pad]; + else + range = [mn,mx]; + end + +elseif strcmp(range,'auto2') + if isreal(im) + stdev = sqrt(var2(im)); + av = mean2(im); + else + stdev = sqrt((var2(real(im)) + var2(imag(im)))/2); + av = (mean2(real(im)) + mean2(imag(im)))/2; + end + range = [av-2*stdev,av+2*stdev]; % MAGIC NUMBER: 2 stdevs + +elseif strcmp(range, 'auto3') + percentile = 0.1; % MAGIC NUMBER: 0<p<0.5 + [N,X] = histo(im); + binsz = X(2)-X(1); + N = N+1e-10; % Ensure cumsum will be monotonic for call to interp1 + cumN = [0, cumsum(N)]/sum(N); + cumX = [X(1)-binsz, X] + (binsz/2); + ctrRange = interp1(cumN,cumX, [percentile, 1-percentile]); + range = mean(ctrRange) + (ctrRange-mean(ctrRange))/(1-2*percentile); + +elseif isstr(range) + error(sprintf('Bad RANGE argument: %s',range)) + +end + +if ((range(2) - range(1)) <= eps) + range(1) = range(1) - 0.5; + range(2) = range(2) + 0.5; +end + + +if isreal(im) + factor=1; +else + factor = 1+sqrt(-1); +end + +xlbl_offset = 0; % default value + +if (~any(size(im)==1)) + %% MatLab's "image" rounds when mapping to the colormap, so we compute + %% (im-r1)*(nshades-1)/(r2-r1) + 1.5 + mult = ((nshades-1) / (range(2)-range(1))); + d_im = (mult * im) + factor*(1.5 - range(1)*mult); +end + +if isreal(im) + if (any(size(im)==1)) + hh = plot( im); + axis([1, prod(size(im)), range]); + else + hh = image( d_im ); + axis('off'); + zoom = pixelAxes(size(d_im),zoom); + end +else + if (any(size(im)==1)) + subplot(2,1,1); + hh = plot(real(im)); + axis([1, prod(size(im)), range]); + subplot(2,1,2); + hh = plot(imag(im)); + axis([1, prod(size(im)), range]); + else + subplot(1,2,1); + hh = image(real(d_im)); + axis('off'); zoom = pixelAxes(size(d_im),zoom); + ax = gca; orig_units = get(ax,'Units'); + set(ax,'Units','points'); + pos1 = get(ax,'Position'); + set(ax,'Units',orig_units); + subplot(1,2,2); + hh = image(imag(d_im)); + axis('off'); zoom = pixelAxes(size(d_im),zoom); + ax = gca; orig_units = get(ax,'Units'); + set(ax,'Units','points'); + pos2 = get(ax,'Position'); + set(ax,'Units',orig_units); + xlbl_offset = (pos1(1)-pos2(1))/2; + end +end + +if ~any(size(im)==1) + colormap(gray(nshades)); +end + +if ((label ~= 0)) + if isstr(label) + title(label); + h = get(gca,'Title'); + orig_units = get(h,'Units'); + set(h,'Units','points'); + pos = get(h,'Position'); + pos(1:2) = pos(1:2) + [xlbl_offset, -3]; % MAGIC NUMBER: y pixel offset + set(h,'Position',pos); + set(h,'Units',orig_units); + end + + if (~any(size(im)==1)) + if (zoom > 1) + zformat = sprintf('* %d',round(zoom)); + else + zformat = sprintf('/ %d',round(1/zoom)); + end + if isreal(im) + format=[' Range: [%.3g, %.3g] \n Dims: [%d, %d] ', zformat]; + else + format=['Range: [%.3g, %.3g] ---- Dims: [%d, %d]', zformat]; + end + xlabel(sprintf(format, range(1), range(2), size(im,1), size(im,2))); + h = get(gca,'Xlabel'); + set(h,'FontSize', 9); % MAGIC NUMBER: font size!!! + + orig_units = get(h,'Units'); + set(h,'Units','points'); + pos = get(h,'Position'); + pos(1:2) = pos(1:2) + [xlbl_offset, 10]; % MAGIC NUMBER: y offset in points + set(h,'Position',pos); + set(h,'Units',orig_units); + + set(h,'Visible','on'); % axis('image') turned the xlabel off... + end +end + +return; diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/showLpyr.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/showLpyr.m new file mode 100644 index 0000000..0d85f9d --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/showLpyr.m @@ -0,0 +1,202 @@ +% RANGE = showLpyr (PYR, INDICES, RANGE, GAP, LEVEL_SCALE_FACTOR) +% +% Display a Laplacian (or Gaussian) pyramid, specified by PYR and +% INDICES (see buildLpyr), in the current figure. +% +% RANGE is a 2-vector specifying the values that map to black and +% white, respectively. These values are scaled by +% LEVEL_SCALE_FACTOR^(lev-1) for bands at each level. Passing a value +% of 'auto1' sets RANGE to the min and max values of MATRIX. 'auto2' +% sets RANGE to 3 standard deviations below and above 0.0. In both of +% these cases, the lowpass band is independently scaled. A value of +% 'indep1' sets the range of each subband independently, as in a call +% to showIm(subband,'auto1'). Similarly, 'indep2' causes each subband +% to be scaled independently as if by showIm(subband,'indep2'). +% The default value for RANGE is 'auto1' for 1D images, and 'auto2' for +% 2D images. +% +% GAP (optional, default=1) specifies the gap in pixels to leave +% between subbands (2D images only). +% +% LEVEL_SCALE_FACTOR indicates the relative scaling between pyramid +% levels. This should be set to the sum of the kernel taps of the +% lowpass filter used to construct the pyramid (default assumes +% L2-normalalized filters, using a value of 2 for 2D images, sqrt(2) for +% 1D images). + +% Eero Simoncelli, 2/97. + +function [range] = showLpyr(pyr, pind, range, gap, scale); + +% Determine 1D or 2D pyramid: +if ((pind(1,1) == 1) | (pind(1,2) ==1)) + oned = 1; +else + oned = 0; +end + +%------------------------------------------------------------ +%% OPTIONAL ARGS: + +if (exist('range') ~= 1) + if (oned==1) + range = 'auto1'; + else + range = 'auto2'; + end +end + +if (exist('gap') ~= 1) + gap = 1; +end + +if (exist('scale') ~= 1) + if (oned == 1) + scale = sqrt(2); + else + scale = 2; + end +end + +%------------------------------------------------------------ + +nind = size(pind,1); + +%% Auto range calculations: +if strcmp(range,'auto1') + range = zeros(nind,1); + mn = 0.0; mx = 0.0; + for bnum = 1:(nind-1) + band = pyrBand(pyr,pind,bnum)/(scale^(bnum-1)); + range(bnum) = scale^(bnum-1); + [bmn,bmx] = range2(band); + mn = min(mn, bmn); mx = max(mx, bmx); + end + if (oned == 1) + pad = (mx-mn)/12; % *** MAGIC NUMBER!! + mn = mn-pad; mx = mx+pad; + end + range = range * [mn mx]; % outer product + band = pyrLow(pyr,pind); + [mn,mx] = range2(band); + if (oned == 1) + pad = (mx-mn)/12; % *** MAGIC NUMBER!! + mn = mn-pad; mx = mx+pad; + end + range(nind,:) = [mn, mx]; + +elseif strcmp(range,'indep1') + range = zeros(nind,2); + for bnum = 1:nind + band = pyrBand(pyr,pind,bnum); + [mn,mx] = range2(band); + if (oned == 1) + pad = (mx-mn)/12; % *** MAGIC NUMBER!! + mn = mn-pad; mx = mx+pad; + end + range(bnum,:) = [mn mx]; + end + +elseif strcmp(range,'auto2') + range = zeros(nind,1); + sqsum = 0; numpixels = 0; + for bnum = 1:(nind-1) + band = pyrBand(pyr,pind,bnum)/(scale^(bnum-1)); + sqsum = sqsum + sum(sum(band.^2)); + numpixels = numpixels + prod(size(band)); + range(bnum) = scale^(bnum-1); + end + stdev = sqrt(sqsum/(numpixels-1)); + range = range * [ -3*stdev 3*stdev ]; % outer product + band = pyrLow(pyr,pind); + av = mean2(band); stdev = sqrt(var2(band)); + range(nind,:) = [av-2*stdev,av+2*stdev]; + +elseif strcmp(range,'indep2') + range = zeros(nind,2); + for bnum = 1:(nind-1) + band = pyrBand(pyr,pind,bnum); + stdev = sqrt(var2(band)); + range(bnum,:) = [ -3*stdev 3*stdev ]; + end + band = pyrLow(pyr,pind); + av = mean2(band); stdev = sqrt(var2(band)); + range(nind,:) = [av-2*stdev,av+2*stdev]; + +elseif isstr(range) + error(sprintf('Bad RANGE argument: %s',range)) + +elseif ((size(range,1) == 1) & (size(range,2) == 2)) + scales = scale.^[0:nind-1]; + range = scales(:) * range; % outer product + band = pyrLow(pyr,pind); + range(nind,:) = range(nind,:) + mean2(band) - mean(range(nind,:)); + +end + +%% Clear Figure +clf; + +if (oned == 1) + + %%%%% 1D signal: + for bnum=1:nind + band = pyrBand(pyr,pind,bnum); + subplot(nind,1,nind-bnum+1); + plot(band); + axis([1, prod(size(band)), range(bnum,:)]); + end + +else + + %%%%% 2D signal: + colormap(gray); + cmap = get(gcf,'Colormap'); + nshades = size(cmap,1); + + % Find background color index: + clr = get(gcf,'Color'); + bg = 1; + dist = norm(cmap(bg,:)-clr); + for n = 1:nshades + ndist = norm(cmap(n,:)-clr); + if (ndist < dist) + dist = ndist; + bg = n; + end + end + + %% Compute positions of subbands: + llpos = ones(nind,2); + dir = [-1 -1]; + ctr = [pind(1,1)+1+gap 1]; + sz = [0 0]; + for bnum = 1:nind + prevsz = sz; + sz = pind(bnum,:); + + % Determine center position of new band: + ctr = ctr + gap*dir/2 + dir.* floor((prevsz+(dir>0))/2); + dir = dir * [0 -1; 1 0]; % ccw rotation + ctr = ctr + gap*dir/2 + dir.* floor((sz+(dir<0))/2); + llpos(bnum,:) = ctr - floor(sz./2); + end + + %% Make position list positive, and allocate appropriate image: + llpos = llpos - ones(nind,1)*min(llpos) + 1; + urpos = llpos + pind - 1; + d_im = bg + zeros(max(urpos)); + + %% Paste bands into image, (im-r1)*(nshades-1)/(r2-r1) + 1.5 + for bnum=1:nind + mult = (nshades-1) / (range(bnum,2)-range(bnum,1)); + d_im(llpos(bnum,1):urpos(bnum,1), llpos(bnum,2):urpos(bnum,2)) = ... + mult*pyrBand(pyr,pind,bnum) + (1.5-mult*range(bnum,1)); + end + + hh = image(d_im); + axis('off'); + pixelAxes(size(d_im),'full'); + set(hh,'UserData',range); + +end diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/showSpyr.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/showSpyr.m new file mode 100644 index 0000000..da85715 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/showSpyr.m @@ -0,0 +1,188 @@ +% RANGE = showSpyr (PYR, INDICES, RANGE, GAP, LEVEL_SCALE_FACTOR) +% +% Display a steerable pyramid, specified by PYR and INDICES +% (see buildSpyr), in the current figure. The highpass band is not shown. +% +% RANGE is a 2-vector specifying the values that map to black and +% white, respectively. These values are scaled by +% LEVEL_SCALE_FACTOR^(lev-1) for bands at each level. Passing a value +% of 'auto1' sets RANGE to the min and max values of MATRIX. 'auto2' +% sets RANGE to 3 standard deviations below and above 0.0. In both of +% these cases, the lowpass band is independently scaled. A value of +% 'indep1' sets the range of each subband independently, as in a call +% to showIm(subband,'auto1'). Similarly, 'indep2' causes each subband +% to be scaled independently as if by showIm(subband,'indep2'). +% The default value for RANGE is 'auto2'. +% +% GAP (optional, default=1) specifies the gap in pixels to leave +% between subbands. +% +% LEVEL_SCALE_FACTOR indicates the relative scaling between pyramid +% levels. This should be set to the sum of the kernel taps of the +% lowpass filter used to construct the pyramid (default is 2, which is +% correct for L2-normalized filters. + +% Eero Simoncelli, 2/97. + +function [range] = showSpyr(pyr, pind, range, gap, scale); + +nbands = spyrNumBands(pind); + +%------------------------------------------------------------ +%% OPTIONAL ARGS: + +if (exist('range') ~= 1) + range = 'auto2'; +end + +if (exist('gap') ~= 1) + gap = 1; +end + +if (exist('scale') ~= 1) + scale = 2; +end + +%------------------------------------------------------------ + +ht = spyrHt(pind); +nind = size(pind,1); + +%% Auto range calculations: +if strcmp(range,'auto1') + range = ones(nind,1); + band = spyrHigh(pyr,pind); + [mn,mx] = range2(band); + for lnum = 1:ht + for bnum = 1:nbands + band = spyrBand(pyr,pind,lnum,bnum)/(scale^(lnum-1)); + range((lnum-1)*nbands+bnum+1) = scale^(lnum-1); + [bmn,bmx] = range2(band); + mn = min(mn, bmn); + mx = max(mx, bmx); + end + end + range = range * [mn mx]; % outer product + band = pyrLow(pyr,pind); + [mn,mx] = range2(band); + range(nind,:) = [mn, mx]; + +elseif strcmp(range,'indep1') + range = zeros(nind,2); + for bnum = 1:nind + band = pyrBand(pyr,pind,bnum); + [mn,mx] = range2(band); + range(bnum,:) = [mn mx]; + end + +elseif strcmp(range,'auto2') + range = ones(nind,1); + band = spyrHigh(pyr,pind); + sqsum = sum(sum(band.^2)); numpixels = prod(size(band)); + for lnum = 1:ht + for bnum = 1:nbands + band = spyrBand(pyr,pind,lnum,bnum)/(scale^(lnum-1)); + sqsum = sqsum + sum(sum(band.^2)); + numpixels = numpixels + prod(size(band)); + range((lnum-1)*nbands+bnum+1) = scale^(lnum-1); + end + end + stdev = sqrt(sqsum/(numpixels-1)); + range = range * [ -3*stdev 3*stdev ]; % outer product + band = pyrLow(pyr,pind); + av = mean2(band); stdev = sqrt(var2(band)); + range(nind,:) = [av-2*stdev,av+2*stdev]; + +elseif strcmp(range,'indep2') + range = zeros(nind,2); + for bnum = 1:(nind-1) + band = pyrBand(pyr,pind,bnum); + stdev = sqrt(var2(band)); + range(bnum,:) = [ -3*stdev 3*stdev ]; + end + band = pyrLow(pyr,pind); + av = mean2(band); stdev = sqrt(var2(band)); + range(nind,:) = [av-2*stdev,av+2*stdev]; + +elseif isstr(range) + error(sprintf('Bad RANGE argument: %s',range)) + +elseif ((size(range,1) == 1) & (size(range,2) == 2)) + scales = scale.^[0:(ht-1)]; + scales = ones(nbands,1) * scales; %outer product + scales = [1; scales(:); scale^ht]; %tack on highpass and lowpass + range = scales * range; % outer product + band = pyrLow(pyr,pind); + range(nind,:) = range(nind,:) + mean2(band) - mean(range(nind,:)); + +end + +% CLEAR FIGURE: +clf; + +colormap(gray); +cmap = get(gcf,'Colormap'); +nshades = size(cmap,1); + +% Find background color index: +clr = get(gcf,'Color'); +bg = 1; +dist = norm(cmap(bg,:)-clr); +for n = 1:nshades + ndist = norm(cmap(n,:)-clr); + if (ndist < dist) + dist = ndist; + bg = n; + end +end + +%% Compute positions of subbands: +llpos = ones(nind,2); + +if (nbands == 2) + ncols = 1; nrows = 2; +else + ncols = ceil((nbands+1)/2); nrows = ceil(nbands/2); +end +relpos = [ (1-nrows):0, zeros(1,(ncols-1)); ... + zeros(1,nrows), -1:-1:(1-ncols) ]'; +if (nbands > 1) + mvpos = [-1 -1]; +else + mvpos = [0 -1]; +end +basepos = [0 0]; + +for lnum = 1:ht + ind1 = (lnum-1)*nbands + 2; + sz = pind(ind1,:)+gap; + basepos = basepos + mvpos .* sz; + if (nbands < 5) % to align edges... + sz = sz + gap*(ht-lnum+1); + end + llpos(ind1:ind1+nbands-1,:) = relpos * diag(sz) + ones(nbands,1)*basepos; +end + +% lowpass band +sz = pind(nind-1,:)+gap; +basepos = basepos + mvpos .* sz; +llpos(nind,:) = basepos; + +%% Make position list positive, and allocate appropriate image: +llpos = llpos - ones(nind,1)*min(llpos) + 1; +llpos(1,:) = [1 1]; +urpos = llpos + pind - 1; +d_im = bg + zeros(max(urpos)); + +%% Paste bands into image, (im-r1)*(nshades-1)/(r2-r1) + 1.5 +for bnum=2:nind + mult = (nshades-1) / (range(bnum,2)-range(bnum,1)); + d_im(llpos(bnum,1):urpos(bnum,1), llpos(bnum,2):urpos(bnum,2)) = ... + mult*pyrBand(pyr,pind,bnum) + (1.5-mult*range(bnum,1)); +end + +hh = image(d_im); +axis('off'); +pixelAxes(size(d_im),'full'); +set(hh,'UserData',range); + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/showWpyr.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/showWpyr.m new file mode 100644 index 0000000..510e395 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/showWpyr.m @@ -0,0 +1,204 @@ +% RANGE = showWpyr (PYR, INDICES, RANGE, GAP, LEVEL_SCALE_FACTOR) +% +% Display a separable QMF/wavelet pyramid, specified by PYR and INDICES +% (see buildWpyr), in the current figure. +% +% RANGE is a 2-vector specifying the values that map to black and +% white, respectively. These values are scaled by +% LEVEL_SCALE_FACTOR^(lev-1) for bands at each level. Passing a value +% of 'auto1' sets RANGE to the min and max values of MATRIX. 'auto2' +% sets RANGE to 3 standard deviations below and above 0.0. In both of +% these cases, the lowpass band is independently scaled. A value of +% 'indep1' sets the range of each subband independently, as in a call +% to showIm(subband,'auto1'). Similarly, 'indep2' causes each subband +% to be scaled independently as if by showIm(subband,'indep2'). +% The default value for RANGE is 'auto1' for 1D images, and 'auto2' for +% 2D images. +% +% GAP (optional, default=1) specifies the gap in pixels to leave +% between subbands (2D images only). +% +% LEVEL_SCALE_FACTOR indicates the relative scaling between pyramid +% levels. This should be set to the sum of the kernel taps of the +% lowpass filter used to construct the pyramid (default assumes +% L2-normalized filters, using a value of 2 for 2D images, sqrt(2) for +% 1D images). + +% Eero Simoncelli, 2/97. + +function [range] = showWpyr(pyr, pind, range, gap, scale); + +% Determine 1D or 2D pyramid: +if ((pind(1,1) == 1) | (pind(1,2) ==1)) + nbands = 1; +else + nbands = 3; +end + +%------------------------------------------------------------ +%% OPTIONAL ARGS: + +if (exist('range') ~= 1) + if (nbands==1) + range = 'auto1'; + else + range = 'auto2'; + end +end + +if (exist('gap') ~= 1) + gap = 1; +end + +if (exist('scale') ~= 1) + if (nbands == 1) + scale = sqrt(2); + else + scale = 2; + end +end + +%------------------------------------------------------------ + +ht = wpyrHt(pind); +nind = size(pind,1); + +%% Auto range calculations: +if strcmp(range,'auto1') + range = zeros(nind,1); + mn = 0.0; mx = 0.0; + for lnum = 1:ht + for bnum = 1:nbands + band = wpyrBand(pyr,pind,lnum,bnum)/(scale^(lnum-1)); + range((lnum-1)*nbands+bnum) = scale^(lnum-1); + [bmn,bmx] = range2(band); + mn = min(mn, bmn); mx = max(mx, bmx); + end + end + if (nbands == 1) + pad = (mx-mn)/12; % *** MAGIC NUMBER!! + mn = mn-pad; mx = mx+pad; + end + range = range * [mn mx]; % outer product + band = pyrLow(pyr,pind); + [mn,mx] = range2(band); + if (nbands == 1) + pad = (mx-mn)/12; % *** MAGIC NUMBER!! + mn = mn-pad; mx = mx+pad; + end + range(nind,:) = [mn, mx]; + +elseif strcmp(range,'indep1') + range = zeros(nind,2); + for bnum = 1:nind + band = pyrBand(pyr,pind,bnum); + [mn,mx] = range2(band); + if (nbands == 1) + pad = (mx-mn)/12; % *** MAGIC NUMBER!! + mn = mn-pad; mx = mx+pad; + end + range(bnum,:) = [mn mx]; + end + +elseif strcmp(range,'auto2') + range = zeros(nind,1); + sqsum = 0; numpixels = 0; + for lnum = 1:ht + for bnum = 1:nbands + band = wpyrBand(pyr,pind,lnum,bnum)/(scale^(lnum-1)); + sqsum = sqsum + sum(sum(band.^2)); + numpixels = numpixels + prod(size(band)); + range((lnum-1)*nbands+bnum) = scale^(lnum-1); + end + end + stdev = sqrt(sqsum/(numpixels-1)); + range = range * [ -3*stdev 3*stdev ]; % outer product + band = pyrLow(pyr,pind); + av = mean2(band); stdev = sqrt(var2(band)); + range(nind,:) = [av-2*stdev,av+2*stdev]; + +elseif strcmp(range,'indep2') + range = zeros(nind,2); + for bnum = 1:(nind-1) + band = pyrBand(pyr,pind,bnum); + stdev = sqrt(var2(band)); + range(bnum,:) = [ -3*stdev 3*stdev ]; + end + band = pyrLow(pyr,pind); + av = mean2(band); stdev = sqrt(var2(band)); + range(nind,:) = [av-2*stdev,av+2*stdev]; + +elseif isstr(range) + error(sprintf('Bad RANGE argument: %s',range)) + +elseif ((size(range,1) == 1) & (size(range,2) == 2)) + scales = scale.^[0:ht]; + if (nbands ~= 1) + scales = [scales; scales; scales]; + end + range = scales(:) * range; % outer product + band = pyrLow(pyr,pind); + range(nind,:) = range(nind,:) + mean2(band) - mean(range(nind,:)); + +end + +% CLEAR FIGURE: +clf; + +if (nbands == 1) + + %%%%% 1D signal: + for bnum=1:nind + band = pyrBand(pyr,pind,bnum); + subplot(nind,1,nind-bnum+1); + plot(band); + axis([1, prod(size(band)), range(bnum,:)]); + end + +else + + %%%%% 2D signal: + colormap(gray); + cmap = get(gcf,'Colormap'); + nshades = size(cmap,1); + + % Find background color index: + clr = get(gcf,'Color'); + bg = 1; + dist = norm(cmap(bg,:)-clr); + for n = 1:nshades + ndist = norm(cmap(n,:)-clr); + if (ndist < dist) + dist = ndist; + bg = n; + end + end + + %% Compute positions of subbands: + llpos = ones(nind,2); + for lnum = 1:ht + ind1 = nbands*(lnum-1) + 1; + xpos = pind(ind1,2) + 1 + gap*(ht-lnum+1); + ypos = pind(ind1+1,1) + 1 + gap*(ht-lnum+1); + llpos(ind1:ind1+2,:) = [ypos 1; 1 xpos; ypos xpos]; + end + llpos(nind,:) = [1 1]; %lowpass + + %% Make position list positive, and allocate appropriate image: + llpos = llpos - ones(nind,1)*min(llpos) + 1; + urpos = llpos + pind - 1; + d_im = bg + zeros(max(urpos)); + + %% Paste bands into image, (im-r1)*(nshades-1)/(r2-r1) + 1.5 + for bnum=1:nind + mult = (nshades-1) / (range(bnum,2)-range(bnum,1)); + d_im(llpos(bnum,1):urpos(bnum,1), llpos(bnum,2):urpos(bnum,2)) = ... + mult*pyrBand(pyr,pind,bnum) + (1.5-mult*range(bnum,1)); + end + + hh = image(d_im); + axis('off'); + pixelAxes(size(d_im),'full'); + set(hh,'UserData',range); + +end diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/skew2.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/skew2.m new file mode 100644 index 0000000..623d6ca --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/skew2.m @@ -0,0 +1,21 @@ +% S = SKEW2(MTX,MEAN,VAR) +% +% Sample skew (third moment divided by variance^3/2) of a matrix. +% MEAN (optional) and VAR (optional) make the computation faster. + +function res = skew2(mtx, mn, v) + +if (exist('mn') ~= 1) + mn = mean2(mtx); +end + +if (exist('v') ~= 1) + v = var2(mtx,mn); +end + +if (isreal(mtx)) + res = mean(mean((mtx-mn).^3)) / (v^(3/2)); +else + res = mean(mean(real(mtx-mn).^3)) / (real(v)^(3/2)) + ... + i * mean(mean(imag(mtx-mn).^3)) / (imag(v)^(3/2)); +end diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/sp0Filters.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/sp0Filters.m new file mode 100644 index 0000000..6b25e36 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/sp0Filters.m @@ -0,0 +1,72 @@ +% Steerable pyramid filters. Transform described in: +% +% @INPROCEEDINGS{Simoncelli95b, +% TITLE = "The Steerable Pyramid: A Flexible Architecture for +% Multi-Scale Derivative Computation", +% AUTHOR = "E P Simoncelli and W T Freeman", +% BOOKTITLE = "Second Int'l Conf on Image Processing", +% ADDRESS = "Washington, DC", MONTH = "October", YEAR = 1995 } +% +% Filter kernel design described in: +% +%@INPROCEEDINGS{Karasaridis96, +% TITLE = "A Filter Design Technique for +% Steerable Pyramid Image Transforms", +% AUTHOR = "A Karasaridis and E P Simoncelli", +% BOOKTITLE = "ICASSP", ADDRESS = "Atlanta, GA", +% MONTH = "May", YEAR = 1996 } + +% Eero Simoncelli, 6/96. + +function [lo0filt,hi0filt,lofilt,bfilts,mtx,harmonics] = sp0Filters(); + +harmonics = [ 0 ]; + +lo0filt = [ ... +-4.514000e-04 -1.137100e-04 -3.725800e-04 -3.743860e-03 -3.725800e-04 -1.137100e-04 -4.514000e-04 +-1.137100e-04 -6.119520e-03 -1.344160e-02 -7.563200e-03 -1.344160e-02 -6.119520e-03 -1.137100e-04 +-3.725800e-04 -1.344160e-02 6.441488e-02 1.524935e-01 6.441488e-02 -1.344160e-02 -3.725800e-04 +-3.743860e-03 -7.563200e-03 1.524935e-01 3.153017e-01 1.524935e-01 -7.563200e-03 -3.743860e-03 +-3.725800e-04 -1.344160e-02 6.441488e-02 1.524935e-01 6.441488e-02 -1.344160e-02 -3.725800e-04 +-1.137100e-04 -6.119520e-03 -1.344160e-02 -7.563200e-03 -1.344160e-02 -6.119520e-03 -1.137100e-04 +-4.514000e-04 -1.137100e-04 -3.725800e-04 -3.743860e-03 -3.725800e-04 -1.137100e-04 -4.514000e-04]; + +lofilt = [ ... +-2.257000e-04 -8.064400e-04 -5.686000e-05 8.741400e-04 -1.862800e-04 -1.031640e-03 -1.871920e-03 -1.031640e-03 -1.862800e-04 8.741400e-04 -5.686000e-05 -8.064400e-04 -2.257000e-04 +-8.064400e-04 1.417620e-03 -1.903800e-04 -2.449060e-03 -4.596420e-03 -7.006740e-03 -6.948900e-03 -7.006740e-03 -4.596420e-03 -2.449060e-03 -1.903800e-04 1.417620e-03 -8.064400e-04 +-5.686000e-05 -1.903800e-04 -3.059760e-03 -6.401000e-03 -6.720800e-03 -5.236180e-03 -3.781600e-03 -5.236180e-03 -6.720800e-03 -6.401000e-03 -3.059760e-03 -1.903800e-04 -5.686000e-05 +8.741400e-04 -2.449060e-03 -6.401000e-03 -5.260020e-03 3.938620e-03 1.722078e-02 2.449600e-02 1.722078e-02 3.938620e-03 -5.260020e-03 -6.401000e-03 -2.449060e-03 8.741400e-04 +-1.862800e-04 -4.596420e-03 -6.720800e-03 3.938620e-03 3.220744e-02 6.306262e-02 7.624674e-02 6.306262e-02 3.220744e-02 3.938620e-03 -6.720800e-03 -4.596420e-03 -1.862800e-04 +-1.031640e-03 -7.006740e-03 -5.236180e-03 1.722078e-02 6.306262e-02 1.116388e-01 1.348999e-01 1.116388e-01 6.306262e-02 1.722078e-02 -5.236180e-03 -7.006740e-03 -1.031640e-03 +-1.871920e-03 -6.948900e-03 -3.781600e-03 2.449600e-02 7.624674e-02 1.348999e-01 1.576508e-01 1.348999e-01 7.624674e-02 2.449600e-02 -3.781600e-03 -6.948900e-03 -1.871920e-03 +-1.031640e-03 -7.006740e-03 -5.236180e-03 1.722078e-02 6.306262e-02 1.116388e-01 1.348999e-01 1.116388e-01 6.306262e-02 1.722078e-02 -5.236180e-03 -7.006740e-03 -1.031640e-03 +-1.862800e-04 -4.596420e-03 -6.720800e-03 3.938620e-03 3.220744e-02 6.306262e-02 7.624674e-02 6.306262e-02 3.220744e-02 3.938620e-03 -6.720800e-03 -4.596420e-03 -1.862800e-04 +8.741400e-04 -2.449060e-03 -6.401000e-03 -5.260020e-03 3.938620e-03 1.722078e-02 2.449600e-02 1.722078e-02 3.938620e-03 -5.260020e-03 -6.401000e-03 -2.449060e-03 8.741400e-04 +-5.686000e-05 -1.903800e-04 -3.059760e-03 -6.401000e-03 -6.720800e-03 -5.236180e-03 -3.781600e-03 -5.236180e-03 -6.720800e-03 -6.401000e-03 -3.059760e-03 -1.903800e-04 -5.686000e-05 +-8.064400e-04 1.417620e-03 -1.903800e-04 -2.449060e-03 -4.596420e-03 -7.006740e-03 -6.948900e-03 -7.006740e-03 -4.596420e-03 -2.449060e-03 -1.903800e-04 1.417620e-03 -8.064400e-04 +-2.257000e-04 -8.064400e-04 -5.686000e-05 8.741400e-04 -1.862800e-04 -1.031640e-03 -1.871920e-03 -1.031640e-03 -1.862800e-04 8.741400e-04 -5.686000e-05 -8.064400e-04 -2.257000e-04]; + +mtx = [ 1.000000 ]; + +hi0filt = [... +5.997200e-04 -6.068000e-05 -3.324900e-04 -3.325600e-04 -2.406600e-04 -3.325600e-04 -3.324900e-04 -6.068000e-05 5.997200e-04 +-6.068000e-05 1.263100e-04 4.927100e-04 1.459700e-04 -3.732100e-04 1.459700e-04 4.927100e-04 1.263100e-04 -6.068000e-05 +-3.324900e-04 4.927100e-04 -1.616650e-03 -1.437358e-02 -2.420138e-02 -1.437358e-02 -1.616650e-03 4.927100e-04 -3.324900e-04 +-3.325600e-04 1.459700e-04 -1.437358e-02 -6.300923e-02 -9.623594e-02 -6.300923e-02 -1.437358e-02 1.459700e-04 -3.325600e-04 +-2.406600e-04 -3.732100e-04 -2.420138e-02 -9.623594e-02 8.554893e-01 -9.623594e-02 -2.420138e-02 -3.732100e-04 -2.406600e-04 +-3.325600e-04 1.459700e-04 -1.437358e-02 -6.300923e-02 -9.623594e-02 -6.300923e-02 -1.437358e-02 1.459700e-04 -3.325600e-04 +-3.324900e-04 4.927100e-04 -1.616650e-03 -1.437358e-02 -2.420138e-02 -1.437358e-02 -1.616650e-03 4.927100e-04 -3.324900e-04 +-6.068000e-05 1.263100e-04 4.927100e-04 1.459700e-04 -3.732100e-04 1.459700e-04 4.927100e-04 1.263100e-04 -6.068000e-05 +5.997200e-04 -6.068000e-05 -3.324900e-04 -3.325600e-04 -2.406600e-04 -3.325600e-04 -3.324900e-04 -6.068000e-05 5.997200e-04 ]; + +bfilts = [ ... +-9.066000e-05 -1.738640e-03 -4.942500e-03 -7.889390e-03 -1.009473e-02 -7.889390e-03 -4.942500e-03 -1.738640e-03 -9.066000e-05 ... +-1.738640e-03 -4.625150e-03 -7.272540e-03 -7.623410e-03 -9.091950e-03 -7.623410e-03 -7.272540e-03 -4.625150e-03 -1.738640e-03 ... +-4.942500e-03 -7.272540e-03 -2.129540e-02 -2.435662e-02 -3.487008e-02 -2.435662e-02 -2.129540e-02 -7.272540e-03 -4.942500e-03 ... +-7.889390e-03 -7.623410e-03 -2.435662e-02 -1.730466e-02 -3.158605e-02 -1.730466e-02 -2.435662e-02 -7.623410e-03 -7.889390e-03 ... +-1.009473e-02 -9.091950e-03 -3.487008e-02 -3.158605e-02 9.464195e-01 -3.158605e-02 -3.487008e-02 -9.091950e-03 -1.009473e-02 ... +-7.889390e-03 -7.623410e-03 -2.435662e-02 -1.730466e-02 -3.158605e-02 -1.730466e-02 -2.435662e-02 -7.623410e-03 -7.889390e-03 ... +-4.942500e-03 -7.272540e-03 -2.129540e-02 -2.435662e-02 -3.487008e-02 -2.435662e-02 -2.129540e-02 -7.272540e-03 -4.942500e-03 ... +-1.738640e-03 -4.625150e-03 -7.272540e-03 -7.623410e-03 -9.091950e-03 -7.623410e-03 -7.272540e-03 -4.625150e-03 -1.738640e-03 ... +-9.066000e-05 -1.738640e-03 -4.942500e-03 -7.889390e-03 -1.009473e-02 -7.889390e-03 -4.942500e-03 -1.738640e-03 -9.066000e-05 ]'; + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/sp1Filters.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/sp1Filters.m new file mode 100644 index 0000000..215e651 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/sp1Filters.m @@ -0,0 +1,91 @@ +% Steerable pyramid filters. Transform described in: +% +% @INPROCEEDINGS{Simoncelli95b, +% TITLE = "The Steerable Pyramid: A Flexible Architecture for +% Multi-Scale Derivative Computation", +% AUTHOR = "E P Simoncelli and W T Freeman", +% BOOKTITLE = "Second Int'l Conf on Image Processing", +% ADDRESS = "Washington, DC", MONTH = "October", YEAR = 1995 } +% +% Filter kernel design described in: +% +%@INPROCEEDINGS{Karasaridis96, +% TITLE = "A Filter Design Technique for +% Steerable Pyramid Image Transforms", +% AUTHOR = "A Karasaridis and E P Simoncelli", +% BOOKTITLE = "ICASSP", ADDRESS = "Atlanta, GA", +% MONTH = "May", YEAR = 1996 } + +% Eero Simoncelli, 6/96. + +function [lo0filt,hi0filt,lofilt,bfilts,mtx,harmonics] = sp1Filters(); + +harmonics = [ 1 ]; + +%% filters only contain first harmonic. +mtx = eye(2); + +lo0filt = [ ... +-8.701000e-05 -1.354280e-03 -1.601260e-03 -5.033700e-04 2.524010e-03 -5.033700e-04 -1.601260e-03 -1.354280e-03 -8.701000e-05 +-1.354280e-03 2.921580e-03 7.522720e-03 8.224420e-03 1.107620e-03 8.224420e-03 7.522720e-03 2.921580e-03 -1.354280e-03 +-1.601260e-03 7.522720e-03 -7.061290e-03 -3.769487e-02 -3.297137e-02 -3.769487e-02 -7.061290e-03 7.522720e-03 -1.601260e-03 +-5.033700e-04 8.224420e-03 -3.769487e-02 4.381320e-02 1.811603e-01 4.381320e-02 -3.769487e-02 8.224420e-03 -5.033700e-04 +2.524010e-03 1.107620e-03 -3.297137e-02 1.811603e-01 4.376250e-01 1.811603e-01 -3.297137e-02 1.107620e-03 2.524010e-03 +-5.033700e-04 8.224420e-03 -3.769487e-02 4.381320e-02 1.811603e-01 4.381320e-02 -3.769487e-02 8.224420e-03 -5.033700e-04 +-1.601260e-03 7.522720e-03 -7.061290e-03 -3.769487e-02 -3.297137e-02 -3.769487e-02 -7.061290e-03 7.522720e-03 -1.601260e-03 +-1.354280e-03 2.921580e-03 7.522720e-03 8.224420e-03 1.107620e-03 8.224420e-03 7.522720e-03 2.921580e-03 -1.354280e-03 +-8.701000e-05 -1.354280e-03 -1.601260e-03 -5.033700e-04 2.524010e-03 -5.033700e-04 -1.601260e-03 -1.354280e-03 -8.701000e-05 +]; + +lofilt = [ ... +-4.350000e-05 1.207800e-04 -6.771400e-04 -1.243400e-04 -8.006400e-04 -1.597040e-03 -2.516800e-04 -4.202000e-04 1.262000e-03 -4.202000e-04 -2.516800e-04 -1.597040e-03 -8.006400e-04 -1.243400e-04 -6.771400e-04 1.207800e-04 -4.350000e-05 ; ... +1.207800e-04 4.460600e-04 -5.814600e-04 5.621600e-04 -1.368800e-04 2.325540e-03 2.889860e-03 4.287280e-03 5.589400e-03 4.287280e-03 2.889860e-03 2.325540e-03 -1.368800e-04 5.621600e-04 -5.814600e-04 4.460600e-04 1.207800e-04 ; ... +-6.771400e-04 -5.814600e-04 1.460780e-03 2.160540e-03 3.761360e-03 3.080980e-03 4.112200e-03 2.221220e-03 5.538200e-04 2.221220e-03 4.112200e-03 3.080980e-03 3.761360e-03 2.160540e-03 1.460780e-03 -5.814600e-04 -6.771400e-04 ; ... +-1.243400e-04 5.621600e-04 2.160540e-03 3.175780e-03 3.184680e-03 -1.777480e-03 -7.431700e-03 -9.056920e-03 -9.637220e-03 -9.056920e-03 -7.431700e-03 -1.777480e-03 3.184680e-03 3.175780e-03 2.160540e-03 5.621600e-04 -1.243400e-04 ; ... +-8.006400e-04 -1.368800e-04 3.761360e-03 3.184680e-03 -3.530640e-03 -1.260420e-02 -1.884744e-02 -1.750818e-02 -1.648568e-02 -1.750818e-02 -1.884744e-02 -1.260420e-02 -3.530640e-03 3.184680e-03 3.761360e-03 -1.368800e-04 -8.006400e-04 ; ... +-1.597040e-03 2.325540e-03 3.080980e-03 -1.777480e-03 -1.260420e-02 -2.022938e-02 -1.109170e-02 3.955660e-03 1.438512e-02 3.955660e-03 -1.109170e-02 -2.022938e-02 -1.260420e-02 -1.777480e-03 3.080980e-03 2.325540e-03 -1.597040e-03 ; ... +-2.516800e-04 2.889860e-03 4.112200e-03 -7.431700e-03 -1.884744e-02 -1.109170e-02 2.190660e-02 6.806584e-02 9.058014e-02 6.806584e-02 2.190660e-02 -1.109170e-02 -1.884744e-02 -7.431700e-03 4.112200e-03 2.889860e-03 -2.516800e-04 ; ... +-4.202000e-04 4.287280e-03 2.221220e-03 -9.056920e-03 -1.750818e-02 3.955660e-03 6.806584e-02 1.445500e-01 1.773651e-01 1.445500e-01 6.806584e-02 3.955660e-03 -1.750818e-02 -9.056920e-03 2.221220e-03 4.287280e-03 -4.202000e-04 ; ... +1.262000e-03 5.589400e-03 5.538200e-04 -9.637220e-03 -1.648568e-02 1.438512e-02 9.058014e-02 1.773651e-01 2.120374e-01 1.773651e-01 9.058014e-02 1.438512e-02 -1.648568e-02 -9.637220e-03 5.538200e-04 5.589400e-03 1.262000e-03 ; ... +-4.202000e-04 4.287280e-03 2.221220e-03 -9.056920e-03 -1.750818e-02 3.955660e-03 6.806584e-02 1.445500e-01 1.773651e-01 1.445500e-01 6.806584e-02 3.955660e-03 -1.750818e-02 -9.056920e-03 2.221220e-03 4.287280e-03 -4.202000e-04 ; ... +-2.516800e-04 2.889860e-03 4.112200e-03 -7.431700e-03 -1.884744e-02 -1.109170e-02 2.190660e-02 6.806584e-02 9.058014e-02 6.806584e-02 2.190660e-02 -1.109170e-02 -1.884744e-02 -7.431700e-03 4.112200e-03 2.889860e-03 -2.516800e-04 ; ... +-1.597040e-03 2.325540e-03 3.080980e-03 -1.777480e-03 -1.260420e-02 -2.022938e-02 -1.109170e-02 3.955660e-03 1.438512e-02 3.955660e-03 -1.109170e-02 -2.022938e-02 -1.260420e-02 -1.777480e-03 3.080980e-03 2.325540e-03 -1.597040e-03 ; ... +-8.006400e-04 -1.368800e-04 3.761360e-03 3.184680e-03 -3.530640e-03 -1.260420e-02 -1.884744e-02 -1.750818e-02 -1.648568e-02 -1.750818e-02 -1.884744e-02 -1.260420e-02 -3.530640e-03 3.184680e-03 3.761360e-03 -1.368800e-04 -8.006400e-04 ; ... +-1.243400e-04 5.621600e-04 2.160540e-03 3.175780e-03 3.184680e-03 -1.777480e-03 -7.431700e-03 -9.056920e-03 -9.637220e-03 -9.056920e-03 -7.431700e-03 -1.777480e-03 3.184680e-03 3.175780e-03 2.160540e-03 5.621600e-04 -1.243400e-04 ; ... +-6.771400e-04 -5.814600e-04 1.460780e-03 2.160540e-03 3.761360e-03 3.080980e-03 4.112200e-03 2.221220e-03 5.538200e-04 2.221220e-03 4.112200e-03 3.080980e-03 3.761360e-03 2.160540e-03 1.460780e-03 -5.814600e-04 -6.771400e-04 ; ... +1.207800e-04 4.460600e-04 -5.814600e-04 5.621600e-04 -1.368800e-04 2.325540e-03 2.889860e-03 4.287280e-03 5.589400e-03 4.287280e-03 2.889860e-03 2.325540e-03 -1.368800e-04 5.621600e-04 -5.814600e-04 4.460600e-04 1.207800e-04 ; ... +-4.350000e-05 1.207800e-04 -6.771400e-04 -1.243400e-04 -8.006400e-04 -1.597040e-03 -2.516800e-04 -4.202000e-04 1.262000e-03 -4.202000e-04 -2.516800e-04 -1.597040e-03 -8.006400e-04 -1.243400e-04 -6.771400e-04 1.207800e-04 -4.350000e-05 ]; + +hi0filt = [... +-9.570000e-04 -2.424100e-04 -1.424720e-03 -8.742600e-04 -1.166810e-03 -8.742600e-04 -1.424720e-03 -2.424100e-04 -9.570000e-04 ; ... +-2.424100e-04 -4.317530e-03 8.998600e-04 9.156420e-03 1.098012e-02 9.156420e-03 8.998600e-04 -4.317530e-03 -2.424100e-04 ; ... +-1.424720e-03 8.998600e-04 1.706347e-02 1.094866e-02 -5.897780e-03 1.094866e-02 1.706347e-02 8.998600e-04 -1.424720e-03 ; ... +-8.742600e-04 9.156420e-03 1.094866e-02 -7.841370e-02 -1.562827e-01 -7.841370e-02 1.094866e-02 9.156420e-03 -8.742600e-04 ; ... +-1.166810e-03 1.098012e-02 -5.897780e-03 -1.562827e-01 7.282593e-01 -1.562827e-01 -5.897780e-03 1.098012e-02 -1.166810e-03 ; ... +-8.742600e-04 9.156420e-03 1.094866e-02 -7.841370e-02 -1.562827e-01 -7.841370e-02 1.094866e-02 9.156420e-03 -8.742600e-04 ; ... +-1.424720e-03 8.998600e-04 1.706347e-02 1.094866e-02 -5.897780e-03 1.094866e-02 1.706347e-02 8.998600e-04 -1.424720e-03 ; ... +-2.424100e-04 -4.317530e-03 8.998600e-04 9.156420e-03 1.098012e-02 9.156420e-03 8.998600e-04 -4.317530e-03 -2.424100e-04 ; ... +-9.570000e-04 -2.424100e-04 -1.424720e-03 -8.742600e-04 -1.166810e-03 -8.742600e-04 -1.424720e-03 -2.424100e-04 -9.570000e-04 ]; + +bfilts = -[ ... +6.125880e-03 -8.052600e-03 -2.103714e-02 -1.536890e-02 -1.851466e-02 -1.536890e-02 -2.103714e-02 -8.052600e-03 6.125880e-03 ... +-1.287416e-02 -9.611520e-03 1.023569e-02 6.009450e-03 1.872620e-03 6.009450e-03 1.023569e-02 -9.611520e-03 -1.287416e-02 ... +-5.641530e-03 4.168400e-03 -2.382180e-02 -5.375324e-02 -2.076086e-02 -5.375324e-02 -2.382180e-02 4.168400e-03 -5.641530e-03 ... +-8.957260e-03 -1.751170e-03 -1.836909e-02 1.265655e-01 2.996168e-01 1.265655e-01 -1.836909e-02 -1.751170e-03 -8.957260e-03 ... +0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00 ... +8.957260e-03 1.751170e-03 1.836909e-02 -1.265655e-01 -2.996168e-01 -1.265655e-01 1.836909e-02 1.751170e-03 8.957260e-03 ... +5.641530e-03 -4.168400e-03 2.382180e-02 5.375324e-02 2.076086e-02 5.375324e-02 2.382180e-02 -4.168400e-03 5.641530e-03 ... +1.287416e-02 9.611520e-03 -1.023569e-02 -6.009450e-03 -1.872620e-03 -6.009450e-03 -1.023569e-02 9.611520e-03 1.287416e-02 ... +-6.125880e-03 8.052600e-03 2.103714e-02 1.536890e-02 1.851466e-02 1.536890e-02 2.103714e-02 8.052600e-03 -6.125880e-03; ... +... +-6.125880e-03 1.287416e-02 5.641530e-03 8.957260e-03 0.000000e+00 -8.957260e-03 -5.641530e-03 -1.287416e-02 6.125880e-03 ... +8.052600e-03 9.611520e-03 -4.168400e-03 1.751170e-03 0.000000e+00 -1.751170e-03 4.168400e-03 -9.611520e-03 -8.052600e-03 ... +2.103714e-02 -1.023569e-02 2.382180e-02 1.836909e-02 0.000000e+00 -1.836909e-02 -2.382180e-02 1.023569e-02 -2.103714e-02 ... +1.536890e-02 -6.009450e-03 5.375324e-02 -1.265655e-01 0.000000e+00 1.265655e-01 -5.375324e-02 6.009450e-03 -1.536890e-02 ... +1.851466e-02 -1.872620e-03 2.076086e-02 -2.996168e-01 0.000000e+00 2.996168e-01 -2.076086e-02 1.872620e-03 -1.851466e-02 ... +1.536890e-02 -6.009450e-03 5.375324e-02 -1.265655e-01 0.000000e+00 1.265655e-01 -5.375324e-02 6.009450e-03 -1.536890e-02 ... +2.103714e-02 -1.023569e-02 2.382180e-02 1.836909e-02 0.000000e+00 -1.836909e-02 -2.382180e-02 1.023569e-02 -2.103714e-02 ... +8.052600e-03 9.611520e-03 -4.168400e-03 1.751170e-03 0.000000e+00 -1.751170e-03 4.168400e-03 -9.611520e-03 -8.052600e-03 ... +-6.125880e-03 1.287416e-02 5.641530e-03 8.957260e-03 0.000000e+00 -8.957260e-03 -5.641530e-03 -1.287416e-02 6.125880e-03 ... +]'; + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/sp3Filters.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/sp3Filters.m new file mode 100644 index 0000000..c9cfaaf --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/sp3Filters.m @@ -0,0 +1,121 @@ +% Steerable pyramid filters. Transform described in: +% +% @INPROCEEDINGS{Simoncelli95b, +% TITLE = "The Steerable Pyramid: A Flexible Architecture for +% Multi-Scale Derivative Computation", +% AUTHOR = "E P Simoncelli and W T Freeman", +% BOOKTITLE = "Second Int'l Conf on Image Processing", +% ADDRESS = "Washington, DC", MONTH = "October", YEAR = 1995 } +% +% Filter kernel design described in: +% +%@INPROCEEDINGS{Karasaridis96, +% TITLE = "A Filter Design Technique for +% Steerable Pyramid Image Transforms", +% AUTHOR = "A Karasaridis and E P Simoncelli", +% BOOKTITLE = "ICASSP", ADDRESS = "Atlanta, GA", +% MONTH = "May", YEAR = 1996 } + +% Eero Simoncelli, 6/96. + +function [lo0filt,hi0filt,lofilt,bfilts,mtx,harmonics] = sp3Filters(); + +harmonics = [1 3]; + +mtx = [ ... + 0.5000 0.3536 0 -0.3536 + -0.0000 0.3536 0.5000 0.3536 + 0.5000 -0.3536 0 0.3536 + -0.0000 0.3536 -0.5000 0.3536]; + +hi0filt = [ +-4.0483998600E-4 -6.2596000498E-4 -3.7829999201E-5 8.8387000142E-4 1.5450799838E-3 1.9235999789E-3 2.0687500946E-3 2.0898699295E-3 2.0687500946E-3 1.9235999789E-3 1.5450799838E-3 8.8387000142E-4 -3.7829999201E-5 -6.2596000498E-4 -4.0483998600E-4 +-6.2596000498E-4 -3.2734998967E-4 7.7435001731E-4 1.5874400269E-3 2.1750701126E-3 2.5626500137E-3 2.2892199922E-3 1.9755100366E-3 2.2892199922E-3 2.5626500137E-3 2.1750701126E-3 1.5874400269E-3 7.7435001731E-4 -3.2734998967E-4 -6.2596000498E-4 +-3.7829999201E-5 7.7435001731E-4 1.1793200392E-3 1.4050999889E-3 2.2253401112E-3 2.1145299543E-3 3.3578000148E-4 -8.3368999185E-4 3.3578000148E-4 2.1145299543E-3 2.2253401112E-3 1.4050999889E-3 1.1793200392E-3 7.7435001731E-4 -3.7829999201E-5 +8.8387000142E-4 1.5874400269E-3 1.4050999889E-3 1.2960999738E-3 -4.9274001503E-4 -3.1295299996E-3 -4.5751798898E-3 -5.1014497876E-3 -4.5751798898E-3 -3.1295299996E-3 -4.9274001503E-4 1.2960999738E-3 1.4050999889E-3 1.5874400269E-3 8.8387000142E-4 +1.5450799838E-3 2.1750701126E-3 2.2253401112E-3 -4.9274001503E-4 -6.3222697936E-3 -2.7556000277E-3 5.3632198833E-3 7.3032598011E-3 5.3632198833E-3 -2.7556000277E-3 -6.3222697936E-3 -4.9274001503E-4 2.2253401112E-3 2.1750701126E-3 1.5450799838E-3 +1.9235999789E-3 2.5626500137E-3 2.1145299543E-3 -3.1295299996E-3 -2.7556000277E-3 1.3962360099E-2 7.8046298586E-3 -9.3812197447E-3 7.8046298586E-3 1.3962360099E-2 -2.7556000277E-3 -3.1295299996E-3 2.1145299543E-3 2.5626500137E-3 1.9235999789E-3 +2.0687500946E-3 2.2892199922E-3 3.3578000148E-4 -4.5751798898E-3 5.3632198833E-3 7.8046298586E-3 -7.9501636326E-2 -0.1554141641 -7.9501636326E-2 7.8046298586E-3 5.3632198833E-3 -4.5751798898E-3 3.3578000148E-4 2.2892199922E-3 2.0687500946E-3 +2.0898699295E-3 1.9755100366E-3 -8.3368999185E-4 -5.1014497876E-3 7.3032598011E-3 -9.3812197447E-3 -0.1554141641 0.7303866148 -0.1554141641 -9.3812197447E-3 7.3032598011E-3 -5.1014497876E-3 -8.3368999185E-4 1.9755100366E-3 2.0898699295E-3 +2.0687500946E-3 2.2892199922E-3 3.3578000148E-4 -4.5751798898E-3 5.3632198833E-3 7.8046298586E-3 -7.9501636326E-2 -0.1554141641 -7.9501636326E-2 7.8046298586E-3 5.3632198833E-3 -4.5751798898E-3 3.3578000148E-4 2.2892199922E-3 2.0687500946E-3 +1.9235999789E-3 2.5626500137E-3 2.1145299543E-3 -3.1295299996E-3 -2.7556000277E-3 1.3962360099E-2 7.8046298586E-3 -9.3812197447E-3 7.8046298586E-3 1.3962360099E-2 -2.7556000277E-3 -3.1295299996E-3 2.1145299543E-3 2.5626500137E-3 1.9235999789E-3 +1.5450799838E-3 2.1750701126E-3 2.2253401112E-3 -4.9274001503E-4 -6.3222697936E-3 -2.7556000277E-3 5.3632198833E-3 7.3032598011E-3 5.3632198833E-3 -2.7556000277E-3 -6.3222697936E-3 -4.9274001503E-4 2.2253401112E-3 2.1750701126E-3 1.5450799838E-3 +8.8387000142E-4 1.5874400269E-3 1.4050999889E-3 1.2960999738E-3 -4.9274001503E-4 -3.1295299996E-3 -4.5751798898E-3 -5.1014497876E-3 -4.5751798898E-3 -3.1295299996E-3 -4.9274001503E-4 1.2960999738E-3 1.4050999889E-3 1.5874400269E-3 8.8387000142E-4 +-3.7829999201E-5 7.7435001731E-4 1.1793200392E-3 1.4050999889E-3 2.2253401112E-3 2.1145299543E-3 3.3578000148E-4 -8.3368999185E-4 3.3578000148E-4 2.1145299543E-3 2.2253401112E-3 1.4050999889E-3 1.1793200392E-3 7.7435001731E-4 -3.7829999201E-5 +-6.2596000498E-4 -3.2734998967E-4 7.7435001731E-4 1.5874400269E-3 2.1750701126E-3 2.5626500137E-3 2.2892199922E-3 1.9755100366E-3 2.2892199922E-3 2.5626500137E-3 2.1750701126E-3 1.5874400269E-3 7.7435001731E-4 -3.2734998967E-4 -6.2596000498E-4 +-4.0483998600E-4 -6.2596000498E-4 -3.7829999201E-5 8.8387000142E-4 1.5450799838E-3 1.9235999789E-3 2.0687500946E-3 2.0898699295E-3 2.0687500946E-3 1.9235999789E-3 1.5450799838E-3 8.8387000142E-4 -3.7829999201E-5 -6.2596000498E-4 -4.0483998600E-4 +]; + +lo0filt = [ +-8.7009997515E-5 -1.3542800443E-3 -1.6012600390E-3 -5.0337001448E-4 2.5240099058E-3 -5.0337001448E-4 -1.6012600390E-3 -1.3542800443E-3 -8.7009997515E-5 +-1.3542800443E-3 2.9215801042E-3 7.5227199122E-3 8.2244202495E-3 1.1076199589E-3 8.2244202495E-3 7.5227199122E-3 2.9215801042E-3 -1.3542800443E-3 +-1.6012600390E-3 7.5227199122E-3 -7.0612900890E-3 -3.7694871426E-2 -3.2971370965E-2 -3.7694871426E-2 -7.0612900890E-3 7.5227199122E-3 -1.6012600390E-3 +-5.0337001448E-4 8.2244202495E-3 -3.7694871426E-2 4.3813198805E-2 0.1811603010 4.3813198805E-2 -3.7694871426E-2 8.2244202495E-3 -5.0337001448E-4 +2.5240099058E-3 1.1076199589E-3 -3.2971370965E-2 0.1811603010 0.4376249909 0.1811603010 -3.2971370965E-2 1.1076199589E-3 2.5240099058E-3 +-5.0337001448E-4 8.2244202495E-3 -3.7694871426E-2 4.3813198805E-2 0.1811603010 4.3813198805E-2 -3.7694871426E-2 8.2244202495E-3 -5.0337001448E-4 +-1.6012600390E-3 7.5227199122E-3 -7.0612900890E-3 -3.7694871426E-2 -3.2971370965E-2 -3.7694871426E-2 -7.0612900890E-3 7.5227199122E-3 -1.6012600390E-3 +-1.3542800443E-3 2.9215801042E-3 7.5227199122E-3 8.2244202495E-3 1.1076199589E-3 8.2244202495E-3 7.5227199122E-3 2.9215801042E-3 -1.3542800443E-3 +-8.7009997515E-5 -1.3542800443E-3 -1.6012600390E-3 -5.0337001448E-4 2.5240099058E-3 -5.0337001448E-4 -1.6012600390E-3 -1.3542800443E-3 -8.7009997515E-5 +]; + +lofilt = [ +-4.3500000174E-5 1.2078000145E-4 -6.7714002216E-4 -1.2434000382E-4 -8.0063997302E-4 -1.5970399836E-3 -2.5168000138E-4 -4.2019999819E-4 1.2619999470E-3 -4.2019999819E-4 -2.5168000138E-4 -1.5970399836E-3 -8.0063997302E-4 -1.2434000382E-4 -6.7714002216E-4 1.2078000145E-4 -4.3500000174E-5 +1.2078000145E-4 4.4606000301E-4 -5.8146001538E-4 5.6215998484E-4 -1.3688000035E-4 2.3255399428E-3 2.8898599558E-3 4.2872801423E-3 5.5893999524E-3 4.2872801423E-3 2.8898599558E-3 2.3255399428E-3 -1.3688000035E-4 5.6215998484E-4 -5.8146001538E-4 4.4606000301E-4 1.2078000145E-4 +-6.7714002216E-4 -5.8146001538E-4 1.4607800404E-3 2.1605400834E-3 3.7613599561E-3 3.0809799209E-3 4.1121998802E-3 2.2212199401E-3 5.5381999118E-4 2.2212199401E-3 4.1121998802E-3 3.0809799209E-3 3.7613599561E-3 2.1605400834E-3 1.4607800404E-3 -5.8146001538E-4 -6.7714002216E-4 +-1.2434000382E-4 5.6215998484E-4 2.1605400834E-3 3.1757799443E-3 3.1846798956E-3 -1.7774800071E-3 -7.4316998944E-3 -9.0569201857E-3 -9.6372198313E-3 -9.0569201857E-3 -7.4316998944E-3 -1.7774800071E-3 3.1846798956E-3 3.1757799443E-3 2.1605400834E-3 5.6215998484E-4 -1.2434000382E-4 +-8.0063997302E-4 -1.3688000035E-4 3.7613599561E-3 3.1846798956E-3 -3.5306399222E-3 -1.2604200281E-2 -1.8847439438E-2 -1.7508180812E-2 -1.6485679895E-2 -1.7508180812E-2 -1.8847439438E-2 -1.2604200281E-2 -3.5306399222E-3 3.1846798956E-3 3.7613599561E-3 -1.3688000035E-4 -8.0063997302E-4 +-1.5970399836E-3 2.3255399428E-3 3.0809799209E-3 -1.7774800071E-3 -1.2604200281E-2 -2.0229380578E-2 -1.1091699824E-2 3.9556599222E-3 1.4385120012E-2 3.9556599222E-3 -1.1091699824E-2 -2.0229380578E-2 -1.2604200281E-2 -1.7774800071E-3 3.0809799209E-3 2.3255399428E-3 -1.5970399836E-3 +-2.5168000138E-4 2.8898599558E-3 4.1121998802E-3 -7.4316998944E-3 -1.8847439438E-2 -1.1091699824E-2 2.1906599402E-2 6.8065837026E-2 9.0580143034E-2 6.8065837026E-2 2.1906599402E-2 -1.1091699824E-2 -1.8847439438E-2 -7.4316998944E-3 4.1121998802E-3 2.8898599558E-3 -2.5168000138E-4 +-4.2019999819E-4 4.2872801423E-3 2.2212199401E-3 -9.0569201857E-3 -1.7508180812E-2 3.9556599222E-3 6.8065837026E-2 0.1445499808 0.1773651242 0.1445499808 6.8065837026E-2 3.9556599222E-3 -1.7508180812E-2 -9.0569201857E-3 2.2212199401E-3 4.2872801423E-3 -4.2019999819E-4 +1.2619999470E-3 5.5893999524E-3 5.5381999118E-4 -9.6372198313E-3 -1.6485679895E-2 1.4385120012E-2 9.0580143034E-2 0.1773651242 0.2120374441 0.1773651242 9.0580143034E-2 1.4385120012E-2 -1.6485679895E-2 -9.6372198313E-3 5.5381999118E-4 5.5893999524E-3 1.2619999470E-3 +-4.2019999819E-4 4.2872801423E-3 2.2212199401E-3 -9.0569201857E-3 -1.7508180812E-2 3.9556599222E-3 6.8065837026E-2 0.1445499808 0.1773651242 0.1445499808 6.8065837026E-2 3.9556599222E-3 -1.7508180812E-2 -9.0569201857E-3 2.2212199401E-3 4.2872801423E-3 -4.2019999819E-4 +-2.5168000138E-4 2.8898599558E-3 4.1121998802E-3 -7.4316998944E-3 -1.8847439438E-2 -1.1091699824E-2 2.1906599402E-2 6.8065837026E-2 9.0580143034E-2 6.8065837026E-2 2.1906599402E-2 -1.1091699824E-2 -1.8847439438E-2 -7.4316998944E-3 4.1121998802E-3 2.8898599558E-3 -2.5168000138E-4 +-1.5970399836E-3 2.3255399428E-3 3.0809799209E-3 -1.7774800071E-3 -1.2604200281E-2 -2.0229380578E-2 -1.1091699824E-2 3.9556599222E-3 1.4385120012E-2 3.9556599222E-3 -1.1091699824E-2 -2.0229380578E-2 -1.2604200281E-2 -1.7774800071E-3 3.0809799209E-3 2.3255399428E-3 -1.5970399836E-3 +-8.0063997302E-4 -1.3688000035E-4 3.7613599561E-3 3.1846798956E-3 -3.5306399222E-3 -1.2604200281E-2 -1.8847439438E-2 -1.7508180812E-2 -1.6485679895E-2 -1.7508180812E-2 -1.8847439438E-2 -1.2604200281E-2 -3.5306399222E-3 3.1846798956E-3 3.7613599561E-3 -1.3688000035E-4 -8.0063997302E-4 +-1.2434000382E-4 5.6215998484E-4 2.1605400834E-3 3.1757799443E-3 3.1846798956E-3 -1.7774800071E-3 -7.4316998944E-3 -9.0569201857E-3 -9.6372198313E-3 -9.0569201857E-3 -7.4316998944E-3 -1.7774800071E-3 3.1846798956E-3 3.1757799443E-3 2.1605400834E-3 5.6215998484E-4 -1.2434000382E-4 +-6.7714002216E-4 -5.8146001538E-4 1.4607800404E-3 2.1605400834E-3 3.7613599561E-3 3.0809799209E-3 4.1121998802E-3 2.2212199401E-3 5.5381999118E-4 2.2212199401E-3 4.1121998802E-3 3.0809799209E-3 3.7613599561E-3 2.1605400834E-3 1.4607800404E-3 -5.8146001538E-4 -6.7714002216E-4 +1.2078000145E-4 4.4606000301E-4 -5.8146001538E-4 5.6215998484E-4 -1.3688000035E-4 2.3255399428E-3 2.8898599558E-3 4.2872801423E-3 5.5893999524E-3 4.2872801423E-3 2.8898599558E-3 2.3255399428E-3 -1.3688000035E-4 5.6215998484E-4 -5.8146001538E-4 4.4606000301E-4 1.2078000145E-4 +-4.3500000174E-5 1.2078000145E-4 -6.7714002216E-4 -1.2434000382E-4 -8.0063997302E-4 -1.5970399836E-3 -2.5168000138E-4 -4.2019999819E-4 1.2619999470E-3 -4.2019999819E-4 -2.5168000138E-4 -1.5970399836E-3 -8.0063997302E-4 -1.2434000382E-4 -6.7714002216E-4 1.2078000145E-4 -4.3500000174E-5 +]; + +bfilts = [... +-8.1125000725E-4 4.4451598078E-3 1.2316980399E-2 1.3955879956E-2 1.4179450460E-2 1.3955879956E-2 1.2316980399E-2 4.4451598078E-3 -8.1125000725E-4 ... +3.9103501476E-3 4.4565401040E-3 -5.8724298142E-3 -2.8760801069E-3 8.5267601535E-3 -2.8760801069E-3 -5.8724298142E-3 4.4565401040E-3 3.9103501476E-3 ... +1.3462699717E-3 -3.7740699481E-3 8.2581602037E-3 3.9442278445E-2 5.3605638444E-2 3.9442278445E-2 8.2581602037E-3 -3.7740699481E-3 1.3462699717E-3 ... +7.4700999539E-4 -3.6522001028E-4 -2.2522680461E-2 -0.1105690673 -0.1768419296 -0.1105690673 -2.2522680461E-2 -3.6522001028E-4 7.4700999539E-4 ... +0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 ... +-7.4700999539E-4 3.6522001028E-4 2.2522680461E-2 0.1105690673 0.1768419296 0.1105690673 2.2522680461E-2 3.6522001028E-4 -7.4700999539E-4 ... +-1.3462699717E-3 3.7740699481E-3 -8.2581602037E-3 -3.9442278445E-2 -5.3605638444E-2 -3.9442278445E-2 -8.2581602037E-3 3.7740699481E-3 -1.3462699717E-3 ... +-3.9103501476E-3 -4.4565401040E-3 5.8724298142E-3 2.8760801069E-3 -8.5267601535E-3 2.8760801069E-3 5.8724298142E-3 -4.4565401040E-3 -3.9103501476E-3 ... +8.1125000725E-4 -4.4451598078E-3 -1.2316980399E-2 -1.3955879956E-2 -1.4179450460E-2 -1.3955879956E-2 -1.2316980399E-2 -4.4451598078E-3 8.1125000725E-4; ... +... +0.0000000000 -8.2846998703E-4 -5.7109999034E-5 4.0110000555E-5 4.6670897864E-3 8.0871898681E-3 1.4807609841E-2 8.6204400286E-3 -3.1221499667E-3 ... +8.2846998703E-4 0.0000000000 -9.7479997203E-4 -6.9718998857E-3 -2.0865600090E-3 2.3298799060E-3 -4.4814897701E-3 1.4917500317E-2 8.6204400286E-3 ... +5.7109999034E-5 9.7479997203E-4 0.0000000000 -1.2145539746E-2 -2.4427289143E-2 5.0797060132E-2 3.2785870135E-2 -4.4814897701E-3 1.4807609841E-2 ... +-4.0110000555E-5 6.9718998857E-3 1.2145539746E-2 0.0000000000 -0.1510555595 -8.2495503128E-2 5.0797060132E-2 2.3298799060E-3 8.0871898681E-3 ... +-4.6670897864E-3 2.0865600090E-3 2.4427289143E-2 0.1510555595 0.0000000000 -0.1510555595 -2.4427289143E-2 -2.0865600090E-3 4.6670897864E-3 ... +-8.0871898681E-3 -2.3298799060E-3 -5.0797060132E-2 8.2495503128E-2 0.1510555595 0.0000000000 -1.2145539746E-2 -6.9718998857E-3 4.0110000555E-5 ... +-1.4807609841E-2 4.4814897701E-3 -3.2785870135E-2 -5.0797060132E-2 2.4427289143E-2 1.2145539746E-2 0.0000000000 -9.7479997203E-4 -5.7109999034E-5 ... +-8.6204400286E-3 -1.4917500317E-2 4.4814897701E-3 -2.3298799060E-3 2.0865600090E-3 6.9718998857E-3 9.7479997203E-4 0.0000000000 -8.2846998703E-4 ... +3.1221499667E-3 -8.6204400286E-3 -1.4807609841E-2 -8.0871898681E-3 -4.6670897864E-3 -4.0110000555E-5 5.7109999034E-5 8.2846998703E-4 0.0000000000; ... +... +8.1125000725E-4 -3.9103501476E-3 -1.3462699717E-3 -7.4700999539E-4 0.0000000000 7.4700999539E-4 1.3462699717E-3 3.9103501476E-3 -8.1125000725E-4 ... +-4.4451598078E-3 -4.4565401040E-3 3.7740699481E-3 3.6522001028E-4 0.0000000000 -3.6522001028E-4 -3.7740699481E-3 4.4565401040E-3 4.4451598078E-3 ... +-1.2316980399E-2 5.8724298142E-3 -8.2581602037E-3 2.2522680461E-2 0.0000000000 -2.2522680461E-2 8.2581602037E-3 -5.8724298142E-3 1.2316980399E-2 ... +-1.3955879956E-2 2.8760801069E-3 -3.9442278445E-2 0.1105690673 0.0000000000 -0.1105690673 3.9442278445E-2 -2.8760801069E-3 1.3955879956E-2 ... +-1.4179450460E-2 -8.5267601535E-3 -5.3605638444E-2 0.1768419296 0.0000000000 -0.1768419296 5.3605638444E-2 8.5267601535E-3 1.4179450460E-2 ... +-1.3955879956E-2 2.8760801069E-3 -3.9442278445E-2 0.1105690673 0.0000000000 -0.1105690673 3.9442278445E-2 -2.8760801069E-3 1.3955879956E-2 ... +-1.2316980399E-2 5.8724298142E-3 -8.2581602037E-3 2.2522680461E-2 0.0000000000 -2.2522680461E-2 8.2581602037E-3 -5.8724298142E-3 1.2316980399E-2 ... +-4.4451598078E-3 -4.4565401040E-3 3.7740699481E-3 3.6522001028E-4 0.0000000000 -3.6522001028E-4 -3.7740699481E-3 4.4565401040E-3 4.4451598078E-3 ... +8.1125000725E-4 -3.9103501476E-3 -1.3462699717E-3 -7.4700999539E-4 0.0000000000 7.4700999539E-4 1.3462699717E-3 3.9103501476E-3 -8.1125000725E-4; ... +... +3.1221499667E-3 -8.6204400286E-3 -1.4807609841E-2 -8.0871898681E-3 -4.6670897864E-3 -4.0110000555E-5 5.7109999034E-5 8.2846998703E-4 0.0000000000 ... +-8.6204400286E-3 -1.4917500317E-2 4.4814897701E-3 -2.3298799060E-3 2.0865600090E-3 6.9718998857E-3 9.7479997203E-4 -0.0000000000 -8.2846998703E-4 ... +-1.4807609841E-2 4.4814897701E-3 -3.2785870135E-2 -5.0797060132E-2 2.4427289143E-2 1.2145539746E-2 0.0000000000 -9.7479997203E-4 -5.7109999034E-5 ... +-8.0871898681E-3 -2.3298799060E-3 -5.0797060132E-2 8.2495503128E-2 0.1510555595 -0.0000000000 -1.2145539746E-2 -6.9718998857E-3 4.0110000555E-5 ... +-4.6670897864E-3 2.0865600090E-3 2.4427289143E-2 0.1510555595 0.0000000000 -0.1510555595 -2.4427289143E-2 -2.0865600090E-3 4.6670897864E-3 ... +-4.0110000555E-5 6.9718998857E-3 1.2145539746E-2 0.0000000000 -0.1510555595 -8.2495503128E-2 5.0797060132E-2 2.3298799060E-3 8.0871898681E-3 ... +5.7109999034E-5 9.7479997203E-4 -0.0000000000 -1.2145539746E-2 -2.4427289143E-2 5.0797060132E-2 3.2785870135E-2 -4.4814897701E-3 1.4807609841E-2 ... +8.2846998703E-4 -0.0000000000 -9.7479997203E-4 -6.9718998857E-3 -2.0865600090E-3 2.3298799060E-3 -4.4814897701E-3 1.4917500317E-2 8.6204400286E-3 ... +0.0000000000 -8.2846998703E-4 -5.7109999034E-5 4.0110000555E-5 4.6670897864E-3 8.0871898681E-3 1.4807609841E-2 8.6204400286E-3 -3.1221499667E-3 ... +]'; diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/sp5Filters.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/sp5Filters.m new file mode 100644 index 0000000..4cddcfd --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/sp5Filters.m @@ -0,0 +1,110 @@ +% Steerable pyramid filters. Transform described in: +% +% @INPROCEEDINGS{Simoncelli95b, +% TITLE = "The Steerable Pyramid: A Flexible Architecture for +% Multi-Scale Derivative Computation", +% AUTHOR = "E P Simoncelli and W T Freeman", +% BOOKTITLE = "Second Int'l Conf on Image Processing", +% ADDRESS = "Washington, DC", MONTH = "October", YEAR = 1995 } +% +% Filter kernel design described in: +% +%@INPROCEEDINGS{Karasaridis96, +% TITLE = "A Filter Design Technique for +% Steerable Pyramid Image Transforms", +% AUTHOR = "A Karasaridis and E P Simoncelli", +% BOOKTITLE = "ICASSP", ADDRESS = "Atlanta, GA", +% MONTH = "May", YEAR = 1996 } + +% Eero Simoncelli, 6/96. + +function [lo0filt,hi0filt,lofilt,bfilts,mtx,harmonics] = sp5Filters(); + +harmonics = [1 3 5]; + +mtx = [ ... + 0.3333 0.2887 0.1667 0.0000 -0.1667 -0.2887 + 0.0000 0.1667 0.2887 0.3333 0.2887 0.1667 + 0.3333 -0.0000 -0.3333 -0.0000 0.3333 -0.0000 + 0.0000 0.3333 0.0000 -0.3333 0.0000 0.3333 + 0.3333 -0.2887 0.1667 -0.0000 -0.1667 0.2887 + -0.0000 0.1667 -0.2887 0.3333 -0.2887 0.1667]; + +hi0filt = [ +-0.00033429 -0.00113093 -0.00171484 -0.00133542 -0.00080639 -0.00133542 -0.00171484 -0.00113093 -0.00033429 +-0.00113093 -0.00350017 -0.00243812 0.00631653 0.01261227 0.00631653 -0.00243812 -0.00350017 -0.00113093 +-0.00171484 -0.00243812 -0.00290081 -0.00673482 -0.00981051 -0.00673482 -0.00290081 -0.00243812 -0.00171484 +-0.00133542 0.00631653 -0.00673482 -0.07027679 -0.11435863 -0.07027679 -0.00673482 0.00631653 -0.00133542 +-0.00080639 0.01261227 -0.00981051 -0.11435863 0.81380200 -0.11435863 -0.00981051 0.01261227 -0.00080639 +-0.00133542 0.00631653 -0.00673482 -0.07027679 -0.11435863 -0.07027679 -0.00673482 0.00631653 -0.00133542 +-0.00171484 -0.00243812 -0.00290081 -0.00673482 -0.00981051 -0.00673482 -0.00290081 -0.00243812 -0.00171484 +-0.00113093 -0.00350017 -0.00243812 0.00631653 0.01261227 0.00631653 -0.00243812 -0.00350017 -0.00113093 +-0.00033429 -0.00113093 -0.00171484 -0.00133542 -0.00080639 -0.00133542 -0.00171484 -0.00113093 -0.00033429]; + + +lo0filt = [ +0.00341614 -0.01551246 -0.03848215 -0.01551246 0.00341614 +-0.01551246 0.05586982 0.15925570 0.05586982 -0.01551246 +-0.03848215 0.15925570 0.40304148 0.15925570 -0.03848215 +-0.01551246 0.05586982 0.15925570 0.05586982 -0.01551246 +0.00341614 -0.01551246 -0.03848215 -0.01551246 0.00341614]; + +lofilt = 2*[ +0.00085404 -0.00244917 -0.00387812 -0.00944432 -0.00962054 -0.00944432 -0.00387812 -0.00244917 0.00085404 +-0.00244917 -0.00523281 -0.00661117 0.00410600 0.01002988 0.00410600 -0.00661117 -0.00523281 -0.00244917 +-0.00387812 -0.00661117 0.01396746 0.03277038 0.03981393 0.03277038 0.01396746 -0.00661117 -0.00387812 +-0.00944432 0.00410600 0.03277038 0.06426333 0.08169618 0.06426333 0.03277038 0.00410600 -0.00944432 +-0.00962054 0.01002988 0.03981393 0.08169618 0.10096540 0.08169618 0.03981393 0.01002988 -0.00962054 +-0.00944432 0.00410600 0.03277038 0.06426333 0.08169618 0.06426333 0.03277038 0.00410600 -0.00944432 +-0.00387812 -0.00661117 0.01396746 0.03277038 0.03981393 0.03277038 0.01396746 -0.00661117 -0.00387812 +-0.00244917 -0.00523281 -0.00661117 0.00410600 0.01002988 0.00410600 -0.00661117 -0.00523281 -0.00244917 +0.00085404 -0.00244917 -0.00387812 -0.00944432 -0.00962054 -0.00944432 -0.00387812 -0.00244917 0.00085404]; + +bfilts = [... + 0.00277643 0.00496194 0.01026699 0.01455399 0.01026699 0.00496194 0.00277643 ... +-0.00986904 -0.00893064 0.01189859 0.02755155 0.01189859 -0.00893064 -0.00986904 ... +-0.01021852 -0.03075356 -0.08226445 -0.11732297 -0.08226445 -0.03075356 -0.01021852 ... + 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 ... + 0.01021852 0.03075356 0.08226445 0.11732297 0.08226445 0.03075356 0.01021852 ... + 0.00986904 0.00893064 -0.01189859 -0.02755155 -0.01189859 0.00893064 0.00986904 ... +-0.00277643 -0.00496194 -0.01026699 -0.01455399 -0.01026699 -0.00496194 -0.00277643; +... +-0.00343249 -0.00640815 -0.00073141 0.01124321 0.00182078 0.00285723 0.01166982 ... +-0.00358461 -0.01977507 -0.04084211 -0.00228219 0.03930573 0.01161195 0.00128000 ... + 0.01047717 0.01486305 -0.04819057 -0.12227230 -0.05394139 0.00853965 -0.00459034 ... + 0.00790407 0.04435647 0.09454202 -0.00000000 -0.09454202 -0.04435647 -0.00790407 ... + 0.00459034 -0.00853965 0.05394139 0.12227230 0.04819057 -0.01486305 -0.01047717 ... +-0.00128000 -0.01161195 -0.03930573 0.00228219 0.04084211 0.01977507 0.00358461 ... +-0.01166982 -0.00285723 -0.00182078 -0.01124321 0.00073141 0.00640815 0.00343249; +... + 0.00343249 0.00358461 -0.01047717 -0.00790407 -0.00459034 0.00128000 0.01166982 ... + 0.00640815 0.01977507 -0.01486305 -0.04435647 0.00853965 0.01161195 0.00285723 ... + 0.00073141 0.04084211 0.04819057 -0.09454202 -0.05394139 0.03930573 0.00182078 ... +-0.01124321 0.00228219 0.12227230 -0.00000000 -0.12227230 -0.00228219 0.01124321 ... +-0.00182078 -0.03930573 0.05394139 0.09454202 -0.04819057 -0.04084211 -0.00073141 ... +-0.00285723 -0.01161195 -0.00853965 0.04435647 0.01486305 -0.01977507 -0.00640815 ... +-0.01166982 -0.00128000 0.00459034 0.00790407 0.01047717 -0.00358461 -0.00343249; +... +-0.00277643 0.00986904 0.01021852 -0.00000000 -0.01021852 -0.00986904 0.00277643 ... +-0.00496194 0.00893064 0.03075356 -0.00000000 -0.03075356 -0.00893064 0.00496194 ... +-0.01026699 -0.01189859 0.08226445 -0.00000000 -0.08226445 0.01189859 0.01026699 ... +-0.01455399 -0.02755155 0.11732297 -0.00000000 -0.11732297 0.02755155 0.01455399 ... +-0.01026699 -0.01189859 0.08226445 -0.00000000 -0.08226445 0.01189859 0.01026699 ... +-0.00496194 0.00893064 0.03075356 -0.00000000 -0.03075356 -0.00893064 0.00496194 ... +-0.00277643 0.00986904 0.01021852 -0.00000000 -0.01021852 -0.00986904 0.00277643; +... +-0.01166982 -0.00128000 0.00459034 0.00790407 0.01047717 -0.00358461 -0.00343249 ... +-0.00285723 -0.01161195 -0.00853965 0.04435647 0.01486305 -0.01977507 -0.00640815 ... +-0.00182078 -0.03930573 0.05394139 0.09454202 -0.04819057 -0.04084211 -0.00073141 ... +-0.01124321 0.00228219 0.12227230 -0.00000000 -0.12227230 -0.00228219 0.01124321 ... + 0.00073141 0.04084211 0.04819057 -0.09454202 -0.05394139 0.03930573 0.00182078 ... + 0.00640815 0.01977507 -0.01486305 -0.04435647 0.00853965 0.01161195 0.00285723 ... + 0.00343249 0.00358461 -0.01047717 -0.00790407 -0.00459034 0.00128000 0.01166982; +... +-0.01166982 -0.00285723 -0.00182078 -0.01124321 0.00073141 0.00640815 0.00343249 ... +-0.00128000 -0.01161195 -0.03930573 0.00228219 0.04084211 0.01977507 0.00358461 ... + 0.00459034 -0.00853965 0.05394139 0.12227230 0.04819057 -0.01486305 -0.01047717 ... + 0.00790407 0.04435647 0.09454202 -0.00000000 -0.09454202 -0.04435647 -0.00790407 ... + 0.01047717 0.01486305 -0.04819057 -0.12227230 -0.05394139 0.00853965 -0.00459034 ... +-0.00358461 -0.01977507 -0.04084211 -0.00228219 0.03930573 0.01161195 0.00128000 ... +-0.00343249 -0.00640815 -0.00073141 0.01124321 0.00182078 0.00285723 0.01166982]'; diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/spyrBand.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/spyrBand.m new file mode 100644 index 0000000..474a8dc --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/spyrBand.m @@ -0,0 +1,34 @@ +% [LEV,IND] = spyrBand(PYR,INDICES,LEVEL,BAND) +% +% Access a band from a steerable pyramid. +% +% LEVEL indicates the scale (finest = 1, coarsest = spyrHt(INDICES)). +% +% BAND (optional, default=1) indicates which subband +% (1 = vertical, rest proceeding anti-clockwise). + +% Eero Simoncelli, 6/96. + +function res = spyrBand(pyr,pind,level,band) + +if (exist('level') ~= 1) + level = 1; +end + +if (exist('band') ~= 1) + band = 1; +end + +nbands = spyrNumBands(pind); +if ((band > nbands) | (band < 1)) + error(sprintf('Bad band number (%d) should be in range [1,%d].', band, nbands)); +end + +maxLev = spyrHt(pind); +if ((level > maxLev) | (level < 1)) + error(sprintf('Bad level number (%d), should be in range [1,%d].', level, maxLev)); +end + +firstband = 1 + band + nbands*(level-1); +res = pyrBand(pyr, pind, firstband); + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/spyrHigh.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/spyrHigh.m new file mode 100644 index 0000000..f91b466 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/spyrHigh.m @@ -0,0 +1,10 @@ +% RES = spyrHigh(PYR, INDICES) +% +% Access the highpass residual band from a steerable pyramid. + +% Eero Simoncelli, 6/96. + +function res = spyrHigh(pyr,pind) + +res = pyrBand(pyr, pind, 1); + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/spyrHt.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/spyrHt.m new file mode 100644 index 0000000..8706b9e --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/spyrHt.m @@ -0,0 +1,16 @@ +% [HEIGHT] = spyrHt(INDICES) +% +% Compute height of steerable pyramid with given index matrix. + +% Eero Simoncelli, 6/96. + +function [ht] = spyrHt(pind) + +nbands = spyrNumBands(pind); + +% Don't count lowpass, or highpass residual bands +if (size(pind,1) > 2) + ht = (size(pind,1)-2)/nbands; +else + ht = 0; +end diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/spyrLev.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/spyrLev.m new file mode 100644 index 0000000..5cb4a85 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/spyrLev.m @@ -0,0 +1,24 @@ +% [LEV,IND] = spyrLev(PYR,INDICES,LEVEL) +% +% Access a level from a steerable pyramid. +% Return as an SxB matrix, B = number of bands, S = total size of a band. +% Also returns an Bx2 matrix containing dimensions of the subbands. + +% Eero Simoncelli, 6/96. + +function [lev,ind] = spyrLev(pyr,pind,level) + +nbands = spyrNumBands(pind); + +if ((level > spyrHt(pind)) | (level < 1)) + error(sprintf('Level number must be in the range [1, %d].', spyrHt(pind))); +end + +firstband = 2 + nbands*(level-1); +firstind = 1; +for l=1:firstband-1 + firstind = firstind + prod(pind(l,:)); +end + +ind = pind(firstband:firstband+nbands-1,:); +lev = pyr(firstind:firstind+sum(prod(ind'))-1); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/spyrNumBands.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/spyrNumBands.m new file mode 100644 index 0000000..68aec3f --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/spyrNumBands.m @@ -0,0 +1,20 @@ +% [NBANDS] = spyrNumBands(INDICES) +% +% Compute number of orientation bands in a steerable pyramid with +% given index matrix. If the pyramid contains only the highpass and +% lowpass bands (i.e., zero levels), returns 0. + +% Eero Simoncelli, 2/97. + +function [nbands] = spyrNumBands(pind) + +if (size(pind,1) == 2) + nbands = 0; +else + % Count number of orientation bands: + b = 3; + while ((b <= size(pind,1)) & all( pind(b,:) == pind(2,:)) ) + b = b+1; + end + nbands = b-2; +end diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/steer.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/steer.m new file mode 100644 index 0000000..8f9c2ac --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/steer.m @@ -0,0 +1,68 @@ +% RES = STEER(BASIS, ANGLE, HARMONICS, STEERMTX) +% +% Steer BASIS to the specfied ANGLE. +% +% BASIS should be a matrix whose columns are vectorized rotated copies of a +% steerable function, or the responses of a set of steerable filters. +% +% ANGLE can be a scalar, or a column vector the size of the basis. +% +% HARMONICS (optional, default is N even or odd low frequencies, as for +% derivative filters) should be a list of harmonic numbers indicating +% the angular harmonic content of the basis. +% +% STEERMTX (optional, default assumes cosine phase harmonic components, +% and filter positions at 2pi*n/N) should be a matrix which maps +% the filters onto Fourier series components (ordered [cos0 cos1 sin1 +% cos2 sin2 ... sinN]). See steer2HarmMtx.m + +% Eero Simoncelli, 7/96. + +function res = steer(basis,angle,harmonics,steermtx) + +num = size(basis,2); + +if ( any(size(angle) ~= [size(basis,1) 1]) & any(size(angle) ~= [1 1]) ) + error('ANGLE must be a scalar, or a column vector the size of the basis elements'); +end + +%% If HARMONICS are not passed, assume derivatives. +if (exist('harmonics') ~= 1) + if (mod(num,2) == 0) + harmonics = [0:(num/2)-1]'*2 + 1; + else + harmonics = [0:(num-1)/2]'*2; + end +else + harmonics = harmonics(:); + if ((2*size(harmonics,1)-any(harmonics == 0)) ~= num) + error('harmonics list is incompatible with basis size'); + end +end + +%% If STEERMTX not passed, assume evenly distributed cosine-phase filters: +if (exist('steermtx') ~= 1) + steermtx = steer2HarmMtx(harmonics, pi*[0:num-1]/num, 'even'); +end + +steervect = zeros(size(angle,1),num); +arg = angle * harmonics(find(harmonics~=0))'; +if (all(harmonics)) + steervect(:, 1:2:num) = cos(arg); + steervect(:, 2:2:num) = sin(arg); +else + steervect(:, 1) = ones(size(arg,1),1); + steervect(:, 2:2:num) = cos(arg); + steervect(:, 3:2:num) = sin(arg); +end + +steervect = steervect * steermtx; + +if (size(steervect,1) > 1) + tmp = basis' .* steervect'; + res = sum(tmp)'; +else + res = basis * steervect'; +end + + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/steer2HarmMtx.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/steer2HarmMtx.m new file mode 100644 index 0000000..1f3e80e --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/steer2HarmMtx.m @@ -0,0 +1,71 @@ +% MTX = steer2HarmMtx(HARMONICS, ANGLES, REL_PHASES) +% +% Compute a steering matrix (maps a directional basis set onto the +% angular Fourier harmonics). HARMONICS is a vector specifying the +% angular harmonics contained in the steerable basis/filters. ANGLES +% (optional) is a vector specifying the angular position of each filter. +% REL_PHASES (optional, default = 'even') specifies whether the harmonics +% are cosine or sine phase aligned about those positions. +% The result matrix is suitable for passing to the function STEER. + +% Eero Simoncelli, 7/96. + +function mtx = steer2HarmMtx(harmonics, angles, evenorodd) + +%%================================================================= +%%% Optional Parameters: + +if (exist('evenorodd') ~= 1) + evenorodd = 'even'; +end + +% Make HARMONICS a row vector +harmonics = harmonics(:)'; + +numh = 2*size(harmonics,2) - any(harmonics == 0); + +if (exist('angles') ~= 1) + angles = pi * [0:numh-1]'/numh; +else + angles = angles(:); +end + +%%================================================================= + +if isstr(evenorodd) + if strcmp(evenorodd,'even') + evenorodd = 0; + elseif strcmp(evenorodd,'odd') + evenorodd = 1; + else + error('EVEN_OR_ODD should be the string EVEN or ODD'); + end +end + +%% Compute inverse matrix, which maps Fourier components onto +%% steerable basis. +imtx = zeros(size(angles,1),numh); +col = 1; +for h=harmonics + args = h*angles; + if (h == 0) + imtx(:,col) = ones(size(angles)); + col = col+1; + elseif evenorodd + imtx(:,col) = sin(args); + imtx(:,col+1) = -cos(args); + col = col+2; + else + imtx(:,col) = cos(args); + imtx(:,col+1) = sin(args); + col = col+2; + end +end + +r = rank(imtx); +if (( r ~= numh ) & ( r ~= size(angles,1) )) + fprintf(2,'WARNING: matrix is not full rank'); +end + +mtx = pinv(imtx); + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/subMtx.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/subMtx.m new file mode 100644 index 0000000..ea3c2ea --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/subMtx.m @@ -0,0 +1,21 @@ +% MTX = subMtx(VEC, DIMENSIONS, START_INDEX) +% +% Reshape a portion of VEC starting from START_INDEX (optional, +% default=1) to the given dimensions. + +% Eero Simoncelli, 6/96. + +function mtx = subMtx(vec, sz, offset) + +if (exist('offset') ~= 1) + offset = 1; +end + +vec = vec(:); +sz = sz(:); + +if (size(sz,1) ~= 2) + error('DIMENSIONS must be a 2-vector.'); +end + +mtx = reshape( vec(offset:offset+prod(sz)-1), sz(1), sz(2) ); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/upBlur.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/upBlur.m new file mode 100644 index 0000000..948c2e1 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/upBlur.m @@ -0,0 +1,52 @@ +% RES = upBlur(IM, LEVELS, FILT) +% +% Upsample and blur an image. The blurring is done with filter +% kernel specified by FILT (default = 'binom5'), which can be a string +% (to be passed to namedFilter), a vector (applied separably as a 1D +% convolution kernel in X and Y), or a matrix (applied as a 2D +% convolution kernel). The downsampling is always by 2 in each +% direction. +% +% The procedure is applied recursively LEVELS times (default=1). + +% Eero Simoncelli, 4/97. + +function res = upBlur(im, nlevs, filt) + +%------------------------------------------------------------ +%% OPTIONAL ARGS: + +if (exist('nlevs') ~= 1) + nlevs = 1; +end + +if (exist('filt') ~= 1) + filt = 'binom5'; +end + +%------------------------------------------------------------ + +if isstr(filt) + filt = namedFilter(filt); +end + +if nlevs > 1 + im = upBlur(im,nlevs-1,filt); +end + +if (nlevs >= 1) + if (any(size(im)==1)) + if (size(im,1)==1) + filt = filt'; + end + res = upConv(im,filt,'reflect1',(size(im)~=1)+1); + elseif (any(size(filt)==1)) + filt = filt(:); + res = upConv(im,filt,'reflect1',[2 1]); + res = upConv(res,filt','reflect1',[1 2]); + else + res = upConv(im,filt,'reflect1',[2 2]); + end +else + res = im; +end diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/upConv.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/upConv.m new file mode 100644 index 0000000..4d1ffd9 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/upConv.m @@ -0,0 +1,80 @@ +% RES = upConv(IM, FILT, EDGES, STEP, START, STOP, RES) +% +% Upsample matrix IM, followed by convolution with matrix FILT. These +% arguments should be 1D or 2D matrices, and IM must be larger (in +% both dimensions) than FILT. The origin of filt +% is assumed to be floor(size(filt)/2)+1. +% +% EDGES is a string determining boundary handling: +% 'circular' - Circular convolution +% 'reflect1' - Reflect about the edge pixels +% 'reflect2' - Reflect, doubling the edge pixels +% 'repeat' - Repeat the edge pixels +% 'zero' - Assume values of zero outside image boundary +% 'extend' - Reflect and invert +% 'dont-compute' - Zero output when filter overhangs OUTPUT boundaries +% +% Upsampling factors are determined by STEP (optional, default=[1 1]), +% a 2-vector [y,x]. +% +% The window over which the convolution occurs is specfied by START +% (optional, default=[1,1], and STOP (optional, default = +% step .* (size(IM) + floor((start-1)./step))). +% +% RES is an optional result matrix. The convolution result will be +% destructively added into this matrix. If this argument is passed, the +% result matrix will not be returned. DO NOT USE THIS ARGUMENT IF +% YOU DO NOT UNDERSTAND WHAT THIS MEANS!! +% +% NOTE: this operation corresponds to multiplication of a signal +% vector by a matrix whose columns contain copies of the time-reversed +% (or space-reversed) FILT shifted by multiples of STEP. See corrDn.m +% for the operation corresponding to the transpose of this matrix. + +% Eero Simoncelli, 6/96. revised 2/97. + +function result = upConv(im,filt,edges,step,start,stop,res) + +%% THIS CODE IS NOT ACTUALLY USED! (MEX FILE IS CALLED INSTEAD) + +fprintf(1,'WARNING: You should compile the MEX version of "upConv.c",\n found in the MEX subdirectory of matlabPyrTools, and put it in your matlab path. It is MUCH faster, and provides more boundary-handling options.\n'); + +%------------------------------------------------------------ +%% OPTIONAL ARGS: + +if (exist('edges') == 1) + if (strcmp(edges,'reflect1') ~= 1) + warning('Using REFLECT1 edge-handling (use MEX code for other options).'); + end +end + +if (exist('step') ~= 1) + step = [1,1]; +end + +if (exist('start') ~= 1) + start = [1,1]; +end + +% A multiple of step +if (exist('stop') ~= 1) + stop = step .* (floor((start-ones(size(start)))./step)+size(im)) +end + +if ( ceil((stop(1)+1-start(1)) / step(1)) ~= size(im,1) ) + error('Bad Y result dimension'); +end +if ( ceil((stop(2)+1-start(2)) / step(2)) ~= size(im,2) ) + error('Bad X result dimension'); +end + +if (exist('res') ~= 1) + res = zeros(stop-start+1); +end + +%------------------------------------------------------------ + +tmp = zeros(size(res)); +tmp(start(1):step(1):stop(1),start(2):step(2):stop(2)) = im; + +result = rconv2(tmp,filt) + res; diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/var2.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/var2.m new file mode 100644 index 0000000..6957eff --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/var2.m @@ -0,0 +1,17 @@ +% V = VAR2(MTX,MEAN) +% +% Sample variance of a matrix. +% Passing MEAN (optional) makes the calculation faster. + +function res = var2(mtx, mn) + +if (exist('mn') ~= 1) + mn = mean2(mtx); +end + +if (isreal(mtx)) + res = sum(sum(abs(mtx-mn).^2)) / max((prod(size(mtx)) - 1),1); +else + res = sum(sum(real(mtx-mn).^2)) + i*sum(sum(imag(mtx-mn).^2)); + res = res / max((prod(size(mtx)) - 1),1); +end diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/vectify.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/vectify.m new file mode 100644 index 0000000..3664223 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/vectify.m @@ -0,0 +1,8 @@ +% [VEC] = columnize(MTX) +% +% Pack elements of MTX into a column vector. Just provides a +% function-call notatoin for the operation MTX(:) + +function vec = columnize(mtx) + +vec = mtx(:); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/wpyrBand.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/wpyrBand.m new file mode 100644 index 0000000..c027cca --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/wpyrBand.m @@ -0,0 +1,39 @@ +% RES = wpyrBand(PYR, INDICES, LEVEL, BAND) +% +% Access a subband from a separable QMF/wavelet pyramid. +% +% LEVEL (optional, default=1) indicates the scale (finest = 1, +% coarsest = wpyrHt(INDICES)). +% +% BAND (optional, default=1) indicates which subband (1=horizontal, +% 2=vertical, 3=diagonal). + +% Eero Simoncelli, 6/96. + +function im = wpyrBand(pyr,pind,level,band) + +if (exist('level') ~= 1) + level = 1; +end + +if (exist('band') ~= 1) + band = 1; +end + +if ((pind(1,1) == 1) | (pind(1,2) ==1)) + nbands = 1; +else + nbands = 3; +end + +if ((band > nbands) | (band < 1)) + error(sprintf('Bad band number (%d) should be in range [1,%d].', band, nbands)); +end + +maxLev = wpyrHt(pind); +if ((level > maxLev) | (level < 1)) + error(sprintf('Bad level number (%d), should be in range [1,%d].', level, maxLev)); +end + +band = band + nbands*(level-1); +im = pyrBand(pyr,pind,band); diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/wpyrHt.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/wpyrHt.m new file mode 100644 index 0000000..476be83 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/wpyrHt.m @@ -0,0 +1,15 @@ +% [HEIGHT] = wpyrHt(INDICES) +% +% Compute height of separable QMF/wavelet pyramid with given index matrix. + +% Eero Simoncelli, 6/96. + +function [ht] = wpyrHt(pind) + +if ((pind(1,1) == 1) | (pind(1,2) ==1)) + nbands = 1; +else + nbands = 3; +end + +ht = (size(pind,1)-1)/nbands; diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/wpyrLev.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/wpyrLev.m new file mode 100644 index 0000000..18f30ae --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/wpyrLev.m @@ -0,0 +1,30 @@ +% [LEV,IND] = wpyrLev(PYR,INDICES,LEVEL) +% +% Access a level from a separable QMF/wavelet pyramid. +% Return as an SxB matrix, B = number of bands, S = total size of a band. +% Also returns an Bx2 matrix containing dimensions of the subbands. + +% Eero Simoncelli, 6/96. + +function [lev,ind] = wpyrLev(pyr,pind,level) + +if ((pind(1,1) == 1) | (pind(1,2) ==1)) + nbands = 1; +else + nbands = 3; +end + +if ((level > wpyrHt(pind)) | (level < 1)) + error(sprintf('Level number must be in the range [1, %d].', wpyrHt(pind))); +end + +firstband = 1 + nbands*(level-1) +firstind = 1; +for l=1:firstband-1 + firstind = firstind + prod(pind(l,:)); +end + + +ind = pind(firstband:firstband+nbands-1,:); +lev = pyr(firstind:firstind+sum(prod(ind'))-1); + diff --git a/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/zconv2.m b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/zconv2.m new file mode 100644 index 0000000..f678d89 --- /dev/null +++ b/evaluate/evaluation_code/image_quality_algorithms/metrix_mux/utilities/matlabPyrTools/zconv2.m @@ -0,0 +1,41 @@ +% RES = ZCONV2(MTX1, MTX2, CTR) +% +% Convolution of two matrices, with boundaries handled as if the larger mtx +% lies in a sea of zeros. Result will be of size of LARGER vector. +% +% The origin of the smaller matrix is assumed to be its center. +% For even dimensions, the origin is determined by the CTR (optional) +% argument: +% CTR origin +% 0 DIM/2 (default) +% 1 (DIM/2)+1 (behaves like conv2(mtx1,mtx2,'same')) + +% Eero Simoncelli, 2/97. + +function c = zconv2(a,b,ctr) + +if (exist('ctr') ~= 1) + ctr = 0; +end + +if (( size(a,1) >= size(b,1) ) & ( size(a,2) >= size(b,2) )) + large = a; small = b; +elseif (( size(a,1) <= size(b,1) ) & ( size(a,2) <= size(b,2) )) + large = b; small = a; +else + error('one arg must be larger than the other in both dimensions!'); +end + +ly = size(large,1); +lx = size(large,2); +sy = size(small,1); +sx = size(small,2); + +%% These values are the index of the small mtx that falls on the +%% border pixel of the large matrix when computing the first +%% convolution response sample: +sy2 = floor((sy+ctr+1)/2); +sx2 = floor((sx+ctr+1)/2); + +clarge = conv2(large,small); +c = clarge(sy2:ly+sy2-1, sx2:lx+sx2-1); diff --git a/evaluate/evaluation_code/imshift.m b/evaluate/evaluation_code/imshift.m new file mode 100644 index 0000000..b791d67 --- /dev/null +++ b/evaluate/evaluation_code/imshift.m @@ -0,0 +1,69 @@ +function xs = imshift(x, t, bbox) +% IMSHIFT x by d using subpixel interpolation. +% +% Input: x image to be shifted +% t 2D vector, real +% bbox 'crop' (default) or 'same' or 'full' +% +% Michael Hirsch, Stefan Harmeling * 16 August 2010 + +if ~exist('bbox', 'var')||isempty(bbox), bbox = 'crop'; end + +if size(x,3) > 2 + for i = 1:size(x,3) + xsi = colshift(x(:,:,i), t, bbox); + if i == 1 + xs = zeros(size(xsi,1), size(xsi,2), size(x,3)); + end + xs(:,:,i) = xsi; + end +else + xs = colshift(x, t, bbox); +end + +return; + +% -------------------------------------------------------------------------- +% Helper function +% -------------------------------------------------------------------------- + +function xs = colshift(x, t, bbox) +sx = size(x); +switch bbox + case {'crop','same'} + if length(sx) == 1 || sx(2) == 1 + y = shiftmatrix(sx(1), -t(1)) * x; + elseif length(sx) == 2 + y = shiftmatrix(sx(1), -t(1)) * x * shiftmatrix(sx(2), -t(2))'; + else + error('not implemented yet') + end + case 'full' + y = zeros(sx + abs(t)); + if t(1) >= 0 && t(2) >= 0 + y(1+t(1):end, 1+t(2):end) = x; + elseif t(1)<=0 && t(2)<=0 + y(1:end+t(1), 1:end+t(2)) = x; + elseif t(1)>=0 && t(2)<=0 + y(1+t(1):end, 1:end+t(2)) = x; + elseif t(1)<=0 && t(2)>=0 + y(1:end+t(1), 1+t(2):end) = x; + end +end + +switch bbox + case {'crop','full'} + xs = y; + case 'same' + xs = zeros(sx); + if t(1) >= 0 && t(2) >= 0 + xs(1+t(1):end, 1+t(2):end) = y; + elseif t(1)<=0 && t(2)<=0 + xs(1:end+t(1), 1:end+t(2)) = y; + elseif t(1)>=0 && t(2)<=0 + xs(1+t(1):end, 1:end+t(2)) = y; + elseif t(1)<=0 && t(2)>=0 + xs(1:end+t(1), 1+t(2):end) = y; + end +end + \ No newline at end of file diff --git a/evaluate/evaluation_code/myrgb2gray.m b/evaluate/evaluation_code/myrgb2gray.m new file mode 100644 index 0000000..bbaa65f --- /dev/null +++ b/evaluate/evaluation_code/myrgb2gray.m @@ -0,0 +1,110 @@ +function I = myrgb2gray(varargin) +%RGB2GRAY Convert RGB image or colormap to grayscale. +% RGB2GRAY converts RGB images to grayscale by eliminating the +% hue and saturation information while retaining the +% luminance. +% +% I = RGB2GRAY(RGB) converts the truecolor image RGB to the +% grayscale intensity image I. +% +% NEWMAP = RGB2GRAY(MAP) returns a grayscale colormap +% equivalent to MAP. +% +% Class Support +% ------------- +% If the input is an RGB image, it can be uint8, uint16, double, or +% single. The output image I has the same class as the input image. If the +% input is a colormap, the input and output colormaps are both of class +% double. +% +% Example +% ------- +% I = imread('board.tif'); +% J = rgb2gray(I); +% figure, imshow(I), figure, imshow(J); +% +% [X,map] = imread('trees.tif'); +% gmap = rgb2gray(map); +% figure, imshow(X,map), figure, imshow(X,gmap); +% +% See also IND2GRAY, NTSC2RGB, RGB2IND, RGB2NTSC, MAT2GRAY. + +% Copyright 1992-2007 The MathWorks, Inc. +% $Revision: 5.20.4.6 $ $Date: 2007/12/10 21:37:27 $ + +X = parse_inputs(varargin{:}); +origSize = size(X); + +% Determine if input includes a 3-D array +threeD = (ndims(X)==3); + +% Calculate transformation matrix +T = inv([1.0 0.956 0.621; 1.0 -0.272 -0.647; 1.0 -1.106 1.703]); +coef = T(1,:)'; + +if threeD + %RGB + % Shape input matrix so that it is a n x 3 array and initialize output + % matrix + X = reshape(X(:),origSize(1)*origSize(2),3); + sizeOutput = [origSize(1), origSize(2)]; + + % Do transformation + if isa(X, 'double') || isa(X, 'single') + I = X*coef; + I = min(max(I,0),1); + else + %uint8 or uint16 + I = myimlincomb(coef(1),X(:,1),coef(2),X(:,2),coef(3),X(:,3), ... + class(X)); + end + %Make sure that the output matrix has the right size + I = reshape(I,sizeOutput); + +else + I = X * coef; + I = min(max(I,0),1); + I = [I,I,I]; +end + + +%%% +%Parse Inputs +%%% +function X = parse_inputs(varargin) + +iptchecknargin(1,1,nargin,mfilename); + +if ndims(varargin{1})==2 + if (size(varargin{1},2) ~=3 || size(varargin{1},1) < 1) + eid = sprintf('Images:%s:invalidSizeForColormap',mfilename); + msg = 'MAP must be a m x 3 array.'; + error(eid,'%s',msg); + end + if ~isa(varargin{1},'double') + eid = sprintf('Images:%s:notAValidColormap',mfilename); + msg1 = 'MAP should be a double m x 3 array with values in the'; + msg2 = ' range [0,1].Convert your map to double using IM2DOUBLE.'; + error(eid,'%s %s',msg1,msg2); + end +elseif (ndims(varargin{1})==3) + if ((size(varargin{1},3) ~= 3)) + eid = sprintf('Images:%s:invalidInputSize',mfilename); + msg = 'RGB must be a m x n x 3 array.'; + error(eid,'%s',msg); + end +else + eid = sprintf('Images:%s:invalidInputSize',mfilename); + msg1 = 'RGB2GRAY only accepts a Mx3 matrix for MAP or a MxNx3 input for '; + msg2 = 'RGB.'; + error(eid,'%s %s',msg1,msg2); +end +X = varargin{1}; + + +%no logical arrays +if islogical(X) + eid = sprintf('Images:%s:invalidType',mfilename); + msg = 'RGB2GRAY does not accept logical arrays as inputs.'; + error(eid,'%s',msg); +end diff --git a/evaluate/evaluation_code/shiftmatrix.m b/evaluate/evaluation_code/shiftmatrix.m new file mode 100644 index 0000000..11d7a11 --- /dev/null +++ b/evaluate/evaluation_code/shiftmatrix.m @@ -0,0 +1,34 @@ +function A = shiftmatrix(n, d) + +if length(n) == 1 || n(2) == 1 + A = shiftmatrix1d(n, d); +elseif length(n) == 2 + A1 = shiftmatrix1d(n(1), d(1)); + A2 = shiftmatrix1d(n(2), d(2)); + A = kron(A1, A2); +else + error('not implemented yet'); +end + + +function A = shiftmatrix1d(n, d) + +sd = sign(d); +d = abs(d); +m = n - ceil(d); % size of the new vector +if m < 0 + error('n must be greater than abs(d)') +end +cd = ceil(d); +d = d - cd + 1; +if sd > 0 + A = [zeros(m, cd), speye(m), zeros(m, cd-1), speye(m), zeros(m, 1)]; + B = kron([d; 1-d], speye(n)); +elseif sd == 0 + A = [speye(m), speye(m)]; + B = kron([d; 1-d], speye(n)); +else + A = [zeros(m, 1), speye(m), zeros(m, cd-1), speye(m), zeros(m, cd)]; + B = kron([1-d; d], speye(n)); +end +A = A * B; diff --git a/evaluate/evaluation_code/start_eval_image.m b/evaluate/evaluation_code/start_eval_image.m new file mode 100644 index 0000000..18605e7 --- /dev/null +++ b/evaluate/evaluation_code/start_eval_image.m @@ -0,0 +1,79 @@ +% ================================================================= +% DEFINE IMGPATH, DEBLNAME, IMGTEXT AND metric +% ----------------------------------------------------------------- +MYPATH = ['/is/ei/rolfk/cpr/prj/camera_shake_benchmark/code/' ... + 'eval_deblur_img']; +DEBLPATH = '/agbs/cpr/prj/camera_shake_benchmark/benchmark/Deblurred/Hirsch'; +DEBLNAME = 'Deblurred'; +IMGEXT = 'png'; + +% ----------------------------------------------------------------- +% DEFINE METRIC: available metrics: 'MSE','MSSIM','VIF','IFC','PSNR','MAD' +% ----------------------------------------------------------------- +metric = {'PSNR'}; + +% ================================================================= +% DEFINE image Number (1 to 4) and Kernel Number (1 to 12) of +% deblurred images, which shall be assigned a score +% ----------------------------------------------------------------- +imgNo = 1:4; +kernNo = 1:12; + +% do not calculate the score for following images [img, kernel; img +% kernel] +% exclude = [1 1; 1 2; 1 3; 1 4; 1 5; 1 6]; +exclude = []; +% ================================================================= +% run the evaluation script with all ground truth images +% ----------------------------------------------------------------- +cd(MYPATH) + +for iM = 1 : length(metric) + for iImg = imgNo + for iKern = kernNo + if ~isempty(intersect([iImg iKern],exclude,'rows')) + continue + end + + metricNow = metric{iM}; + deblurred = imread(sprintf('%s/%s%d_%d.%s',DEBLPATH,DEBLNAME,iImg,iKern,IMGEXT)); + scores = eval_image(deblurred,iImg,iKern,metricNow); + + switch metricNow + case 'MSE' + DeblurScore.MSE(iImg,iKern) = ... + get_best_metric_value2(scores.MSE,'MSE',iImg,iKern); + case 'MSSIM' + DeblurScore.MSSIM(iImg,iKern) = ... + get_best_metric_value2(scores.MSSIM,'MSSIM',iImg,iKern); + case 'VIF' + DeblurScore.VIF(iImg,iKern) = ... + get_best_metric_value2(scores.VIF,'VIF',iImg,iKern); + case 'IFC' + DeblurScore.IFC(iImg,iKern) = ... + get_best_metric_value2(scores.IFC,'IFC',iImg,iKern); + case 'PSNR' + DeblurScore.PSNR(iImg,iKern) = ... + get_best_metric_value2(scores.PSNR,'PSNR',iImg,iKern); + case 'MAD' + DeblurScore.MAD(iImg,iKern) = ... + get_best_metric_value2(scores.MAD,'MAD',iImg,iKern); + end + + end + end +end + + + +% ================================================================= +% function dependencies +% ----------------------------------------------------------------- +% start_eval_image.m +% *eval_image.m +% -dftregistration.m +% -imshift.m +% -metrix_mux +% -MAD_index +% + myrgb2gray +% *get_best_metric_value2 diff --git a/evaluate/evaluation_code/vec.m b/evaluate/evaluation_code/vec.m new file mode 100644 index 0000000..f3c3cc6 --- /dev/null +++ b/evaluate/evaluation_code/vec.m @@ -0,0 +1,7 @@ +function v = vec(A) +if iscell(A) + v = cell2mat(cellfun(@(Aij) Aij(:), A, 'UniformOutput', false)); + v = v(:); +else + v = A(:); +end \ No newline at end of file diff --git a/my_run_pred.sh b/my_run_pred.sh index 4d4a4c1..7fc5022 100644 --- a/my_run_pred.sh +++ b/my_run_pred.sh @@ -1,3 +1,6 @@ +# #################### +# predict on testset # +# #################### #!/bin/bash # Params ALIGNMENT=("_nowarp") # "_OF" "_homography") @@ -41,4 +44,53 @@ do done done +# ##################### +# predict on validset # +# ##################### +# #!/bin/bash +# # Params +# ALIGNMENT=("_nowarp" "_OF" "_homography") #("_nowarp" "_OF" "_homography") +# validset=('IMG_0030' 'IMG_0049' 'IMG_0021' '720p_240fps_2' 'IMG_0032' \ +# 'IMG_0033' 'IMG_0031' 'IMG_0003' 'IMG_0039' 'IMG_0037') + +# MODEL="model2_symskip_nngraph2_deeper" +# METHOD="" +# DATE="original" +# itFix='' +# FNFix='' +# for align in ${ALIGNMENT[@]} +# # for((i=0;i<${#ALIGNMENT[@]};i++)) +# do +# FN=${DATE}"_"$MODEL${align}$METHOD +# echo 'FN='${FN} +# FN_ALIGNS=(${FN_ALIGNS[@]} ${FN}) +# REALSET_ALIGNS=(${REALSET_ALIGNS[@]} "data/training_real_all_nostab"${align}) +# FNREAL_ALIGNS=(${FNREAL_ALIGNS[@]} ${FN}"_real") +# done +# GPUID=0 +# EPOCHTEST=400 + +# export CUDA_VISIBLE_DEVICES=$GPUID + +# # Scan input video folders +# for subset in ${validset[@]} +# do +# echo "Processing "${subset}"... " +# # prediction on qualitative (real) set +# for((i=0;i<${#ALIGNMENT[@]};i++)) +# do +# FN=${FN_ALIGNS[i]}; REALSET=${REALSET_ALIGNS[i]}; FNREAL=${FNREAL_ALIGNS[i]} +# echo "Processing "${subset}${ALIGNMENT[i]}"... " +# echo 'FN='${FN} +# echo 'REALSET='${REALSET} +# echo 'FNREAL='${FNREAL} +# th inference.lua -g $GPUID --model $MODEL --data_root $REALSET/$subset \ +# --model_param logs/$FN$FNFix/param_epoch_$EPOCHTEST$itFix.t7 \ +# --bn_meanstd logs/$FN$FNFix/bn_meanvar_epoch_$EPOCHTEST$itFix.t7 \ +# --saveDir outImg/${DATE}"_validating_"$MODEL${ALIGNMENT[i]}$METHOD$FNFix$itFix/$subset \ +# --start_id 1 --n 100 --patchbypatch 1 --patch_size 256 +# # --saveDir outImg/$FNREAL$FNFix$itFix/$subset \ +# done +# done + diff --git a/run_model.sh b/run_model.sh index 2d91cf9..25370d6 100644 --- a/run_model.sh +++ b/run_model.sh @@ -4,7 +4,7 @@ export CUDA_VISIBLE_DEVICES=$GPUID rootDir='' date='1220' -aligns=("_homography") #"_nowarp" "_OF" +aligns=("_homography") #"_homography" "_nowarp" "_OF" modelName='model2_symskip_nngraph2_deeper' epochTest=400 #don't know what this means @@ -12,11 +12,12 @@ for align in ${aligns[@]} do trainsetFolder="${rootDir}data/training_augumented_all_nostab${align}" validsetFolder="${rootDir}data/validating_augumented_all_nostab${align}" - testsetFolder="${rootDir}data/original_testing_real_all_nostab${align}" +# testsetFolder="${rootDir}data/original_testing_real_all_nostab${align}" + testsetFolder="/home/omnisky/Desktop/zc/DeepVideoDeblurring/data/training_real_all_nostab${align}" modelDir="${rootDir}models/${modelName}.py" paramSaveFolder="${rootDir}logs/${date}_${modelName}${align}" - outDir="${rootDir}outImg/${date}_${modelName}${align}" - +# outDir="${rootDir}outImg/${date}_${modelName}${align}" + outDir="${rootDir}outImg/${date}_training_${modelName}${align}" # ############################ # # train from the beginning #