diff options
Diffstat (limited to 'SD-VBS/benchmarks/texture_synthesis')
299 files changed, 20911 insertions, 0 deletions
diff --git a/SD-VBS/benchmarks/texture_synthesis/Makefile b/SD-VBS/benchmarks/texture_synthesis/Makefile new file mode 100644 index 0000000..60cc0ec --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/Makefile | |||
@@ -0,0 +1,3 @@ | |||
1 | include ../../common/makefiles/Makefile.include | ||
2 | include $(MAKEFILE_COMMON_DIR)/Makefile.recurse | ||
3 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/Makefile b/SD-VBS/benchmarks/texture_synthesis/data/Makefile new file mode 100644 index 0000000..ba33d35 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/Makefile | |||
@@ -0,0 +1,3 @@ | |||
1 | include ../../../common/makefiles/Makefile.include | ||
2 | include $(MAKEFILE_COMMON_DIR)/Makefile.recurse | ||
3 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/cif/1.bmp b/SD-VBS/benchmarks/texture_synthesis/data/cif/1.bmp new file mode 100644 index 0000000..2488790 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/cif/1.bmp | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/cif/Makefile b/SD-VBS/benchmarks/texture_synthesis/data/cif/Makefile new file mode 100644 index 0000000..573e7bd --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/cif/Makefile | |||
@@ -0,0 +1,7 @@ | |||
1 | INPUT=cif | ||
2 | include ../../../../common/makefiles/Makefile.include | ||
3 | |||
4 | BMARK=texture_synthesis | ||
5 | include $(MAKEFILE_COMMON_DIR)/Makefile.common | ||
6 | |||
7 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/cif/expected.m b/SD-VBS/benchmarks/texture_synthesis/data/cif/expected.m new file mode 100644 index 0000000..9ca0b05 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/cif/expected.m | |||
@@ -0,0 +1,192 @@ | |||
1 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.925062 287.769011 287.596491 286.773330 285.001552 282.595447 279.956074 279.894537 278.225238 269.815094 262.935821 256.367532 246.951171 238.117082 230.446345 223.000000 216.055241 209.600796 202.840653 194.240609 184.971561 183.228406 181.455957 192.500000 219.281498 213.385271 178.649236 155.824000 144.623818 134.522139 154.588296 241.500000 211.777059 140.798329 104.642287 95.096934 88.290262 92.524486 86.538343 89.268294 83.137744 91.764288 73.837686 101.237047 192.922307 240.205323 161.135958 49.000000 39.000000 25.281552 36.082225 43.373018 33.412605 49.501059 102.345625 132.456435 97.665409 87.454077 93.421163 108.436420 116.435768 161.889718 189.061172 157.332100 153.750000 215.885565 195.360210 145.284538 141.976991 194.782955 207.732640 195.842629 219.500000 238.933664 189.314723 198.655026 204.617143 207.251296 211.144087 216.334097 223.000000 230.446345 237.138986 244.055610 250.509668 256.979976 261.755874 266.343845 271.789074 276.707565 280.654375 283.727875 285.597771 287.068086 287.700570 287.947544 | ||
2 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.944332 287.610741 286.895154 285.478511 284.417784 282.709628 280.420147 279.559600 276.539934 267.851951 260.950539 254.903066 249.506077 240.855752 231.557420 222.500000 215.497530 209.909454 203.858494 194.611200 188.191200 195.401039 196.409507 205.000000 228.337425 226.386323 207.928948 190.441524 149.909576 138.670189 146.655708 242.250000 231.221686 148.842136 106.301633 98.511147 83.034743 83.557719 86.538343 90.201307 76.498689 76.373251 64.103035 100.254084 185.989558 200.376426 105.195909 93.000000 62.000000 26.280481 33.095058 49.315374 44.225198 49.501059 88.878468 112.539271 97.665409 99.358630 116.734756 118.071539 127.531963 161.889718 165.734131 135.554117 153.000000 203.626112 190.520818 163.123971 148.900496 215.099490 232.604217 196.908032 191.500000 205.288177 191.053670 198.252571 206.840685 212.340500 212.070062 215.218674 223.000000 230.668560 237.530224 243.885283 250.802561 256.731816 261.859198 266.849436 272.257985 277.429456 281.834242 285.054622 286.841478 287.461988 287.747623 287.892946 | ||
3 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.861901 287.093155 285.924810 284.285915 282.746083 282.290965 280.832656 275.942286 269.798718 264.958897 259.957898 257.978445 253.423600 241.246991 231.112990 222.750000 216.055241 211.452746 205.894175 198.317104 200.667300 205.834725 204.353580 195.000000 208.094765 219.037902 208.526494 185.406248 157.838213 144.892265 148.097997 186.750000 171.332233 143.211471 125.384110 116.435768 108.436420 95.214516 85.622608 93.000345 72.704944 73.487432 68.970360 86.492603 135.479533 153.577472 104.196979 84.000000 44.000000 24.282622 30.107890 52.286552 53.071864 46.580664 66.753854 91.673671 94.866371 103.021569 125.701523 135.589937 136.921050 159.400699 160.907847 135.554117 150.000000 167.568894 164.249833 161.141811 155.194591 179.844326 189.078958 183.057792 187.000000 192.203821 194.096829 195.837842 201.652419 210.644099 217.008595 219.959220 223.750000 230.446345 237.530224 244.225937 251.241901 256.979976 262.582461 267.692088 272.994845 277.893529 281.796182 284.736203 286.585922 287.192982 287.653517 287.861901 | ||
4 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.761270 286.892110 285.473264 283.757765 282.613408 281.377519 277.893529 273.329782 269.377392 264.132311 259.461578 266.765242 259.385048 239.095179 229.779701 223.000000 217.728375 214.230670 207.251296 200.540647 205.899213 211.051568 203.418983 196.000000 224.608514 237.691584 206.136313 172.188648 163.784690 146.274948 138.723121 140.250000 137.887473 145.624614 130.362148 121.557089 139.969536 124.804846 106.684508 106.062523 74.601817 69.639673 71.890756 66.833345 90.911865 127.688689 107.193767 66.000000 38.000000 26.280481 29.112168 45.353803 50.122975 50.474524 67.715794 96.415853 105.129510 113.094652 120.321463 125.954818 135.213943 147.785279 147.233375 138.665258 148.500000 153.867152 151.114340 154.534614 160.859276 161.917971 177.773696 199.571540 199.000000 182.857852 194.966303 195.435387 202.764190 210.983379 219.477861 222.190065 223.750000 230.001915 237.725844 245.247900 252.413474 257.600376 263.409047 268.281945 273.932667 278.615419 281.453640 284.019760 286.364440 286.799080 287.516635 287.885452 | ||
5 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.724872 286.926330 285.655804 284.422212 283.409456 279.931230 274.954402 271.722087 269.293127 263.615694 258.096697 261.346717 253.423600 237.530224 229.779701 223.250000 218.007231 213.304695 205.215615 201.281828 209.923761 217.137885 207.624669 218.000000 239.524158 231.473690 192.392774 163.376915 159.820372 147.657632 134.396254 134.250000 139.443043 135.972045 116.257708 111.314448 128.582578 126.598199 122.252000 107.928549 82.189308 74.449372 74.811151 61.918530 74.075190 112.752852 103.198050 48.000000 37.000000 26.280481 31.103613 46.344196 48.157049 51.447989 72.525492 97.364289 111.660599 118.589061 119.424786 114.567859 126.678409 138.658877 145.624614 151.887605 156.000000 158.194018 151.805682 153.213175 157.082819 173.868874 213.950534 232.066336 205.500000 182.390554 194.096829 195.032932 204.246552 214.036902 221.638469 222.747777 223.250000 230.001915 239.290798 246.610517 252.559921 257.848537 262.995754 268.366210 274.401578 278.770110 281.263339 283.807480 286.023698 286.770258 287.379752 287.913286 | ||
6 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.756988 287.071767 286.001669 284.848139 282.878757 278.789423 274.284075 270.650290 266.933702 262.169168 256.359575 250.363221 244.225937 238.117082 230.890775 223.500000 216.612952 209.600796 202.840653 203.505371 218.375313 224.963149 223.980114 243.500000 230.468231 203.210536 185.819777 172.188648 165.106130 160.101783 148.819141 147.000000 141.776398 127.123857 114.598362 108.753788 105.808660 107.767989 115.841856 101.397460 88.828362 85.992649 76.758081 65.850382 70.113619 86.864069 81.221601 40.000000 31.000000 26.280481 34.090780 48.324981 45.208160 40.739874 57.134456 81.240871 105.129510 117.673326 122.114816 120.699298 123.264196 135.340185 154.472801 165.887737 159.750000 155.309440 151.805682 153.213175 187.923886 211.514219 220.733692 218.748797 205.000000 191.269224 197.139987 201.874664 219.811352 221.501068 221.947127 221.911210 223.250000 230.224130 240.073275 247.291825 252.852814 257.848537 262.582461 268.534740 274.066642 278.202910 281.605881 284.152434 285.308140 286.731829 287.349809 287.918639 | ||
7 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.785892 287.170152 286.040099 284.183693 281.631616 278.713303 274.902838 270.650290 266.091050 261.032611 255.615095 249.630988 244.566591 239.290798 231.557420 224.000000 216.612952 209.292138 205.554895 209.434819 221.594952 222.789464 225.849308 241.500000 221.412304 198.123168 195.380500 192.959162 184.927722 176.002642 162.520884 150.750000 140.220828 138.385187 131.191820 116.435768 102.304980 91.627809 99.358630 99.531434 89.776799 88.878468 75.784616 69.782233 69.123227 57.988119 48.256929 43.000000 31.000000 29.277269 35.086503 38.421055 35.378531 31.978688 39.819540 65.117453 93.000345 113.094652 115.838079 125.954818 127.531963 135.340185 151.255279 160.443241 155.250000 147.376853 150.422998 152.552455 226.317867 229.440574 184.556853 178.263478 201.500000 195.474910 200.183145 220.790042 245.382095 224.893870 215.465303 218.564942 223.500000 230.224130 239.290798 246.780844 253.145707 257.724457 263.615694 269.293127 273.597731 277.893529 282.062604 284.205504 284.967399 286.616540 287.490969 287.907934 | ||
8 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.754847 287.003326 285.799915 283.894062 281.817360 279.131966 275.521602 271.253175 266.512376 261.445904 256.359575 250.802561 246.269862 240.268894 233.335139 226.000000 219.680365 215.465303 213.019061 213.881905 214.753219 206.269462 200.147894 207.500000 213.954483 203.210536 189.405048 192.329753 196.159957 178.768009 156.030585 155.250000 151.887605 142.407091 129.532475 117.289322 108.436420 106.871313 118.589061 132.186879 92.622108 80.221010 72.864221 74.697048 71.104012 49.026617 38.267635 41.000000 33.000000 32.274058 31.103613 29.507521 31.446680 35.872548 41.743420 54.684653 79.938167 100.274365 102.387929 115.443779 131.799730 140.318222 141.602710 148.776464 162.000000 150.261430 150.422998 153.213175 182.888610 179.844326 173.816855 187.319404 197.500000 191.736522 195.835776 226.826864 235.376152 211.322660 207.440188 216.612952 223.500000 230.446345 239.095179 245.247900 250.949008 257.352216 265.165544 269.967249 273.999655 278.512292 281.758122 283.462526 285.308140 286.808687 287.619296 287.892946 | ||
9 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.736648 286.999049 285.751878 284.013322 281.631616 278.637182 275.109093 270.918239 266.596641 262.685784 258.841177 251.974134 247.291825 241.442610 237.557221 231.250000 226.094045 222.564444 218.108265 216.105447 216.765493 204.095778 210.428460 209.000000 204.365854 199.253694 194.782955 198.623848 206.070753 180.842034 164.684317 183.750000 182.221224 145.624614 128.702802 153.138564 190.772891 221.645926 241.297525 232.952251 101.158035 70.601613 68.970360 66.833345 58.228907 43.052282 37.268705 36.000000 32.000000 31.275128 28.116446 31.488306 35.378531 35.872548 37.895661 48.994035 71.541053 92.032751 93.421163 114.567859 126.678409 129.532475 135.972045 149.554249 159.000000 156.751729 149.040315 161.802531 164.006324 160.125336 169.860013 191.048315 201.500000 194.540313 193.662092 190.605929 194.981790 203.519213 211.452746 218.843798 225.250000 231.335205 238.899559 245.588554 250.656115 258.344857 265.372191 270.051514 274.602540 278.924801 281.682001 283.595201 285.648882 286.779865 287.443916 287.910075 | ||
10 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.745212 286.969106 285.655804 283.791840 281.419336 278.484942 275.005965 271.253175 267.186497 263.512371 260.454219 254.610173 249.335750 244.572519 238.001651 232.500000 228.882601 225.651027 219.465386 214.252495 226.826864 235.831572 237.531769 257.500000 257.636011 226.951586 213.306855 238.276648 242.410338 209.187044 236.077607 209.250000 205.554778 200.322502 222.455840 250.443651 250.335444 253.029610 230.308707 130.320853 81.240871 68.677733 64.103035 52.088901 45.353803 47.035172 38.267635 35.000000 37.000000 33.272987 31.103613 34.459484 34.395568 35.872548 40.781480 50.890907 72.474066 92.032751 105.077959 111.940099 111.314448 131.191820 158.494705 158.887671 147.000000 162.520884 162.867149 164.445410 169.671010 174.466419 173.816855 174.534567 177.500000 177.250271 183.228406 191.813293 202.023009 207.590577 211.452746 219.680365 228.250000 232.890709 239.290798 252.571965 255.781746 258.841177 264.028987 269.630188 274.736515 278.718547 281.605881 283.780945 285.325177 286.530074 287.268536 287.904722 | ||
11 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.736648 286.922053 285.578945 283.655543 281.419336 278.941664 276.243493 273.731706 269.967249 264.648927 262.563580 261.639610 254.615890 249.658620 243.334808 236.500000 231.392302 227.194318 220.143947 218.699581 249.364335 266.263155 266.971570 267.000000 247.514681 241.648426 255.135016 263.453029 257.606892 227.853271 255.548504 183.750000 202.443637 240.541538 258.131775 245.322330 233.692966 236.889430 124.999205 75.273104 104.003344 100.421746 73.837686 64.867419 57.238515 39.069392 38.267635 34.000000 33.000000 37.268705 34.090780 32.478699 34.395568 40.739874 46.553119 52.787780 78.072142 97.527160 105.974636 111.064179 109.607341 120.406073 135.972045 141.776398 145.500000 161.078595 162.867149 163.784690 158.341638 168.490968 171.555802 169.207551 173.000000 176.315674 187.141038 193.020658 199.058285 204.537054 213.304695 222.468921 229.000000 233.112924 244.963757 273.522197 264.861436 258.344857 262.995754 270.809900 276.009274 278.615419 281.111098 283.807480 285.154806 286.405178 287.392585 287.872606 | ||
12 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.730224 286.922053 285.578945 283.536283 281.313196 279.588688 277.584147 276.612159 274.096243 267.748627 264.797022 264.714989 261.088319 262.569493 252.667834 239.000000 230.834591 226.268343 224.554590 236.858514 262.645345 272.349471 272.579152 267.000000 249.645487 253.518951 268.281010 262.823619 249.017536 240.297422 224.539298 222.000000 222.666050 234.910873 239.049298 194.109127 140.845456 151.705146 112.178917 77.139129 135.301744 133.127698 77.731546 57.003715 53.276944 33.095058 34.271917 29.000000 36.000000 41.264423 32.099335 30.497914 35.378531 46.580664 60.020275 61.323707 72.474066 98.442895 106.871313 110.188260 139.481710 159.400699 148.037756 136.331902 147.750000 150.982574 156.645074 166.427569 157.082819 155.942519 163.642119 170.272954 174.500000 181.455957 192.357881 195.435387 196.834743 203.179933 216.699936 224.978622 227.750000 235.557287 252.397290 267.390422 256.221086 258.468937 266.818717 272.495204 276.076261 279.079492 281.834242 283.993225 284.950361 286.395571 287.319866 287.829784 | ||
13 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.731295 286.934885 285.588553 283.808877 281.605081 279.740929 277.841965 276.076261 274.264773 271.984884 270.132466 269.254834 269.775001 264.330066 252.890048 239.250000 234.459714 235.836750 234.054437 241.305600 270.694442 273.218945 272.579152 269.500000 264.028430 261.432634 266.488374 247.717791 197.481397 220.248512 240.404473 259.500000 223.443835 188.256791 172.675466 172.770292 171.502653 157.085206 155.218453 74.340091 101.158035 89.840408 61.182640 57.986678 57.238515 40.065115 35.270846 48.000000 55.000000 45.260141 29.112168 27.526736 34.395568 47.554129 72.525492 90.725235 75.273104 98.442895 123.908169 123.327058 137.774603 158.571026 155.277182 141.776398 147.750000 146.655708 151.114340 159.159652 157.082819 174.466419 186.817906 178.263478 170.500000 180.054061 192.357881 201.069755 206.099504 208.269137 216.082620 222.190065 227.000000 238.001651 251.810432 256.659815 260.614484 273.606709 271.778237 270.641370 274.803502 279.131056 281.796182 283.966690 285.154806 286.482037 287.259981 287.803021 | ||
14 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.733436 286.956273 286.184209 285.239992 282.905292 280.768556 279.285747 277.282032 274.517569 273.534734 275.964231 275.259145 270.285982 262.569493 256.667701 248.000000 242.546528 240.466624 236.429399 242.787962 273.109171 273.218945 270.242659 270.500000 270.420848 245.605268 233.623390 223.800229 166.427569 234.075346 259.154226 213.000000 182.221224 148.037756 163.549064 216.301515 210.043129 133.771613 115.841856 56.612850 66.065889 59.058336 64.103035 91.407417 86.950294 48.030894 44.261211 59.000000 63.000000 49.255859 29.112168 34.459484 54.054827 68.970360 83.106830 96.415853 80.871180 101.190100 126.598199 125.078898 124.117749 138.658877 152.059659 150.332034 146.250000 165.405461 198.816919 189.552760 181.000381 197.770681 197.557905 176.132671 167.500000 179.119465 190.184197 202.277119 213.140724 213.019061 214.847987 219.959220 227.000000 237.557221 249.854239 259.044394 268.522601 275.343830 269.091831 268.197679 273.463756 278.151347 280.958857 283.595201 285.308140 286.616540 287.298479 287.795527 | ||
15 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.740930 287.058935 286.731829 285.819253 283.568666 281.796182 280.729528 279.492613 277.803912 277.357697 279.190313 274.673359 266.368459 265.308163 263.556363 256.750000 249.517920 242.935891 237.107960 243.529143 272.304261 272.784208 252.952617 258.500000 256.570608 208.297903 195.380500 228.835505 202.767154 247.210839 225.981586 149.250000 158.887671 135.972045 158.571026 194.962680 143.473216 68.314216 48.077481 45.416698 53.736216 57.134456 67.996895 91.407417 80.017546 41.060837 42.263352 43.000000 50.000000 43.262282 28.116446 48.324981 79.611862 99.147777 102.345625 88.828362 81.804193 99.358630 110.458019 114.567859 123.264196 132.851166 144.820233 151.109819 156.000000 215.885565 255.506939 228.535224 192.959162 181.039416 171.555802 160.684326 166.500000 187.063538 191.488407 194.228023 207.952457 213.697621 216.082620 220.795787 229.500000 240.001585 250.636716 262.280609 265.593669 264.300702 264.442281 267.439293 272.458947 277.016947 280.311833 282.958362 284.967399 286.424393 287.264258 287.793386 | ||
16 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.786963 287.234315 286.530074 285.001473 283.144107 282.443206 281.142037 279.425626 280.247602 281.903924 276.832791 268.961941 267.560749 271.959219 269.778380 259.000000 250.633342 246.948448 241.518603 244.640914 271.096897 266.697892 230.054994 226.500000 224.075812 187.383169 197.770681 257.788343 228.535224 189.829476 172.616905 174.750000 176.776728 130.341380 105.471960 93.389827 59.384905 50.380682 46.246011 45.416698 39.509671 42.705360 47.554129 42.259272 31.488306 27.120723 30.276199 25.000000 31.000000 35.270846 39.069392 71.104012 96.322232 112.776288 122.546360 97.364289 84.603231 95.695691 102.387929 115.443779 130.946176 139.488550 140.798329 152.665390 196.500000 261.317659 261.729015 204.088594 155.824000 141.003890 143.292647 148.964892 163.500000 187.063538 187.575775 188.593655 202.764190 212.679781 216.082620 220.516932 232.000000 243.779238 250.832336 259.044394 260.468037 261.943180 264.338957 266.765171 271.186188 276.191929 279.817050 282.294989 284.456286 286.020884 287.114543 287.786963 | ||
17 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.862971 287.324144 286.136172 285.154806 283.780945 283.927555 282.534255 279.157677 277.972442 277.461020 270.876947 269.108387 269.604674 279.001513 280.666909 262.250000 244.498518 238.923333 241.518603 259.093943 269.084623 246.699994 228.185800 209.000000 211.823676 208.297903 220.477397 235.129600 167.088289 122.077988 181.991781 236.250000 162.776596 114.253766 96.345558 75.465206 60.260825 54.864066 51.740420 46.349710 37.612798 37.895661 37.819478 32.429643 29.507521 32.099335 33.272987 31.000000 23.000000 43.262282 73.919677 103.786969 114.015564 126.404799 139.861276 115.384581 100.464447 105.768774 113.148049 123.327058 138.628157 151.103970 148.842136 175.221158 256.500000 260.596515 230.618638 136.695181 118.688838 130.845623 142.162121 151.628399 159.500000 166.502407 174.533668 193.825568 205.728914 207.590577 211.761404 219.401509 230.500000 242.001519 250.636716 259.214721 261.786057 263.556221 264.442281 266.680906 270.918239 275.624729 279.398387 282.003105 284.319989 285.963240 287.084600 287.783751 | ||
18 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.861901 287.302756 286.049706 285.018510 284.152434 283.546953 283.049892 279.023702 274.938895 275.704524 272.862228 269.401281 267.220095 277.436559 279.778049 256.500000 236.969415 236.454067 249.661330 270.582248 249.766790 216.703148 237.064471 256.500000 256.570608 233.169480 200.758406 179.112153 159.159652 127.608722 163.963173 173.250000 125.442911 98.166151 88.048829 73.758099 61.136745 53.070712 51.740420 45.416698 40.458107 42.705360 39.766408 37.344457 39.411447 39.069392 35.270846 31.000000 30.000000 51.253718 88.855514 101.806184 122.862231 171.184192 201.425421 166.600145 116.325663 127.746409 127.494876 127.706658 137.774603 146.955606 158.494705 200.110282 263.250000 246.894772 142.818240 119.516468 124.353524 134.430894 144.423174 153.759206 161.000000 169.306197 176.707353 185.374016 194.981790 201.822812 209.600796 220.795787 233.500000 246.223602 255.527199 253.593927 253.877940 258.220777 265.888807 272.579470 275.339401 277.841965 280.540194 282.003105 284.439249 285.847951 287.131653 287.797668 | ||
19 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.834067 287.409695 286.693399 285.205918 284.125899 283.585013 282.585819 278.554791 274.686099 274.567967 272.986308 274.087572 273.011216 269.807406 262.667503 254.000000 252.585332 252.195639 250.679171 252.052724 222.399861 233.223150 262.298586 268.500000 250.178189 212.254745 171.478694 152.676953 157.177493 135.904822 117.088790 110.250000 110.664993 99.774913 88.878502 77.172313 62.012665 53.070712 49.908950 44.483685 40.458107 42.705360 38.792943 43.242235 50.305766 45.043727 34.271917 34.000000 45.000000 56.248365 80.889734 99.825398 109.100750 133.219055 165.833650 156.167344 110.727587 135.988022 131.978259 144.349136 160.820545 158.571026 176.191081 230.443901 254.250000 198.578101 113.781888 117.534309 126.241753 137.418619 148.380015 155.890012 162.000000 170.708093 179.315774 189.398564 202.393600 204.537054 210.218112 221.074643 235.000000 245.779172 247.115569 246.951171 251.681241 256.607736 267.438657 277.719646 280.698385 281.038910 281.491700 281.631616 284.183693 285.934418 287.101710 287.795527 | ||
20 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.869394 287.623574 287.068086 285.887401 284.948482 283.128290 281.606110 280.162486 277.382586 272.501501 267.650864 270.719300 275.225468 267.851214 256.001057 252.750000 256.210455 261.455388 255.429094 228.705524 221.997406 234.962098 241.270156 207.500000 212.889079 215.646324 178.051690 143.865219 143.963098 137.978848 119.252223 117.000000 117.665059 106.209959 94.686213 81.440079 63.764505 53.967389 48.077481 43.550672 40.458107 40.781480 48.527594 63.884456 65.161656 45.043727 35.270846 43.000000 62.000000 68.235518 79.894012 98.835006 116.964453 124.457869 120.622481 111.590835 102.330472 124.083470 128.391553 160.115694 182.159380 197.565653 227.671446 259.999736 245.250000 156.751729 109.633837 116.873589 128.759391 142.198981 157.989488 165.478640 165.500000 170.708093 181.489459 191.008384 200.540647 206.572736 215.465303 220.238076 228.250000 239.557155 241.638229 243.714956 250.509668 256.483656 263.615694 270.051514 275.004464 277.326329 279.474508 282.666478 284.371100 285.819129 287.028992 287.794457 | ||
21 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.868324 287.426806 286.664577 285.989624 286.142555 284.308157 281.451419 280.430435 280.584663 277.047727 270.008386 270.133514 265.176170 263.938828 259.112065 251.250000 248.123641 245.096499 235.072278 227.223162 230.851413 224.528412 214.634146 197.500000 200.104242 193.601063 169.088513 151.418134 142.641659 131.756772 127.905955 130.500000 115.331704 118.275669 111.279671 84.000740 63.764505 53.967389 47.161746 44.483685 40.458107 35.009841 52.421454 69.782233 61.200085 41.060837 41.264423 48.000000 60.000000 67.236589 77.902567 94.873435 113.032601 110.829358 92.726227 91.673671 110.727587 121.336265 127.494876 170.626733 206.912428 234.900934 257.433533 245.221819 185.250000 130.790533 114.473229 114.230710 140.088762 152.954794 153.467383 156.955415 165.000000 173.044585 184.097880 191.410839 199.058285 208.608417 214.230670 216.891808 226.750000 239.557155 241.833849 244.225937 250.949008 256.731816 262.582461 267.270762 271.722087 275.418474 278.827484 282.639943 284.967399 285.867166 287.225760 287.875818 | ||
22 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.897228 287.542300 287.029657 286.551848 286.116020 285.526085 282.740510 279.894537 278.730829 276.841080 274.227109 275.552038 273.692524 266.677498 254.223338 251.250000 249.796775 238.614675 226.590272 226.481981 228.436684 228.006307 209.026564 198.000000 185.188598 168.729487 157.137610 150.159315 139.998780 134.522139 127.905955 118.500000 107.553853 123.101954 117.917054 99.364701 89.166182 59.347449 47.161746 44.483685 44.251853 49.438938 56.315315 57.003715 48.324981 41.060837 47.258000 53.000000 69.000000 76.226954 75.911122 91.902257 104.185935 99.147777 92.726227 104.951780 125.655790 146.061105 152.601823 212.670888 245.322330 256.472430 250.194106 202.443637 139.500000 126.463667 122.077988 118.195029 135.682896 148.771977 152.336857 155.890012 164.500000 174.446480 185.402091 190.203474 196.834743 205.554895 210.835429 218.286086 231.500000 239.779370 238.117082 244.055610 250.949008 256.855896 262.169168 267.270762 271.454137 275.160656 278.713303 282.056175 284.831102 285.982454 287.191539 287.866183 | ||
23 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.945403 287.781844 287.558061 287.011849 285.319972 285.335784 284.596800 282.507042 280.331867 278.597577 279.066233 281.117009 281.868225 274.697889 254.889982 248.250000 244.777373 239.231991 236.429399 226.852571 220.387587 222.354728 211.830355 198.500000 178.263478 161.946330 154.747429 150.159315 141.980939 135.904822 119.973368 107.250000 107.553853 123.906334 117.917054 113.021555 111.064179 62.934156 46.246011 43.550672 48.994035 60.982215 54.368384 45.208160 43.373018 48.030894 56.248365 61.000000 85.000000 88.214108 74.915400 87.940687 98.288158 99.147777 107.155324 122.023635 127.521815 141.482431 198.332333 246.831765 259.832738 260.620794 220.432020 144.887539 125.250000 125.021378 123.460672 122.820067 128.759391 148.771977 162.511593 162.815132 163.500000 173.979182 183.663143 191.008384 198.317104 204.197774 209.909454 219.122653 230.000000 235.557287 236.356509 243.885283 251.095454 256.855896 261.859198 267.523558 272.124010 275.676293 278.827484 281.658150 284.439249 286.097743 287.221482 287.891876 | ||
24 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.964672 287.858840 287.634920 286.619996 285.426111 285.449964 285.782764 285.722432 284.713657 283.143803 283.036796 283.020815 282.038552 271.372361 258.667635 246.500000 234.738570 232.132851 235.411559 225.740800 218.375313 211.051568 210.895758 200.000000 181.459687 166.468434 160.125336 157.082819 149.909576 133.830797 122.136801 121.500000 116.887274 119.080050 114.598362 107.900235 95.297621 58.450772 48.077481 43.550672 49.942471 57.134456 53.394919 50.122975 52.286552 55.996674 64.239801 75.000000 94.000000 92.209826 73.919677 78.036760 93.373343 104.988568 115.812782 129.611126 134.985917 153.386983 236.889430 259.094643 259.832738 232.411915 162.516609 109.887208 118.500000 116.367646 120.003963 126.784385 128.759391 146.381797 163.076856 166.011342 167.500000 176.782972 183.228406 193.423113 202.393600 204.876334 209.600796 217.170664 224.500000 230.890775 237.725844 244.225937 250.949008 256.607736 262.065844 267.439293 272.257985 276.037238 279.093905 281.870430 284.319989 286.030491 287.336977 287.917569 | ||
25 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.958249 287.756179 287.356307 286.364440 286.540579 286.553711 286.246837 284.516660 283.112619 284.177037 283.284956 280.531223 277.439720 257.874630 255.778842 250.250000 240.873394 234.293459 226.929552 220.923124 218.777768 208.877883 204.353580 197.000000 183.057792 168.164224 160.125336 156.453410 148.588136 132.448114 133.675110 137.250000 121.553985 107.818720 103.812615 92.536274 70.771864 53.967389 49.908950 46.349710 45.200289 47.515058 59.235710 64.867419 63.180871 63.962453 71.232307 86.000000 90.000000 83.219460 68.941065 74.075190 96.322232 109.855893 115.812782 133.404872 157.378222 216.572685 252.132933 259.094643 253.857864 171.845793 99.774913 108.331638 111.750000 111.319635 120.003963 129.427264 145.124038 158.332700 163.642119 167.609446 174.000000 180.521360 185.836828 194.630477 202.023009 206.572736 213.613354 218.007231 222.250000 230.001915 237.725844 244.055610 250.363221 256.979976 262.892431 267.607823 271.923048 275.830984 279.360327 282.401129 284.405175 285.895988 287.264258 287.836208 | ||
26 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.923992 287.396863 286.626148 287.250368 287.124347 286.363410 285.267128 280.229473 277.382586 282.833834 280.307034 268.669048 265.176170 260.417681 257.778776 250.750000 255.931600 259.294780 239.482922 222.776076 213.545855 202.791567 192.203821 192.500000 181.459687 165.337908 154.747429 144.494629 132.070143 130.374089 127.184811 120.750000 111.442779 100.579294 92.197194 88.268507 79.531063 59.347449 48.077481 48.215736 43.303416 45.591179 65.076500 69.782233 67.142441 74.915400 79.223743 82.000000 77.000000 96.205543 101.799905 107.748539 114.015564 116.670149 114.850842 124.868944 176.038476 249.539138 257.512993 247.707684 200.084001 123.724764 86.904821 102.887142 112.500000 114.925357 123.460672 130.748704 191.700343 222.270032 193.601063 168.674850 177.000000 181.455957 188.445249 194.228023 200.911238 218.108265 225.651027 220.516932 221.000000 230.668560 237.725844 243.885283 250.802561 258.468937 264.442281 268.956066 272.592921 276.140365 279.588688 282.507268 284.592583 286.020884 287.153041 287.767693 | ||
27 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.841560 287.144486 286.309105 287.148146 286.991672 284.726820 281.451419 277.215045 276.624199 280.870690 274.723430 253.585047 258.022432 273.915411 265.111867 242.750000 247.008219 255.282222 235.072278 220.181943 206.704123 196.705250 188.932732 183.000000 174.001865 166.468434 158.930245 145.124038 131.409423 129.682747 114.925357 111.750000 109.109423 102.188055 95.515885 89.975613 78.655143 63.830832 53.571890 51.014774 54.684653 50.400878 52.421454 55.037790 70.113619 88.855514 78.224813 73.000000 84.000000 191.103842 244.188213 179.056810 132.691860 129.325194 108.117264 112.539271 201.229819 243.128994 231.509370 168.874893 108.753788 85.559811 86.100441 92.775936 106.500000 117.809935 120.695305 138.016621 231.982552 261.110468 201.514746 166.544043 188.500000 191.736522 198.878935 200.264845 222.405485 238.804361 224.416394 214.660963 222.000000 233.112924 241.051371 246.610517 254.317280 259.709738 265.062221 270.809900 274.334591 277.274765 280.273773 282.454199 284.694805 286.136172 287.255703 287.813726 | ||
28 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.796598 287.208650 286.501252 286.551848 285.319972 280.996917 278.099783 275.004464 270.978431 268.471891 262.439500 255.781746 255.297198 254.157864 246.223602 241.000000 248.960208 255.590880 237.107960 205.358324 203.886939 201.052619 191.736522 179.000000 170.805656 169.860013 166.100787 153.306362 138.677340 129.682747 136.559688 125.250000 110.664993 98.166151 98.004904 102.778914 95.297621 72.797599 59.982033 50.081761 70.808071 75.411312 67.996895 91.407417 107.748539 90.846959 92.209826 86.000000 98.000000 225.067444 255.141160 227.586049 192.652597 151.714891 126.394119 171.342326 235.751289 161.628597 87.144426 75.151463 83.147186 86.389483 89.317964 97.442646 114.000000 135.117399 127.608722 136.034461 206.176762 250.952200 223.560007 192.646420 198.000000 198.278700 198.878935 232.058777 264.282209 240.161482 213.613354 212.151262 225.250000 236.668362 245.159376 257.170796 265.154329 266.534143 267.851951 271.652552 274.870490 277.326329 279.931230 282.480733 284.762953 286.145780 287.264258 287.804091 | ||
29 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.867253 287.721958 286.943190 284.558508 282.427664 279.360327 275.779420 272.391960 269.208862 265.785484 261.198699 256.660426 250.698367 246.724331 239.779370 233.250000 231.113446 229.972243 221.161787 203.134781 197.850116 196.270513 193.138418 177.500000 168.142148 165.903171 161.320426 147.641676 134.052302 132.448114 140.886554 116.250000 115.331704 112.645004 105.471960 107.900235 104.056820 75.487629 66.392177 49.148748 66.065889 181.224686 198.441214 141.538526 90.911865 83.876902 115.185203 92.000000 156.000000 239.052456 255.141160 184.999165 127.777045 116.670149 111.003083 115.384581 111.660599 64.560707 71.900922 74.275543 76.318759 83.070792 91.731106 101.331572 111.750000 123.579089 133.830797 144.623818 152.047543 227.050394 245.605268 199.571540 177.500000 188.932732 203.226304 253.791339 249.829181 210.304819 204.662263 215.218674 224.250000 235.779502 248.680524 259.896030 266.179455 268.271265 269.505124 271.905348 274.736515 277.635711 280.349893 282.666478 284.831102 286.962405 287.713403 287.823361 | ||
30 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.909004 287.597908 286.270675 284.013322 281.843895 278.789423 275.521602 273.262794 270.557105 265.682161 260.950539 255.195959 252.571965 249.071762 238.890511 230.250000 223.584344 217.625911 212.679781 206.099504 198.655026 191.488407 189.400030 181.500000 166.011342 157.424225 152.954794 145.753448 140.659500 145.583606 132.953966 120.000000 143.331968 134.363284 108.790652 96.804041 93.545781 89.834456 85.622608 126.588803 147.631417 230.283614 209.149330 119.913342 82.988723 110.761407 135.163792 177.000000 230.000000 252.038539 255.141160 139.441104 53.071864 52.421454 57.134456 56.581526 51.014774 48.993216 65.624186 69.895944 77.172313 86.389483 94.948629 102.887142 109.500000 117.088790 142.126898 140.659500 187.923886 248.562019 224.690533 170.272954 162.000000 173.044585 190.184197 209.923761 204.617143 201.144252 207.748846 216.612952 225.250000 235.335073 246.919950 255.978507 265.007882 271.001027 270.538357 271.989613 275.071451 278.202910 280.958857 283.011432 285.018510 287.461988 287.858840 287.843701 | ||
31 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.788033 287.063212 285.675019 283.877025 281.684685 278.751363 276.346620 275.205426 271.821083 264.648927 259.957898 255.342406 255.978507 252.984148 241.557089 232.250000 223.863199 217.008595 213.358341 207.211276 197.850116 193.662092 183.792449 175.500000 162.282431 161.381066 164.308152 152.676953 140.659500 151.805682 133.675110 123.750000 127.776266 111.840624 93.856540 89.975613 94.421701 101.491253 99.358630 217.091035 211.176654 156.214252 121.537474 139.572600 155.287386 154.573194 203.090996 242.000000 240.000000 245.046033 207.346483 94.873435 28.497791 32.952153 41.743420 43.303416 47.282723 55.403359 62.934156 69.895944 81.440079 92.197194 100.579294 105.220498 111.750000 123.579089 132.448114 134.052302 213.729676 252.147290 215.646324 165.478640 152.500000 165.100511 175.403142 182.959287 191.646476 202.162092 209.292138 219.122653 229.000000 236.890577 245.746234 253.764254 263.543416 269.512066 271.158297 273.337856 276.344210 278.924801 281.263339 283.887085 286.177032 287.615706 287.850285 287.827643 | ||
32 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.717378 286.909220 285.655804 283.808877 281.605081 278.827484 276.243493 274.334591 271.315492 265.992131 260.950539 255.342406 255.467525 250.832336 240.001585 231.500000 225.257478 218.243228 211.322660 203.505371 195.837842 191.488407 180.054061 172.000000 162.815132 163.076856 164.308152 150.159315 135.373742 140.744214 130.069388 119.250000 105.998283 90.122344 93.856540 106.193128 111.940099 114.941403 94.779956 160.177260 140.043926 71.563553 65.076500 161.197784 215.701337 187.432035 213.080290 197.000000 180.000000 161.135958 97.817016 48.324981 34.395568 40.739874 46.553119 48.045598 58.478875 62.729238 66.520862 76.027383 89.122060 98.004904 101.383674 104.442713 111.000000 124.300234 124.152013 150.570296 217.506133 219.282306 185.122117 159.618923 153.000000 165.100511 172.794720 185.374016 194.981790 200.804971 207.748846 218.564942 227.750000 236.668362 249.463001 257.170796 263.543416 268.891665 271.984884 273.506387 276.143248 278.924801 281.225278 284.178969 287.165183 287.663742 287.854563 287.832996 | ||
33 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.748423 287.024714 285.723056 283.774802 281.684685 278.941664 275.882547 273.329782 270.809900 266.922041 261.198699 255.342406 253.423600 246.528711 236.446147 229.500000 224.420911 217.317253 207.590577 198.687695 192.618203 187.141038 184.727046 176.000000 166.011342 160.250540 153.552339 142.606400 134.052302 124.843355 121.415656 117.750000 108.331638 106.209959 114.598362 118.142875 115.443779 114.941403 83.791138 67.809002 61.323707 58.096396 67.023430 120.896305 163.210527 150.590305 141.157369 142.000000 131.000000 77.225884 29.112168 27.526736 41.276309 46.580664 47.515058 52.787780 70.608040 71.886586 71.900922 80.406983 95.096934 101.323596 102.188055 106.776068 111.750000 119.973368 130.374089 183.606282 223.800229 184.624687 146.684226 147.366787 157.500000 167.437004 178.011563 190.605929 194.981790 200.126411 208.057504 218.007231 226.000000 237.779436 256.505295 261.258646 261.786057 271.621427 273.328087 273.506387 275.942286 278.924801 281.111098 283.754410 287.079997 287.654135 287.794677 287.822291 | ||
34 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.759129 286.977661 285.598160 283.689617 281.578546 278.941664 276.295056 274.401578 271.399757 265.372191 259.213418 255.195959 251.039021 243.985661 234.668428 227.500000 220.795787 213.922012 205.894175 194.981790 188.191200 186.271564 189.400030 175.000000 164.413237 157.424225 146.979342 140.088762 139.998780 126.226038 124.300234 125.250000 116.887274 133.558903 127.043456 102.778914 99.677221 94.317839 80.128199 73.407079 85.034617 80.221010 73.837686 65.850382 66.152049 72.923955 83.219460 139.000000 116.000000 66.237660 35.086503 33.469091 44.225198 48.527594 49.438938 59.426835 72.474066 70.970851 75.487629 81.282903 94.243380 102.153269 109.427481 116.109489 116.250000 121.415656 134.522139 216.642269 228.835505 164.905697 135.378964 148.964892 158.500000 168.371601 180.185248 188.191200 195.722971 204.537054 211.144087 220.238076 230.250000 243.112594 258.657107 260.236684 261.493164 274.103029 273.224764 274.854630 278.085880 279.801383 280.996917 283.382921 286.415551 287.394736 287.461026 287.759129 | ||
35 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.734506 286.922053 285.569338 283.706654 281.472406 278.941664 276.501311 274.066642 270.725635 265.475514 259.089338 252.706367 246.099535 239.290798 231.335205 223.500000 216.055241 209.600796 202.501373 192.758247 184.569106 179.750511 176.782972 165.000000 158.020818 150.641068 141.003890 138.200534 143.963098 149.731657 149.540286 128.250000 114.553919 131.145761 118.746727 94.243380 92.669861 82.661043 80.128199 84.603231 100.209599 90.802348 76.758081 64.867419 61.200085 68.941065 78.224813 89.000000 80.000000 77.225884 44.048004 37.430662 49.140012 52.421454 52.324757 59.426835 57.545863 65.476442 78.177659 83.910662 91.682720 106.301633 117.471289 118.442845 117.000000 123.579089 149.731657 247.696096 211.841448 143.394071 133.117912 152.161101 160.000000 167.437004 177.142090 185.374016 198.317104 207.590577 213.922012 222.468921 235.250000 246.668032 251.810432 257.341123 268.522601 274.227109 270.951651 275.275956 279.626588 280.420147 281.073037 283.356386 286.159995 286.923976 286.994771 287.724872 | ||
36 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.730224 286.930608 285.598160 283.962210 282.109244 279.398387 276.552874 272.927858 269.124597 265.785484 259.089338 251.095454 244.225937 236.747747 229.557486 222.500000 214.939818 207.440188 199.447850 190.905295 182.154377 174.098931 168.838899 160.000000 151.095698 148.945278 147.576887 138.829943 136.034461 167.706541 186.318647 127.500000 101.331572 96.557390 100.493923 102.778914 93.545781 80.867689 83.791138 93.933358 89.776799 93.688167 80.651941 61.918530 64.171263 76.906845 68.235518 45.000000 63.000000 88.214108 46.039449 35.449877 56.020752 62.156105 54.248637 57.529962 60.344901 70.970851 82.661043 90.042102 97.657594 117.087381 127.123857 117.665059 111.750000 127.905955 238.223396 257.606892 158.971048 129.052987 143.292647 153.226504 161.000000 168.838899 178.011563 188.996110 199.428876 205.215615 215.156645 229.161457 239.750000 246.445817 252.984148 261.428974 268.083261 270.256546 272.398177 275.191691 277.817931 280.317019 281.796182 283.250247 286.773330 287.308270 287.003326 287.725942 | ||
37 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.729154 286.930608 285.655804 284.115544 282.719548 280.007351 276.191929 272.458947 268.787536 263.925664 257.352216 250.363221 243.374302 236.747747 229.779701 222.250000 215.218674 208.057504 199.447850 190.534704 182.556832 174.533668 165.567810 157.500000 151.628399 148.945278 142.796526 129.388800 130.748704 170.471908 162.520884 112.500000 115.331704 119.080050 107.131306 93.389827 83.034743 76.384306 81.959669 78.072142 86.931489 91.764288 70.917291 53.071864 55.257730 56.992396 51.253718 50.000000 58.000000 66.237660 37.077947 34.459484 71.748159 79.678476 53.286697 64.169016 70.608040 77.380995 94.317839 105.808660 112.168002 121.235746 123.906334 119.998415 120.750000 137.280832 228.544612 184.927722 135.053486 141.003890 164.207382 165.478640 160.000000 174.913779 189.314723 196.642752 204.987733 210.644099 219.477861 230.834591 237.250000 241.779304 251.810432 260.747665 265.886562 269.015745 274.464644 277.045525 278.420816 280.213892 281.643941 283.727875 287.114071 286.808687 286.969106 287.733436 | ||
38 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.733436 286.943440 285.761485 284.302952 282.188849 279.588688 276.140365 272.458947 268.703271 263.615694 256.483656 249.484542 243.203975 236.943366 230.001915 223.000000 215.776385 207.131530 198.430009 190.164114 182.959287 173.664194 167.437004 160.500000 152.161101 143.292647 134.430894 126.871162 127.445105 140.744214 140.165409 117.750000 128.554051 128.732619 99.664250 79.732973 82.158823 77.280983 94.779956 101.397460 86.931489 85.992649 67.996895 57.986678 61.200085 58.983841 51.253718 51.000000 60.000000 56.248365 48.030894 42.382625 53.071864 84.545801 103.307565 82.189308 75.273104 84.706873 97.904546 111.064179 129.239069 134.510512 127.123857 124.665126 129.000000 130.790533 138.670189 134.052302 133.165257 151.759703 172.121065 172.936462 167.000000 179.586763 191.053670 197.045206 205.728914 214.036902 223.799077 231.113446 238.250000 248.223536 258.070249 263.132245 271.012193 277.949512 275.084584 276.202873 279.693575 281.193601 282.062604 284.232039 285.682956 285.963240 286.960551 287.742000 | ||
39 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.748423 286.999049 285.790307 284.115544 282.029640 279.588688 276.810692 273.329782 268.197679 261.755874 255.863255 249.777435 243.714956 236.943366 229.779701 222.750000 215.776385 208.674821 202.162092 195.722971 188.996110 179.315774 172.109988 162.500000 151.095698 141.031595 132.638258 127.500572 124.141506 116.547254 117.088790 112.500000 112.998349 113.449385 99.664250 87.414953 83.910662 74.590953 89.285547 94.866371 89.776799 80.221010 62.156105 56.020752 59.219300 58.983841 61.243012 57.000000 54.000000 52.252647 59.979563 65.161656 62.901493 90.386592 120.622481 85.034617 84.603231 103.021569 98.801223 118.947459 142.042370 139.488550 128.732619 128.554051 124.500000 125.742522 126.917380 153.213175 150.159315 149.369523 156.858962 165.478640 175.500000 187.998135 191.488407 196.240297 205.728914 215.054743 227.502976 238.084838 248.000000 255.556627 258.852726 267.560749 272.183766 277.080952 275.704524 276.371403 279.157677 281.915492 283.356651 283.701340 284.371100 285.761485 287.003326 287.759129 | ||
40 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.755917 287.046102 285.847951 284.115544 282.082709 279.817050 277.068511 273.731706 269.967249 264.442281 255.863255 249.484542 243.203975 235.769651 229.557486 224.500000 219.959220 214.539328 207.251296 198.687695 188.996110 179.315774 170.240794 161.000000 152.161101 142.727384 133.833348 128.129981 122.820067 113.781888 108.435058 102.750000 98.220432 100.579294 99.664250 90.829167 84.786582 84.454396 75.549525 81.804193 82.189308 62.906095 53.394919 61.918530 61.200085 50.022339 58.246224 58.000000 55.000000 55.249435 133.663023 162.220135 104.185935 68.970360 92.726227 84.086180 79.938167 102.105834 126.598199 141.721376 141.188817 133.680839 126.319476 120.776200 117.750000 127.184811 181.533376 208.713632 175.335695 155.942519 156.293699 171.871059 192.500000 196.409507 194.096829 203.484484 212.028952 220.822507 234.293459 250.354487 257.250000 255.112197 258.070249 268.753039 270.572853 276.584631 280.354074 279.489215 278.286842 281.863928 284.993242 283.515596 284.166655 285.626982 286.973383 287.747353 | ||
41 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.759129 287.063212 285.992062 284.439249 282.135779 279.893170 276.810692 274.669528 274.517569 269.505124 254.994694 249.191649 243.714956 239.877656 235.112858 228.750000 221.911210 214.539328 205.554895 194.981790 184.166652 176.707353 167.904302 159.000000 151.095698 142.162121 135.028439 130.018210 126.123666 121.386646 112.761924 102.000000 98.220432 92.535486 89.708175 91.682720 93.545781 90.731133 66.392177 67.809002 69.859635 67.715794 54.368384 55.037790 59.219300 55.000951 58.246224 48.000000 70.000000 103.198050 212.325095 214.710945 129.742971 82.598871 90.802348 83.137744 66.875990 85.622608 130.184906 148.728735 148.017244 136.999531 129.536999 130.887406 131.250000 135.838543 200.199602 198.142116 184.147429 163.710607 163.076856 199.038839 222.500000 195.007611 195.835776 209.118852 220.181943 233.036597 246.331132 253.979610 257.000000 259.334280 264.916924 275.055141 272.623106 277.825432 283.040480 279.742011 279.425626 283.874910 286.211169 284.975017 284.865176 285.992062 286.981939 287.733436 | ||
42 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.762340 287.071767 286.097743 284.677768 282.427664 280.235712 276.965383 276.210236 276.708464 269.091831 254.126134 249.777435 246.951171 245.550615 238.446081 228.750000 219.122653 209.909454 200.804971 191.646476 182.154377 177.142090 169.773496 159.500000 152.693803 146.684226 141.601436 136.941715 130.748704 129.682747 121.415656 108.000000 108.331638 100.579294 92.197194 90.829167 88.290262 78.177659 59.982033 55.679837 65.117453 86.954589 68.970360 51.105938 56.248122 63.962453 60.244083 62.000000 113.000000 141.157369 179.466255 152.316208 117.947416 107.908963 92.726227 74.601817 65.942977 91.117017 105.974636 118.947459 132.653283 137.829204 161.712228 183.776794 149.250000 130.069388 161.484466 153.213175 173.447467 173.271329 176.077907 207.562064 226.500000 204.820879 210.616831 208.716397 233.893790 254.750534 260.529413 256.768167 261.000000 272.000528 275.871604 281.527570 278.041631 280.307034 283.557097 280.753193 282.774991 286.195273 286.744012 286.540579 285.546659 286.674184 287.123098 287.744141 | ||
43 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.762340 287.097433 286.049706 284.592583 282.958362 280.464074 278.563856 279.559600 277.635381 266.198777 254.250214 250.949008 248.654442 243.985661 233.335139 224.000000 216.334097 209.292138 201.483532 192.017066 183.764197 178.881037 171.642690 161.500000 159.086221 156.858962 151.759703 145.124038 136.034461 135.904822 126.463667 112.500000 113.776134 116.666908 110.449998 87.414953 62.888585 58.450772 52.656155 48.215736 57.529962 74.449372 69.943825 56.020752 55.257730 56.992396 58.246224 121.000000 181.000000 128.171286 76.906845 74.075190 102.220009 100.121243 65.791914 60.375271 74.340091 99.358630 82.661043 78.655143 97.657594 146.955606 210.779451 214.888199 132.000000 115.646502 137.978848 146.605977 159.600457 176.856600 187.948432 199.571540 219.000000 236.129874 238.874730 228.034229 257.240990 274.428789 271.641111 269.037815 274.500000 280.666909 281.544564 282.208879 281.849242 283.409036 284.487007 284.797923 285.521470 286.298400 286.477591 285.797600 285.120732 286.731829 287.230038 287.766623 | ||
44 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.771975 287.131653 286.011277 284.456286 283.011432 279.702869 280.471710 283.913775 280.837459 267.955274 254.374294 251.095454 245.077573 238.117082 230.890775 224.250000 217.170664 210.526771 204.197774 194.981790 188.191200 182.793669 172.577286 168.000000 166.011342 161.381066 155.344974 150.159315 143.963098 137.287506 125.021378 114.000000 105.998283 108.623101 104.642287 79.732973 55.005306 54.864066 49.908950 46.349710 41.406544 35.971781 44.633734 50.122975 51.296159 47.035172 56.248365 150.000000 199.000000 115.185203 65.953898 78.036760 102.220009 91.360057 60.982215 58.478398 73.407079 78.296729 71.004246 69.020024 98.511147 171.016120 207.561929 154.220960 93.750000 126.463667 160.793124 152.552455 153.306362 164.308152 182.861064 216.085289 251.500000 262.298586 259.307364 272.706716 275.770514 276.125191 277.196960 278.518908 279.750000 280.666909 281.153325 280.505608 280.531223 283.409036 284.590330 285.219249 284.918584 285.318691 284.917121 283.170642 284.013322 286.347534 287.221482 287.784822 | ||
45 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.826573 287.088878 286.040099 284.388138 282.507268 279.512568 278.357601 278.956715 274.349039 262.995754 255.863255 250.509668 243.714956 237.725844 235.557287 229.750000 220.795787 210.218112 203.179933 204.987733 201.874664 200.617882 186.128941 184.000000 183.590493 172.686328 158.332700 150.788724 146.605977 143.509581 132.232821 117.750000 101.331572 88.513583 76.433409 64.369012 57.633065 54.864066 50.824685 51.014774 48.045598 40.781480 52.421454 67.816307 60.209693 44.048004 49.255859 58.000000 91.000000 100.201261 86.864069 70.113619 63.884456 67.023430 65.791914 56.581526 71.541053 112.178917 106.871313 88.290262 99.364701 119.576400 118.275669 106.776068 116.250000 133.675110 151.805682 161.141811 159.600457 175.661510 191.340011 209.160168 242.500000 272.111853 272.784208 274.316535 275.399924 272.393108 275.653669 278.797763 279.500000 280.222479 279.392751 272.670562 270.572853 281.671915 284.590330 284.460862 281.502232 280.626401 281.682001 282.056175 284.745916 286.972013 287.426806 287.804091 | ||
46 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.826573 287.093155 286.049706 284.302952 282.294989 279.778990 276.862256 273.731706 269.293127 262.995754 257.352216 253.438600 246.440189 238.899559 236.890577 230.500000 221.632354 217.008595 216.411864 214.252495 210.326216 212.790516 196.876805 185.500000 186.254001 178.904222 161.917971 151.418134 149.909576 146.966290 140.165409 128.250000 110.664993 89.317964 71.455371 63.515458 60.260825 56.657419 55.403359 46.349710 42.354980 35.971781 42.686804 48.157049 41.392233 35.086503 42.263352 50.000000 72.000000 78.224813 63.962453 51.296159 46.191123 45.607199 45.591179 48.994035 65.009964 102.105834 91.627809 73.399624 113.021555 135.340185 107.014339 95.109291 135.000000 145.213420 150.422998 176.999085 175.335695 183.429597 196.992642 220.346901 253.500000 272.579152 273.218945 273.914081 273.917562 265.946783 271.949769 278.240052 276.500000 275.555967 278.414655 276.758412 272.037320 282.044155 284.590330 280.500398 276.344210 276.913820 280.197652 282.852223 284.439249 286.184209 287.238593 287.770905 | ||
47 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.791245 287.204372 285.953632 284.234804 282.241919 279.893170 276.810692 273.396769 269.882983 265.372191 259.957898 255.781746 248.484115 237.725844 232.446279 227.750000 224.699766 225.342368 221.840348 208.693638 206.704123 201.922093 188.465433 177.500000 187.319404 196.427378 176.856600 149.529905 155.856053 158.027757 145.213420 126.000000 106.776068 86.100441 69.796025 63.515458 67.268184 74.590953 60.897768 43.550672 38.561234 36.933721 35.872548 31.446680 42.382625 61.971008 56.248365 53.000000 67.000000 61.243012 57.988119 63.180871 66.833345 67.023430 76.373251 91.673671 79.938167 88.369812 83.557719 75.151463 107.900235 115.428035 102.188055 124.665126 159.750000 137.280832 158.719099 180.302684 186.665067 178.649236 190.774747 233.664440 269.500000 272.579152 272.349471 265.060074 271.694019 271.375267 255.899538 247.008219 254.750000 270.445024 280.566467 279.653972 279.066757 283.160876 284.590330 278.646563 274.535553 276.501311 280.654375 283.250247 284.132581 285.982454 287.165874 287.747353 | ||
48 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.789104 287.118821 285.924810 284.251841 282.507268 280.045411 277.068511 273.999655 270.641370 266.302101 260.330139 254.463726 250.698367 254.157864 250.890114 233.750000 227.767179 230.280901 221.501068 212.028952 212.740945 208.443147 193.605716 189.500000 202.767750 207.167377 190.600139 170.929829 163.123971 160.793124 153.146007 137.250000 110.664993 86.904821 71.455371 69.490332 75.151463 70.107569 56.319094 51.014774 46.148725 40.781480 36.846013 33.412605 45.353803 64.958176 64.239801 55.000000 69.000000 64.239801 60.975286 66.152049 66.833345 75.784616 106.193384 125.817381 89.268294 89.285547 89.834456 83.034743 89.975613 95.515885 128.732619 173.665588 160.500000 151.703719 175.311300 173.034767 170.929829 213.306855 247.866320 261.364922 271.500000 272.579152 271.479998 257.815887 272.435200 257.804056 237.997358 232.228869 246.250000 268.445090 279.588371 276.758412 281.849242 276.212391 273.121441 273.000795 273.664718 276.346620 280.235712 282.586873 284.098507 285.944025 287.105988 287.794457 | ||
49 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.783751 287.127376 286.001669 284.473323 282.693013 280.007351 276.759129 273.128820 269.293127 265.475514 260.206058 252.999260 252.231311 262.373874 252.667834 239.250000 237.805982 235.528092 225.911711 231.299657 252.181519 251.047363 243.139350 244.000000 243.253069 233.734743 212.111765 184.147429 172.374047 199.508260 213.722132 161.250000 112.220564 87.709202 73.944390 74.611652 79.531063 62.037479 51.740420 59.411888 55.633089 45.591179 40.739874 41.276309 47.334588 60.975286 71.232307 78.000000 89.000000 88.214108 78.898290 74.075190 84.526677 102.068173 103.307565 89.776799 86.469256 88.369812 104.181283 130.334417 126.678409 120.406073 144.015852 186.887935 213.750000 201.462679 176.693984 160.481092 165.894553 221.672487 246.735794 251.243592 268.500000 269.775361 264.089470 259.828161 253.535086 229.304514 224.725052 231.671158 242.500000 254.001123 259.048346 262.450936 277.309398 272.738148 266.715394 269.377392 272.994845 276.243493 279.893170 282.241919 284.439249 285.934418 287.063212 287.841560 | ||
50 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.778399 287.157319 286.011277 284.609620 282.746083 279.931230 277.223201 274.401578 269.967249 264.132311 259.585658 257.978445 262.450936 258.461488 257.112131 259.000000 253.700754 249.417715 252.714852 252.793905 273.511626 273.653682 272.579152 267.000000 252.308995 218.472639 202.551042 203.659124 178.320524 238.223396 257.711938 178.500000 113.776134 86.904821 74.774063 72.904546 74.275543 61.140802 54.487624 58.478875 56.581526 48.476998 50.474524 53.071864 57.238515 68.941065 86.216249 103.000000 96.000000 114.186274 103.791350 77.046368 98.288158 121.537474 86.954589 62.272144 96.732396 124.999205 142.738379 168.874893 152.285011 132.021493 129.536999 158.887671 213.000000 177.664915 140.052873 136.695181 162.747505 192.990319 202.080009 216.085289 247.000000 260.896691 254.959995 248.156971 227.593752 216.411864 221.329811 231.113446 242.250000 250.223470 249.267381 252.742292 266.179455 266.658223 267.438657 269.377392 272.525934 276.449747 280.045411 282.878757 284.916287 285.953632 287.067490 287.872606 | ||
51 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.782681 287.110266 285.934418 284.592583 282.878757 279.931230 277.687274 275.875299 271.231226 263.512371 259.089338 263.104076 269.264020 259.439584 271.333884 279.500000 262.902991 257.751488 271.035987 253.164495 267.877258 272.349471 253.419916 225.000000 200.636943 170.425276 178.649236 214.988495 203.427874 249.976206 239.683329 168.750000 112.998349 86.100441 74.774063 70.343885 69.895944 70.107569 71.886586 65.009964 61.323707 57.134456 61.182640 63.884456 68.132834 83.876902 105.195909 109.000000 93.000000 139.159510 128.684411 88.931079 98.288158 119.590544 92.726227 68.911198 111.660599 147.892575 146.325086 158.363854 136.067496 112.939017 114.253766 138.665258 159.750000 116.367646 108.251154 124.141506 153.306362 170.283603 181.165275 194.244525 214.500000 237.999067 238.874730 230.046503 217.958400 220.143947 222.564444 228.603746 240.750000 249.779040 250.832336 253.764254 256.806872 262.439500 270.848327 270.725635 272.324972 276.656002 280.311833 283.250247 284.848139 285.992062 287.127376 287.890805 | ||
52 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.780540 287.080323 285.934418 284.473323 282.852223 279.931230 277.223201 274.334591 269.798718 263.822341 259.585658 260.760931 261.428974 264.330066 269.778380 272.750000 253.700754 242.627232 249.322050 224.629028 236.083326 244.091573 204.820879 169.500000 147.899489 148.945278 169.686058 204.917943 245.713937 243.754130 192.808946 144.000000 114.553919 86.904821 71.455371 69.490332 75.151463 88.041103 92.948486 81.804193 77.447126 70.601613 71.890756 78.628900 91.902257 111.757130 124.175568 113.000000 104.000000 144.154158 132.667301 111.710110 111.066676 129.325194 121.584420 74.601817 103.263485 108.515978 107.767989 135.589937 116.435768 95.515885 114.253766 141.776398 135.000000 109.877347 109.633837 132.730863 147.012267 166.698332 181.165275 186.786703 195.000000 211.363057 217.137885 222.802316 222.034895 221.161787 223.799077 231.950013 238.500000 240.890445 246.919950 256.319161 255.049513 263.680301 271.571591 270.894166 272.324972 276.965383 280.540194 282.719548 284.371100 286.088135 287.221482 287.883311 | ||
53 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.768764 287.114543 286.040099 284.319989 282.427664 279.740929 276.810692 273.128820 268.787536 264.545604 260.081978 256.806872 252.571965 256.896534 250.667900 246.500000 231.950013 210.835429 201.483532 195.722971 187.788745 176.272616 166.502407 160.500000 156.422714 151.771594 157.137610 197.994438 254.303294 209.187044 149.540286 133.500000 122.331770 87.709202 66.477334 68.636779 83.034743 112.251373 107.600243 94.866371 90.725235 84.068770 80.651941 108.117787 152.316208 163.534696 136.162722 131.000000 121.000000 111.189485 102.795628 117.652466 139.572600 149.767961 134.089637 94.518980 82.737206 80.128199 106.871313 137.341777 108.753788 94.686213 115.862527 128.554051 126.000000 126.463667 115.855913 135.373742 145.753448 157.137610 166.468434 177.198075 193.000000 204.353580 209.747357 219.985132 219.440762 218.447545 227.194318 239.200260 243.500000 242.001519 245.941854 254.786217 256.513979 260.950539 266.405424 269.377392 273.396769 277.893529 280.578254 282.241919 284.337026 286.193816 287.281368 287.847984 | ||
54 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.786963 287.178707 286.184209 284.456286 282.348059 279.436447 276.552874 273.463756 269.293127 264.752251 260.826459 256.221086 248.824769 252.984148 252.890048 238.000000 221.353498 209.600796 198.769290 191.646476 181.751923 171.925247 165.100511 173.000000 170.805656 151.206331 146.381797 181.629791 208.713632 135.904822 108.435058 119.250000 103.664927 81.274156 71.455371 72.050992 89.166182 131.978259 146.061105 130.320853 122.972071 101.383685 76.758081 127.777045 212.730159 211.329373 136.162722 128.000000 119.000000 101.200191 112.752852 130.527570 126.794082 110.829358 116.774722 134.353308 94.866371 106.684508 107.767989 103.180900 110.460895 122.065418 120.688811 115.331704 127.500000 135.117399 138.670189 138.016621 153.935772 161.917971 165.903171 179.328881 195.500000 200.615193 209.312620 217.972858 217.217219 219.126106 228.737610 236.411704 243.250000 247.334676 246.333092 252.742292 258.564232 261.074619 265.062221 269.040331 275.339401 279.131056 280.235712 282.348059 284.302952 285.934418 287.182984 287.797668 | ||
55 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.918639 287.473859 286.635755 285.648882 284.232039 280.958857 276.656002 272.257985 268.619005 265.372191 260.206058 254.756620 247.802806 251.614813 260.000925 241.750000 218.843798 208.366163 200.126411 193.499428 183.764197 179.750511 183.792449 174.500000 156.955415 146.118963 145.186707 145.753448 141.320219 126.226038 120.694512 114.000000 90.442580 77.252253 74.774063 80.586526 99.677221 121.218139 123.167735 136.851942 163.754835 116.774722 89.413127 121.879268 188.960736 225.269487 180.115618 119.000000 143.000000 140.158440 123.705799 115.671681 121.879268 121.537474 107.155324 99.261162 88.335282 96.611426 110.458019 115.443779 106.193128 102.153269 123.906334 156.554315 163.500000 141.607698 146.966290 129.427264 177.853334 188.209958 173.251591 177.730776 197.000000 207.157371 206.704199 208.313942 232.411428 237.107960 226.268343 235.296281 258.250000 261.334214 247.506808 256.659815 260.028698 260.950539 264.545604 269.124597 274.133629 277.738838 280.083471 282.639943 284.660731 285.944025 287.011881 287.751635 | ||
56 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.958249 287.730513 287.020049 286.381477 285.028087 282.747688 278.048220 273.128820 269.208862 264.028987 258.717097 254.756620 248.313787 245.746234 243.334808 232.250000 218.843798 209.909454 202.162092 192.387657 187.386290 187.575775 184.259747 167.000000 154.824609 151.771594 151.162158 148.271086 139.998780 133.830797 132.953966 109.500000 88.109225 78.861014 75.603736 86.561400 109.312340 122.114816 122.252000 137.784955 121.075199 112.926963 95.253917 127.777045 203.816626 227.260932 166.130606 129.000000 163.000000 220.072797 165.526141 138.450711 192.652597 200.388144 155.252312 194.104799 210.559946 213.825481 149.015116 106.684580 118.142875 138.658877 162.516609 182.999009 159.000000 127.184811 131.065430 126.784385 172.188648 182.234507 170.425276 175.067268 197.000000 210.428460 202.356830 213.143400 260.946895 250.339890 227.194318 242.825384 258.750000 245.779172 240.660133 257.681778 264.568542 260.206058 263.512371 269.124597 273.463756 278.563856 282.671567 283.462526 284.081470 285.838344 287.016159 287.781610 | ||
57 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.940050 287.431083 286.405178 285.001473 283.356386 280.502134 277.016947 273.530744 268.956066 262.789108 257.476296 253.731493 246.951171 242.225087 240.890445 233.500000 219.680365 208.366163 201.144252 193.128838 188.593655 181.489459 174.913779 173.000000 167.076745 161.381066 154.747429 149.529905 151.231015 149.040315 129.348244 141.750000 112.998349 80.469776 75.603736 102.778914 131.210337 131.978259 147.892575 142.450019 111.590835 108.117264 98.174312 108.117787 127.556392 125.697244 124.175568 158.000000 193.000000 198.096348 178.470533 158.258564 177.908154 190.653494 192.767963 250.062545 251.612505 207.415337 131.081583 97.049461 125.824856 153.592989 178.604223 186.110150 135.000000 119.252223 127.608722 131.409423 140.088762 149.967068 159.685277 175.067268 196.000000 205.288177 197.139987 211.533581 245.382095 227.608112 231.515534 257.325878 255.750000 239.112726 253.766625 269.264020 264.568542 260.081978 263.615694 269.461657 274.133629 278.666983 282.024543 282.931827 283.996285 285.780700 287.020437 287.811585 | ||
58 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.807303 287.011881 285.665412 283.757765 281.445871 278.370761 275.263784 272.324972 268.619005 263.512371 257.848537 252.559921 246.780844 240.660133 239.779370 232.500000 218.564942 207.131530 200.465691 193.128838 188.191200 181.054722 175.848376 177.500000 171.338357 163.076856 155.942519 153.306362 165.106130 171.854592 148.819141 196.500000 135.554117 81.274156 79.752100 106.193128 126.830738 131.081583 145.145370 144.316044 119.178326 107.155324 91.360057 86.492603 89.921472 91.842681 128.171286 219.000000 218.000000 196.098490 214.316540 191.931914 188.720746 192.600424 161.985891 145.734544 154.579184 96.611426 95.214516 97.925381 101.925361 117.917054 156.081563 171.332233 120.750000 107.713914 120.003963 129.427264 135.682896 146.381797 159.120014 173.469164 187.000000 191.736522 189.749460 204.289393 209.805409 207.251296 228.737610 243.661951 237.250000 240.223800 266.677498 272.670562 257.685552 259.337498 264.442281 270.725635 274.602540 277.274765 279.969291 282.162314 284.149618 285.751878 286.981939 287.766623 | ||
59 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.716307 286.870722 285.473264 283.519246 280.915172 277.990159 274.593456 270.985226 267.523558 263.719017 258.841177 252.413474 246.440189 240.268894 236.668362 232.250000 221.632354 208.674821 200.126411 194.240609 191.410839 190.184197 183.325150 182.000000 176.665373 168.164224 162.515516 161.488686 165.766849 172.545933 173.338049 210.750000 158.887671 98.166151 83.900465 95.950487 104.056820 114.941403 119.504796 127.521815 115.384581 109.079203 95.253917 123.845194 155.287386 156.564639 201.093137 251.000000 241.000000 237.054597 237.218156 182.027987 173.976302 173.131122 108.117264 66.065889 77.139129 51.740420 85.351073 97.925381 87.414953 99.664250 145.624614 160.443241 111.000000 99.781326 117.238596 127.445105 140.718172 153.552339 161.946330 167.076745 173.500000 186.128941 200.183145 198.252571 191.646476 200.465691 216.082620 222.468921 224.500000 236.446147 253.962244 259.385048 252.413474 257.600376 264.545604 270.809900 273.731706 275.934111 279.093905 282.003105 284.132581 285.675019 286.999049 287.739859 | ||
60 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.721660 286.913497 285.550123 283.655543 281.100917 278.104339 274.696584 270.650290 266.343845 262.375814 258.096697 252.267027 247.632479 241.246991 236.223932 239.000000 228.882601 208.983479 199.447850 196.093562 197.447661 197.574724 188.932732 188.500000 186.254001 180.034749 174.466419 171.559238 167.088289 161.484466 174.780338 213.750000 207.110348 128.732619 86.389483 90.829167 89.166182 97.007869 105.768774 112.593612 104.003344 91.764288 135.165985 210.345930 230.557227 216.307985 250.040680 229.000000 250.000000 213.080290 160.547529 104.777362 97.305195 97.200847 66.753854 60.375271 65.942977 70.055116 85.351073 92.669861 87.414953 112.939017 158.494705 156.554315 100.500000 100.502470 116.547254 123.480787 135.682896 147.576887 155.163172 158.020818 164.500000 185.194344 203.661041 192.215748 193.870019 203.179933 209.292138 215.776385 224.250000 231.779634 238.508321 247.291825 251.827687 256.607736 263.615694 268.871801 272.592921 275.934111 279.093905 281.950035 284.422212 285.819129 287.037547 287.750565 | ||
61 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.732365 286.913497 285.540516 283.655543 281.074382 278.028219 274.748147 270.985226 266.343845 261.032611 256.359575 252.559921 251.039021 242.616326 242.445949 252.000000 234.459714 205.896897 202.162092 200.170057 201.472210 198.009461 190.801925 190.000000 188.917509 186.817906 184.624687 182.259200 178.320524 167.706541 169.011183 240.750000 259.221951 167.342893 100.493923 100.218254 101.429061 95.214516 104.853039 112.593612 105.900217 112.926963 205.255469 244.749632 203.816626 191.414924 205.088855 141.000000 178.000000 100.201261 45.043727 38.421055 41.276309 39.766408 43.667299 48.994035 60.344901 67.307912 71.004246 81.282903 81.440079 134.510512 185.843649 154.220960 93.000000 103.387048 110.325179 117.534309 129.388800 136.821074 144.423174 151.628399 161.000000 176.782972 184.532617 187.386290 197.946514 206.233456 211.144087 217.170664 225.000000 233.112924 240.855752 246.951171 251.827687 256.855896 262.272491 266.933702 271.923048 276.243493 278.941664 281.578546 284.814065 286.030491 286.977661 287.742000 | ||
62 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.729154 286.900665 285.550123 283.570357 281.684685 278.903604 275.005965 271.052214 266.849436 261.755874 257.724457 254.610173 252.060983 242.616326 252.667834 265.250000 239.200260 206.205555 207.929857 206.099504 201.874664 195.401039 190.801925 187.000000 182.525090 184.556853 194.782955 197.365029 181.624123 182.224717 181.270637 248.250000 262.333091 205.953167 132.021493 118.996429 139.969536 112.251373 101.190100 108.861561 147.631417 228.359734 244.194072 169.061488 100.815791 102.795628 101.200191 48.000000 35.000000 23.283693 36.082225 54.267337 59.952604 55.341850 48.476998 47.097162 54.746825 62.729238 62.037479 66.392264 77.172313 148.614952 196.300599 145.665324 90.750000 104.108192 110.325179 116.212870 128.129981 135.625984 141.596858 150.562996 159.500000 166.502407 175.403142 188.191200 195.352381 200.804971 208.057504 216.612952 225.750000 234.446213 241.442610 245.588554 251.095454 257.104056 261.755874 266.428110 271.119201 275.521602 278.827484 281.445871 284.268878 285.742270 286.874999 287.721660 | ||
63 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.727013 286.896387 285.569338 283.519246 283.754410 281.263339 275.212220 271.052214 269.798718 266.715394 261.695020 256.221086 248.824769 241.442610 250.001255 270.750000 253.421899 215.773962 207.251296 204.987733 201.874664 197.574724 194.073014 185.500000 177.730776 186.817906 216.294581 226.317867 190.213480 187.755451 177.664915 245.250000 262.333091 213.192594 145.296260 144.603030 169.750813 118.528109 120.420530 120.057714 225.403200 249.522409 148.794496 66.833345 56.248122 56.992396 45.260141 53.000000 44.000000 42.263352 46.039449 62.190478 60.935567 50.474524 52.324757 52.787780 50.081761 55.403359 69.210892 80.406983 83.147186 98.004904 115.058146 109.109423 94.500000 101.944759 108.942496 117.534309 126.241753 133.833348 141.031595 150.562996 159.500000 167.904302 175.403142 184.166652 192.017066 199.108570 208.057504 218.007231 227.250000 234.446213 239.095179 243.714956 251.534794 257.476296 262.272491 266.765171 271.052214 275.057529 278.637182 281.498941 283.519246 285.454050 286.896387 287.725942 | ||
64 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.728083 286.900665 285.492479 283.587395 282.693013 280.426013 275.160656 273.932667 277.045525 273.638057 263.556221 258.564232 250.698367 242.811945 242.223734 261.250000 255.373888 224.107735 208.608417 206.099504 212.338490 211.486305 195.942208 203.500000 217.683393 230.343164 240.793932 233.870781 202.106435 192.594843 169.011183 224.250000 257.666380 241.345919 170.186447 119.849982 119.823378 103.284606 113.094652 125.655790 192.207927 131.203818 56.315315 45.208160 54.267337 45.043727 44.261211 45.000000 48.000000 50.254788 50.022339 61.200085 61.918530 51.447989 46.553119 47.097162 52.880799 59.982033 68.314216 74.275543 68.636779 122.895091 185.039269 157.332100 87.750000 101.223615 109.633837 117.534309 126.241753 132.040713 142.162121 153.226504 161.000000 168.371601 174.968405 181.349468 191.275885 199.787130 208.366163 215.776385 222.500000 230.224130 237.921463 244.907246 252.120581 258.096697 262.892431 267.270762 271.722087 275.315347 278.408821 281.419336 283.740728 285.578945 286.943440 287.731295 | ||
65 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.732365 286.917775 285.598160 284.251841 283.117572 280.692435 277.635711 278.822740 279.826276 272.708147 265.293342 259.150018 255.467525 250.245478 247.334676 255.500000 241.709961 220.712494 223.876029 222.776076 220.387587 221.485254 217.905235 248.500000 263.495728 265.389476 243.781658 209.953219 217.963708 202.964969 163.242028 161.250000 234.332827 261.455436 183.461214 89.122060 72.523704 72.797599 70.055116 69.675028 57.529962 52.324757 65.076500 65.850382 52.286552 45.043727 47.258000 52.000000 63.000000 49.255859 49.026617 50.305766 53.071864 52.421454 50.400878 58.478398 62.210926 62.729238 66.520862 76.027383 74.611652 96.345558 123.906334 117.665059 93.750000 101.944759 111.016521 118.195029 124.353524 136.821074 149.510541 158.020818 164.000000 170.240794 176.272616 186.983835 192.017066 199.787130 207.440188 214.939818 223.250000 231.112990 238.312701 246.951171 255.049513 259.585658 264.132311 268.197679 271.856061 275.315347 278.637182 281.684685 283.979248 285.617375 286.934885 287.724872 | ||
66 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.738789 286.960551 285.857559 284.728879 283.011432 280.882736 281.245165 280.966334 276.034342 270.021741 266.658223 257.831998 257.000469 254.353483 251.334544 263.750000 252.585332 242.318574 265.607502 256.870400 219.985132 223.658938 249.681528 267.000000 270.420848 256.345267 233.623390 233.241372 250.338975 209.187044 156.751729 156.750000 202.443637 187.452411 136.999531 93.389827 63.764505 57.554096 57.234829 49.148748 40.458107 53.286697 66.049965 63.884456 53.276944 47.035172 46.259070 54.000000 50.000000 44.261211 48.030894 51.296159 52.088901 50.474524 50.400878 61.323707 67.809002 63.644972 75.487629 90.042102 84.854293 83.900465 94.948629 101.331572 102.750000 116.367646 121.386646 118.855748 125.612343 141.601436 153.467383 159.618923 165.000000 174.446480 193.227355 197.045206 192.017066 199.787130 208.674821 215.776385 224.250000 233.335139 240.855752 248.313787 256.513979 261.695020 265.992131 269.124597 272.124010 275.830984 279.170026 281.605081 284.115544 285.780700 286.956273 287.733436 | ||
67 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.742000 286.990494 286.011277 284.797028 283.329851 281.834242 280.420147 280.966334 280.331867 274.051350 266.782304 259.589358 262.110282 254.744721 254.889982 270.250000 272.662939 263.924654 258.482617 236.858514 211.131126 243.222099 267.906167 271.500000 250.178189 213.950534 209.124039 232.611962 219.285148 179.459351 145.213420 152.250000 157.332100 131.145761 121.235746 136.921050 127.706658 80.867689 57.234829 49.148748 53.736216 58.096396 57.288780 55.037790 49.315374 42.056560 40.265494 43.000000 45.000000 48.256929 52.013784 49.315374 50.122975 55.341850 61.944155 69.859635 72.474066 77.380995 92.524486 90.918022 91.682720 93.026867 94.948629 100.553787 112.500000 130.790533 128.300064 126.784385 134.424076 148.174432 157.424225 160.684326 163.000000 172.577286 195.835776 198.252571 192.758247 200.804971 211.144087 219.401509 228.500000 238.001651 244.963757 253.253273 260.321591 265.417422 268.471891 271.736818 274.267604 276.656002 279.208086 281.605081 284.047396 285.857559 286.999049 287.748423 | ||
68 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.754847 287.067490 286.097743 285.035547 283.780945 281.301399 278.151347 279.023702 280.331867 274.257997 267.650864 265.886562 267.731076 256.505295 264.445222 275.750000 278.797763 259.912096 219.465386 201.652419 200.667300 233.223150 248.746931 235.500000 196.908032 168.164224 170.283603 181.000381 168.409728 152.497024 171.895760 200.250000 171.332233 164.125370 181.801868 211.180195 200.408010 102.387929 55.403359 51.014774 65.117453 54.248637 40.739874 48.157049 59.219300 54.005229 42.263352 39.000000 50.000000 55.249435 54.005229 47.334588 51.105938 65.076500 72.525492 73.653380 82.737206 92.032751 98.801223 99.677221 104.486021 105.471960 106.209959 109.109423 114.750000 127.184811 124.843355 128.105825 147.641676 156.540065 161.381066 163.347834 161.500000 168.838899 188.445249 198.252571 195.352381 199.108570 212.070062 223.026632 232.500000 243.112594 252.006051 258.874067 265.300776 270.380626 272.191531 273.843447 275.071451 276.604438 279.093905 281.764290 284.183693 285.953632 287.097433 287.763411 | ||
69 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.786963 287.225760 286.107350 285.478511 284.046295 281.720061 280.368583 279.827550 277.298320 273.121441 271.373267 267.790368 266.538786 257.483391 272.667173 279.750000 265.691548 230.898217 199.108570 192.758247 191.410839 196.705250 202.484386 185.000000 167.076745 160.815803 152.357248 141.976991 147.266697 146.966290 192.808946 231.000000 224.999406 234.910873 243.197663 246.175884 210.043129 97.904546 60.897768 56.612850 72.704944 74.449372 79.678476 98.288158 93.883043 62.966731 55.249435 50.000000 60.000000 73.230166 61.971008 51.296159 68.799270 88.439662 81.182950 75.550253 94.866371 99.358630 105.974636 118.947459 116.435768 115.428035 123.101954 126.998481 117.750000 121.415656 133.830797 149.909576 157.712229 158.332700 161.381066 163.880535 164.500000 170.708093 181.489459 201.472210 202.764190 209.965539 220.095178 228.046034 236.500000 248.223536 259.048346 266.198132 271.305087 274.475270 274.981260 274.433304 274.669528 276.656002 279.512568 282.082709 284.319989 285.992062 287.118821 287.768764 | ||
70 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.814797 287.307034 286.116957 285.580734 284.975017 284.917121 284.699928 282.105118 277.635381 274.567967 271.993668 263.689863 260.066357 254.744721 268.222875 272.750000 240.315683 205.896897 202.840653 196.834743 185.374016 176.707353 170.708093 172.500000 178.796179 178.338959 164.905697 149.529905 147.927417 145.583606 164.684317 176.250000 224.221620 239.737157 214.988784 187.280700 153.108335 97.007869 96.611426 88.335282 86.931489 124.470240 157.555681 153.334081 104.777362 59.979563 68.235518 64.000000 75.000000 96.205543 86.864069 77.046368 96.322232 109.855893 94.650107 92.622108 98.598422 108.515978 131.978259 133.838097 124.117749 130.362148 144.015852 141.776398 129.750000 130.069388 173.237275 210.695791 186.035657 164.308152 161.381066 166.544043 173.500000 179.586763 182.358932 211.936035 218.699581 227.947393 229.972243 233.902003 243.500000 254.223338 265.112544 274.544160 277.895184 278.693993 276.531110 274.938895 275.741324 277.790401 280.045411 282.454199 284.456286 286.001669 287.101710 287.773046 | ||
71 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.822291 287.328422 286.539681 285.325177 286.540579 286.744012 283.513964 278.420816 274.264773 270.435034 265.045182 262.811183 257.170796 252.592909 252.890048 242.750000 222.468921 208.366163 204.197774 194.981790 186.178926 177.142090 172.577286 169.500000 172.403760 173.816855 168.490968 159.600457 151.891735 146.274948 142.328842 138.000000 167.443307 167.342893 132.851166 100.218254 97.049461 121.218139 150.639779 138.717968 114.436144 144.670975 141.980240 93.373343 63.180871 69.936788 67.236589 73.000000 90.000000 95.206614 112.752852 122.604429 111.066676 101.094708 107.155324 111.590835 101.397460 124.999205 163.361943 154.860175 144.603030 156.082008 160.103466 146.443109 141.750000 146.655708 221.631195 260.910491 243.311924 197.173136 178.904222 189.982912 202.000000 205.755475 208.877883 239.302964 239.823238 225.233151 223.799077 238.642549 252.750000 262.000859 274.111031 278.291356 281.556349 283.533117 279.320840 276.202873 277.148058 278.924801 280.426013 282.772618 284.950361 286.222638 287.259981 287.799809 | ||
72 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.828714 287.692015 287.413951 285.699993 286.301764 285.526085 280.162328 275.071451 273.000795 270.228387 266.285983 262.225397 257.681778 250.636716 241.779304 231.750000 221.074643 211.452746 202.840653 193.128838 188.593655 183.228406 174.913779 172.000000 170.272954 172.686328 176.259055 172.188648 161.802531 162.867149 157.472874 155.250000 164.332166 147.233375 117.917054 109.607341 116.319699 116.734756 142.398166 134.985917 89.776799 71.563553 60.209175 57.003715 64.171263 66.949620 63.240871 97.000000 97.000000 80.222672 106.778518 133.498748 115.981490 97.200847 109.079203 116.333017 125.655790 147.892575 194.745626 192.524730 182.159380 173.505139 161.712228 158.109886 167.250000 186.318647 254.815598 266.196249 265.970667 224.062668 209.428430 240.589561 269.000000 269.775361 268.871576 267.072348 255.017448 222.179628 224.416394 248.681353 263.500000 269.778380 280.175229 281.527570 281.849242 282.044155 279.734134 276.792729 276.478185 279.440438 282.176784 283.223712 284.899250 286.299497 287.418251 287.830855 | ||
73 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.784822 287.289923 286.366749 285.342214 283.595201 281.073037 278.048220 275.741324 274.011978 271.468267 268.023105 263.689863 258.874067 249.071762 238.668296 236.750000 243.104240 232.441509 203.519213 196.834743 192.618203 188.445249 181.923255 178.000000 178.263478 181.730538 184.624687 183.518019 178.981244 172.545933 161.799740 148.500000 144.887539 146.428994 124.554437 123.264196 143.473216 104.181283 79.212464 90.201307 56.581526 51.362818 50.474524 42.259272 41.392233 52.013784 73.230166 115.000000 118.000000 122.177709 145.611692 136.469926 109.100750 109.855893 136.013517 143.837672 147.115082 167.123006 192.055596 213.546808 210.326641 204.203036 201.126883 196.999141 209.250000 245.452484 263.111698 266.196249 254.011886 237.806206 245.605268 262.963026 270.500000 270.242659 257.568417 230.448958 230.187886 224.554590 237.688700 260.114435 273.250000 276.667041 278.219036 277.780374 279.506097 275.591990 274.567967 274.349039 277.817931 283.462401 285.373844 283.940155 284.950361 286.462822 287.294201 287.838349 | ||
74 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.753776 287.058935 286.068921 286.790367 286.195624 281.301399 277.532583 275.272413 276.118608 281.387307 280.307034 272.476659 260.577338 257.483391 266.000727 272.500000 265.970403 235.528092 201.144252 200.911238 194.630477 192.357881 187.998135 181.500000 183.590493 189.078958 191.795229 192.959162 188.892040 184.990084 181.270637 156.000000 146.443109 142.407091 125.384110 142.042370 182.889612 152.601823 122.252000 151.780146 71.756507 57.134456 55.341850 45.208160 47.334588 56.992396 67.236589 98.000000 104.000000 113.187344 148.598860 151.325816 113.032601 103.041638 139.861276 156.167344 151.780146 135.072287 182.192153 190.772891 177.038059 196.735980 211.583832 211.777059 246.750000 262.038804 264.494382 266.196249 262.823619 264.695739 236.561058 227.804723 260.500000 263.233183 225.397886 205.496758 219.440762 225.911711 246.948448 258.720156 261.250000 266.222941 270.785503 276.247431 273.501786 272.241828 273.948027 278.393768 283.176915 286.092146 285.449964 284.019760 285.972587 286.539681 287.187262 287.827643 | ||
75 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.739859 287.097433 286.981620 287.284442 285.664926 283.889495 282.018619 279.961524 280.921724 284.590330 281.423755 267.351028 267.220095 271.959219 276.222611 262.000000 237.527126 216.699936 204.537054 201.652419 200.667300 205.834725 195.474910 188.000000 190.515614 196.427378 199.563316 196.106210 185.588441 182.916059 207.231833 178.500000 146.443109 133.558903 124.554437 125.824856 140.845456 145.428409 135.988022 124.722777 87.879926 63.868034 61.182640 53.071864 45.353803 55.000951 68.235518 92.000000 101.000000 134.164863 126.692966 123.594822 110.083713 102.068173 126.394119 155.218908 151.780146 173.533149 182.192153 182.889612 171.063185 177.653503 190.669934 211.777059 261.000000 263.481092 265.185723 266.196249 267.229486 268.281010 216.776850 188.917509 217.000000 209.026564 196.705250 204.691848 222.776076 220.483227 239.540649 263.739558 269.750000 264.223007 265.112544 273.862851 279.652543 280.679274 281.697277 283.955271 285.722432 284.957746 282.747688 283.091037 286.279254 287.000835 287.431083 287.907934 | ||
76 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.731295 287.144486 287.577276 287.199257 284.285109 285.107422 283.204582 279.023702 279.152155 280.147427 271.745507 260.321591 268.753039 275.284746 266.445156 247.250000 229.440312 224.107735 223.197469 211.658362 209.923761 210.182094 200.615193 194.000000 199.038839 212.820008 221.074942 212.470857 197.481397 202.273627 202.904967 177.000000 159.665456 146.428994 127.043456 111.314448 114.567859 123.011493 102.105834 89.268294 85.034617 60.020275 50.474524 48.157049 46.344196 53.009506 60.244083 66.000000 93.000000 117.183062 113.748575 123.594822 131.708897 133.219055 133.127698 139.095490 202.162831 233.055912 217.162543 191.648811 175.330952 177.653503 205.953167 244.444033 263.250000 261.317659 243.062788 261.571211 254.641295 218.684761 178.904222 168.674850 183.500000 190.334627 193.227355 207.911487 230.929066 221.501068 240.466624 269.874382 270.500000 255.334412 261.004539 276.588085 281.556349 283.657197 284.590330 281.174519 281.502232 282.482692 281.948423 283.595201 286.296291 287.471595 287.756179 287.957178 | ||
77 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.738789 287.093155 286.856724 285.955550 283.568666 282.899929 280.007637 275.540363 272.916530 270.848327 266.285983 261.346717 272.840889 277.632178 258.889850 252.500000 245.335085 232.132851 226.590272 219.440762 213.545855 208.008410 202.951685 201.500000 204.365854 226.386323 249.757110 242.682514 219.945868 214.026436 186.318647 209.250000 217.999340 173.777939 126.213783 111.314448 116.319699 114.941403 91.117017 89.268294 75.550253 51.362818 38.792943 38.327420 42.382625 45.043727 45.260141 46.000000 77.000000 107.193767 119.722909 121.614036 135.640748 160.476077 152.366493 122.972071 210.559946 252.286343 229.716016 183.765531 161.674098 195.076634 244.563441 262.333091 252.000000 211.558699 238.223396 262.892650 219.394362 168.490968 155.163172 163.880535 174.500000 193.605716 203.226304 209.118852 220.552533 225.572431 240.775283 253.143043 250.000000 247.112461 260.026442 271.989253 275.991378 281.671915 283.970390 279.320685 278.554791 280.781092 282.290965 284.205504 286.432588 287.615706 287.760456 287.876888 | ||
78 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.751635 287.041824 285.944025 284.541471 283.170642 280.578254 277.790401 275.272413 271.736818 268.471891 268.023105 263.836309 268.923366 277.436559 267.778446 262.750000 256.489311 237.071383 218.108265 214.252495 205.496758 217.572622 225.849308 227.500000 224.608514 241.083163 264.098194 263.453029 245.713937 226.470587 213.722132 253.500000 262.333091 191.474314 125.384110 114.728662 116.319699 105.077959 97.527160 90.201307 67.962762 47.515058 35.872548 32.429643 31.488306 32.099335 38.267635 52.000000 78.000000 122.177709 123.705799 107.748539 115.981490 147.821031 150.442613 117.281453 162.043285 198.257989 194.745626 184.641451 169.356079 214.159111 261.455436 256.888595 231.750000 194.972379 242.371447 231.178103 186.035657 160.125336 156.293699 163.880535 177.000000 192.671119 208.008410 211.131126 208.323047 223.197469 232.441509 232.507725 235.500000 245.556957 255.527199 261.428974 274.819805 277.701352 279.114194 277.214055 276.143248 278.202910 280.996917 283.276782 286.177032 287.413951 287.388308 287.763411 | ||
79 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.761270 287.050380 285.819129 284.132581 282.693013 280.616315 278.357601 276.210236 273.927713 271.674914 268.767585 263.836309 263.302572 274.893508 280.666909 259.250000 251.191054 246.022473 218.108265 209.064228 204.289393 244.526310 262.765884 262.000000 258.168712 260.302108 264.098194 266.600076 264.214090 254.124256 262.759948 263.250000 249.110744 178.604223 125.384110 118.142875 111.064179 94.317839 86.538343 76.206117 62.272144 46.553119 34.899083 29.480754 27.526736 26.125001 34.271917 56.000000 83.000000 105.195909 99.808461 101.806184 110.083713 121.537474 131.203818 123.920508 127.521815 140.566696 165.155296 196.028410 200.937554 220.796494 244.563441 230.443901 204.000000 223.097009 200.890944 165.106130 169.671010 170.283603 163.642119 167.076745 180.000000 190.801925 203.661041 209.521306 209.805409 217.429704 224.416394 240.036827 249.750000 246.890247 248.093666 256.659815 272.915999 270.256546 271.674914 271.315492 271.856061 275.366911 279.436447 282.560338 285.546659 286.616540 286.986216 287.743071 | ||
80 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.776257 287.071767 285.915203 284.354063 282.321524 280.578254 278.460729 275.272413 271.905348 270.331711 270.628787 270.426407 279.653972 281.348944 277.333686 251.750000 243.940807 241.392599 218.786825 221.664305 234.473506 260.611575 270.709958 268.000000 265.626534 267.085265 267.683465 265.970667 266.196249 264.494382 257.711938 252.000000 191.554646 135.972045 117.087381 116.435768 112.816019 101.491253 80.128199 74.340091 59.426835 41.743420 33.925618 33.412605 31.488306 28.116446 26.280481 36.000000 50.000000 44.261211 59.979563 91.902257 116.964453 128.351729 134.089637 135.301744 137.784955 174.448884 180.398800 166.247133 188.987807 195.906307 185.843649 181.443439 166.500000 160.357451 137.978848 157.177493 169.041600 165.503242 167.033697 176.132671 183.000000 189.400030 198.009461 201.472210 206.840685 214.376182 223.799077 250.912198 261.750000 248.001321 248.093666 256.659815 257.246212 261.819100 266.818717 268.787536 271.856061 276.552874 280.882736 283.674806 285.001473 285.617375 286.904942 287.742000 | ||
81 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.788033 287.123098 286.270675 284.899250 282.480733 279.893170 277.584147 276.344210 278.056707 280.664044 279.314393 281.849242 280.335281 277.827797 257.334346 257.500000 264.297269 245.096499 221.501068 240.564419 259.425706 224.963149 252.018020 246.000000 242.720367 254.084214 260.512923 259.676571 264.874809 255.506939 215.885565 187.500000 134.776332 115.862527 109.620325 103.632468 107.560500 101.491253 79.212464 69.675028 48.994035 37.895661 35.872548 34.395568 31.488306 30.107890 32.274058 31.000000 26.000000 28.278340 66.949620 97.844613 109.100750 121.537474 142.747095 157.115781 185.368603 222.982829 187.572213 146.976895 162.527652 178.483176 175.386700 168.998877 153.000000 135.838543 153.188365 180.963403 183.518019 172.673784 169.294750 178.263478 187.500000 189.867329 203.661041 211.533581 207.211276 213.697621 222.255786 237.527126 246.500000 245.334742 247.506808 253.423600 256.074639 260.081978 263.512371 268.871801 274.066642 278.460729 281.720061 283.037967 283.502209 285.540516 286.964828 287.747353 | ||
82 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.876888 287.161596 286.251461 285.291103 283.409456 281.111098 277.945092 278.889727 283.533945 282.007247 274.227109 275.552038 263.302572 246.528711 250.667900 269.000000 256.210455 225.651027 219.804666 224.258438 228.034229 211.486305 198.745999 204.500000 229.402828 221.298955 190.600139 204.288534 248.356816 197.434235 135.117399 127.500000 118.442845 118.275669 115.428035 109.607341 109.312340 103.284606 84.706873 60.344901 41.406544 36.933721 34.899083 33.412605 31.488306 31.103613 36.269776 42.000000 39.000000 41.264423 83.876902 107.748539 105.168898 120.564009 178.338867 241.526618 246.947441 252.286343 237.786106 197.780250 159.966991 153.592989 164.125370 161.998811 154.500000 171.895760 176.002642 200.784995 191.070934 169.088513 165.337908 177.730776 188.000000 194.540313 208.008410 220.790042 233.152609 243.893565 232.132851 247.287074 262.500000 249.556825 244.181280 254.445563 257.539105 262.439500 267.025364 271.062696 274.602540 277.584147 279.664809 281.286661 283.604432 285.626982 286.994771 287.752706 | ||
83 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.861901 287.131653 286.030491 285.444437 284.364714 281.567820 278.821674 281.100308 285.219249 280.044104 265.417422 264.714989 255.637852 243.203184 245.334742 242.750000 231.113446 222.564444 219.126106 213.511314 219.582677 207.138936 192.671119 197.000000 195.842629 172.121065 154.747429 164.006324 163.123971 133.830797 121.415656 111.750000 112.220564 113.449385 116.257708 121.557089 123.327058 117.631433 103.937304 65.009964 39.509671 35.971781 34.899083 31.446680 29.507521 33.095058 38.267635 42.000000 58.000000 82.220531 84.872624 87.940687 106.151861 121.537474 131.203818 166.600145 212.425971 228.477238 250.339580 239.824405 167.648972 139.488550 148.842136 146.443109 175.500000 240.404473 200.199602 184.267002 175.965105 161.917971 163.076856 175.067268 185.500000 196.876805 200.183145 201.069755 233.523200 242.875724 231.206876 233.902003 242.250000 242.668164 245.550615 249.676404 256.221086 266.285983 278.080960 274.517569 272.257985 275.366911 278.675243 281.366266 283.706654 285.588553 286.990494 287.747353 | ||
84 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.790174 287.277091 286.597325 285.018510 283.170642 280.540194 281.915492 285.119546 283.365414 274.567967 263.432141 261.053824 255.978507 250.832336 241.334874 233.250000 227.488323 219.786519 213.358341 215.364266 209.923761 186.706301 195.942208 185.500000 160.151624 147.814752 147.576887 141.976991 132.070143 124.152013 127.184811 123.000000 116.109489 110.231862 109.620325 114.728662 117.195619 113.148049 118.589061 134.052904 85.034617 39.819540 30.031758 35.378531 41.392233 44.048004 37.268705 33.000000 48.000000 74.229095 71.928233 80.017546 103.202972 126.404799 140.823216 145.734544 158.311234 212.909746 252.132933 191.648811 137.774603 125.384110 127.123857 129.331836 147.000000 181.991781 169.780567 151.231015 161.488686 166.100787 172.686328 181.459687 187.000000 192.203821 191.488407 195.032932 210.546590 219.126106 220.712494 226.651756 234.500000 239.557155 243.985661 247.632479 255.195959 270.256546 280.664044 273.337856 270.717277 274.902838 278.637182 281.764290 283.859988 285.578945 286.943440 287.737718 | ||
85 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.747353 287.182984 286.482037 285.018510 282.772618 280.007351 282.998328 284.851597 277.214055 266.198777 260.702379 256.074639 256.148834 253.962244 238.890511 232.250000 226.372900 214.847987 207.929857 209.434819 209.521306 180.619985 181.923255 170.500000 151.628399 146.118963 148.174432 141.976991 136.034461 129.682747 148.097997 130.500000 116.887274 120.688811 127.873129 126.678409 119.823378 121.218139 143.313901 161.110273 98.312726 38.857601 31.978688 44.225198 47.334588 46.039449 41.264423 34.000000 41.000000 60.244083 69.936788 75.065582 76.662974 92.333522 122.546360 132.456435 121.923739 221.151359 254.822963 175.882252 136.067496 136.169858 135.167664 130.887406 131.250000 132.953966 142.126898 155.856053 171.559238 167.893423 173.251591 183.590493 185.500000 191.269224 198.878935 213.545855 216.846628 219.465386 223.799077 227.767179 233.250000 239.112726 244.768138 255.637852 265.593669 266.658223 269.711771 268.871801 270.851252 275.109093 278.675243 281.711220 283.894062 285.578945 286.922053 287.731295 | ||
86 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.732365 287.007604 285.924810 284.694805 282.321524 279.550628 279.852947 278.152867 270.809900 263.822341 260.702379 256.953319 254.956544 249.463001 239.112726 232.500000 230.834591 225.342368 212.340500 202.764190 207.106577 182.358932 167.437004 162.000000 158.020818 152.336857 149.967068 150.159315 144.623818 146.966290 185.597503 143.250000 123.887340 135.972045 141.977568 163.381205 194.276570 169.638680 124.999205 94.866371 62.272144 35.009841 36.846013 47.174086 47.334588 44.048004 40.265494 38.000000 53.000000 63.240871 68.941065 91.902257 105.168898 102.068173 103.307565 108.745526 107.928549 234.887381 258.409670 168.874893 179.598719 179.312849 141.602710 137.109687 139.500000 137.280832 142.126898 165.766849 174.076876 167.295877 170.425276 179.328881 189.000000 213.232250 240.178941 230.046503 225.370209 229.304514 231.824192 233.623147 238.250000 242.445949 246.333092 258.363086 263.543416 260.206058 263.822341 267.692088 271.923048 275.985674 279.017785 281.737755 284.234804 285.819129 286.973383 287.731295 | ||
87 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.730224 286.943440 285.598160 283.962210 281.817360 279.131966 276.088802 272.324972 268.619005 265.475514 262.067260 262.371843 256.659815 247.311189 240.446015 234.250000 236.690560 236.145408 218.447545 202.764190 197.447661 181.489459 168.371601 162.500000 162.282431 156.858962 152.357248 152.047543 148.588136 163.558491 194.251235 168.000000 134.776332 129.536999 137.829204 176.184506 216.174568 168.742003 89.285547 40.751634 36.664362 35.971781 36.846013 45.208160 50.305766 45.043727 34.271917 38.000000 64.000000 70.233377 71.928233 114.681288 156.282970 147.821031 111.965023 104.951780 117.258676 224.814298 218.955896 153.108335 205.205321 191.757943 131.950141 139.443043 141.750000 141.607698 149.040315 167.088289 165.894553 167.295877 170.990539 179.328881 203.500000 236.129874 248.004205 223.204771 224.629028 227.608112 227.811635 230.555735 236.500000 241.779304 245.941854 252.742292 252.706367 258.717097 267.541981 269.545923 272.324972 276.449747 279.246146 281.790825 284.541471 286.116957 287.063212 287.733436 | ||
88 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.732365 286.922053 285.511694 283.621469 281.870430 279.017785 275.263784 271.789074 268.703271 264.545604 260.702379 262.225397 258.703740 251.027955 242.001519 237.250000 236.132848 230.280901 216.411864 202.023009 191.008384 180.185248 184.259747 177.000000 165.478640 156.858962 152.357248 148.900496 147.927417 154.571049 165.405461 176.250000 139.443043 120.688811 135.340185 149.724351 133.838097 101.491253 86.538343 56.612850 46.148725 40.781480 32.952153 44.225198 57.238515 45.043727 28.278340 36.000000 60.000000 67.236589 86.864069 110.719717 141.538526 143.927170 119.660541 124.868944 134.052904 186.353437 149.911793 164.495294 210.326641 175.994157 128.732619 137.109687 132.000000 130.069388 149.040315 171.052607 164.006324 167.893423 172.121065 181.992389 210.500000 229.120397 205.834725 209.521306 226.852571 217.768985 213.613354 218.007231 226.500000 236.668362 244.572519 249.165423 253.438600 261.074619 268.988507 270.304309 272.324972 276.088802 279.170026 281.764290 284.302952 286.116957 287.093155 287.733436 | ||
89 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.729154 286.896387 285.511694 283.638506 281.552011 278.599122 274.851275 270.851252 266.849436 262.685784 259.089338 255.928193 254.104909 251.810432 245.779172 240.750000 234.180859 224.416394 212.679781 199.428876 194.630477 181.054722 199.680596 195.000000 170.805656 156.293699 152.954794 147.641676 143.302379 134.522139 148.097997 148.500000 142.554183 144.820233 146.125933 134.360390 109.312340 88.937779 86.538343 58.478875 44.251853 38.857601 32.952153 44.225198 57.238515 48.030894 30.276199 37.000000 54.000000 65.238730 89.851236 82.988723 84.526677 98.174312 110.041143 133.404872 133.119891 149.724044 142.738379 203.035769 245.322330 191.757943 127.928238 126.220696 128.250000 133.675110 146.274948 163.784690 157.712229 165.503242 173.251591 176.665373 190.000000 203.886282 196.270513 210.728671 221.664305 209.286978 207.748846 216.612952 228.000000 237.779436 243.594422 251.550002 259.882251 262.315420 266.302101 270.051514 273.530744 276.552874 279.208086 281.870430 283.979248 285.944025 287.080323 287.734506 | ||
90 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.724872 286.887832 285.530909 283.621469 281.074382 278.028219 274.593456 270.784264 266.765171 262.479138 257.476296 252.706367 252.401638 248.289285 245.556957 240.500000 231.392302 220.403836 211.661940 206.099504 201.069755 187.575775 180.521360 176.500000 166.011342 163.642119 164.308152 157.082819 153.213175 149.731657 140.165409 137.250000 154.998745 168.147274 170.186447 148.017244 111.064179 96.111193 78.296729 52.880799 39.509671 36.933721 31.978688 38.327420 58.228907 66.949620 50.254788 46.000000 60.000000 71.232307 64.958176 63.180871 79.611862 97.200847 108.117264 122.972071 126.588803 147.892575 152.601823 217.050488 241.908117 164.378737 105.405578 127.776266 132.750000 133.675110 138.670189 148.588136 154.565181 159.527790 168.164224 174.534567 179.000000 189.867329 194.096829 197.045206 201.652419 204.876334 211.452746 221.074643 230.500000 236.223932 241.442610 253.253273 260.760931 266.161903 271.881561 272.073878 273.999655 276.862256 279.055845 281.817360 284.047396 286.020884 287.182984 287.747353 | ||
91 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.719519 286.887832 285.521301 283.604432 281.100917 278.066279 274.696584 270.985226 267.102232 262.582461 256.855896 251.681241 249.335750 245.746234 241.334874 237.000000 232.228869 223.181760 211.322660 202.393600 192.618203 181.924195 172.577286 166.500000 172.936462 181.730538 185.222232 203.659124 231.838823 185.681426 214.443277 212.250000 233.555042 209.975071 171.845793 142.042370 109.312340 86.247749 60.897768 47.282723 41.406544 39.819540 38.792943 45.208160 57.238515 62.966731 56.248365 62.000000 67.000000 71.232307 66.949620 69.123227 83.543714 101.094708 111.965023 123.920508 143.383031 136.903757 152.601823 219.678248 220.569282 154.422662 123.906334 139.443043 133.500000 158.915162 153.188365 145.945257 153.306362 161.320426 167.598961 173.469164 180.000000 187.530836 188.010512 189.398564 197.205333 204.537054 211.761404 220.516932 230.500000 238.001651 240.855752 248.824769 262.957630 274.847510 272.811471 270.472840 273.061833 276.913820 279.626749 282.082709 284.711842 286.501252 287.191539 287.760199 | ||
92 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.720589 286.879277 285.511694 283.604432 281.127452 278.142399 274.748147 271.052214 267.270762 262.789108 257.352216 252.413474 246.780844 243.790041 243.334808 235.500000 227.209467 218.243228 205.215615 196.834743 191.813293 183.228406 174.913779 169.500000 171.338357 169.860013 170.283603 204.917943 257.606892 223.705220 254.827360 256.500000 260.777521 228.475827 164.378737 106.193128 76.027383 64.727509 50.824685 43.550672 46.148725 43.667299 39.766408 38.327420 39.411447 37.077947 37.268705 48.000000 52.000000 68.235518 79.894012 81.007938 83.543714 99.147777 113.888902 111.590835 125.655790 148.808309 225.232633 255.590964 211.180195 147.785279 136.776426 155.776530 144.750000 172.616905 155.953732 145.945257 163.376915 173.271329 172.121065 172.403760 176.000000 178.184868 183.228406 193.020658 200.911238 205.554895 212.687379 222.190065 231.500000 237.779436 242.225087 252.060983 269.401281 268.643505 263.615694 266.933702 272.391960 276.862256 280.273773 282.772618 285.308140 286.328319 287.063212 287.756988 | ||
93 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.721660 286.892110 285.521301 283.519246 281.100917 278.294640 275.005965 271.186188 267.102232 262.892431 258.096697 253.438600 247.632479 242.811945 238.890511 234.000000 237.805982 233.676142 210.983379 199.799466 188.593655 183.228406 175.848376 173.500000 174.001865 183.991590 187.612413 201.141486 243.071058 196.051552 202.183823 186.000000 154.220960 148.842136 120.406073 78.025866 64.640425 55.760742 52.656155 56.612850 48.994035 44.629239 40.739874 38.327420 43.373018 54.005229 64.239801 76.000000 40.000000 55.249435 98.812738 101.806184 87.475566 91.360057 106.193384 109.693962 110.727587 136.903757 235.992753 259.094643 195.816234 136.169858 126.319476 136.331902 146.250000 145.213420 141.435556 152.552455 215.617905 204.343677 177.208433 178.263478 183.500000 182.857852 187.141038 197.045206 203.134781 204.537054 209.909454 223.863199 238.250000 245.112527 247.311189 254.956544 265.154329 261.322779 260.929288 266.596641 272.257985 276.604438 280.235712 282.719548 284.541471 286.011277 287.054657 287.801950 | ||
94 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.723801 286.892110 285.521301 283.842951 281.525476 278.561062 275.521602 271.923048 267.776353 263.822341 259.089338 253.585047 250.528040 244.963757 236.001717 239.000000 255.095033 254.664905 229.983074 211.658362 184.166652 183.228406 176.315674 174.500000 178.263478 191.905274 206.136313 208.064991 193.517078 160.793124 161.799740 157.500000 111.442779 93.339867 80.581773 66.929672 63.764505 55.760742 56.319094 57.545863 38.561234 31.162082 45.607199 72.731122 84.969509 77.902567 70.233377 58.000000 29.000000 57.247294 102.795628 108.738932 97.305195 93.306987 95.612047 103.054908 113.526625 125.914939 183.088830 205.663529 197.523341 160.230372 122.297573 121.553985 140.250000 128.627100 133.139456 184.927722 209.323810 179.246781 160.250540 170.272954 181.500000 186.128941 187.575775 195.032932 198.687695 206.572736 215.156645 229.998024 239.750000 240.446015 243.790041 249.846731 260.321591 261.198699 261.549228 266.933702 272.793883 276.604438 279.474508 282.268454 284.711842 286.933583 287.563688 287.907934 | ||
95 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.722731 286.887832 285.550123 284.047396 281.817360 278.827484 275.882547 272.726896 268.703271 264.545604 260.081978 254.610173 251.039021 243.007564 235.112858 249.250000 258.162445 246.022473 226.929552 204.246552 186.178926 185.402091 181.923255 180.500000 181.459687 180.034749 190.002594 197.365029 161.802531 137.978848 139.444265 160.500000 123.887340 83.687299 66.477334 64.369012 62.888585 56.657419 55.403359 60.344901 59.426835 56.172516 78.705011 106.151861 99.825398 67.945343 51.253718 33.000000 33.000000 60.244083 83.876902 97.844613 98.288158 93.306987 91.764288 101.158035 123.789764 130.493613 157.085206 184.641451 179.598719 150.274297 125.515096 119.998415 126.000000 127.905955 128.991405 194.177798 178.482743 152.954794 150.641068 162.815132 174.000000 177.717569 184.532617 193.825568 198.687695 208.947698 217.317253 227.767179 233.500000 234.668428 240.855752 245.929208 259.150018 263.556221 263.305724 267.692088 273.061833 276.552874 279.093905 282.321524 286.159995 287.615706 287.858840 287.926133 | ||
96 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.722731 286.917775 285.636589 284.013322 281.896965 278.941664 276.037238 273.262794 269.545923 264.648927 259.957898 255.781746 248.654442 246.724331 251.334544 267.500000 251.748765 220.403836 210.644099 193.499428 191.008384 188.010512 187.998135 184.000000 177.730776 178.904222 182.234507 173.447467 153.873894 137.978848 140.165409 156.750000 129.331836 86.100441 68.136679 66.929672 62.012665 56.657419 50.824685 65.942977 87.879926 83.106830 86.492732 88.458529 69.123227 44.048004 37.268705 34.000000 43.000000 59.245153 73.919677 85.959901 89.441492 95.253917 111.003083 120.126762 128.454828 153.386983 198.332333 230.189286 162.527652 112.109344 127.928238 151.887605 155.250000 146.655708 133.139456 168.409728 162.118095 148.771977 148.380015 156.955415 167.000000 173.979182 185.836828 195.435387 202.393600 207.590577 212.687379 220.516932 228.000000 234.446213 241.442610 248.995096 262.371843 262.563580 264.648927 269.124597 272.927858 275.985674 279.284206 283.382921 287.301479 287.663742 287.666350 287.839419 | ||
97 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.733436 286.999049 285.723056 284.047396 282.029640 279.360327 276.449747 273.999655 270.725635 265.165544 259.213418 254.463726 248.824769 262.960731 277.111471 275.250000 241.431106 209.909454 207.929857 199.058285 191.008384 186.271564 187.998135 181.500000 189.982912 219.603165 213.306855 162.747505 147.266697 149.731657 149.540286 139.500000 117.665059 86.100441 71.455371 69.490332 61.136745 56.657419 49.908950 60.344901 73.653380 61.944155 51.447989 45.208160 41.392233 40.065115 40.265494 39.000000 44.000000 62.241942 79.894012 80.017546 78.628900 98.174312 130.241878 141.940799 126.588803 191.847845 248.546227 252.087284 156.552778 95.515885 127.123857 184.554580 199.500000 163.242028 135.213481 138.016621 150.159315 145.186707 145.553700 154.824609 164.000000 179.119465 188.010512 193.423113 201.652419 205.554895 209.600796 220.516932 231.500000 236.446147 241.638229 251.550002 262.811183 259.337498 264.132311 269.630188 272.793883 275.366911 279.550628 284.576993 287.182220 287.365914 287.264258 287.767693 | ||
98 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.751635 287.058935 285.732663 284.064433 282.162314 279.969291 277.171638 274.870490 271.652552 265.578837 259.213418 252.852814 258.874067 277.240939 272.667173 247.750000 222.468921 211.452746 209.286978 200.911238 193.423113 186.706301 192.671119 202.500000 242.720367 265.954739 222.270032 158.341638 149.909576 140.744214 126.463667 109.500000 99.776002 86.904821 77.263081 68.636779 60.260825 57.554096 52.656155 46.349710 41.406544 38.857601 44.633734 52.088901 49.315374 46.039449 52.252647 45.000000 49.000000 66.237660 74.915400 74.075190 71.748159 81.625406 111.003083 131.507999 116.325663 224.814298 252.132933 198.656170 117.289322 87.219156 114.253766 147.220894 148.500000 130.790533 117.238596 120.177188 138.829943 148.771977 160.815803 168.674850 167.000000 174.913779 184.532617 188.593655 197.575924 206.572736 213.613354 229.161457 240.500000 240.223800 242.029468 249.165423 258.124892 260.950539 263.719017 268.197679 272.525934 275.779420 279.778990 284.232039 286.091846 286.462822 287.050380 287.765552 | ||
99 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.752706 287.020437 285.857559 284.030359 281.950035 279.893170 277.481020 274.401578 269.967249 264.545604 258.965257 254.170833 276.247431 278.219036 242.001519 221.500000 217.449519 211.452746 202.501373 196.464152 213.143400 209.312620 237.064471 260.500000 265.626534 228.647375 174.466419 148.900496 144.623818 127.608722 119.252223 114.750000 105.220498 91.731106 81.411446 70.343885 60.260825 60.244126 58.150564 51.947786 52.787780 47.515058 55.341850 65.850382 64.171263 56.992396 65.238730 82.000000 78.000000 78.224813 80.889734 77.046368 74.697048 83.572336 95.612047 93.570544 98.598422 207.415337 231.509370 139.969536 86.561400 83.070792 93.339867 99.776002 96.750000 96.896749 106.868470 114.891430 124.353524 149.967068 167.033697 166.011342 164.000000 172.109988 188.445249 197.447661 196.834743 210.304819 234.293459 242.825384 241.500000 241.334874 241.833849 254.956544 268.376154 268.519425 264.855574 267.355028 272.458947 276.656002 279.778990 282.162314 284.268878 285.982454 286.969106 287.736648 | ||
100 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.748423 287.041824 285.847951 284.115544 282.109244 279.626749 276.965383 273.329782 269.124597 264.958897 258.965257 255.488853 269.775001 257.483391 235.335073 224.000000 219.122653 212.996037 203.858494 195.722971 210.326216 215.833674 257.158303 251.000000 204.898556 168.729487 150.564613 135.682896 130.087984 124.152013 122.857945 135.000000 103.664927 82.882918 75.603736 71.197439 70.771864 71.900922 69.139381 90.201307 92.622108 65.791914 54.368384 54.054827 55.257730 68.941065 125.174498 229.000000 209.000000 112.188415 91.842681 91.902257 87.475566 78.705011 73.487432 81.240871 97.665409 135.072287 198.332333 149.604655 89.122060 73.944390 82.882918 88.887010 93.000000 99.781326 108.251154 119.516468 128.129981 135.625984 145.553700 155.890012 164.000000 173.044585 188.879986 199.057481 194.240609 225.911711 260.220754 247.287074 229.500000 236.446147 241.051371 254.786217 265.300776 264.300702 264.545604 268.197679 272.458947 276.759129 280.273773 282.374594 284.268878 285.944025 287.033269 287.746282 | ||
101 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.749494 287.011881 285.771093 284.251841 282.135779 279.550628 277.738838 274.468566 269.208862 264.545604 259.337498 253.731493 249.165423 241.246991 235.112858 226.250000 217.449519 211.144087 204.537054 198.317104 200.667300 201.487356 202.484386 197.000000 192.113718 170.425276 141.601436 130.018210 128.766544 123.460672 125.021378 135.750000 99.776002 79.665395 74.774063 71.197439 73.399624 75.487629 70.970851 86.469256 90.725235 80.221010 63.129570 49.140012 59.219300 124.701521 223.069585 253.000000 247.000000 145.153087 88.855514 80.017546 92.390380 91.360057 78.297131 84.086180 93.000345 101.190100 129.288229 108.436420 84.854293 77.263081 78.056634 84.220299 93.000000 102.665903 112.399204 122.159347 126.871162 143.394071 159.685277 161.217028 159.500000 169.306197 181.054722 190.203474 195.352381 211.661940 225.651027 228.882601 230.750000 236.001717 240.268894 247.462152 254.756620 259.833818 264.752251 268.366210 271.387150 275.779420 279.702869 281.790825 284.354063 285.886381 287.088878 287.782681 | ||
102 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.749494 286.999049 285.828737 284.132581 281.631616 279.093905 280.368583 282.440054 276.961260 265.785484 261.446859 257.392659 246.951171 238.508321 233.112924 226.000000 218.564942 212.687379 206.233456 197.205333 193.020658 189.314723 180.054061 179.000000 177.730776 163.076856 149.369523 145.753448 133.391583 129.682747 118.531079 114.000000 98.220432 86.100441 78.922427 74.611652 70.771864 69.210892 69.139381 66.875990 64.169016 63.868034 63.129570 57.986678 78.036760 154.573194 249.041751 254.000000 250.000000 140.158440 85.868347 79.027153 78.628900 75.784616 80.221010 86.931489 82.737206 88.369812 99.697899 97.049461 83.147186 75.603736 78.056634 84.998085 92.250000 101.223615 112.399204 122.820067 127.500572 140.406345 152.336857 159.618923 169.000000 179.586763 180.619985 188.593655 197.575924 205.554895 212.687379 220.516932 229.000000 236.668362 241.833849 246.440189 252.267027 258.841177 263.099078 269.377392 276.076261 279.337310 280.958857 283.170642 284.473323 285.992062 287.118821 287.791245 | ||
103 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.753776 287.046102 285.972847 285.103695 283.223712 282.785748 284.493673 285.789419 278.983624 265.268867 264.300702 258.564232 247.121498 239.290798 231.557420 225.500000 219.959220 213.304695 205.894175 197.946514 191.410839 187.575775 180.988658 174.000000 167.609446 163.642119 164.905697 160.859276 143.302379 148.348973 125.021378 108.750000 95.109291 86.904821 82.241119 81.440079 79.531063 69.210892 59.982033 69.675028 67.014326 82.144890 92.333522 88.458529 100.815791 152.581749 218.074938 253.000000 249.000000 105.195909 55.996674 61.200085 81.577788 91.360057 81.182950 78.395562 81.804193 92.948486 96.111193 93.545781 91.682720 83.900465 79.665395 87.331440 97.500000 108.435058 117.929938 124.141506 130.647619 137.418619 143.292647 162.282431 194.500000 209.961161 185.836828 189.398564 199.428876 206.233456 212.996037 221.074643 228.250000 234.223998 241.442610 249.676404 253.438600 257.972617 261.859198 270.304309 278.621778 281.038910 281.796182 284.072830 284.285915 286.770258 287.392585 287.799809 | ||
104 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.754847 287.123098 286.635755 286.619996 285.930275 286.287289 284.803055 280.296461 272.073878 262.789108 260.206058 253.145707 245.418227 240.464514 233.779568 226.000000 218.564942 212.378720 206.572736 200.911238 194.630477 191.923144 186.128941 173.000000 163.880535 161.946330 170.283603 174.706286 155.856053 146.966290 130.790533 109.500000 94.331506 87.709202 83.070792 79.732973 83.034743 93.421163 110.347448 94.866371 97.364289 112.926963 149.767961 172.993339 164.200920 170.504753 231.061021 247.000000 181.000000 63.240871 35.086503 39.411447 61.918530 78.705011 70.601613 68.911198 77.139129 83.791138 79.074336 89.166182 103.632468 93.856540 81.274156 89.664795 102.000000 112.040780 118.621280 122.820067 126.241753 133.235803 142.162121 161.749729 190.000000 203.886282 187.141038 191.008384 200.540647 205.894175 215.156645 224.978622 229.500000 233.335139 243.203184 251.890656 254.317280 257.972617 262.995754 269.208862 274.535553 277.584147 280.159592 282.799153 284.115544 286.731829 287.396863 287.810515 | ||
105 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.750565 287.165874 287.404344 287.386665 286.726323 284.422338 279.285747 272.324972 266.259580 261.445904 255.118774 250.070328 245.588554 241.051371 237.779436 230.750000 221.074643 213.922012 209.286978 203.875962 198.252571 195.401039 189.867329 178.000000 166.011342 160.815803 166.698332 171.559238 157.177493 135.213481 121.415656 103.500000 94.331506 92.535486 86.389483 79.732973 83.910662 113.148049 172.617414 164.842323 177.032945 162.947830 208.175865 254.579261 202.826233 148.598860 226.066373 193.000000 80.000000 45.260141 39.069392 34.459484 38.327420 46.580664 55.210577 66.065889 70.608040 80.128199 94.317839 92.669861 97.657594 92.197194 82.882918 90.442580 101.250000 108.435058 113.781888 121.498627 131.906438 141.003890 148.945278 159.618923 173.000000 183.792449 188.445249 193.825568 201.652419 206.233456 216.082620 225.536333 230.000000 236.223932 246.919950 250.698367 253.731493 258.593017 263.719017 267.355028 270.650290 274.593456 278.523002 281.498941 284.013322 285.944025 287.131653 287.789104 | ||
106 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.753776 287.153041 287.500417 287.369628 285.479181 280.045411 273.974693 270.248366 267.186497 262.065844 257.352216 254.610173 249.846731 243.594422 241.779304 237.500000 228.603746 219.477861 213.019061 207.581866 200.667300 199.313672 195.007611 184.000000 171.871059 168.164224 165.503242 156.453410 149.909576 141.435556 117.809935 99.000000 94.331506 102.188055 102.153269 92.536274 87.414342 105.077959 181.774762 244.148403 234.887563 187.958264 204.282004 229.022225 149.345030 63.962453 121.178780 82.000000 35.000000 47.258000 45.043727 41.392233 43.242235 46.580664 54.248637 71.756507 75.273104 92.948486 130.184906 95.297621 81.440079 85.559811 86.100441 89.664795 99.000000 105.550481 114.473229 129.427264 156.453410 165.503242 165.337908 169.740253 180.000000 190.334627 195.401039 199.862390 207.952457 210.983379 216.082620 223.026632 230.500000 238.890511 246.333092 247.973133 252.559921 257.972617 262.479138 266.680906 271.186188 275.624729 279.093905 281.658150 283.859988 285.578945 286.994771 287.749494 | ||
107 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.769834 287.157319 286.923976 287.250368 285.001552 279.360327 274.284075 270.851252 266.933702 263.202401 262.191340 258.271338 257.170796 252.006051 245.779172 240.750000 233.065436 224.416394 218.447545 212.399543 205.094303 206.704199 201.549789 186.500000 176.665373 175.512644 180.441871 184.776838 174.356206 157.336416 139.444265 107.250000 93.553721 111.036243 119.576400 103.632468 85.662502 100.594576 171.701680 223.622124 156.167344 115.812782 110.829358 103.202972 67.142441 25.129278 21.285834 25.000000 37.000000 37.268705 39.069392 41.392233 44.225198 51.447989 66.753854 83.137744 79.005155 82.875403 101.491253 92.669861 88.268507 97.175231 103.796816 100.553787 97.500000 104.829336 124.152013 151.231015 175.335695 179.246781 185.122117 191.581017 192.500000 198.745999 202.791567 210.326216 220.552533 218.786825 219.169203 225.815189 233.000000 237.112792 240.855752 246.440189 252.120581 257.228136 262.375814 266.596641 271.521125 276.295056 279.550628 281.684685 283.808877 285.646197 286.999049 287.749494 | ||
108 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.774116 287.170152 286.213031 287.028886 285.797600 279.702869 274.129384 270.516315 266.849436 264.648927 263.183981 256.221086 261.428974 256.114056 247.334676 244.250000 236.690560 226.268343 221.840348 216.476038 209.118852 211.486305 200.147894 187.500000 185.188598 191.340011 224.062668 266.600076 241.088899 153.879707 153.146007 123.750000 101.331572 101.383674 100.493923 94.243380 96.173541 109.561343 126.830674 110.727587 88.828362 80.221010 39.766408 18.668162 31.488306 40.065115 36.269776 32.000000 33.000000 33.272987 33.095058 33.469091 35.378531 48.527594 73.487432 87.879926 76.206117 76.465260 91.627809 112.816019 104.486021 137.829204 174.582319 147.220894 108.000000 117.088790 139.361531 174.356206 181.000381 172.076239 189.078958 204.898556 202.500000 211.363057 215.833674 216.363039 227.964343 226.590272 226.885660 229.998024 233.000000 236.446147 241.246991 247.291825 253.292154 258.468937 263.409047 267.270762 271.655099 275.727856 278.827484 281.498941 283.945173 285.790307 287.028992 287.762340 | ||
109 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.771975 287.153041 286.107350 285.836290 284.789273 279.322267 274.180947 270.583302 266.596641 262.995754 261.570939 264.275649 260.917992 250.636716 241.779304 238.000000 238.084838 236.454067 229.643794 220.181943 212.338490 208.443147 202.951685 196.000000 176.665373 191.340011 240.196387 255.900114 200.784995 128.300064 132.232821 112.500000 112.998349 117.471289 108.790652 96.804041 92.669861 95.214516 115.841856 105.129510 86.931489 68.677733 39.766408 29.480754 35.449877 36.082225 34.271917 31.000000 31.000000 37.268705 37.077947 34.459484 38.327420 52.421454 73.487432 89.776799 89.268294 87.454077 107.767989 124.202978 97.657594 166.867755 256.629152 225.777191 156.750000 163.963173 176.693984 189.552760 179.741562 170.881148 195.862115 214.487184 210.000000 219.774428 220.181043 217.972858 217.217219 240.500763 244.479182 235.296281 235.250000 245.779172 252.201671 251.550002 253.292154 261.198699 264.442281 269.208862 273.061833 275.882547 278.941664 281.790825 283.996285 285.867166 287.131653 287.789104 | ||
110 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.777328 287.161596 286.107350 285.461474 284.576993 279.208086 274.180947 270.583302 266.259580 262.169168 259.709738 262.371843 256.659815 252.397290 248.890181 243.000000 238.363693 235.219433 229.304514 221.664305 215.960584 216.703148 209.961161 202.000000 180.926986 185.687380 219.282306 214.988495 149.909576 143.509581 145.934564 116.250000 112.998349 119.884431 113.768689 103.632468 97.925381 92.524486 96.611426 87.402269 85.034617 70.601613 41.713339 31.446680 34.459484 33.095058 31.275128 27.000000 30.000000 43.262282 42.056560 42.382625 51.105938 61.182640 70.601613 85.034617 95.799383 103.021569 105.974636 116.319699 107.046681 182.631541 261.455436 232.777257 155.250000 163.963173 182.224717 167.749009 176.594515 196.575590 228.082112 242.187665 230.000000 226.316607 228.441044 222.399861 221.293714 233.715157 260.529413 270.989805 269.250000 272.222743 269.807406 254.956544 267.351028 271.373267 267.438657 270.304309 273.798693 276.346620 279.664809 282.613408 284.728879 286.184209 287.285646 287.829784 | ||
111 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.770905 287.127376 286.251461 285.001473 283.170642 278.941664 274.541893 270.583302 266.343845 261.962521 256.979976 254.756620 251.720329 249.854239 249.112395 244.000000 237.248271 233.676142 230.661635 224.258438 218.375313 212.790516 206.690072 195.500000 189.982912 183.991590 197.173136 208.694400 159.820372 135.213481 128.627100 113.250000 116.109489 117.471289 110.449998 106.193128 110.188260 114.044726 110.347448 88.335282 85.034617 58.096396 36.846013 33.412605 34.459484 32.099335 31.275128 38.000000 42.000000 43.262282 47.035172 64.171263 73.714085 65.076500 69.639673 104.951780 116.325663 122.252000 122.114816 114.567859 130.946176 205.862382 261.455436 245.221819 180.750000 115.646502 134.522139 146.605977 189.812114 221.074942 226.951586 228.337425 234.500000 240.335560 251.047363 234.875961 222.034895 249.661330 272.875744 276.845774 269.250000 267.556231 272.154838 259.896030 277.895184 276.584631 268.471891 271.062696 274.669528 277.481020 281.187218 283.780945 285.512585 286.501252 287.272813 287.842631 | ||
112 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.782681 287.135931 286.116957 284.865176 282.480733 278.599122 274.490329 270.516315 266.259580 261.549228 256.359575 253.438600 252.912619 250.049859 243.334808 240.250000 238.363693 238.614675 240.840043 235.376152 225.619500 208.008410 202.951685 196.500000 188.384807 174.382118 192.990319 213.729676 147.266697 120.695305 112.040780 112.500000 123.109555 122.297573 112.109344 105.339574 112.816019 127.494876 112.178917 98.598422 81.240871 46.553119 34.899083 35.378531 31.488306 30.107890 51.253718 85.000000 52.000000 48.256929 59.979563 76.055975 81.577788 78.705011 85.992649 113.487708 145.249057 147.892575 139.151673 145.225056 152.285011 211.670093 261.455436 236.666182 151.500000 96.896749 113.090546 128.105825 165.265143 198.965771 214.515798 228.337425 249.000000 262.298586 261.046312 234.473506 228.334933 263.232540 277.814277 270.989805 264.000000 268.222875 271.372361 259.725703 270.719300 267.154544 265.268867 270.557105 275.406388 278.821674 282.062604 284.285109 285.665919 286.722221 287.358365 287.864042 | ||
113 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.794457 287.127376 286.107350 285.546659 282.507268 278.294640 274.335638 270.516315 266.259580 261.342581 257.476296 256.660426 254.445563 248.876143 248.890181 256.750000 251.748765 239.849308 237.786520 233.152609 227.229319 212.355779 206.222774 197.000000 186.786703 177.773696 190.600139 193.588572 132.730863 122.769330 122.136801 120.000000 123.109555 118.275669 130.362148 163.381205 188.145131 175.018740 105.768774 98.598422 69.859635 39.819540 33.925618 35.378531 30.497914 32.099335 57.247294 85.000000 62.000000 64.239801 69.936788 75.065582 102.220009 150.741426 180.262746 171.342326 170.440400 172.617414 165.155296 172.378573 177.038059 222.455840 261.455436 220.332695 108.750000 105.550481 120.003963 130.087984 154.565181 181.039416 209.993693 233.131739 252.000000 271.177256 261.481049 228.034229 230.929066 265.946783 277.814277 273.778362 272.500000 274.222677 267.068736 256.830142 263.104076 260.206058 264.028987 272.410939 277.282032 280.059201 282.367085 283.621736 285.342214 286.760651 287.426806 287.877959 | ||
114 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.791245 287.153041 286.664577 285.648882 281.976570 278.104339 274.387202 270.516315 266.006784 261.755874 261.446859 264.422096 257.170796 252.592909 260.667569 267.750000 255.652744 238.306016 232.018756 221.664305 218.777768 213.225253 209.961161 199.000000 196.908032 189.644221 179.246781 168.412191 143.963098 135.904822 134.396254 125.250000 119.998415 107.014339 146.955606 222.276389 259.094643 229.716016 150.639779 112.593612 58.478398 39.819540 35.872548 35.378531 35.449877 40.065115 54.250506 65.000000 71.000000 72.231236 72.923955 90.911865 158.248895 230.565561 255.294048 237.732872 193.765717 206.499602 208.195776 187.269211 211.180195 249.835046 242.954680 173.665588 99.000000 112.761924 131.065430 150.570296 165.894553 183.429597 207.732640 227.804723 241.000000 253.419916 246.699994 228.436684 235.005562 257.464776 268.245870 273.220650 278.500000 277.111471 268.242452 266.027805 267.497475 261.074619 270.538357 279.067889 280.497423 281.193601 282.861868 283.648271 285.342214 286.693399 287.533745 287.902581 | ||
115 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.792316 287.392585 287.337092 284.609620 281.127452 278.066279 274.593456 270.449328 265.753989 262.685784 265.665583 269.254834 261.599301 263.351970 262.223074 252.750000 242.825384 241.083941 237.107960 217.958400 209.521306 206.269462 205.288177 199.000000 203.300451 194.731589 173.868874 162.118095 155.856053 142.818240 136.559688 129.000000 122.331770 108.623101 140.318222 204.351768 230.189286 204.609070 184.521967 119.124701 50.890907 42.705360 42.686804 38.327420 41.392233 50.022339 60.244083 77.000000 84.000000 83.219460 86.864069 130.527570 210.345930 255.875653 256.255988 248.165672 209.626933 206.499602 206.402423 186.393291 218.862175 236.560280 180.212984 113.776134 111.000000 113.483068 137.978848 166.427569 169.671010 184.027142 203.775799 220.346901 230.500000 228.185800 225.397886 237.290690 242.417371 241.179323 243.861865 255.095033 269.000000 273.111603 269.611787 279.994627 271.597980 262.067260 276.531110 282.269967 281.234283 281.451419 283.052170 284.338179 285.563697 286.895154 287.751901 287.920780 | ||
116 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.840490 287.751901 287.173767 283.962210 281.100917 278.104339 274.696584 270.516315 266.006784 263.409047 263.556221 260.468037 259.896030 264.525686 253.112263 243.000000 241.988817 241.701257 232.358036 216.105447 208.313942 212.355779 202.017088 189.000000 197.440734 207.167377 188.209958 157.082819 147.927417 143.509581 150.261430 140.250000 123.109555 119.884431 132.021493 161.674098 176.758172 139.151673 111.263182 63.143939 38.561234 43.667299 46.580664 43.242235 45.353803 56.992396 67.236589 79.000000 110.000000 128.171286 129.680134 170.143276 229.022225 255.875653 256.255988 246.268800 192.832704 132.325083 123.908169 147.852815 163.381205 136.999531 113.449385 122.331770 122.250000 127.905955 152.497024 184.267002 191.700343 188.209958 198.688431 211.290975 215.000000 221.643622 224.093675 244.132423 237.599695 235.411559 230.898217 238.642549 253.500000 255.778842 252.592909 269.604674 263.836309 263.183981 271.158297 275.865812 278.353829 280.471710 282.214844 283.754410 285.342214 287.385129 287.807509 287.880100 | ||
117 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.948614 287.734791 286.049706 283.689617 281.153987 278.218520 274.799711 270.717277 266.343845 262.789108 260.081978 255.635299 256.148834 254.549102 237.557221 238.500000 243.104240 233.676142 222.518908 219.070171 222.802316 238.874730 234.260680 212.000000 221.945006 234.300006 207.928948 160.859276 139.998780 137.978848 150.261430 138.750000 121.553985 119.884431 161.889718 216.301515 241.576245 219.852573 105.768774 37.019583 38.561234 41.743420 42.686804 49.140012 56.248122 66.949620 88.214108 107.000000 143.000000 169.127394 176.479088 225.605264 255.562224 255.875653 256.255988 239.629745 156.445209 121.336265 118.528109 118.071539 102.778914 99.664250 121.493192 136.331902 135.750000 181.991781 197.434235 248.356816 252.753067 195.380500 185.687380 205.431257 204.500000 217.437936 225.397886 232.461232 224.258438 229.983074 234.910775 239.757972 243.750000 247.112461 250.636716 251.209348 263.689863 266.782304 267.955274 278.815094 281.971143 280.884219 282.481266 284.311644 286.211106 287.289055 287.615019 287.866183 | ||
118 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.959320 287.717680 285.847951 283.621469 281.047847 278.142399 274.851275 270.918239 266.512376 262.789108 260.702379 258.857125 256.830142 255.918437 246.001387 245.000000 240.036827 230.589559 236.768680 256.499809 269.084623 270.175787 268.373466 252.000000 224.608514 232.604217 241.391477 190.441524 130.087984 135.904822 138.001976 133.500000 121.553985 151.255279 216.648130 258.125631 258.218723 232.406046 118.589061 40.751634 46.148725 50.400878 44.633734 58.969641 90.911865 111.757130 115.185203 123.000000 136.000000 180.115618 222.282320 248.384294 255.562224 255.875653 256.255988 224.454763 102.330472 89.285547 122.114816 106.684580 103.632468 124.554437 131.950141 143.331968 205.500000 254.827360 256.198281 233.820982 206.176762 192.392774 225.255796 245.383875 223.000000 214.634146 214.529463 213.948310 214.993676 223.536749 233.058825 239.479116 245.750000 255.334412 262.373874 256.830142 261.053824 263.928461 269.918417 279.742011 282.440054 281.451419 283.661133 286.726323 286.926664 287.077693 287.730513 287.950755 | ||
119 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.914357 287.739068 286.510859 284.098507 281.074382 278.066279 275.366911 271.454137 266.596641 262.892431 261.074619 261.346717 259.214721 254.157864 246.668032 242.000000 233.902003 236.145408 258.482617 273.176381 274.316535 273.218945 260.896691 212.000000 179.861582 216.211587 230.038119 165.894553 136.695181 141.435556 149.540286 147.000000 123.887340 134.363284 207.521728 259.832738 239.824405 160.671913 70.055116 43.550672 48.045598 51.362818 47.554129 55.037790 81.007938 105.782795 113.187344 129.000000 209.000000 204.089925 231.243821 251.355472 255.562224 255.875653 240.864951 175.136072 86.469256 85.622608 122.114816 100.553141 95.950487 124.554437 133.558903 157.332100 252.000000 263.481092 263.803040 230.517383 197.994438 203.148587 219.037902 214.487184 203.500000 220.709025 251.916837 213.143400 222.034895 240.161482 250.652348 249.796775 254.250000 268.445090 272.154838 257.511450 259.735804 264.424782 268.161921 275.781547 283.042940 284.029601 283.356651 285.373041 285.802216 287.471595 287.837452 287.951826 | ||
120 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.949685 287.816065 286.972013 283.928136 281.127452 278.294640 275.624729 271.990036 267.270762 263.615694 262.811740 263.250523 258.192759 249.854239 243.557023 240.000000 232.228869 242.318574 272.053827 275.770514 274.316535 268.871576 220.241727 183.000000 168.142148 187.383169 186.417323 148.900496 144.623818 144.892265 156.751729 156.000000 128.554051 114.253766 185.120559 235.933243 158.363854 62.934156 52.656155 51.014774 51.839344 45.591179 51.447989 69.782233 93.883043 107.774240 104.196979 130.000000 201.000000 229.063162 247.175380 254.326650 255.562224 255.875653 225.473915 126.765817 76.206117 86.538343 94.317839 81.282903 87.414953 110.449998 121.493192 138.665258 201.750000 246.173628 237.532055 202.767154 169.671010 192.392774 230.343164 208.094765 167.000000 202.951685 247.569468 225.619500 229.817295 249.322050 255.590880 247.844786 246.000000 254.889982 260.026442 258.533413 259.442911 265.665583 268.678537 273.000795 279.157677 281.296728 281.187218 283.329851 285.086658 286.741436 287.307034 287.815867 | ||
121 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.949685 287.542300 286.203424 283.706654 281.313196 279.017785 275.985674 272.592921 268.787536 265.062221 264.176622 262.371843 255.637852 251.027955 246.890247 239.250000 235.853993 252.504297 276.803751 275.770514 273.511626 258.437891 193.605716 172.500000 171.871059 178.338959 169.088513 141.347581 138.016621 143.509581 146.655708 150.750000 132.442977 125.515096 189.268924 210.326641 113.691939 41.413916 49.908950 52.880799 50.890907 49.438938 64.103035 85.509640 114.681288 131.671578 109.191626 123.000000 183.000000 242.049245 255.141160 255.317043 255.562224 250.034862 191.806023 83.137744 73.407079 81.959669 95.214516 101.429061 102.778914 102.982942 107.014339 121.553985 151.500000 179.828348 174.619959 166.427569 150.788724 172.673784 202.645272 188.917509 162.000000 186.596240 212.355779 218.375313 218.328990 225.911711 233.058825 240.594539 247.000000 249.112395 251.614813 259.896030 263.104076 265.541503 269.195154 273.422121 276.009274 277.996656 280.502134 282.878757 284.916287 286.011277 287.071767 287.758058 | ||
122 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.895087 287.217205 285.569338 283.621469 281.207057 279.017785 276.552874 273.731706 270.135779 268.885184 272.986308 264.275649 255.637852 254.353483 249.779040 242.000000 241.709961 258.368805 276.803751 271.323429 245.339787 217.137885 178.184868 171.000000 170.272954 163.076856 149.369523 140.718172 150.570296 149.731657 141.607698 141.000000 134.776332 139.993949 204.203036 217.155069 118.947459 53.070712 48.993216 53.813812 52.787780 61.944155 79.678476 89.441492 108.738932 129.680134 121.178780 149.000000 194.000000 205.088855 242.196768 255.317043 255.562224 216.937050 126.394119 73.653380 72.474066 94.779956 121.218139 122.451138 113.875108 107.960979 108.623101 116.109489 129.750000 143.049987 154.571049 147.266697 144.494629 157.137610 165.903171 167.076745 175.000000 193.138418 205.399988 208.313942 209.064228 217.090424 225.651027 238.642549 247.500000 247.334676 249.854239 261.088319 265.740115 266.410063 270.538357 273.927713 274.602540 276.965383 281.415580 284.311644 285.171844 285.828737 287.063212 287.756988 | ||
123 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.811585 287.058935 285.569338 283.621469 281.021312 278.484942 276.552874 273.731706 269.714453 270.331711 276.832791 264.861436 257.681778 255.722818 248.445751 241.000000 246.729363 264.541970 276.803751 265.023390 206.301668 178.881037 169.773496 169.000000 161.749729 145.553700 136.223529 155.824000 186.909881 158.719099 145.934564 136.500000 132.442977 142.407091 208.351401 223.983496 124.202978 50.380682 50.824685 58.478875 60.375271 72.525492 87.466197 96.322232 106.758147 110.761407 113.187344 183.000000 195.000000 170.126324 230.248099 255.317043 224.107411 142.953705 77.335191 78.395562 70.608040 110.347448 122.114816 109.312340 105.339574 112.109344 116.666908 115.331704 127.500000 170.453472 178.076667 147.927417 148.271086 163.113061 159.120014 161.217028 186.000000 202.017088 207.138936 203.484484 211.658362 226.590272 232.441509 236.411704 240.000000 242.890379 250.832336 261.428974 262.371843 272.738148 275.807847 273.927713 274.334591 277.274765 281.758122 285.505716 285.205918 285.867166 287.020437 287.750565 | ||
124 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.752706 286.981939 285.617375 283.638506 281.047847 278.294640 275.676293 271.990036 268.113414 267.955274 269.387986 262.371843 259.385048 254.744721 246.001387 242.250000 256.768167 274.727694 273.410949 250.199771 191.410839 175.837879 171.175391 164.000000 153.759206 145.553700 145.186707 165.894553 191.534919 157.336416 147.376853 138.750000 128.554051 141.602710 189.268924 188.134253 106.684580 47.690652 53.571890 65.009964 75.550253 104.269505 106.935498 107.134824 117.652466 111.757130 103.198050 168.000000 173.000000 183.112407 235.226711 232.538012 140.555563 65.076500 67.715794 73.653380 79.005155 98.442895 91.627809 87.414342 95.950487 107.131306 114.253766 116.109489 129.750000 185.597503 178.076667 151.231015 156.453410 173.868874 167.598961 168.142148 193.000000 202.017088 196.705250 202.277119 213.511314 222.179628 228.428951 231.950013 238.250000 248.667966 257.092153 259.725703 259.150018 280.307034 281.697277 274.349039 273.999655 277.326329 280.844676 284.444319 284.797028 285.886381 287.003326 287.747353 | ||
125 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.743071 286.964828 285.694234 283.655543 281.127452 278.218520 274.851275 270.516315 267.692088 268.781861 268.891665 263.543416 259.725703 252.006051 244.668098 258.750000 272.941795 275.345010 261.536139 217.587809 184.166652 177.142090 171.642690 161.000000 153.226504 150.075805 146.381797 143.865219 147.266697 155.262390 145.213420 145.500000 132.442977 143.211471 151.103970 129.239069 90.042102 63.830832 63.644972 72.474066 96.415853 153.328433 141.006775 99.271121 99.825398 126.692966 133.165933 129.000000 172.000000 197.097419 217.303707 148.354638 76.662974 55.341850 60.020275 81.240871 96.732396 78.296729 79.074336 87.414342 95.096934 98.834577 107.014339 118.442845 126.000000 143.049987 146.274948 144.623818 150.159315 158.930245 162.511593 171.338357 194.000000 214.166847 205.834725 207.911487 212.028952 214.036902 224.107735 232.507725 246.250000 262.889718 263.938828 257.341123 265.740115 281.299675 281.490630 274.096243 274.133629 278.202910 280.502134 282.480733 284.541471 285.982454 287.037547 287.753776 | ||
126 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.748423 286.999049 285.713448 283.672580 281.207057 278.066279 274.645020 270.315353 268.534740 271.571591 270.380626 261.493164 256.489488 249.854239 242.445949 261.750000 269.037815 264.850629 264.250381 224.629028 180.947013 176.272616 171.175391 162.500000 156.422714 152.336857 149.369523 147.641676 155.195334 177.385325 158.915162 143.250000 134.776332 148.842136 147.785279 117.289322 90.042102 85.351073 81.959669 100.464447 104.003344 111.003083 120.564009 104.185935 108.738932 152.581749 157.140241 138.000000 170.000000 176.119900 147.603137 137.460319 117.947416 76.758081 57.134456 77.447126 82.737206 89.285547 88.041103 94.421701 94.243380 100.493923 107.014339 109.887208 123.000000 131.511677 133.830797 135.373742 144.494629 152.357248 154.032646 154.824609 183.500000 231.924188 212.790516 201.874664 222.034895 226.590272 227.194318 229.998024 239.250000 250.001255 254.744721 260.917992 272.037320 281.175595 278.080960 274.770365 279.358639 282.482692 281.872302 282.984897 284.626657 286.030491 287.020437 287.777328 | ||
127 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.731295 286.960551 285.684626 283.723691 281.286661 278.979725 275.366911 272.659909 274.011978 274.361320 264.300702 256.660426 254.615890 250.441097 244.445883 243.750000 238.363693 244.479182 254.750534 217.217219 181.751923 179.315774 171.642690 167.000000 170.272954 170.425276 166.100787 164.635734 165.766849 174.619959 183.434070 162.000000 136.331902 146.428994 175.994157 156.552778 95.297621 83.557719 100.274365 118.191688 103.054908 118.698601 147.821031 152.351118 149.345030 148.598860 122.177709 110.000000 111.000000 110.190556 100.804183 115.671681 114.015564 84.545801 63.868034 66.065889 77.139129 97.527160 88.041103 88.290262 94.243380 104.642287 108.623101 116.109489 138.000000 130.069388 120.695305 133.391583 149.529905 149.369523 151.206331 161.217028 191.000000 236.129874 226.267360 219.180223 242.787962 229.304514 228.428951 231.950013 233.250000 238.223866 250.636716 276.758412 281.556349 280.307034 276.427787 277.719646 280.631397 281.554546 281.643941 282.799153 284.507397 285.982454 286.999049 287.808374 | ||
128 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.733436 286.981939 285.790307 283.996285 281.711220 280.464074 276.707565 276.813121 281.932906 276.324464 258.220777 259.003571 255.808180 250.245478 245.779172 244.000000 247.008219 260.838071 264.928942 222.776076 182.556832 176.707353 174.446480 175.000000 187.319404 187.948432 176.856600 173.447467 175.016926 182.224717 185.597503 168.750000 132.442977 187.452411 237.389953 186.427147 104.056820 90.731133 92.032751 113.526625 123.920508 118.698601 128.351729 154.317044 162.220135 142.624525 129.170216 136.000000 154.000000 125.174498 123.705799 171.133668 132.691860 69.943825 74.449372 70.808071 74.340091 91.117017 87.144426 101.429061 107.046681 106.301633 107.014339 111.442779 122.250000 125.021378 117.238596 127.445105 137.571124 141.601436 147.249489 164.945939 209.000000 248.279633 201.922093 198.252571 209.805409 215.054743 224.107735 231.671158 234.000000 238.001651 254.549102 280.846262 279.213203 262.687660 267.645304 273.843447 276.076261 277.120074 278.903604 281.578546 284.268878 286.030491 287.157319 287.807303 | ||
129 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.740930 286.981939 285.761485 284.149618 281.976570 280.083471 276.965383 276.076261 280.584663 278.494254 262.191340 273.794679 266.368459 253.375386 250.890114 245.250000 257.047022 275.036352 255.768375 208.323047 184.166652 178.446300 181.455957 180.500000 185.721300 195.862115 206.136313 205.547353 189.552760 192.594843 195.693524 183.750000 146.443109 205.953167 258.961448 240.201010 175.882252 90.731133 88.369812 106.062523 116.333017 117.736661 132.245590 148.419266 141.421889 116.735742 108.192697 138.000000 150.000000 113.187344 100.804183 126.566000 102.220009 67.996895 83.106830 85.983053 77.139129 82.875403 85.351073 99.677221 101.071807 93.026867 90.926725 109.109423 138.000000 126.463667 109.633837 118.195029 125.612343 134.430894 142.727384 155.357310 179.000000 195.942208 180.185248 187.386290 193.870019 206.233456 218.551886 225.536333 233.250000 244.890313 254.549102 260.407011 262.957630 268.023105 273.534734 273.927713 273.798693 276.140365 279.398387 282.162314 284.677768 286.001669 287.161596 287.792316 | ||
130 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.754847 286.981939 285.723056 283.911099 281.578546 279.740929 277.068511 274.267604 274.854630 277.357697 276.584631 281.995689 277.950702 259.635204 253.778908 246.000000 241.709961 237.071383 222.518908 212.399543 213.545855 188.010512 184.259747 187.000000 194.244525 206.036851 218.087216 220.653181 208.052912 202.273627 212.279844 182.250000 160.443241 218.823259 260.620794 255.564971 200.408010 99.697899 116.757591 134.052904 123.920508 129.279939 123.484404 126.794082 131.517963 115.740019 103.198050 116.000000 120.000000 96.205543 88.855514 90.911865 77.645937 84.545801 116.774722 107.797090 77.139129 87.454077 89.834456 89.166182 86.561400 83.070792 89.317964 110.664993 127.500000 110.598491 106.177129 115.552150 123.094705 131.443168 140.466332 149.497593 158.000000 166.502407 178.011563 189.398564 194.611200 204.197774 214.539328 222.190065 234.250000 246.890247 248.484904 248.143460 263.836309 278.942153 277.977637 274.011978 272.927858 275.676293 279.626749 282.374594 284.558508 285.905596 287.080323 287.765552 | ||
131 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.768764 287.016159 285.742270 284.302952 282.878757 280.273773 277.068511 273.396769 272.916530 278.907547 283.905357 282.435029 273.862851 255.331579 246.445817 238.750000 227.767179 212.378720 209.626258 239.452647 248.559426 186.706301 179.586763 190.000000 202.235048 209.993693 219.879852 226.947276 217.302989 231.309979 223.818153 187.500000 185.332365 234.106492 260.620794 214.594408 136.465857 105.974636 149.724044 164.842323 137.198617 127.356059 109.855893 107.134824 150.335423 192.410647 168.128465 140.000000 137.000000 97.204473 87.859791 72.094404 89.441492 155.608751 189.882144 128.662690 63.143939 81.043934 96.111193 87.414342 84.854293 93.856540 103.796816 105.220498 99.000000 97.617893 107.559812 115.552150 123.724115 132.638258 141.596858 151.628399 161.000000 169.773496 179.750511 188.593655 197.205333 205.894175 214.230670 221.632354 232.000000 242.001519 243.985661 247.121498 267.936815 278.569913 272.294854 269.461657 271.655099 275.470038 279.208086 282.162314 284.268878 285.876773 287.101710 287.761270 | ||
132 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.775187 287.071767 285.819129 285.052584 284.550458 280.920797 277.016947 273.731706 275.444486 283.143803 283.781277 280.238330 259.725703 246.137473 240.001585 240.500000 244.219662 230.589559 213.697621 240.935009 246.949606 196.270513 179.586763 188.500000 200.104242 202.645272 218.684761 243.311924 238.446020 259.654990 239.683329 200.250000 207.110348 243.759061 246.516355 172.770292 90.918022 103.284606 143.313901 165.775336 141.940799 124.470240 106.935498 106.151861 174.104846 245.183935 190.104913 139.000000 137.000000 99.202332 78.898290 56.248122 117.947416 216.937050 209.120939 101.158035 51.014774 74.633790 105.077959 90.918022 92.536274 104.642287 102.992436 91.220366 87.000000 96.896749 107.559812 116.212870 124.982934 138.016165 147.814752 154.824609 164.000000 172.577286 178.881037 187.788745 198.317104 207.251296 214.539328 224.978622 234.250000 238.446081 242.029468 248.484115 262.811183 270.628787 266.405424 267.776353 272.257985 276.088802 279.322267 282.135779 284.217767 285.915203 287.110266 287.762340 | ||
133 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.781610 287.144486 285.944025 285.171844 283.993225 280.996917 277.738838 276.344210 279.573481 284.590330 281.423755 271.451533 253.082946 244.572519 244.223668 259.000000 268.201249 245.405157 209.626258 212.028952 234.875961 234.527361 190.801925 188.000000 196.908032 196.427378 217.489671 259.047162 265.535529 264.494382 259.154226 210.750000 206.332563 240.541538 243.197663 177.038059 106.684580 113.148049 131.409348 143.383031 133.404872 128.317999 113.749753 117.947416 164.200920 181.457700 102.199120 67.000000 77.000000 80.222672 60.975286 49.315374 112.049639 177.024983 134.089637 46.148725 52.880799 80.128199 102.387929 87.414342 90.829167 93.856540 84.491679 81.109159 90.750000 98.339037 107.559812 121.498627 132.535848 143.991616 153.467383 157.488117 159.500000 168.838899 179.750511 191.008384 199.428876 207.251296 214.539328 229.719168 239.750000 238.668296 241.246991 249.506077 257.246212 264.052541 268.161921 274.180508 275.674337 276.707565 279.893170 282.374594 284.319989 285.838344 287.020437 287.763411 | ||
134 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.796598 287.234315 286.174602 285.018510 282.984897 280.844676 279.337310 280.363448 283.449680 283.557097 275.467910 258.710678 255.126871 247.506808 247.334676 262.250000 256.210455 228.120293 208.608417 210.176000 264.657619 257.133680 197.344104 191.500000 200.104242 208.863167 234.220936 260.935391 259.589051 264.494382 262.038804 234.750000 210.999273 238.932776 259.791121 188.987807 102.304980 138.254996 159.797127 118.191688 97.364289 113.888902 127.378264 118.930379 88.931079 53.009506 30.276199 29.000000 43.000000 46.259070 44.048004 41.392233 57.986678 75.784616 66.753854 49.942471 62.210926 73.718055 79.971013 76.903303 76.318759 76.433409 78.056634 83.442514 91.500000 102.665903 113.781888 131.409423 145.753448 143.394071 151.771594 160.684326 161.000000 170.708093 180.185248 188.996110 198.317104 208.608417 216.699936 225.815189 233.250000 238.001651 243.594422 249.846731 257.831998 261.198699 270.538357 278.056707 277.148058 276.552874 279.931230 282.560338 284.422212 285.799915 287.165874 287.806233 | ||
135 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.803021 287.289923 286.491645 285.529622 283.940155 281.377519 280.626401 280.497423 281.343050 281.697277 272.241828 262.225397 257.852105 248.093666 240.890445 238.750000 232.228869 222.255786 218.108265 227.964343 259.425706 222.789464 185.661643 191.500000 208.094765 241.648426 265.293284 254.641295 252.981854 263.803040 257.711938 260.250000 253.777455 258.237914 222.455840 147.163691 106.684580 127.494876 127.746409 89.268294 67.962762 111.003083 126.404799 76.662974 29.507521 28.116446 28.278340 28.000000 29.000000 34.271917 40.065115 36.440269 34.395568 37.819478 48.476998 62.272144 68.742015 69.139381 75.487629 73.399624 72.050992 75.603736 80.469776 86.553655 96.750000 107.713914 115.855913 132.070143 140.718172 138.016165 149.510541 161.749729 162.000000 171.642690 188.010512 195.435387 200.911238 206.572736 214.847987 222.747777 231.750000 240.446015 245.354996 249.846731 257.978445 264.672942 267.645304 271.399757 274.133629 276.449747 279.284206 282.003105 284.592583 286.751043 287.717680 287.853336 | ||
136 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.813726 287.315589 286.280283 285.103695 283.515596 281.796182 280.110765 279.023702 278.815094 277.564344 272.986308 267.936815 255.637852 247.702427 238.223866 232.000000 237.527126 240.466624 233.036597 231.670247 219.180223 207.138936 197.344104 187.500000 218.748797 258.041056 246.171839 213.729676 241.088899 263.803040 262.038804 261.000000 260.777521 255.824771 183.461214 112.168002 117.195619 123.011493 94.779956 82.737206 76.498689 104.269505 71.890756 31.446680 24.555558 27.120723 28.278340 29.000000 31.000000 32.274058 33.095058 32.478699 35.378531 41.713339 57.134456 72.704944 60.344901 58.150564 64.727509 75.151463 73.758099 73.944390 79.665395 88.887010 99.000000 105.550481 111.016521 117.534309 124.353524 133.235803 143.292647 159.086221 178.500000 199.213297 238.005256 254.596248 232.782019 209.286978 211.452746 222.747777 234.750000 244.001453 246.137473 250.868694 255.049513 261.570939 264.752251 268.450475 272.927858 276.759129 279.474508 282.427664 286.296291 287.519632 287.559410 287.774116 | ||
137 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.794457 287.204372 286.462822 285.512585 284.391249 282.595447 279.440438 280.430435 282.944088 280.974014 278.942153 261.346717 250.187385 250.636716 248.667966 247.000000 261.229857 256.825513 216.411864 202.023009 209.118852 204.965251 196.409507 203.500000 237.393351 252.953688 221.672487 204.917943 260.910491 264.494382 263.481092 262.500000 262.333091 226.062685 142.807241 90.829167 102.304980 108.664666 103.021569 79.938167 61.323707 54.248637 36.846013 28.497791 30.497914 28.116446 28.278340 31.000000 39.000000 31.275128 33.095058 51.296159 51.105938 47.554129 62.906095 71.756507 59.411888 59.066298 64.727509 71.647784 72.050992 71.455371 77.252253 86.553655 93.750000 99.781326 108.251154 115.552150 124.353524 130.845623 151.771594 205.963959 257.500000 258.560199 253.221048 226.424410 213.511314 209.626258 217.934570 224.978622 231.750000 240.446015 247.115569 252.912619 255.928193 262.439500 266.715394 271.231226 277.081070 279.388874 279.664809 283.037967 287.148146 287.452380 287.272813 287.745212 | ||
138 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.825502 287.632129 287.317877 285.802216 284.444319 282.290965 279.749819 281.167296 281.174519 273.431410 267.774944 256.953319 251.379675 251.419194 250.667900 248.500000 258.162445 255.590880 221.840348 201.652419 209.118852 205.399988 212.764952 219.000000 234.197142 231.473690 228.245484 250.864838 266.196249 265.185723 262.038804 212.250000 192.332431 156.081563 109.620325 94.243380 106.684580 100.594576 86.538343 73.407079 52.787780 36.933721 32.952153 32.429643 30.497914 28.116446 28.278340 33.000000 44.000000 32.274058 38.073670 58.228907 52.088901 40.739874 53.286697 62.272144 59.411888 61.813503 75.487629 71.647784 66.929672 72.285044 80.469776 85.775870 93.750000 100.502470 108.942496 114.891430 124.982934 129.052987 161.946330 225.141215 267.000000 246.877738 199.748409 187.788745 195.352381 208.269137 219.477861 226.372900 232.000000 239.779370 247.311189 251.550002 258.124892 264.548862 269.401801 272.158144 277.014083 279.698256 279.931230 282.374594 285.580734 286.568503 287.118821 287.755917 | ||
139 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.884382 287.837452 287.289055 285.580734 283.489061 281.111098 279.543565 280.631397 278.140972 267.335334 259.957898 256.367532 253.253273 250.636716 244.668098 240.500000 244.498518 244.170524 225.911711 204.987733 207.911487 245.395783 242.204753 226.000000 210.758273 225.821059 256.330106 267.229486 258.928332 218.865828 195.693524 173.250000 194.665786 139.993949 90.537848 95.096934 99.677221 87.144426 76.465260 70.608040 50.890907 35.971781 33.925618 32.429643 30.497914 29.112168 28.278340 32.000000 46.000000 40.265494 35.086503 41.392233 43.242235 43.660269 50.400878 56.581526 63.143939 63.644972 77.280983 97.925381 141.188817 124.554437 82.882918 84.220299 96.750000 103.387048 108.942496 115.552150 124.982934 133.833348 152.336857 186.786703 212.000000 200.615193 174.533668 181.751923 195.352381 208.947698 216.699936 224.142055 234.000000 243.779238 250.049859 251.720329 258.710678 263.680301 267.541981 271.484022 275.942286 278.409165 280.007351 282.772618 284.677768 286.136172 287.140209 287.766623 | ||
140 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.859759 287.503802 286.645362 285.257029 283.276782 281.034977 280.832656 280.631397 275.191691 264.958897 258.841177 258.710678 253.934582 251.614813 242.445949 246.250000 246.729363 235.219433 223.876029 215.734857 212.338490 248.438942 230.054994 226.000000 213.421781 236.561058 268.281010 259.676571 219.945868 153.879707 130.790533 167.250000 205.554778 133.558903 78.922427 86.561400 88.290262 80.867689 81.043934 70.608040 51.839344 36.933721 31.978688 32.429643 30.497914 29.112168 33.272987 45.000000 47.000000 41.264423 31.103613 36.440269 45.208160 47.554129 51.362818 57.529962 64.076952 65.476442 71.004246 126.830738 197.523341 149.444624 74.839111 83.442514 97.500000 105.550481 108.942496 118.195029 130.647619 138.016165 144.423174 158.020818 176.500000 185.194344 178.881037 183.764197 194.981790 204.197774 215.156645 228.324890 238.750000 246.001387 252.592909 255.297198 258.564232 263.059901 267.438657 275.444486 278.152867 277.738838 280.197652 283.913620 285.120732 286.222638 287.200095 287.810515 | ||
141 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.821220 287.379752 286.289890 285.188881 284.444319 282.214844 281.399855 278.353829 270.894166 264.235634 260.826459 264.275649 255.126871 251.027955 242.223734 251.250000 255.095033 235.528092 216.751144 217.587809 210.326216 211.921042 202.017088 215.000000 221.945006 246.170531 262.903103 221.282591 153.213175 119.312621 109.877347 139.500000 144.109753 101.383674 73.944390 78.025866 81.282903 79.971013 88.369812 79.938167 54.684653 36.933721 31.978688 32.429643 28.517128 27.120723 43.262282 70.000000 52.000000 36.269776 32.099335 42.382625 49.140012 50.474524 57.134456 64.169016 65.942977 68.223647 66.520862 142.597296 194.109127 130.362148 66.795304 84.220299 96.000000 106.271625 111.016521 124.141506 134.424076 138.613710 144.988437 154.824609 169.000000 186.128941 183.663143 184.166652 191.646476 201.144252 219.477861 241.709961 249.000000 245.556957 251.027955 258.703740 259.735804 263.804381 269.401801 277.466851 278.889727 278.357601 280.920797 283.860550 285.222955 286.309105 287.247148 287.846913 | ||
142 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.884382 287.717680 286.232246 284.899250 285.028087 282.367085 278.924801 273.798693 267.607823 264.132311 262.563580 265.447222 255.297198 247.115569 237.779436 243.750000 254.816177 238.306016 205.215615 203.505371 199.459935 191.488407 194.073014 194.000000 199.571540 222.994744 218.684761 159.600457 113.569991 113.781888 106.271625 92.250000 77.220233 78.861014 78.092754 73.758099 74.275543 74.590953 81.959669 80.871180 56.581526 38.857601 33.925618 32.429643 26.536343 27.120723 47.258000 74.000000 51.000000 37.268705 44.048004 47.334588 50.122975 58.262245 68.677733 72.704944 73.407079 74.633790 77.280983 171.502653 205.205321 125.384110 65.186542 87.331440 98.250000 106.271625 114.473229 127.445105 129.388800 138.613710 148.380015 152.161101 159.000000 173.979182 184.967354 191.410839 196.093562 207.590577 225.651027 247.008219 253.500000 246.668032 249.267381 257.681778 260.760931 264.797022 269.505124 272.748000 275.473375 278.873238 281.567820 282.878757 284.609620 286.155387 287.234315 287.816938 | ||
143 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.960390 287.636407 286.049706 284.354063 283.489061 280.844676 276.604438 272.190998 268.197679 264.752251 261.446859 256.367532 252.401638 250.832336 242.445949 244.500000 248.402497 228.737610 201.144252 203.875962 198.655026 186.271564 181.455957 180.500000 173.469164 158.554751 141.003890 126.871162 119.516468 112.399204 101.223615 90.750000 87.331440 87.709202 78.922427 69.490332 69.895944 69.210892 58.150564 51.947786 50.890907 39.819540 32.952153 29.480754 26.536343 28.116446 38.267635 51.000000 41.000000 48.256929 65.953898 66.152049 63.884456 72.864221 80.221010 81.240871 85.536244 91.117017 111.354696 223.181927 242.761670 134.510512 65.186542 94.331506 102.000000 106.271625 116.547254 123.480787 126.241753 142.198981 154.597909 156.955415 160.000000 171.642690 189.314723 201.472210 206.470095 216.751144 228.737610 236.411704 242.750000 249.112395 252.788529 254.786217 260.028698 266.534143 268.781861 270.472840 273.932667 278.099783 281.111098 282.799153 284.541471 286.030491 287.182984 287.768764 | ||
144 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.915427 287.182984 285.982454 285.052584 282.799153 280.045411 276.656002 271.923048 268.703271 268.161921 263.183981 255.049513 253.593927 272.741696 270.445024 245.000000 221.074643 210.835429 206.572736 201.652419 196.642752 184.097880 176.782972 179.000000 164.945939 144.423174 131.443168 124.982934 118.195029 108.942496 100.502470 93.000000 87.331440 82.078537 72.285044 66.076118 65.516344 60.244126 51.740420 51.947786 50.890907 38.857601 33.925618 30.463717 27.526736 29.112168 39.266564 47.000000 47.000000 59.245153 69.936788 73.084797 74.697048 86.492732 98.497866 96.415853 104.196498 113.094652 149.015116 232.817046 190.694913 98.004904 75.643491 101.331572 100.500000 106.271625 115.164571 120.177188 130.018210 141.003890 150.075805 161.749729 175.500000 188.932732 203.661041 213.948310 214.252495 232.697316 240.466624 240.315683 244.250000 250.667900 254.157864 257.681778 262.518290 266.658223 268.058597 270.978431 274.535553 277.687274 280.387953 282.586873 284.439249 286.424393 287.371197 287.765552 | ||
145 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.841560 287.024714 285.867166 284.115544 281.658150 278.941664 275.521602 272.190998 269.714453 267.232011 262.811740 255.635299 262.280609 277.045320 261.556429 236.250000 218.843798 209.909454 203.179933 195.352381 189.801019 177.576826 171.642690 169.000000 158.553520 144.423174 133.235803 125.612343 118.855748 109.633837 100.502470 94.500000 91.220366 83.687299 72.285044 66.929672 65.516344 58.450772 51.740420 48.215736 42.354980 38.857601 36.846013 33.412605 31.488306 36.082225 42.263352 41.000000 43.000000 50.254788 68.941065 99.825398 102.220009 93.306987 102.345625 105.900217 102.330472 102.105834 159.775236 206.539449 131.799730 75.603736 85.296060 95.109291 99.750000 114.204213 121.386646 126.784385 136.312305 143.991616 156.293699 179.328881 197.000000 198.745999 211.051568 214.753219 211.658362 238.804361 246.022473 241.152250 242.500000 250.445685 258.265869 264.494861 264.861436 266.906384 268.368567 271.399757 274.602540 277.429456 280.045411 282.427664 284.558508 287.010442 287.555133 287.767693 | ||
146 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.770905 286.947718 285.607767 283.706654 281.207057 279.360327 277.841965 274.066642 269.040331 265.785484 261.695020 257.978445 255.808180 254.353483 241.779304 228.250000 218.843798 208.674821 203.179933 210.176000 199.862390 174.098931 170.240794 164.000000 154.824609 144.423174 135.028439 126.871162 120.177188 113.781888 109.156202 103.500000 95.109291 82.882918 72.285044 66.929672 62.888585 56.657419 50.824685 48.215736 48.994035 46.553119 38.792943 33.412605 38.421055 45.043727 40.265494 36.000000 55.000000 56.248365 75.911122 121.614036 124.828156 101.094708 98.497866 102.106471 101.397460 106.684508 127.494876 144.349136 116.435768 93.856540 94.144248 91.998151 93.000000 127.905955 144.892265 145.284538 170.300419 167.893423 161.381066 177.730776 199.500000 207.157371 218.007358 219.985132 217.587809 224.554590 231.206876 239.479116 246.250000 250.001255 254.940341 261.258646 263.396970 265.541503 268.058597 271.905348 275.205426 277.377892 279.893170 283.489061 286.585922 287.538847 287.413973 287.739859 | ||
147 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.734506 286.951996 285.665412 283.877025 281.498941 280.806616 280.523274 275.942286 269.293127 265.682161 260.702379 259.003571 257.852105 249.071762 239.557155 232.500000 225.536333 212.070062 201.483532 212.028952 211.936035 185.836828 171.642690 161.500000 153.759206 146.684226 136.223529 125.612343 117.534309 113.090546 111.319635 104.250000 95.109291 82.078537 71.455371 66.929672 62.888585 56.657419 49.908950 48.215736 50.890907 49.438938 37.819478 33.412605 40.401840 42.056560 32.274058 28.000000 60.000000 78.224813 90.846959 114.681288 112.049639 97.200847 101.383685 105.900217 103.263485 115.841856 118.528109 130.334417 118.142875 109.620325 111.840624 102.887142 116.250000 214.443277 179.459351 134.713022 155.824000 163.113061 160.250540 170.272954 187.500000 199.680596 211.051568 226.826864 229.817295 223.536749 221.638469 228.324890 242.000000 258.889850 268.046833 262.110282 261.346717 264.672942 267.955274 271.146961 273.597731 277.738838 282.976049 286.275229 287.301479 286.981620 287.067490 287.722731 | ||
148 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.733436 286.969106 285.742270 284.013322 281.711220 280.121532 278.460729 274.736515 269.461657 264.855574 260.330139 256.806872 255.978507 249.658620 242.001519 234.750000 225.815189 212.378720 200.804971 200.540647 203.484484 190.618934 172.109988 160.000000 154.824609 148.945278 138.016165 126.241753 116.212870 109.633837 104.829336 99.750000 91.220366 81.274156 73.114717 67.783225 61.136745 54.864066 51.740420 47.282723 48.045598 48.476998 38.792943 34.395568 36.440269 33.095058 31.275128 35.000000 65.000000 90.211967 107.774240 112.700503 104.185935 99.147777 111.003083 123.920508 121.923739 132.325083 150.808469 132.086257 119.849982 117.087381 117.471289 146.443109 206.250000 217.327854 160.793124 132.070143 148.271086 154.747429 159.120014 166.011342 174.500000 193.605716 214.094726 228.436684 228.705524 228.286673 235.836750 249.517920 263.250000 274.222677 279.392751 274.884814 268.669048 265.913743 268.058597 270.978431 273.530744 279.801383 286.058928 286.699788 285.648882 285.886381 286.892110 287.721660 | ||
149 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.736648 286.964828 285.799915 284.115544 281.870430 279.436447 276.759129 273.731706 269.714453 265.165544 261.695020 255.928193 250.357713 246.919950 241.557089 233.500000 223.305488 212.378720 201.822812 193.128838 189.398564 181.054722 168.838899 159.000000 151.628399 148.380015 145.784252 135.053486 116.212870 109.633837 101.223615 95.250000 87.331440 78.056634 72.285044 69.490332 65.516344 63.830832 58.150564 50.081761 53.736216 55.210577 43.660269 38.327420 38.421055 33.095058 36.269776 57.000000 78.000000 92.209826 114.744297 132.508355 131.708897 123.484404 130.241878 140.992363 128.454828 152.471249 209.989130 191.648811 169.356079 136.999531 142.407091 214.110414 243.750000 153.146007 133.830797 136.034461 149.529905 154.747429 157.424225 171.338357 201.500000 234.727978 247.569468 252.986429 253.164495 256.446935 264.541970 274.614929 279.750000 279.555834 274.697889 265.516824 266.179455 265.293342 267.025364 270.472840 275.406388 282.018619 285.678326 284.391249 283.928136 285.415620 286.874999 287.723801 | ||
150 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.739859 286.986216 285.828737 284.217767 282.135779 279.740929 277.068511 273.798693 270.051514 266.818717 263.804381 256.367532 247.632479 246.919950 241.334874 231.750000 221.353498 211.452746 202.501373 193.128838 184.971561 174.533668 166.502407 159.000000 147.899489 149.510541 154.747429 139.459353 114.891430 110.325179 101.944759 96.000000 88.887010 78.861014 73.114717 73.758099 76.903303 75.487629 62.729238 55.679837 66.065889 65.791914 56.315315 49.140012 46.344196 45.043727 51.253718 83.000000 100.000000 101.200191 113.748575 140.431497 149.402229 140.033310 144.670975 161.857963 135.918930 166.207271 225.232633 251.211364 218.862175 153.592989 174.582319 255.333025 214.500000 106.271625 121.386646 149.909576 157.082819 158.332700 176.077907 211.823676 249.500000 272.579152 272.784208 268.279713 260.946895 259.161177 263.924654 265.691548 263.750000 260.889784 255.722818 248.824769 258.710678 264.176622 266.405424 270.304309 275.741324 280.832656 283.014109 282.586873 283.417024 285.473264 286.887832 287.728083 | ||
151 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.748423 287.016159 285.780700 284.217767 282.215384 279.778990 277.120074 274.133629 270.725635 267.438657 263.680301 256.074639 247.973133 249.071762 241.779304 231.250000 220.238076 209.600796 200.804971 193.128838 185.776471 178.446300 169.773496 159.000000 147.899489 149.510541 148.771977 130.647619 114.230710 111.016521 106.992769 102.750000 95.887076 86.904821 79.752100 80.586526 83.910662 77.280983 68.223647 72.474066 77.447126 72.525492 70.917291 63.884456 59.219300 65.953898 72.231236 93.000000 110.000000 112.188415 113.748575 130.527570 129.742971 124.457869 146.594854 173.239199 161.110273 175.364619 185.778860 226.685607 206.912428 174.334812 209.170690 252.221885 192.000000 109.156202 120.695305 171.052607 167.153372 164.308152 215.081061 264.561131 271.500000 268.840764 251.047363 231.656323 218.328990 217.768985 229.354926 235.575137 233.250000 234.001783 242.420706 250.868694 259.442911 264.921102 266.922041 270.809900 273.932667 278.563856 282.937989 283.303316 283.417024 285.463657 286.900665 287.735577 | ||
152 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.742000 286.973383 285.780700 284.217767 282.029640 279.664809 277.223201 275.272413 272.242409 266.405424 260.454219 255.781746 249.676404 244.376899 238.001651 230.750000 221.632354 210.526771 200.126411 191.275885 183.361742 178.446300 173.511883 161.500000 151.095698 140.466332 131.443168 128.129981 120.837908 115.855913 116.367646 111.000000 99.776002 94.144248 90.537848 90.829167 91.793942 80.867689 81.959669 95.799383 85.034617 73.487432 67.023430 81.577788 94.873435 88.855514 81.221601 81.000000 93.000000 101.200191 116.735742 140.431497 120.896305 118.617079 159.100071 162.806399 191.899692 204.668133 172.328710 184.641451 194.109127 229.093224 261.455436 257.666380 225.000000 150.982574 146.966290 176.999085 169.041600 172.673784 228.647375 270.420848 264.000000 243.606649 192.792618 181.349468 189.052343 206.233456 221.638469 226.372900 229.250000 238.001651 246.724331 252.060983 258.857125 263.680301 266.818717 270.894166 274.133629 281.038910 285.602205 283.144107 283.331838 285.492479 286.926330 287.735577 | ||
153 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.738789 286.969106 285.934418 284.388138 282.135779 279.398387 277.016947 276.210236 273.422121 265.682161 259.709738 254.903066 254.275236 244.376899 234.446213 227.750000 219.680365 209.292138 199.447850 190.905295 182.154377 174.533668 172.109988 165.000000 154.824609 144.988437 141.003890 140.088762 132.070143 119.312621 117.088790 111.000000 99.776002 92.535486 103.812615 119.849982 118.071539 99.697899 95.695691 99.531434 82.189308 73.487432 71.890756 140.555563 165.191313 91.842681 78.224813 93.000000 88.000000 88.214108 132.667301 151.325816 141.538526 159.502611 199.501542 213.073527 252.545517 250.454873 190.262243 223.181927 253.004311 259.791121 261.455436 262.333091 253.500000 212.279844 165.632516 184.927722 189.812114 173.271329 219.037902 261.364922 224.500000 177.717569 180.185248 184.569106 189.052343 222.179628 247.874423 237.805982 228.500000 239.112726 244.572519 250.698367 255.928193 261.074619 266.508747 271.484022 276.411197 282.740510 284.498458 281.419336 283.485172 285.521301 286.926330 287.732365 | ||
154 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.754847 287.003326 285.847951 284.251841 282.294989 279.817050 277.532583 276.679147 273.674917 265.992131 260.454219 255.635299 255.808180 248.093666 234.890643 224.750000 216.612952 208.366163 199.447850 191.275885 182.959287 175.403142 169.773496 163.000000 154.291907 148.380015 141.601436 133.165257 129.427264 123.460672 120.694512 118.500000 106.776068 98.970532 115.428035 126.678409 122.451138 133.771613 120.420530 106.062523 143.837672 131.203818 185.786168 211.328893 148.354638 86.864069 104.196979 171.000000 160.000000 116.184133 131.671578 135.479533 146.453341 183.839238 227.397795 252.907854 254.411543 230.308707 239.579460 253.839124 258.979185 260.620794 261.455436 259.221951 240.750000 194.251235 164.941175 176.999085 179.112153 179.246781 214.515798 246.981980 218.000000 162.296721 176.707353 184.971561 194.611200 213.019061 225.651027 227.488323 230.750000 238.446081 244.181280 254.786217 260.468037 263.183981 265.992131 271.231226 276.679147 281.451419 282.595447 281.100917 283.502209 285.521301 286.909220 287.742000 | ||
155 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.764482 287.050380 285.838344 284.268878 282.135779 279.284206 279.956074 281.837169 277.298320 266.612071 260.702379 260.028698 251.890656 241.442610 232.446279 224.250000 216.334097 208.366163 199.447850 191.646476 183.361742 174.968405 166.969705 158.000000 150.030295 143.292647 136.821074 131.277029 126.784385 126.226038 122.136801 141.750000 200.888067 201.126883 161.889718 129.239069 131.210337 171.432033 178.111823 216.158022 238.681309 154.290372 173.131122 218.209633 227.586049 196.393536 114.186274 109.000000 118.000000 135.163792 128.684411 134.489141 191.669635 244.194072 251.446289 256.701600 256.277568 252.286343 256.616317 258.218723 259.832738 260.620794 261.455436 230.443901 143.250000 123.579089 137.978848 159.159652 165.265143 169.088513 223.560007 251.776294 200.500000 161.362124 179.750511 187.788745 193.870019 203.179933 216.082620 226.372900 232.750000 238.223866 244.768138 254.104909 260.321591 263.059901 267.335334 272.158144 275.875299 278.615419 280.083471 281.100917 283.536283 285.588553 286.943440 287.739859 | ||
156 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.742000 286.999049 285.819129 284.166655 281.843895 279.626749 282.018619 281.971143 275.107425 268.265244 262.687660 256.074639 248.143460 238.508321 230.668560 223.250000 215.497530 207.748846 199.787130 190.905295 182.556832 174.968405 167.437004 159.000000 151.095698 142.727384 138.613710 136.941715 132.730863 129.682747 123.579089 178.500000 242.888463 255.020391 224.115186 194.109127 183.765531 165.155296 142.398166 192.832704 196.950108 212.006758 232.512491 245.732595 255.317043 210.333650 86.216249 85.000000 109.000000 122.177709 129.680134 155.287386 215.260744 255.875653 256.255988 256.701600 257.210581 257.780751 258.409670 251.211364 255.564971 260.620794 231.693350 165.887737 129.000000 117.809935 126.226038 131.409423 145.124038 158.332700 190.209484 196.908032 175.000000 184.727046 190.184197 186.983835 192.758247 208.947698 224.725052 233.902003 237.750000 240.446015 245.746234 252.231311 258.124892 262.315420 268.575214 275.360221 280.899346 282.224874 280.654375 280.782498 283.536283 285.617375 286.990494 287.744141 | ||
157 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.731295 286.960551 285.723056 283.996285 281.658150 280.045411 283.204582 281.234283 272.326674 267.748627 262.811740 254.170833 247.632479 238.117082 229.779701 223.000000 215.218674 207.131530 199.787130 191.646476 183.764197 175.837879 169.773496 163.500000 154.824609 148.380015 145.784252 142.606400 140.659500 135.213481 145.934564 225.750000 258.444166 261.455436 258.961448 223.983496 163.619374 131.978259 115.841856 102.330472 138.147053 227.397795 255.875653 255.562224 213.720552 123.705799 89.213037 119.000000 121.000000 121.178780 140.633080 183.018380 231.971114 255.875653 256.255988 256.701600 257.210581 256.865017 242.269490 243.328085 254.711418 259.791121 198.713741 116.887274 121.500000 114.204213 118.621280 120.837908 127.500572 138.613710 149.510541 155.357310 164.500000 182.857852 185.402091 184.971561 194.240609 221.501068 237.688700 245.892796 248.750000 247.112461 248.876143 253.253273 257.978445 262.935821 270.435034 279.404950 284.717622 282.946764 279.626749 280.782498 283.587395 285.569338 286.994771 287.754847 | ||
158 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.732365 286.960551 285.636589 283.877025 281.605081 279.626749 280.832656 278.286842 270.388574 264.855574 260.081978 253.145707 246.099535 237.334605 229.557486 222.750000 215.218674 207.131530 199.108570 191.646476 183.361742 175.837879 170.708093 163.000000 155.357310 153.467383 151.162158 144.494629 141.320219 138.670189 179.107204 249.000000 262.333091 261.455436 232.411915 162.527652 106.684580 105.077959 102.105834 66.875990 95.467417 173.529168 224.724771 230.988151 152.316208 55.996674 82.220531 112.000000 155.000000 144.154158 165.526141 215.701337 248.681483 255.875653 256.255988 256.701600 257.210581 255.949282 218.955896 218.802328 223.983496 218.307476 177.799842 122.331770 103.500000 105.550481 111.707862 118.195029 121.835886 130.248077 141.031595 151.628399 161.500000 170.240794 177.576826 183.764197 196.464152 216.751144 241.392599 257.604734 256.750000 250.445685 252.788529 255.126871 259.589358 263.556221 275.084584 283.365414 282.774991 278.666983 277.990159 281.021312 283.655543 285.617375 287.003326 287.756988 | ||
159 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.732365 286.981939 285.703841 283.808877 281.578546 279.208086 278.099783 275.339401 269.040331 262.789108 257.972617 251.095454 243.714956 236.747747 230.001915 223.000000 215.497530 207.131530 198.769290 190.905295 182.959287 178.881037 171.642690 159.500000 152.161101 154.032646 152.954794 144.494629 138.677340 145.583606 213.722132 255.750000 262.333091 261.455436 198.395326 109.607341 79.531063 92.524486 84.706873 85.536244 84.086180 102.345625 139.059845 148.419266 98.835006 46.039449 58.246224 82.000000 166.000000 192.102772 213.320818 242.441939 255.562224 255.875653 256.255988 256.701600 256.277568 249.539138 194.745626 191.648811 186.427147 176.823830 174.582319 147.998679 93.000000 102.665903 108.251154 115.552150 123.094705 132.638258 150.075805 161.217028 161.000000 166.502407 174.968405 184.166652 197.946514 209.965539 237.071383 254.816177 255.000000 253.112263 256.309676 256.659815 262.371843 266.906384 280.147427 285.219249 279.626588 275.109093 277.571496 281.180522 283.791840 285.694234 287.033269 287.763411 | ||
160 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.729154 286.973383 285.761485 283.808877 281.737755 279.398387 277.584147 274.200617 269.293127 265.062221 258.717097 249.777435 243.203975 236.943366 230.446345 223.250000 215.497530 207.440188 199.108570 191.646476 186.581381 184.967354 171.642690 158.500000 150.030295 150.641068 151.759703 144.494629 141.320219 155.262390 240.404473 261.000000 254.555240 242.150299 205.032709 133.506836 77.779223 82.661043 72.802321 97.665409 101.158035 83.106830 73.837686 82.560751 73.084797 51.018061 65.238730 93.000000 143.000000 236.055668 255.141160 225.605264 216.243707 237.379817 250.484349 250.062545 237.617314 224.814298 173.225386 164.495294 177.038059 195.076634 197.909360 152.665390 88.500000 102.665903 108.942496 115.552150 123.724115 132.040713 149.510541 162.282431 162.500000 167.904302 181.054722 188.191200 198.687695 221.161787 237.688700 244.219662 250.250000 256.445487 256.505295 257.511450 262.811183 270.752867 281.800600 283.533945 277.349020 274.748147 277.914038 281.286661 283.894062 285.646197 287.067490 287.784822 | ||
161 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.722731 286.917775 285.646197 284.013322 282.162314 279.474508 276.088802 272.592921 271.821083 271.261621 260.454219 248.898755 243.033648 236.943366 230.668560 223.000000 215.497530 207.748846 199.447850 192.387657 193.020658 185.836828 168.838899 160.000000 152.693803 149.510541 149.369523 148.900496 147.266697 158.027757 230.308452 246.750000 210.221488 198.713741 200.054672 148.017244 73.399624 69.210892 70.055116 88.335282 94.518980 84.068770 80.651941 94.356306 86.950294 70.932510 101.200191 110.000000 140.000000 235.056739 255.141160 156.277779 136.623711 209.149330 242.788831 231.093818 178.837514 178.111823 161.568590 125.078898 177.038059 244.027336 222.040781 133.220762 85.500000 102.665903 111.016521 115.552150 124.353524 134.430894 146.684226 156.422714 160.500000 170.240794 192.792618 195.032932 201.652419 233.375877 243.553207 244.498518 249.500000 252.445619 252.006051 256.659815 259.735804 269.884306 281.387307 276.876994 272.257985 274.232511 278.180460 281.339731 283.706654 285.626982 287.084600 287.799809 | ||
162 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.727013 286.951996 285.742270 284.200730 282.321524 279.474508 275.985674 273.396769 274.770365 274.877937 260.950539 249.338095 243.374302 237.530224 232.001849 225.000000 217.449519 209.292138 200.804971 194.611200 191.813293 178.881037 169.773496 164.000000 159.618923 157.424225 157.735155 156.453410 157.838213 164.249833 177.664915 173.250000 140.220828 160.103466 156.082008 112.168002 83.034743 64.727509 64.560707 72.474066 67.014326 60.982215 77.731546 95.339269 94.873435 91.842681 99.202332 91.000000 118.000000 227.065303 255.141160 184.999165 191.669635 244.194072 237.979132 211.176654 134.985917 127.746409 136.461643 127.706658 211.180195 248.175700 165.734131 81.886944 93.000000 101.944759 113.090546 122.159347 128.759391 137.418619 146.118963 152.693803 159.500000 169.306197 181.924195 191.813293 213.140724 231.000915 231.206876 232.786580 240.500000 246.001387 249.463001 256.319161 262.957630 274.971590 283.557097 277.382586 272.124010 274.129384 278.332701 281.286661 283.689617 285.867166 287.161596 287.803021 | ||
163 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.781610 287.080323 286.030491 284.354063 282.188849 279.512568 276.037238 273.664718 273.422121 270.228387 258.468937 249.338095 244.736919 239.095179 233.112924 225.750000 218.843798 211.144087 202.162092 195.722971 188.191200 178.011563 170.240794 168.500000 168.142148 165.903171 166.100787 165.894553 155.856053 152.497024 154.588296 152.250000 181.443439 233.302111 191.757943 108.753788 80.406983 62.037479 68.223647 75.273104 66.065889 60.020275 62.156105 79.611862 94.873435 90.846959 79.223743 77.000000 88.000000 182.113477 231.243821 168.162491 129.742971 124.457869 97.535926 101.158035 124.722777 126.830674 100.594576 180.261852 249.590097 187.609578 94.144248 79.553589 95.250000 104.829336 120.003963 126.123666 128.759391 137.418619 147.249489 154.824609 163.000000 171.175391 179.315774 194.630477 224.258438 225.233151 224.725052 230.555735 238.000000 245.112527 251.223574 255.467525 267.790368 281.175595 284.590330 275.444486 271.387150 274.645020 278.523002 281.366266 283.996285 286.145780 287.285646 287.805162 | ||
164 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.785892 287.071767 286.251461 284.814065 282.109244 279.284206 275.470038 273.195807 274.686099 272.294854 257.724457 249.191649 244.225937 237.725844 230.001915 223.750000 218.007231 210.526771 201.144252 193.128838 185.374016 178.881037 173.979182 177.500000 178.263478 176.643170 173.868874 169.041600 166.427569 166.323858 140.886554 141.750000 202.443637 202.735644 152.763316 106.193128 73.399624 53.070712 59.066298 62.210926 67.962762 64.829974 65.076500 71.748159 76.055975 70.932510 67.236589 72.000000 75.000000 182.113477 246.179658 153.306601 52.088901 38.792943 65.791914 84.086180 124.722777 177.196088 141.841703 173.254493 201.791108 138.658877 75.643491 86.553655 96.000000 106.271625 117.238596 121.498627 125.612343 134.430894 144.988437 153.759206 164.500000 180.988658 194.096829 204.289393 222.405485 226.590272 228.737610 234.180859 240.750000 245.779172 248.680524 254.615890 276.430718 283.409036 275.291230 269.967249 270.985226 274.541893 278.294640 281.817360 284.626657 286.213031 287.328422 287.821220 | ||
165 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.783751 287.097433 286.289890 285.103695 282.799153 279.740929 276.346620 273.262794 270.894166 266.405424 256.359575 249.484542 244.055610 237.725844 230.224130 223.000000 215.776385 208.366163 201.822812 195.352381 191.410839 184.967354 182.857852 183.000000 182.525090 180.600012 175.661510 169.671010 171.052607 176.693984 169.011183 194.250000 212.554844 170.560416 128.702802 114.728662 92.669861 60.244126 58.150564 63.143939 63.220580 70.601613 76.758081 70.765196 68.132834 72.923955 68.235518 65.000000 75.000000 147.150946 192.410647 116.662073 41.276309 55.341850 100.421746 104.951780 115.392650 160.712862 158.878559 151.356495 148.017244 114.598362 82.882918 87.331440 95.250000 104.108192 111.016521 118.855748 126.241753 136.223529 146.118963 158.020818 173.000000 187.063538 197.574724 207.106577 222.034895 231.340195 235.836750 243.661951 249.250000 250.001255 252.984148 258.363086 266.179455 269.139825 268.368567 269.545923 271.789074 274.593456 278.256580 282.056175 284.848139 286.472430 287.307034 287.836208 | ||
166 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.814797 287.281368 286.395571 285.291103 283.542131 280.083471 276.759129 273.396769 269.208862 264.132311 257.104056 249.777435 244.225937 237.530224 231.335205 224.000000 215.776385 210.526771 207.929857 202.023009 197.045206 195.835776 195.942208 190.500000 185.721300 180.034749 176.259055 173.447467 167.088289 169.780567 202.183823 245.250000 192.332431 144.015852 125.384110 118.996429 116.319699 100.594576 65.476442 63.143939 48.994035 64.829974 78.705011 72.731122 67.142441 71.928233 72.231236 72.000000 72.000000 95.206614 111.757130 90.911865 71.748159 93.306987 127.356059 123.920508 107.928549 123.167735 120.321463 153.108335 169.356079 130.362148 87.709202 85.775870 95.250000 102.665903 109.633837 118.855748 126.871162 137.418619 150.075805 164.413237 178.000000 188.465433 202.356830 207.106577 216.105447 248.643489 263.307337 266.528115 264.250000 259.556495 261.004539 260.577338 260.175144 262.811740 265.888807 269.208862 272.324972 275.882547 279.512568 282.533803 285.154806 286.597325 287.379752 287.867253 | ||
167 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.808374 287.264258 286.357141 285.205918 283.250247 280.197652 277.171638 273.597731 269.293127 265.062221 260.330139 253.877940 244.566591 238.117082 232.890709 226.000000 220.516932 218.860544 217.429704 210.546590 207.106577 210.182094 201.082491 194.000000 184.655896 178.338959 176.856600 174.076876 166.427569 161.484466 194.972379 221.250000 165.109952 152.059659 146.955606 123.264196 116.319699 113.148049 70.970851 60.344901 78.395562 77.335191 72.864221 72.731122 73.084797 79.894012 96.205543 92.000000 90.000000 82.220531 107.774240 110.719717 101.237047 107.908963 122.546360 125.817381 111.660599 107.600243 93.421163 188.145131 229.104816 150.274297 77.252253 85.775870 97.500000 106.271625 111.707862 119.516468 128.129981 140.406345 156.293699 170.805656 183.500000 197.811402 214.529463 218.375313 218.699581 261.875419 277.814277 277.961196 269.000000 261.334214 266.677498 262.110282 263.543416 264.052541 267.025364 269.798718 272.793883 277.635711 281.567820 283.091037 285.239992 286.683792 287.623574 287.923992 | ||
168 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.788033 287.148764 286.270675 285.222955 283.091037 280.502134 277.429456 273.530744 269.630188 266.612071 263.432141 258.564232 246.780844 245.159376 238.890511 232.000000 228.324890 226.577002 221.840348 216.105447 215.155674 211.921042 197.811402 191.500000 186.786703 187.383169 187.612413 179.741562 170.391888 156.645074 163.963173 168.000000 161.998811 177.799842 169.356774 136.921050 120.699298 107.767989 74.633790 81.804193 141.940799 104.269505 73.837686 68.799270 68.132834 83.876902 112.188415 103.000000 105.000000 98.203402 129.680134 127.556392 113.032601 106.935498 110.041143 122.023635 119.124701 105.768774 112.251373 222.306007 241.054564 143.636914 72.425969 85.775870 100.500000 110.598491 114.473229 122.159347 136.941715 152.357248 164.207382 177.198075 197.000000 215.101444 222.354728 230.448958 242.417371 269.000305 277.814277 278.518908 270.750000 264.223007 270.589884 269.264020 268.522601 265.541503 268.678537 270.220044 274.937477 281.451419 283.775314 283.170642 285.291103 286.904761 287.803232 287.957178 | ||
169 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.808374 287.230038 286.424393 285.648882 283.701340 281.339459 277.532583 272.994845 270.304309 268.781861 264.300702 258.417785 250.868694 252.788529 246.223602 238.500000 233.344292 226.268343 218.447545 215.364266 210.728671 202.791567 195.474910 189.500000 199.038839 203.775799 199.563316 196.735619 187.570601 174.619959 167.568894 165.000000 178.332299 180.212984 161.889718 143.749477 138.217696 123.908169 92.948486 148.981107 177.032945 111.003083 88.439662 81.577788 69.123227 82.881179 100.201261 92.000000 92.000000 100.201261 107.774240 109.729325 108.117787 106.935498 111.965023 121.075199 122.856752 111.263182 142.738379 218.802328 187.280700 113.768689 80.469776 84.998085 100.500000 109.877347 115.164571 127.445105 150.159315 169.088513 180.600012 191.581017 214.500000 237.999067 224.963149 232.863687 267.246933 276.803751 277.814277 278.797763 278.500000 275.111537 272.937315 275.906776 268.669048 266.410063 269.918417 271.484022 279.157677 285.937455 284.955181 282.905292 285.512585 287.144945 287.820342 287.955037 | ||
170 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.825502 287.349809 286.568503 285.648882 283.489061 281.758122 278.254474 273.128820 270.388574 269.195154 262.811740 255.928193 252.912619 248.680524 245.112527 238.750000 230.276879 221.947127 215.394023 212.028952 207.106577 201.922093 196.876805 193.500000 210.225572 206.602114 195.380500 209.953219 217.963708 218.174487 207.231833 195.000000 187.665720 167.342893 140.318222 132.653283 143.473216 145.428409 150.639779 228.287187 157.115781 89.840408 100.121243 117.947416 124.585214 131.671578 110.190556 85.000000 85.000000 88.214108 93.834126 97.844613 98.288158 104.988568 112.926963 110.642399 124.722777 135.072287 153.498499 168.874893 124.971302 93.856540 89.317964 86.553655 99.000000 105.550481 112.399204 136.034461 155.194591 176.856600 207.732640 220.879603 229.500000 258.092900 238.439993 245.742242 270.952838 276.803751 275.036352 276.009207 279.250000 277.333686 269.611787 268.071730 265.154329 267.402704 272.708147 276.118608 282.373067 286.298400 284.650699 283.037967 285.393326 287.135338 287.820342 287.964672 | ||
171 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.811585 287.277091 286.251461 284.694805 282.799153 280.426013 278.254474 275.138439 271.231226 267.335334 261.322779 256.074639 251.379675 244.376899 241.334874 236.250000 229.440312 223.181760 219.126106 217.958400 213.545855 203.226304 200.147894 203.000000 210.225572 208.297903 200.758406 203.029714 207.392193 195.360210 199.299246 196.500000 187.665720 176.995461 159.400699 165.941865 188.145131 186.675536 250.454873 243.215390 109.693962 61.944155 64.103035 96.322232 172.124061 220.290875 157.140241 110.000000 89.000000 87.215178 92.838404 94.873435 98.288158 97.200847 97.535926 118.229890 146.182069 145.145370 148.118439 134.714017 113.875108 113.768689 117.471289 105.998283 102.000000 109.877347 115.164571 151.891735 163.376915 184.624687 223.560007 246.449278 243.500000 243.139350 252.351574 271.901806 274.658743 276.464471 263.924654 266.249259 277.750000 276.000396 265.503782 258.703740 264.568542 269.760226 272.191531 275.191691 282.172105 286.298400 285.373844 283.701340 285.171844 287.058479 287.794677 287.962531 | ||
172 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.815867 287.208650 286.213031 284.745916 283.303316 282.519326 283.978037 280.430435 272.242409 267.955274 262.439500 255.342406 255.637852 252.592909 243.334808 240.000000 233.623147 223.799077 224.215310 227.593752 217.167948 208.008410 216.036041 215.500000 213.954483 208.297903 191.197684 183.518019 202.106435 186.372768 179.828348 202.500000 189.999075 160.907847 200.054672 254.711418 240.700325 221.645926 249.539138 183.502577 64.169016 39.819540 35.872548 39.310383 64.171263 85.868347 85.217319 93.000000 86.000000 87.215178 91.842681 83.979116 106.151861 152.688356 193.729903 228.248509 216.158022 158.881392 140.945026 129.458497 118.142875 127.873129 142.407091 130.887406 112.500000 132.232821 166.323858 180.963403 194.217981 222.270032 236.561058 239.524158 244.500000 249.681528 270.610524 273.914081 267.246933 268.661025 273.801719 277.682341 274.500000 268.667305 268.829310 268.412384 257.685552 265.541503 266.922041 271.568287 281.100308 285.885891 284.308157 283.144107 285.018510 287.096908 287.576521 287.937909 | ||
173 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.792316 287.127376 286.078528 284.609620 284.921948 284.688760 282.018619 277.148058 271.821083 267.645304 263.804381 258.124892 257.852105 256.896534 245.334742 241.750000 252.585332 258.368805 244.232846 222.776076 211.131126 214.094726 210.895758 202.500000 189.982912 190.209484 202.551042 212.470857 212.677950 194.668868 176.943771 174.750000 176.776728 162.516609 210.010747 242.761670 208.291289 229.716016 245.876199 149.914120 63.220580 40.781480 35.872548 37.344457 41.392233 51.018061 82.220531 116.000000 96.000000 107.193767 120.718632 96.854220 111.066676 186.759633 250.484349 254.804727 239.483340 119.504796 96.111193 100.553141 108.753788 116.257708 128.732619 140.998613 140.250000 154.588296 192.594843 176.999085 189.812114 231.233210 252.953688 254.972503 260.000000 268.373466 272.784208 267.877258 262.058667 271.714547 277.814277 269.595527 258.000000 256.223272 259.635204 257.341123 261.346717 264.797022 266.612071 271.484022 276.143248 279.131056 281.187218 282.746083 284.677768 286.453215 287.319866 287.870465 | ||
174 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.790174 287.153041 286.395571 285.393326 284.019760 281.796182 278.563856 276.143248 272.579470 266.198777 262.563580 259.150018 254.615890 254.353483 251.778974 262.250000 274.057217 275.962327 259.161177 219.440762 212.338490 212.790516 203.418983 193.500000 189.450211 198.688431 207.331403 213.729676 227.874504 213.335095 174.780338 187.500000 193.110216 218.018878 249.005373 252.150758 238.948485 251.236257 247.707669 155.512196 76.498689 50.400878 45.607199 41.276309 47.334588 69.936788 92.209826 105.000000 103.000000 131.168075 134.658746 106.758147 117.947416 193.573889 256.255988 239.629745 155.512196 114.010387 111.354696 99.677221 99.364701 101.323596 112.645004 139.443043 150.750000 138.723121 162.175808 190.213480 196.735619 215.099490 241.083163 256.570608 263.500000 271.177256 272.784208 267.072348 265.764571 274.089509 277.814277 276.566918 264.000000 249.779040 250.636716 254.104909 261.493164 264.672942 266.818717 271.315492 274.803502 278.202910 281.225278 282.693013 284.728879 286.376356 287.311311 287.845842 | ||
175 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.792316 287.174429 286.462822 285.597771 283.091037 280.578254 277.945092 275.674337 273.674917 269.401801 263.308061 262.225397 260.066357 253.962244 265.778512 276.750000 278.797763 275.962327 254.411254 211.658362 208.313942 208.008410 201.549789 191.500000 190.515614 208.863167 215.697036 199.882667 206.070753 219.557170 212.279844 201.750000 224.221620 251.802868 260.620794 259.832738 259.094643 244.062843 164.375801 90.201307 60.375271 51.362818 47.554129 40.293346 51.296159 85.868347 106.194838 100.000000 118.000000 128.171286 134.658746 113.690895 137.606674 210.122795 256.255988 231.093818 119.124701 147.892575 118.528109 90.918022 93.389827 108.790652 120.688811 138.665258 161.250000 157.472874 177.385325 195.499237 214.359086 213.904400 224.690533 244.851173 252.500000 252.018020 258.872627 269.084623 272.805790 276.125191 277.814277 277.124629 260.250000 242.890379 249.854239 255.297198 257.392659 262.067260 267.645304 271.652552 274.937477 279.595128 283.280531 284.152434 285.120732 286.347534 287.375475 287.838349 | ||
176 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.805162 287.204372 286.251461 285.222955 283.037967 280.920797 277.996656 276.277223 278.225238 277.151050 266.906384 270.426407 265.857478 253.375386 269.556165 279.500000 278.797763 264.541970 230.322355 203.875962 199.057481 205.399988 206.690072 197.000000 189.982912 205.471588 212.111765 191.070934 186.909881 201.582285 215.885565 213.750000 246.777389 261.455436 260.620794 253.004311 220.554167 153.498499 70.055116 44.483685 44.251853 44.629239 45.607199 41.276309 47.334588 75.911122 109.191626 126.000000 132.000000 113.187344 116.735742 124.585214 154.317044 213.043190 254.332108 210.228218 93.933358 107.600243 88.937779 79.531063 95.096934 113.768689 115.862527 131.665192 189.000000 210.116411 178.076667 162.463251 180.370972 202.551042 225.255796 236.327948 238.000000 250.616125 261.481049 272.304261 275.399924 276.803751 263.307337 252.027621 242.250000 238.001651 250.636716 255.297198 256.660426 261.819100 269.401801 272.832265 275.607350 281.245165 285.792506 285.877205 285.257029 286.337927 287.302756 287.823361 | ||
177 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.866183 287.259981 286.107350 284.933324 283.489061 281.111098 277.945092 277.014083 279.236420 277.151050 267.402704 271.012193 262.961917 252.006051 265.111867 272.500000 270.710949 249.109056 212.001220 200.911238 193.423113 201.487356 206.690072 199.000000 194.244525 199.253694 198.368226 187.294476 183.606282 182.916059 213.722132 239.250000 256.888595 261.455436 244.857009 203.498214 139.969536 67.417539 42.583072 47.282723 47.097162 48.476998 47.554129 41.276309 38.421055 57.988119 104.196979 139.000000 127.000000 119.180921 122.710077 132.508355 140.555563 189.680028 247.598530 193.156363 61.277913 48.993216 63.830832 88.290262 107.046681 110.449998 100.579294 120.776200 201.000000 239.683329 168.397883 157.177493 167.782781 213.306855 250.692636 241.122262 227.000000 258.560199 272.784208 274.316535 265.764571 257.125496 238.923333 231.950013 235.000000 240.890445 250.049859 253.253273 260.468037 265.665583 270.641681 272.832265 278.018893 284.132728 286.401470 285.585321 285.444437 286.376356 287.212927 287.815867 | ||
178 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.917569 287.268536 286.376356 285.137769 283.966690 281.187218 277.996656 275.540363 273.422121 270.021741 264.548862 262.518290 258.192759 250.441097 258.445420 255.250000 251.748765 242.009916 214.036902 197.575924 191.008384 195.835776 199.213297 198.000000 201.169645 198.123168 189.405048 186.035657 188.231320 205.730336 249.779350 261.750000 262.333091 247.780964 190.098597 122.410642 84.786582 63.830832 53.571890 48.215736 52.787780 63.868034 54.368384 41.276309 39.411447 59.979563 102.199120 117.000000 119.000000 146.152016 166.521863 150.335423 146.453341 195.520819 249.522409 200.743854 52.880799 54.487624 68.314216 99.677221 109.607341 102.982942 99.774913 119.220630 171.000000 208.674122 184.990084 189.552760 197.365029 234.220936 252.388425 226.206619 215.000000 260.429392 271.479998 258.620797 235.746743 222.179628 224.107735 233.344292 241.500000 246.668032 249.854239 251.720329 263.104076 267.154544 269.918417 272.410939 280.363448 285.524946 284.308157 283.462526 285.495548 286.126565 287.153041 287.806233 | ||
179 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.861901 287.182984 286.923976 285.631845 283.966690 281.187218 278.357601 274.937477 272.748000 272.708147 268.767585 265.886562 262.961917 247.311189 243.779238 235.500000 239.757972 243.244549 219.126106 192.017066 188.996110 197.139987 197.811402 206.500000 205.963959 193.035800 182.832052 188.553295 213.999390 263.111698 263.481092 258.750000 242.110678 182.626126 122.895091 93.389827 79.531063 64.727509 59.066298 50.081761 51.839344 67.715794 58.262245 51.105938 63.180871 82.881179 100.201261 108.000000 130.000000 157.140241 187.432035 184.008773 217.226670 255.875653 244.712711 176.084508 48.215736 59.066298 70.107569 80.406983 84.000740 88.048829 102.188055 120.776200 132.000000 145.213420 176.693984 169.070448 159.600457 191.197684 195.862115 177.730776 206.000000 266.971570 258.437891 219.582677 207.952457 210.644099 216.699936 227.488323 239.000000 245.334742 247.898046 253.423600 262.664737 262.315420 268.161921 274.096243 278.487804 280.574837 280.996917 282.188849 284.473323 285.617375 286.964828 287.770905 | ||
180 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.832996 287.217205 286.808687 285.580734 283.409456 280.996917 281.967055 281.904156 280.500398 282.523864 282.416396 281.409903 270.285982 246.137473 235.779502 230.750000 232.228869 229.046268 209.626258 194.240609 197.045206 207.573673 204.353580 198.000000 201.702347 195.862115 177.454145 191.070934 252.321134 263.803040 255.548504 226.500000 140.220828 113.449385 108.790652 92.536274 83.910662 77.280983 69.139381 51.014774 40.458107 52.324757 48.527594 57.003715 74.075190 86.864069 110.190556 128.000000 130.000000 156.141311 180.461977 171.133668 210.345930 255.875653 212.006758 87.879926 48.215736 56.319094 62.934156 69.020024 80.586526 89.708175 101.383674 111.442779 111.000000 117.088790 143.509581 154.534614 149.529905 186.417323 194.731589 192.113718 220.000000 231.456889 211.486305 214.350764 210.546590 207.251296 218.243228 235.853993 243.250000 242.668164 247.898046 257.000469 262.371843 261.446859 267.232011 273.000795 274.267604 276.243493 280.083471 282.241919 283.655543 285.569338 286.917775 287.769834 | ||
181 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.856548 287.255703 286.270675 284.950361 282.905292 281.034977 281.915492 284.181724 284.882188 283.557097 280.927435 277.602291 254.956544 243.007564 236.446147 229.750000 220.795787 211.452746 203.858494 199.058285 204.691848 208.443147 214.634146 203.000000 206.496661 196.992642 178.051690 202.400305 264.874809 254.124256 184.155214 129.750000 116.887274 128.732619 122.065418 103.632468 98.801301 92.524486 77.380995 58.478875 48.045598 46.553119 45.607199 56.020752 69.123227 81.885457 108.192697 116.000000 126.000000 175.120971 187.432035 143.402675 189.703709 255.875653 190.844084 34.767489 49.148748 59.066298 62.037479 69.895944 81.440079 90.537848 96.557390 102.109357 104.250000 114.204213 165.632516 237.124581 209.953219 194.185410 186.817906 182.525090 193.000000 203.418983 203.661041 208.716397 207.952457 210.644099 226.577002 242.825384 246.000000 245.112527 252.788529 258.874067 260.321591 264.300702 266.715394 269.545923 272.124010 275.212220 278.751363 281.498941 283.655543 285.626982 286.922053 287.742000 | ||
182 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.785892 287.020437 285.982454 284.865176 283.409456 282.024543 279.440438 281.234283 285.219249 279.940780 263.183981 257.831998 248.313787 245.354996 238.001651 229.000000 219.959220 213.304695 210.644099 209.064228 206.704123 200.617882 194.073014 196.000000 200.636943 185.687380 176.856600 213.100267 255.624733 206.421677 158.915162 144.000000 152.665390 140.798329 122.895091 114.728662 110.188260 98.801223 72.802321 141.517006 106.848653 54.248637 55.341850 73.714085 81.007938 87.859791 95.206614 107.000000 144.000000 173.123112 182.453422 212.730159 247.698521 224.724771 124.470240 32.870616 47.282723 61.813503 82.661043 90.918022 91.682720 95.515885 98.970532 100.553787 120.000000 183.434070 218.174487 250.999695 204.917943 169.088513 167.033697 185.188598 198.500000 189.867329 188.879986 202.679574 218.699581 220.483227 224.416394 230.276879 237.500000 248.001321 259.243965 263.302572 257.685552 262.439500 263.719017 266.765171 270.918239 274.748147 278.256580 281.419336 283.877025 285.607767 286.904942 287.742000 | ||
183 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.775187 286.934885 285.838344 284.319989 283.727875 284.079796 283.410837 283.779800 281.848641 270.435034 257.104056 252.413474 250.528040 249.854239 238.001651 228.000000 220.795787 215.156645 212.679781 210.176000 200.264845 194.096829 186.128941 191.500000 192.646420 186.252643 179.844326 186.035657 201.445715 194.668868 173.338049 201.750000 174.443373 127.928238 107.131306 105.339574 99.677221 88.937779 93.864221 220.823085 148.579853 55.210577 53.394919 73.714085 83.979116 100.804183 106.194838 134.000000 174.000000 224.068514 236.222434 251.355472 212.311856 120.564009 52.324757 39.509671 46.349710 63.644972 89.834456 90.042102 90.829167 102.982942 106.209959 113.776134 165.000000 219.491287 158.719099 152.552455 150.788724 150.564613 164.772645 184.655896 191.000000 187.530836 191.488407 209.923761 218.328990 218.447545 221.638469 226.372900 235.000000 250.667900 263.351970 257.000469 252.999260 257.600376 261.652551 266.091050 270.516315 274.490329 278.142399 281.339731 283.894062 285.559731 286.883554 287.731295 | ||
184 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.783751 286.973383 285.944025 284.507397 283.515596 284.802940 286.143709 282.708003 272.916530 261.755874 255.863255 251.681241 248.143460 242.811945 234.668428 227.500000 220.795787 214.539328 210.644099 208.323047 203.082029 194.096829 190.801925 191.500000 189.982912 186.817906 184.624687 179.112153 176.338365 201.582285 193.530091 189.000000 146.443109 117.471289 111.279671 116.435768 111.940099 96.111193 130.493613 191.899692 113.487708 50.400878 50.474524 69.782233 95.863828 119.722909 127.172357 191.000000 227.000000 251.039610 255.141160 204.807018 109.100750 42.686804 35.971781 45.200289 48.215736 59.066298 84.454396 90.042102 85.707846 93.856540 102.992436 111.442779 139.500000 151.703719 129.682747 126.123666 135.682896 148.174432 159.120014 167.609446 177.000000 187.530836 193.227355 208.716397 210.917181 213.697621 223.490419 228.324890 238.500000 254.667767 257.483391 247.632479 250.070328 255.739175 261.239258 266.175315 270.516315 274.593456 278.218520 281.153987 283.672580 285.655804 286.939163 287.727013 | ||
185 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.793386 287.058935 286.136172 284.848139 282.772618 283.128290 284.545237 278.956715 267.270762 259.689408 256.235495 251.681241 245.247900 237.138986 232.446279 229.500000 222.468921 215.156645 212.340500 209.064228 208.716397 197.574724 195.474910 201.500000 201.169645 189.078958 187.612413 191.700343 175.677645 194.668868 189.203225 143.250000 121.553985 121.493192 117.087381 114.728662 111.064179 97.904546 142.398166 121.923739 75.550253 47.515058 47.554129 64.867419 89.921472 128.684411 187.108124 238.000000 252.000000 228.064232 186.436312 101.806184 38.327420 29.058293 40.781480 48.045598 58.478875 62.729238 79.971013 96.173541 88.268507 88.048829 96.557390 98.998217 107.250000 111.319635 133.139456 138.677340 139.459353 149.967068 164.207382 169.207551 172.000000 183.792449 191.053670 202.277119 208.323047 214.036902 222.873102 227.209467 239.500000 254.001123 250.636716 245.758881 250.070328 255.491015 261.239258 266.512376 270.918239 274.851275 278.370761 281.180522 283.655543 285.799915 287.003326 287.737718 | ||
186 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.796598 287.080323 286.145780 284.728879 282.427664 281.605881 280.987346 275.138439 266.175315 261.032611 256.855896 251.827687 244.566591 237.921463 238.668296 234.750000 224.142055 216.391278 214.376182 211.658362 211.936035 200.617882 202.017088 215.500000 213.421781 195.862115 188.807503 191.070934 179.641964 187.064109 166.847750 124.500000 119.220630 123.101954 112.109344 97.657594 90.042102 87.144426 117.673326 80.871180 65.117453 47.515058 45.607199 57.986678 68.132834 122.710077 245.046033 248.000000 189.000000 124.175568 70.932510 34.459484 30.463717 39.766408 39.819540 47.097162 72.474066 77.380995 70.107569 76.903303 83.147186 87.219156 90.926725 96.664861 109.500000 122.857945 124.843355 131.409423 137.571124 151.162158 169.860013 178.263478 178.500000 187.530836 199.748409 204.289393 212.770133 222.179628 223.799077 225.815189 237.000000 250.223470 252.984148 251.379675 250.509668 255.118774 261.859198 267.439293 271.454137 275.005965 278.637182 281.711220 283.877025 285.761485 286.999049 287.747353 | ||
187 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.791245 287.071767 286.030491 284.439249 282.533803 280.882736 277.738838 272.190998 266.175315 261.445904 256.731816 251.241901 244.055610 242.029468 248.445751 238.250000 223.863199 218.243228 215.733303 214.993676 216.765493 209.747357 217.437936 225.500000 217.683393 202.645272 187.612413 174.076876 176.338365 190.520818 151.703719 123.750000 117.665059 115.862527 107.131306 91.682720 78.655143 79.074336 82.875403 80.871180 70.808071 54.248637 47.554129 52.088901 56.248122 118.727187 248.042822 199.000000 61.000000 17.290116 24.133556 32.478699 37.344457 42.686804 48.476998 56.581526 75.273104 81.043934 76.384306 86.538422 98.511147 95.515885 93.339867 102.887142 110.250000 120.694512 117.238596 124.141506 137.571124 157.735155 169.294750 176.665373 188.000000 200.147894 216.703148 214.753219 220.923124 231.340195 230.898217 229.161457 235.250000 247.556891 257.874630 255.467525 250.509668 255.739175 263.925664 268.534740 271.722087 275.109093 278.827484 282.188849 283.979248 285.578945 286.947718 287.744141 | ||
188 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.799809 287.153041 286.107350 284.507397 282.135779 278.979725 275.521602 271.454137 266.596641 261.755874 257.228136 251.095454 244.566591 247.506808 246.445817 233.750000 224.142055 222.873102 220.143947 217.958400 223.607226 224.528412 225.849308 227.000000 227.804723 214.515798 195.978045 186.035657 177.659805 172.545933 143.771131 117.750000 111.442779 107.818720 103.812615 91.682720 79.531063 81.764366 71.886586 107.928549 100.209599 65.791914 48.527594 49.140012 57.238515 107.774240 178.117759 76.000000 19.000000 25.281552 28.116446 31.488306 39.310383 49.501059 66.753854 78.395562 64.076952 70.055116 140.945026 200.408010 171.063185 138.658877 131.145761 115.331704 106.500000 119.973368 128.300064 132.070143 142.606400 169.686058 183.991590 187.319404 197.500000 210.428460 222.354728 222.802316 229.817295 232.697316 233.058825 233.065436 235.750000 243.557023 252.397290 253.082946 251.974134 258.344857 265.475514 268.787536 271.722087 275.263784 278.675243 281.737755 283.894062 285.569338 286.913497 287.734506 | ||
189 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.807303 287.217205 286.261068 284.728879 282.348059 279.322267 275.676293 271.119201 266.175315 261.755874 257.104056 251.241901 245.077573 242.225087 234.001783 228.000000 226.651756 225.651027 221.161787 216.105447 224.412135 213.659989 201.082491 212.000000 243.253069 241.083163 237.208661 265.341257 241.088899 141.435556 125.742522 120.750000 109.109423 97.361771 89.708175 84.000740 81.282903 88.937779 86.538343 110.727587 106.848653 62.906095 44.633734 49.140012 54.267337 51.018061 35.270846 26.000000 29.000000 28.278340 30.107890 37.430662 50.122975 59.235710 63.868034 70.808071 65.942977 78.296729 224.335956 259.094643 188.987807 177.653503 189.061172 146.443109 129.000000 132.953966 137.287506 141.980939 153.306362 176.259055 190.774747 202.235048 220.500000 230.054994 228.875781 234.071052 245.752686 234.054437 225.959685 231.392302 239.250000 242.668164 246.724331 251.039021 255.195959 262.563580 264.752251 267.860619 272.057023 275.521602 278.446881 281.419336 283.945173 285.684626 286.926330 287.727013 | ||
190 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.840490 287.508080 286.683792 284.490360 283.276782 284.612639 281.090474 272.458947 265.585458 261.652551 256.235495 250.070328 244.907246 239.290798 233.112924 229.000000 228.324890 227.194318 224.215310 223.887847 223.204771 237.135782 249.681528 251.500000 261.897623 267.085265 265.293284 266.600076 248.356816 182.916059 145.213420 123.750000 108.331638 98.970532 92.197194 83.147186 76.903303 81.764366 84.706873 75.273104 62.272144 53.286697 47.554129 46.191123 46.344196 40.065115 30.276199 27.000000 29.000000 29.277269 42.056560 45.353803 45.208160 50.474524 57.134456 61.323707 65.942977 78.296729 225.232633 259.094643 208.619535 157.741354 132.754522 126.220696 138.750000 148.097997 150.422998 150.570296 174.076876 190.002594 206.602114 225.141215 232.000000 231.456889 248.438942 265.462529 243.158552 233.715157 229.972243 231.671158 236.750000 242.668164 248.484904 251.209348 256.074639 260.702379 265.062221 270.051514 274.334591 276.913820 279.474508 282.321524 283.894062 285.751878 287.003326 287.728083 | ||
191 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.838349 287.358365 286.501252 284.643694 284.630063 286.096988 281.709237 272.860871 266.512376 262.479138 255.863255 250.216775 244.055610 239.877656 235.112858 230.250000 226.651756 223.799077 222.518908 222.776076 217.972858 262.785260 270.242659 269.000000 269.355445 269.346318 268.281010 242.053105 182.945563 216.791803 180.549493 141.750000 110.664993 95.753009 92.197194 91.682720 84.786582 76.384306 80.128199 83.670218 59.426835 51.362818 52.421454 49.140012 45.353803 41.060837 32.274058 25.000000 29.000000 33.272987 38.073670 37.430662 39.310383 49.501059 60.020275 69.859635 79.938167 86.538343 182.192153 229.313366 171.916739 110.449998 90.122344 91.220366 113.250000 146.655708 160.793124 168.409728 196.106210 207.928948 223.560007 248.047383 264.000000 264.635078 264.958944 258.620797 237.229105 234.393718 232.132851 231.392302 234.500000 241.557089 250.441097 254.275236 257.246212 260.826459 265.268867 270.135779 273.195807 275.882547 279.208086 282.109244 283.979248 285.665412 286.973383 287.740930 | ||
192 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.826573 287.294201 286.491645 285.478511 283.542131 282.557387 280.987346 274.401578 266.849436 263.512371 256.855896 251.534794 251.379675 249.267381 237.112792 231.000000 227.767179 223.490419 223.876029 223.517257 213.948310 255.394732 270.242659 271.500000 270.420848 269.346318 268.281010 238.906057 165.106130 188.446793 166.847750 149.250000 123.887340 105.405578 95.515885 90.829167 86.538422 73.694276 68.223647 67.809002 57.529962 52.324757 50.474524 48.157049 43.373018 42.056560 44.261211 31.000000 27.000000 34.271917 38.073670 40.401840 47.174086 56.315315 66.753854 81.240871 93.933358 110.347448 137.358319 170.626733 151.431458 123.724764 102.992436 95.109291 126.750000 157.472874 168.397883 176.338365 199.882667 239.001297 247.301057 251.776294 271.500000 269.775361 255.394732 234.875961 234.634971 231.679476 230.898217 232.507725 234.750000 240.001585 249.463001 258.192759 261.346717 268.271265 269.505124 270.725635 273.195807 276.552874 279.893170 282.480733 284.285915 285.886381 287.080323 287.756988 | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/cif/texture_synthesis b/SD-VBS/benchmarks/texture_synthesis/data/cif/texture_synthesis new file mode 100755 index 0000000..066bcaa --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/cif/texture_synthesis | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/fullhd/.expected_C.txt.swp b/SD-VBS/benchmarks/texture_synthesis/data/fullhd/.expected_C.txt.swp new file mode 100644 index 0000000..0120cee --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/fullhd/.expected_C.txt.swp | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/fullhd/1.bmp b/SD-VBS/benchmarks/texture_synthesis/data/fullhd/1.bmp new file mode 100644 index 0000000..74918c4 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/fullhd/1.bmp | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/fullhd/Makefile b/SD-VBS/benchmarks/texture_synthesis/data/fullhd/Makefile new file mode 100644 index 0000000..33ec187 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/fullhd/Makefile | |||
@@ -0,0 +1,7 @@ | |||
1 | INPUT=fullhd | ||
2 | include ../../../../common/makefiles/Makefile.include | ||
3 | |||
4 | BMARK=texture_synthesis | ||
5 | include $(MAKEFILE_COMMON_DIR)/Makefile.common | ||
6 | |||
7 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/fullhd/texture_synthesis b/SD-VBS/benchmarks/texture_synthesis/data/fullhd/texture_synthesis new file mode 100755 index 0000000..009b9ae --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/fullhd/texture_synthesis | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/qcif/1.bmp b/SD-VBS/benchmarks/texture_synthesis/data/qcif/1.bmp new file mode 100644 index 0000000..407d03b --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/qcif/1.bmp | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/qcif/Makefile b/SD-VBS/benchmarks/texture_synthesis/data/qcif/Makefile new file mode 100644 index 0000000..0269ca7 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/qcif/Makefile | |||
@@ -0,0 +1,7 @@ | |||
1 | INPUT=qcif | ||
2 | include ../../../../common/makefiles/Makefile.include | ||
3 | |||
4 | BMARK=texture_synthesis | ||
5 | include $(MAKEFILE_COMMON_DIR)/Makefile.common | ||
6 | |||
7 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/qcif/expected.m b/SD-VBS/benchmarks/texture_synthesis/data/qcif/expected.m new file mode 100644 index 0000000..9ca0b05 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/qcif/expected.m | |||
@@ -0,0 +1,192 @@ | |||
1 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.925062 287.769011 287.596491 286.773330 285.001552 282.595447 279.956074 279.894537 278.225238 269.815094 262.935821 256.367532 246.951171 238.117082 230.446345 223.000000 216.055241 209.600796 202.840653 194.240609 184.971561 183.228406 181.455957 192.500000 219.281498 213.385271 178.649236 155.824000 144.623818 134.522139 154.588296 241.500000 211.777059 140.798329 104.642287 95.096934 88.290262 92.524486 86.538343 89.268294 83.137744 91.764288 73.837686 101.237047 192.922307 240.205323 161.135958 49.000000 39.000000 25.281552 36.082225 43.373018 33.412605 49.501059 102.345625 132.456435 97.665409 87.454077 93.421163 108.436420 116.435768 161.889718 189.061172 157.332100 153.750000 215.885565 195.360210 145.284538 141.976991 194.782955 207.732640 195.842629 219.500000 238.933664 189.314723 198.655026 204.617143 207.251296 211.144087 216.334097 223.000000 230.446345 237.138986 244.055610 250.509668 256.979976 261.755874 266.343845 271.789074 276.707565 280.654375 283.727875 285.597771 287.068086 287.700570 287.947544 | ||
2 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.944332 287.610741 286.895154 285.478511 284.417784 282.709628 280.420147 279.559600 276.539934 267.851951 260.950539 254.903066 249.506077 240.855752 231.557420 222.500000 215.497530 209.909454 203.858494 194.611200 188.191200 195.401039 196.409507 205.000000 228.337425 226.386323 207.928948 190.441524 149.909576 138.670189 146.655708 242.250000 231.221686 148.842136 106.301633 98.511147 83.034743 83.557719 86.538343 90.201307 76.498689 76.373251 64.103035 100.254084 185.989558 200.376426 105.195909 93.000000 62.000000 26.280481 33.095058 49.315374 44.225198 49.501059 88.878468 112.539271 97.665409 99.358630 116.734756 118.071539 127.531963 161.889718 165.734131 135.554117 153.000000 203.626112 190.520818 163.123971 148.900496 215.099490 232.604217 196.908032 191.500000 205.288177 191.053670 198.252571 206.840685 212.340500 212.070062 215.218674 223.000000 230.668560 237.530224 243.885283 250.802561 256.731816 261.859198 266.849436 272.257985 277.429456 281.834242 285.054622 286.841478 287.461988 287.747623 287.892946 | ||
3 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.861901 287.093155 285.924810 284.285915 282.746083 282.290965 280.832656 275.942286 269.798718 264.958897 259.957898 257.978445 253.423600 241.246991 231.112990 222.750000 216.055241 211.452746 205.894175 198.317104 200.667300 205.834725 204.353580 195.000000 208.094765 219.037902 208.526494 185.406248 157.838213 144.892265 148.097997 186.750000 171.332233 143.211471 125.384110 116.435768 108.436420 95.214516 85.622608 93.000345 72.704944 73.487432 68.970360 86.492603 135.479533 153.577472 104.196979 84.000000 44.000000 24.282622 30.107890 52.286552 53.071864 46.580664 66.753854 91.673671 94.866371 103.021569 125.701523 135.589937 136.921050 159.400699 160.907847 135.554117 150.000000 167.568894 164.249833 161.141811 155.194591 179.844326 189.078958 183.057792 187.000000 192.203821 194.096829 195.837842 201.652419 210.644099 217.008595 219.959220 223.750000 230.446345 237.530224 244.225937 251.241901 256.979976 262.582461 267.692088 272.994845 277.893529 281.796182 284.736203 286.585922 287.192982 287.653517 287.861901 | ||
4 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.761270 286.892110 285.473264 283.757765 282.613408 281.377519 277.893529 273.329782 269.377392 264.132311 259.461578 266.765242 259.385048 239.095179 229.779701 223.000000 217.728375 214.230670 207.251296 200.540647 205.899213 211.051568 203.418983 196.000000 224.608514 237.691584 206.136313 172.188648 163.784690 146.274948 138.723121 140.250000 137.887473 145.624614 130.362148 121.557089 139.969536 124.804846 106.684508 106.062523 74.601817 69.639673 71.890756 66.833345 90.911865 127.688689 107.193767 66.000000 38.000000 26.280481 29.112168 45.353803 50.122975 50.474524 67.715794 96.415853 105.129510 113.094652 120.321463 125.954818 135.213943 147.785279 147.233375 138.665258 148.500000 153.867152 151.114340 154.534614 160.859276 161.917971 177.773696 199.571540 199.000000 182.857852 194.966303 195.435387 202.764190 210.983379 219.477861 222.190065 223.750000 230.001915 237.725844 245.247900 252.413474 257.600376 263.409047 268.281945 273.932667 278.615419 281.453640 284.019760 286.364440 286.799080 287.516635 287.885452 | ||
5 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.724872 286.926330 285.655804 284.422212 283.409456 279.931230 274.954402 271.722087 269.293127 263.615694 258.096697 261.346717 253.423600 237.530224 229.779701 223.250000 218.007231 213.304695 205.215615 201.281828 209.923761 217.137885 207.624669 218.000000 239.524158 231.473690 192.392774 163.376915 159.820372 147.657632 134.396254 134.250000 139.443043 135.972045 116.257708 111.314448 128.582578 126.598199 122.252000 107.928549 82.189308 74.449372 74.811151 61.918530 74.075190 112.752852 103.198050 48.000000 37.000000 26.280481 31.103613 46.344196 48.157049 51.447989 72.525492 97.364289 111.660599 118.589061 119.424786 114.567859 126.678409 138.658877 145.624614 151.887605 156.000000 158.194018 151.805682 153.213175 157.082819 173.868874 213.950534 232.066336 205.500000 182.390554 194.096829 195.032932 204.246552 214.036902 221.638469 222.747777 223.250000 230.001915 239.290798 246.610517 252.559921 257.848537 262.995754 268.366210 274.401578 278.770110 281.263339 283.807480 286.023698 286.770258 287.379752 287.913286 | ||
6 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.756988 287.071767 286.001669 284.848139 282.878757 278.789423 274.284075 270.650290 266.933702 262.169168 256.359575 250.363221 244.225937 238.117082 230.890775 223.500000 216.612952 209.600796 202.840653 203.505371 218.375313 224.963149 223.980114 243.500000 230.468231 203.210536 185.819777 172.188648 165.106130 160.101783 148.819141 147.000000 141.776398 127.123857 114.598362 108.753788 105.808660 107.767989 115.841856 101.397460 88.828362 85.992649 76.758081 65.850382 70.113619 86.864069 81.221601 40.000000 31.000000 26.280481 34.090780 48.324981 45.208160 40.739874 57.134456 81.240871 105.129510 117.673326 122.114816 120.699298 123.264196 135.340185 154.472801 165.887737 159.750000 155.309440 151.805682 153.213175 187.923886 211.514219 220.733692 218.748797 205.000000 191.269224 197.139987 201.874664 219.811352 221.501068 221.947127 221.911210 223.250000 230.224130 240.073275 247.291825 252.852814 257.848537 262.582461 268.534740 274.066642 278.202910 281.605881 284.152434 285.308140 286.731829 287.349809 287.918639 | ||
7 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.785892 287.170152 286.040099 284.183693 281.631616 278.713303 274.902838 270.650290 266.091050 261.032611 255.615095 249.630988 244.566591 239.290798 231.557420 224.000000 216.612952 209.292138 205.554895 209.434819 221.594952 222.789464 225.849308 241.500000 221.412304 198.123168 195.380500 192.959162 184.927722 176.002642 162.520884 150.750000 140.220828 138.385187 131.191820 116.435768 102.304980 91.627809 99.358630 99.531434 89.776799 88.878468 75.784616 69.782233 69.123227 57.988119 48.256929 43.000000 31.000000 29.277269 35.086503 38.421055 35.378531 31.978688 39.819540 65.117453 93.000345 113.094652 115.838079 125.954818 127.531963 135.340185 151.255279 160.443241 155.250000 147.376853 150.422998 152.552455 226.317867 229.440574 184.556853 178.263478 201.500000 195.474910 200.183145 220.790042 245.382095 224.893870 215.465303 218.564942 223.500000 230.224130 239.290798 246.780844 253.145707 257.724457 263.615694 269.293127 273.597731 277.893529 282.062604 284.205504 284.967399 286.616540 287.490969 287.907934 | ||
8 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.754847 287.003326 285.799915 283.894062 281.817360 279.131966 275.521602 271.253175 266.512376 261.445904 256.359575 250.802561 246.269862 240.268894 233.335139 226.000000 219.680365 215.465303 213.019061 213.881905 214.753219 206.269462 200.147894 207.500000 213.954483 203.210536 189.405048 192.329753 196.159957 178.768009 156.030585 155.250000 151.887605 142.407091 129.532475 117.289322 108.436420 106.871313 118.589061 132.186879 92.622108 80.221010 72.864221 74.697048 71.104012 49.026617 38.267635 41.000000 33.000000 32.274058 31.103613 29.507521 31.446680 35.872548 41.743420 54.684653 79.938167 100.274365 102.387929 115.443779 131.799730 140.318222 141.602710 148.776464 162.000000 150.261430 150.422998 153.213175 182.888610 179.844326 173.816855 187.319404 197.500000 191.736522 195.835776 226.826864 235.376152 211.322660 207.440188 216.612952 223.500000 230.446345 239.095179 245.247900 250.949008 257.352216 265.165544 269.967249 273.999655 278.512292 281.758122 283.462526 285.308140 286.808687 287.619296 287.892946 | ||
9 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.736648 286.999049 285.751878 284.013322 281.631616 278.637182 275.109093 270.918239 266.596641 262.685784 258.841177 251.974134 247.291825 241.442610 237.557221 231.250000 226.094045 222.564444 218.108265 216.105447 216.765493 204.095778 210.428460 209.000000 204.365854 199.253694 194.782955 198.623848 206.070753 180.842034 164.684317 183.750000 182.221224 145.624614 128.702802 153.138564 190.772891 221.645926 241.297525 232.952251 101.158035 70.601613 68.970360 66.833345 58.228907 43.052282 37.268705 36.000000 32.000000 31.275128 28.116446 31.488306 35.378531 35.872548 37.895661 48.994035 71.541053 92.032751 93.421163 114.567859 126.678409 129.532475 135.972045 149.554249 159.000000 156.751729 149.040315 161.802531 164.006324 160.125336 169.860013 191.048315 201.500000 194.540313 193.662092 190.605929 194.981790 203.519213 211.452746 218.843798 225.250000 231.335205 238.899559 245.588554 250.656115 258.344857 265.372191 270.051514 274.602540 278.924801 281.682001 283.595201 285.648882 286.779865 287.443916 287.910075 | ||
10 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.745212 286.969106 285.655804 283.791840 281.419336 278.484942 275.005965 271.253175 267.186497 263.512371 260.454219 254.610173 249.335750 244.572519 238.001651 232.500000 228.882601 225.651027 219.465386 214.252495 226.826864 235.831572 237.531769 257.500000 257.636011 226.951586 213.306855 238.276648 242.410338 209.187044 236.077607 209.250000 205.554778 200.322502 222.455840 250.443651 250.335444 253.029610 230.308707 130.320853 81.240871 68.677733 64.103035 52.088901 45.353803 47.035172 38.267635 35.000000 37.000000 33.272987 31.103613 34.459484 34.395568 35.872548 40.781480 50.890907 72.474066 92.032751 105.077959 111.940099 111.314448 131.191820 158.494705 158.887671 147.000000 162.520884 162.867149 164.445410 169.671010 174.466419 173.816855 174.534567 177.500000 177.250271 183.228406 191.813293 202.023009 207.590577 211.452746 219.680365 228.250000 232.890709 239.290798 252.571965 255.781746 258.841177 264.028987 269.630188 274.736515 278.718547 281.605881 283.780945 285.325177 286.530074 287.268536 287.904722 | ||
11 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.736648 286.922053 285.578945 283.655543 281.419336 278.941664 276.243493 273.731706 269.967249 264.648927 262.563580 261.639610 254.615890 249.658620 243.334808 236.500000 231.392302 227.194318 220.143947 218.699581 249.364335 266.263155 266.971570 267.000000 247.514681 241.648426 255.135016 263.453029 257.606892 227.853271 255.548504 183.750000 202.443637 240.541538 258.131775 245.322330 233.692966 236.889430 124.999205 75.273104 104.003344 100.421746 73.837686 64.867419 57.238515 39.069392 38.267635 34.000000 33.000000 37.268705 34.090780 32.478699 34.395568 40.739874 46.553119 52.787780 78.072142 97.527160 105.974636 111.064179 109.607341 120.406073 135.972045 141.776398 145.500000 161.078595 162.867149 163.784690 158.341638 168.490968 171.555802 169.207551 173.000000 176.315674 187.141038 193.020658 199.058285 204.537054 213.304695 222.468921 229.000000 233.112924 244.963757 273.522197 264.861436 258.344857 262.995754 270.809900 276.009274 278.615419 281.111098 283.807480 285.154806 286.405178 287.392585 287.872606 | ||
12 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.730224 286.922053 285.578945 283.536283 281.313196 279.588688 277.584147 276.612159 274.096243 267.748627 264.797022 264.714989 261.088319 262.569493 252.667834 239.000000 230.834591 226.268343 224.554590 236.858514 262.645345 272.349471 272.579152 267.000000 249.645487 253.518951 268.281010 262.823619 249.017536 240.297422 224.539298 222.000000 222.666050 234.910873 239.049298 194.109127 140.845456 151.705146 112.178917 77.139129 135.301744 133.127698 77.731546 57.003715 53.276944 33.095058 34.271917 29.000000 36.000000 41.264423 32.099335 30.497914 35.378531 46.580664 60.020275 61.323707 72.474066 98.442895 106.871313 110.188260 139.481710 159.400699 148.037756 136.331902 147.750000 150.982574 156.645074 166.427569 157.082819 155.942519 163.642119 170.272954 174.500000 181.455957 192.357881 195.435387 196.834743 203.179933 216.699936 224.978622 227.750000 235.557287 252.397290 267.390422 256.221086 258.468937 266.818717 272.495204 276.076261 279.079492 281.834242 283.993225 284.950361 286.395571 287.319866 287.829784 | ||
13 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.731295 286.934885 285.588553 283.808877 281.605081 279.740929 277.841965 276.076261 274.264773 271.984884 270.132466 269.254834 269.775001 264.330066 252.890048 239.250000 234.459714 235.836750 234.054437 241.305600 270.694442 273.218945 272.579152 269.500000 264.028430 261.432634 266.488374 247.717791 197.481397 220.248512 240.404473 259.500000 223.443835 188.256791 172.675466 172.770292 171.502653 157.085206 155.218453 74.340091 101.158035 89.840408 61.182640 57.986678 57.238515 40.065115 35.270846 48.000000 55.000000 45.260141 29.112168 27.526736 34.395568 47.554129 72.525492 90.725235 75.273104 98.442895 123.908169 123.327058 137.774603 158.571026 155.277182 141.776398 147.750000 146.655708 151.114340 159.159652 157.082819 174.466419 186.817906 178.263478 170.500000 180.054061 192.357881 201.069755 206.099504 208.269137 216.082620 222.190065 227.000000 238.001651 251.810432 256.659815 260.614484 273.606709 271.778237 270.641370 274.803502 279.131056 281.796182 283.966690 285.154806 286.482037 287.259981 287.803021 | ||
14 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.733436 286.956273 286.184209 285.239992 282.905292 280.768556 279.285747 277.282032 274.517569 273.534734 275.964231 275.259145 270.285982 262.569493 256.667701 248.000000 242.546528 240.466624 236.429399 242.787962 273.109171 273.218945 270.242659 270.500000 270.420848 245.605268 233.623390 223.800229 166.427569 234.075346 259.154226 213.000000 182.221224 148.037756 163.549064 216.301515 210.043129 133.771613 115.841856 56.612850 66.065889 59.058336 64.103035 91.407417 86.950294 48.030894 44.261211 59.000000 63.000000 49.255859 29.112168 34.459484 54.054827 68.970360 83.106830 96.415853 80.871180 101.190100 126.598199 125.078898 124.117749 138.658877 152.059659 150.332034 146.250000 165.405461 198.816919 189.552760 181.000381 197.770681 197.557905 176.132671 167.500000 179.119465 190.184197 202.277119 213.140724 213.019061 214.847987 219.959220 227.000000 237.557221 249.854239 259.044394 268.522601 275.343830 269.091831 268.197679 273.463756 278.151347 280.958857 283.595201 285.308140 286.616540 287.298479 287.795527 | ||
15 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.740930 287.058935 286.731829 285.819253 283.568666 281.796182 280.729528 279.492613 277.803912 277.357697 279.190313 274.673359 266.368459 265.308163 263.556363 256.750000 249.517920 242.935891 237.107960 243.529143 272.304261 272.784208 252.952617 258.500000 256.570608 208.297903 195.380500 228.835505 202.767154 247.210839 225.981586 149.250000 158.887671 135.972045 158.571026 194.962680 143.473216 68.314216 48.077481 45.416698 53.736216 57.134456 67.996895 91.407417 80.017546 41.060837 42.263352 43.000000 50.000000 43.262282 28.116446 48.324981 79.611862 99.147777 102.345625 88.828362 81.804193 99.358630 110.458019 114.567859 123.264196 132.851166 144.820233 151.109819 156.000000 215.885565 255.506939 228.535224 192.959162 181.039416 171.555802 160.684326 166.500000 187.063538 191.488407 194.228023 207.952457 213.697621 216.082620 220.795787 229.500000 240.001585 250.636716 262.280609 265.593669 264.300702 264.442281 267.439293 272.458947 277.016947 280.311833 282.958362 284.967399 286.424393 287.264258 287.793386 | ||
16 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.786963 287.234315 286.530074 285.001473 283.144107 282.443206 281.142037 279.425626 280.247602 281.903924 276.832791 268.961941 267.560749 271.959219 269.778380 259.000000 250.633342 246.948448 241.518603 244.640914 271.096897 266.697892 230.054994 226.500000 224.075812 187.383169 197.770681 257.788343 228.535224 189.829476 172.616905 174.750000 176.776728 130.341380 105.471960 93.389827 59.384905 50.380682 46.246011 45.416698 39.509671 42.705360 47.554129 42.259272 31.488306 27.120723 30.276199 25.000000 31.000000 35.270846 39.069392 71.104012 96.322232 112.776288 122.546360 97.364289 84.603231 95.695691 102.387929 115.443779 130.946176 139.488550 140.798329 152.665390 196.500000 261.317659 261.729015 204.088594 155.824000 141.003890 143.292647 148.964892 163.500000 187.063538 187.575775 188.593655 202.764190 212.679781 216.082620 220.516932 232.000000 243.779238 250.832336 259.044394 260.468037 261.943180 264.338957 266.765171 271.186188 276.191929 279.817050 282.294989 284.456286 286.020884 287.114543 287.786963 | ||
17 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.862971 287.324144 286.136172 285.154806 283.780945 283.927555 282.534255 279.157677 277.972442 277.461020 270.876947 269.108387 269.604674 279.001513 280.666909 262.250000 244.498518 238.923333 241.518603 259.093943 269.084623 246.699994 228.185800 209.000000 211.823676 208.297903 220.477397 235.129600 167.088289 122.077988 181.991781 236.250000 162.776596 114.253766 96.345558 75.465206 60.260825 54.864066 51.740420 46.349710 37.612798 37.895661 37.819478 32.429643 29.507521 32.099335 33.272987 31.000000 23.000000 43.262282 73.919677 103.786969 114.015564 126.404799 139.861276 115.384581 100.464447 105.768774 113.148049 123.327058 138.628157 151.103970 148.842136 175.221158 256.500000 260.596515 230.618638 136.695181 118.688838 130.845623 142.162121 151.628399 159.500000 166.502407 174.533668 193.825568 205.728914 207.590577 211.761404 219.401509 230.500000 242.001519 250.636716 259.214721 261.786057 263.556221 264.442281 266.680906 270.918239 275.624729 279.398387 282.003105 284.319989 285.963240 287.084600 287.783751 | ||
18 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.861901 287.302756 286.049706 285.018510 284.152434 283.546953 283.049892 279.023702 274.938895 275.704524 272.862228 269.401281 267.220095 277.436559 279.778049 256.500000 236.969415 236.454067 249.661330 270.582248 249.766790 216.703148 237.064471 256.500000 256.570608 233.169480 200.758406 179.112153 159.159652 127.608722 163.963173 173.250000 125.442911 98.166151 88.048829 73.758099 61.136745 53.070712 51.740420 45.416698 40.458107 42.705360 39.766408 37.344457 39.411447 39.069392 35.270846 31.000000 30.000000 51.253718 88.855514 101.806184 122.862231 171.184192 201.425421 166.600145 116.325663 127.746409 127.494876 127.706658 137.774603 146.955606 158.494705 200.110282 263.250000 246.894772 142.818240 119.516468 124.353524 134.430894 144.423174 153.759206 161.000000 169.306197 176.707353 185.374016 194.981790 201.822812 209.600796 220.795787 233.500000 246.223602 255.527199 253.593927 253.877940 258.220777 265.888807 272.579470 275.339401 277.841965 280.540194 282.003105 284.439249 285.847951 287.131653 287.797668 | ||
19 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.834067 287.409695 286.693399 285.205918 284.125899 283.585013 282.585819 278.554791 274.686099 274.567967 272.986308 274.087572 273.011216 269.807406 262.667503 254.000000 252.585332 252.195639 250.679171 252.052724 222.399861 233.223150 262.298586 268.500000 250.178189 212.254745 171.478694 152.676953 157.177493 135.904822 117.088790 110.250000 110.664993 99.774913 88.878502 77.172313 62.012665 53.070712 49.908950 44.483685 40.458107 42.705360 38.792943 43.242235 50.305766 45.043727 34.271917 34.000000 45.000000 56.248365 80.889734 99.825398 109.100750 133.219055 165.833650 156.167344 110.727587 135.988022 131.978259 144.349136 160.820545 158.571026 176.191081 230.443901 254.250000 198.578101 113.781888 117.534309 126.241753 137.418619 148.380015 155.890012 162.000000 170.708093 179.315774 189.398564 202.393600 204.537054 210.218112 221.074643 235.000000 245.779172 247.115569 246.951171 251.681241 256.607736 267.438657 277.719646 280.698385 281.038910 281.491700 281.631616 284.183693 285.934418 287.101710 287.795527 | ||
20 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.869394 287.623574 287.068086 285.887401 284.948482 283.128290 281.606110 280.162486 277.382586 272.501501 267.650864 270.719300 275.225468 267.851214 256.001057 252.750000 256.210455 261.455388 255.429094 228.705524 221.997406 234.962098 241.270156 207.500000 212.889079 215.646324 178.051690 143.865219 143.963098 137.978848 119.252223 117.000000 117.665059 106.209959 94.686213 81.440079 63.764505 53.967389 48.077481 43.550672 40.458107 40.781480 48.527594 63.884456 65.161656 45.043727 35.270846 43.000000 62.000000 68.235518 79.894012 98.835006 116.964453 124.457869 120.622481 111.590835 102.330472 124.083470 128.391553 160.115694 182.159380 197.565653 227.671446 259.999736 245.250000 156.751729 109.633837 116.873589 128.759391 142.198981 157.989488 165.478640 165.500000 170.708093 181.489459 191.008384 200.540647 206.572736 215.465303 220.238076 228.250000 239.557155 241.638229 243.714956 250.509668 256.483656 263.615694 270.051514 275.004464 277.326329 279.474508 282.666478 284.371100 285.819129 287.028992 287.794457 | ||
21 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.868324 287.426806 286.664577 285.989624 286.142555 284.308157 281.451419 280.430435 280.584663 277.047727 270.008386 270.133514 265.176170 263.938828 259.112065 251.250000 248.123641 245.096499 235.072278 227.223162 230.851413 224.528412 214.634146 197.500000 200.104242 193.601063 169.088513 151.418134 142.641659 131.756772 127.905955 130.500000 115.331704 118.275669 111.279671 84.000740 63.764505 53.967389 47.161746 44.483685 40.458107 35.009841 52.421454 69.782233 61.200085 41.060837 41.264423 48.000000 60.000000 67.236589 77.902567 94.873435 113.032601 110.829358 92.726227 91.673671 110.727587 121.336265 127.494876 170.626733 206.912428 234.900934 257.433533 245.221819 185.250000 130.790533 114.473229 114.230710 140.088762 152.954794 153.467383 156.955415 165.000000 173.044585 184.097880 191.410839 199.058285 208.608417 214.230670 216.891808 226.750000 239.557155 241.833849 244.225937 250.949008 256.731816 262.582461 267.270762 271.722087 275.418474 278.827484 282.639943 284.967399 285.867166 287.225760 287.875818 | ||
22 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.897228 287.542300 287.029657 286.551848 286.116020 285.526085 282.740510 279.894537 278.730829 276.841080 274.227109 275.552038 273.692524 266.677498 254.223338 251.250000 249.796775 238.614675 226.590272 226.481981 228.436684 228.006307 209.026564 198.000000 185.188598 168.729487 157.137610 150.159315 139.998780 134.522139 127.905955 118.500000 107.553853 123.101954 117.917054 99.364701 89.166182 59.347449 47.161746 44.483685 44.251853 49.438938 56.315315 57.003715 48.324981 41.060837 47.258000 53.000000 69.000000 76.226954 75.911122 91.902257 104.185935 99.147777 92.726227 104.951780 125.655790 146.061105 152.601823 212.670888 245.322330 256.472430 250.194106 202.443637 139.500000 126.463667 122.077988 118.195029 135.682896 148.771977 152.336857 155.890012 164.500000 174.446480 185.402091 190.203474 196.834743 205.554895 210.835429 218.286086 231.500000 239.779370 238.117082 244.055610 250.949008 256.855896 262.169168 267.270762 271.454137 275.160656 278.713303 282.056175 284.831102 285.982454 287.191539 287.866183 | ||
23 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.945403 287.781844 287.558061 287.011849 285.319972 285.335784 284.596800 282.507042 280.331867 278.597577 279.066233 281.117009 281.868225 274.697889 254.889982 248.250000 244.777373 239.231991 236.429399 226.852571 220.387587 222.354728 211.830355 198.500000 178.263478 161.946330 154.747429 150.159315 141.980939 135.904822 119.973368 107.250000 107.553853 123.906334 117.917054 113.021555 111.064179 62.934156 46.246011 43.550672 48.994035 60.982215 54.368384 45.208160 43.373018 48.030894 56.248365 61.000000 85.000000 88.214108 74.915400 87.940687 98.288158 99.147777 107.155324 122.023635 127.521815 141.482431 198.332333 246.831765 259.832738 260.620794 220.432020 144.887539 125.250000 125.021378 123.460672 122.820067 128.759391 148.771977 162.511593 162.815132 163.500000 173.979182 183.663143 191.008384 198.317104 204.197774 209.909454 219.122653 230.000000 235.557287 236.356509 243.885283 251.095454 256.855896 261.859198 267.523558 272.124010 275.676293 278.827484 281.658150 284.439249 286.097743 287.221482 287.891876 | ||
24 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.964672 287.858840 287.634920 286.619996 285.426111 285.449964 285.782764 285.722432 284.713657 283.143803 283.036796 283.020815 282.038552 271.372361 258.667635 246.500000 234.738570 232.132851 235.411559 225.740800 218.375313 211.051568 210.895758 200.000000 181.459687 166.468434 160.125336 157.082819 149.909576 133.830797 122.136801 121.500000 116.887274 119.080050 114.598362 107.900235 95.297621 58.450772 48.077481 43.550672 49.942471 57.134456 53.394919 50.122975 52.286552 55.996674 64.239801 75.000000 94.000000 92.209826 73.919677 78.036760 93.373343 104.988568 115.812782 129.611126 134.985917 153.386983 236.889430 259.094643 259.832738 232.411915 162.516609 109.887208 118.500000 116.367646 120.003963 126.784385 128.759391 146.381797 163.076856 166.011342 167.500000 176.782972 183.228406 193.423113 202.393600 204.876334 209.600796 217.170664 224.500000 230.890775 237.725844 244.225937 250.949008 256.607736 262.065844 267.439293 272.257985 276.037238 279.093905 281.870430 284.319989 286.030491 287.336977 287.917569 | ||
25 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.958249 287.756179 287.356307 286.364440 286.540579 286.553711 286.246837 284.516660 283.112619 284.177037 283.284956 280.531223 277.439720 257.874630 255.778842 250.250000 240.873394 234.293459 226.929552 220.923124 218.777768 208.877883 204.353580 197.000000 183.057792 168.164224 160.125336 156.453410 148.588136 132.448114 133.675110 137.250000 121.553985 107.818720 103.812615 92.536274 70.771864 53.967389 49.908950 46.349710 45.200289 47.515058 59.235710 64.867419 63.180871 63.962453 71.232307 86.000000 90.000000 83.219460 68.941065 74.075190 96.322232 109.855893 115.812782 133.404872 157.378222 216.572685 252.132933 259.094643 253.857864 171.845793 99.774913 108.331638 111.750000 111.319635 120.003963 129.427264 145.124038 158.332700 163.642119 167.609446 174.000000 180.521360 185.836828 194.630477 202.023009 206.572736 213.613354 218.007231 222.250000 230.001915 237.725844 244.055610 250.363221 256.979976 262.892431 267.607823 271.923048 275.830984 279.360327 282.401129 284.405175 285.895988 287.264258 287.836208 | ||
26 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.923992 287.396863 286.626148 287.250368 287.124347 286.363410 285.267128 280.229473 277.382586 282.833834 280.307034 268.669048 265.176170 260.417681 257.778776 250.750000 255.931600 259.294780 239.482922 222.776076 213.545855 202.791567 192.203821 192.500000 181.459687 165.337908 154.747429 144.494629 132.070143 130.374089 127.184811 120.750000 111.442779 100.579294 92.197194 88.268507 79.531063 59.347449 48.077481 48.215736 43.303416 45.591179 65.076500 69.782233 67.142441 74.915400 79.223743 82.000000 77.000000 96.205543 101.799905 107.748539 114.015564 116.670149 114.850842 124.868944 176.038476 249.539138 257.512993 247.707684 200.084001 123.724764 86.904821 102.887142 112.500000 114.925357 123.460672 130.748704 191.700343 222.270032 193.601063 168.674850 177.000000 181.455957 188.445249 194.228023 200.911238 218.108265 225.651027 220.516932 221.000000 230.668560 237.725844 243.885283 250.802561 258.468937 264.442281 268.956066 272.592921 276.140365 279.588688 282.507268 284.592583 286.020884 287.153041 287.767693 | ||
27 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.841560 287.144486 286.309105 287.148146 286.991672 284.726820 281.451419 277.215045 276.624199 280.870690 274.723430 253.585047 258.022432 273.915411 265.111867 242.750000 247.008219 255.282222 235.072278 220.181943 206.704123 196.705250 188.932732 183.000000 174.001865 166.468434 158.930245 145.124038 131.409423 129.682747 114.925357 111.750000 109.109423 102.188055 95.515885 89.975613 78.655143 63.830832 53.571890 51.014774 54.684653 50.400878 52.421454 55.037790 70.113619 88.855514 78.224813 73.000000 84.000000 191.103842 244.188213 179.056810 132.691860 129.325194 108.117264 112.539271 201.229819 243.128994 231.509370 168.874893 108.753788 85.559811 86.100441 92.775936 106.500000 117.809935 120.695305 138.016621 231.982552 261.110468 201.514746 166.544043 188.500000 191.736522 198.878935 200.264845 222.405485 238.804361 224.416394 214.660963 222.000000 233.112924 241.051371 246.610517 254.317280 259.709738 265.062221 270.809900 274.334591 277.274765 280.273773 282.454199 284.694805 286.136172 287.255703 287.813726 | ||
28 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.796598 287.208650 286.501252 286.551848 285.319972 280.996917 278.099783 275.004464 270.978431 268.471891 262.439500 255.781746 255.297198 254.157864 246.223602 241.000000 248.960208 255.590880 237.107960 205.358324 203.886939 201.052619 191.736522 179.000000 170.805656 169.860013 166.100787 153.306362 138.677340 129.682747 136.559688 125.250000 110.664993 98.166151 98.004904 102.778914 95.297621 72.797599 59.982033 50.081761 70.808071 75.411312 67.996895 91.407417 107.748539 90.846959 92.209826 86.000000 98.000000 225.067444 255.141160 227.586049 192.652597 151.714891 126.394119 171.342326 235.751289 161.628597 87.144426 75.151463 83.147186 86.389483 89.317964 97.442646 114.000000 135.117399 127.608722 136.034461 206.176762 250.952200 223.560007 192.646420 198.000000 198.278700 198.878935 232.058777 264.282209 240.161482 213.613354 212.151262 225.250000 236.668362 245.159376 257.170796 265.154329 266.534143 267.851951 271.652552 274.870490 277.326329 279.931230 282.480733 284.762953 286.145780 287.264258 287.804091 | ||
29 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.867253 287.721958 286.943190 284.558508 282.427664 279.360327 275.779420 272.391960 269.208862 265.785484 261.198699 256.660426 250.698367 246.724331 239.779370 233.250000 231.113446 229.972243 221.161787 203.134781 197.850116 196.270513 193.138418 177.500000 168.142148 165.903171 161.320426 147.641676 134.052302 132.448114 140.886554 116.250000 115.331704 112.645004 105.471960 107.900235 104.056820 75.487629 66.392177 49.148748 66.065889 181.224686 198.441214 141.538526 90.911865 83.876902 115.185203 92.000000 156.000000 239.052456 255.141160 184.999165 127.777045 116.670149 111.003083 115.384581 111.660599 64.560707 71.900922 74.275543 76.318759 83.070792 91.731106 101.331572 111.750000 123.579089 133.830797 144.623818 152.047543 227.050394 245.605268 199.571540 177.500000 188.932732 203.226304 253.791339 249.829181 210.304819 204.662263 215.218674 224.250000 235.779502 248.680524 259.896030 266.179455 268.271265 269.505124 271.905348 274.736515 277.635711 280.349893 282.666478 284.831102 286.962405 287.713403 287.823361 | ||
30 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.909004 287.597908 286.270675 284.013322 281.843895 278.789423 275.521602 273.262794 270.557105 265.682161 260.950539 255.195959 252.571965 249.071762 238.890511 230.250000 223.584344 217.625911 212.679781 206.099504 198.655026 191.488407 189.400030 181.500000 166.011342 157.424225 152.954794 145.753448 140.659500 145.583606 132.953966 120.000000 143.331968 134.363284 108.790652 96.804041 93.545781 89.834456 85.622608 126.588803 147.631417 230.283614 209.149330 119.913342 82.988723 110.761407 135.163792 177.000000 230.000000 252.038539 255.141160 139.441104 53.071864 52.421454 57.134456 56.581526 51.014774 48.993216 65.624186 69.895944 77.172313 86.389483 94.948629 102.887142 109.500000 117.088790 142.126898 140.659500 187.923886 248.562019 224.690533 170.272954 162.000000 173.044585 190.184197 209.923761 204.617143 201.144252 207.748846 216.612952 225.250000 235.335073 246.919950 255.978507 265.007882 271.001027 270.538357 271.989613 275.071451 278.202910 280.958857 283.011432 285.018510 287.461988 287.858840 287.843701 | ||
31 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.788033 287.063212 285.675019 283.877025 281.684685 278.751363 276.346620 275.205426 271.821083 264.648927 259.957898 255.342406 255.978507 252.984148 241.557089 232.250000 223.863199 217.008595 213.358341 207.211276 197.850116 193.662092 183.792449 175.500000 162.282431 161.381066 164.308152 152.676953 140.659500 151.805682 133.675110 123.750000 127.776266 111.840624 93.856540 89.975613 94.421701 101.491253 99.358630 217.091035 211.176654 156.214252 121.537474 139.572600 155.287386 154.573194 203.090996 242.000000 240.000000 245.046033 207.346483 94.873435 28.497791 32.952153 41.743420 43.303416 47.282723 55.403359 62.934156 69.895944 81.440079 92.197194 100.579294 105.220498 111.750000 123.579089 132.448114 134.052302 213.729676 252.147290 215.646324 165.478640 152.500000 165.100511 175.403142 182.959287 191.646476 202.162092 209.292138 219.122653 229.000000 236.890577 245.746234 253.764254 263.543416 269.512066 271.158297 273.337856 276.344210 278.924801 281.263339 283.887085 286.177032 287.615706 287.850285 287.827643 | ||
32 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.717378 286.909220 285.655804 283.808877 281.605081 278.827484 276.243493 274.334591 271.315492 265.992131 260.950539 255.342406 255.467525 250.832336 240.001585 231.500000 225.257478 218.243228 211.322660 203.505371 195.837842 191.488407 180.054061 172.000000 162.815132 163.076856 164.308152 150.159315 135.373742 140.744214 130.069388 119.250000 105.998283 90.122344 93.856540 106.193128 111.940099 114.941403 94.779956 160.177260 140.043926 71.563553 65.076500 161.197784 215.701337 187.432035 213.080290 197.000000 180.000000 161.135958 97.817016 48.324981 34.395568 40.739874 46.553119 48.045598 58.478875 62.729238 66.520862 76.027383 89.122060 98.004904 101.383674 104.442713 111.000000 124.300234 124.152013 150.570296 217.506133 219.282306 185.122117 159.618923 153.000000 165.100511 172.794720 185.374016 194.981790 200.804971 207.748846 218.564942 227.750000 236.668362 249.463001 257.170796 263.543416 268.891665 271.984884 273.506387 276.143248 278.924801 281.225278 284.178969 287.165183 287.663742 287.854563 287.832996 | ||
33 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.748423 287.024714 285.723056 283.774802 281.684685 278.941664 275.882547 273.329782 270.809900 266.922041 261.198699 255.342406 253.423600 246.528711 236.446147 229.500000 224.420911 217.317253 207.590577 198.687695 192.618203 187.141038 184.727046 176.000000 166.011342 160.250540 153.552339 142.606400 134.052302 124.843355 121.415656 117.750000 108.331638 106.209959 114.598362 118.142875 115.443779 114.941403 83.791138 67.809002 61.323707 58.096396 67.023430 120.896305 163.210527 150.590305 141.157369 142.000000 131.000000 77.225884 29.112168 27.526736 41.276309 46.580664 47.515058 52.787780 70.608040 71.886586 71.900922 80.406983 95.096934 101.323596 102.188055 106.776068 111.750000 119.973368 130.374089 183.606282 223.800229 184.624687 146.684226 147.366787 157.500000 167.437004 178.011563 190.605929 194.981790 200.126411 208.057504 218.007231 226.000000 237.779436 256.505295 261.258646 261.786057 271.621427 273.328087 273.506387 275.942286 278.924801 281.111098 283.754410 287.079997 287.654135 287.794677 287.822291 | ||
34 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.759129 286.977661 285.598160 283.689617 281.578546 278.941664 276.295056 274.401578 271.399757 265.372191 259.213418 255.195959 251.039021 243.985661 234.668428 227.500000 220.795787 213.922012 205.894175 194.981790 188.191200 186.271564 189.400030 175.000000 164.413237 157.424225 146.979342 140.088762 139.998780 126.226038 124.300234 125.250000 116.887274 133.558903 127.043456 102.778914 99.677221 94.317839 80.128199 73.407079 85.034617 80.221010 73.837686 65.850382 66.152049 72.923955 83.219460 139.000000 116.000000 66.237660 35.086503 33.469091 44.225198 48.527594 49.438938 59.426835 72.474066 70.970851 75.487629 81.282903 94.243380 102.153269 109.427481 116.109489 116.250000 121.415656 134.522139 216.642269 228.835505 164.905697 135.378964 148.964892 158.500000 168.371601 180.185248 188.191200 195.722971 204.537054 211.144087 220.238076 230.250000 243.112594 258.657107 260.236684 261.493164 274.103029 273.224764 274.854630 278.085880 279.801383 280.996917 283.382921 286.415551 287.394736 287.461026 287.759129 | ||
35 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.734506 286.922053 285.569338 283.706654 281.472406 278.941664 276.501311 274.066642 270.725635 265.475514 259.089338 252.706367 246.099535 239.290798 231.335205 223.500000 216.055241 209.600796 202.501373 192.758247 184.569106 179.750511 176.782972 165.000000 158.020818 150.641068 141.003890 138.200534 143.963098 149.731657 149.540286 128.250000 114.553919 131.145761 118.746727 94.243380 92.669861 82.661043 80.128199 84.603231 100.209599 90.802348 76.758081 64.867419 61.200085 68.941065 78.224813 89.000000 80.000000 77.225884 44.048004 37.430662 49.140012 52.421454 52.324757 59.426835 57.545863 65.476442 78.177659 83.910662 91.682720 106.301633 117.471289 118.442845 117.000000 123.579089 149.731657 247.696096 211.841448 143.394071 133.117912 152.161101 160.000000 167.437004 177.142090 185.374016 198.317104 207.590577 213.922012 222.468921 235.250000 246.668032 251.810432 257.341123 268.522601 274.227109 270.951651 275.275956 279.626588 280.420147 281.073037 283.356386 286.159995 286.923976 286.994771 287.724872 | ||
36 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.730224 286.930608 285.598160 283.962210 282.109244 279.398387 276.552874 272.927858 269.124597 265.785484 259.089338 251.095454 244.225937 236.747747 229.557486 222.500000 214.939818 207.440188 199.447850 190.905295 182.154377 174.098931 168.838899 160.000000 151.095698 148.945278 147.576887 138.829943 136.034461 167.706541 186.318647 127.500000 101.331572 96.557390 100.493923 102.778914 93.545781 80.867689 83.791138 93.933358 89.776799 93.688167 80.651941 61.918530 64.171263 76.906845 68.235518 45.000000 63.000000 88.214108 46.039449 35.449877 56.020752 62.156105 54.248637 57.529962 60.344901 70.970851 82.661043 90.042102 97.657594 117.087381 127.123857 117.665059 111.750000 127.905955 238.223396 257.606892 158.971048 129.052987 143.292647 153.226504 161.000000 168.838899 178.011563 188.996110 199.428876 205.215615 215.156645 229.161457 239.750000 246.445817 252.984148 261.428974 268.083261 270.256546 272.398177 275.191691 277.817931 280.317019 281.796182 283.250247 286.773330 287.308270 287.003326 287.725942 | ||
37 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.729154 286.930608 285.655804 284.115544 282.719548 280.007351 276.191929 272.458947 268.787536 263.925664 257.352216 250.363221 243.374302 236.747747 229.779701 222.250000 215.218674 208.057504 199.447850 190.534704 182.556832 174.533668 165.567810 157.500000 151.628399 148.945278 142.796526 129.388800 130.748704 170.471908 162.520884 112.500000 115.331704 119.080050 107.131306 93.389827 83.034743 76.384306 81.959669 78.072142 86.931489 91.764288 70.917291 53.071864 55.257730 56.992396 51.253718 50.000000 58.000000 66.237660 37.077947 34.459484 71.748159 79.678476 53.286697 64.169016 70.608040 77.380995 94.317839 105.808660 112.168002 121.235746 123.906334 119.998415 120.750000 137.280832 228.544612 184.927722 135.053486 141.003890 164.207382 165.478640 160.000000 174.913779 189.314723 196.642752 204.987733 210.644099 219.477861 230.834591 237.250000 241.779304 251.810432 260.747665 265.886562 269.015745 274.464644 277.045525 278.420816 280.213892 281.643941 283.727875 287.114071 286.808687 286.969106 287.733436 | ||
38 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.733436 286.943440 285.761485 284.302952 282.188849 279.588688 276.140365 272.458947 268.703271 263.615694 256.483656 249.484542 243.203975 236.943366 230.001915 223.000000 215.776385 207.131530 198.430009 190.164114 182.959287 173.664194 167.437004 160.500000 152.161101 143.292647 134.430894 126.871162 127.445105 140.744214 140.165409 117.750000 128.554051 128.732619 99.664250 79.732973 82.158823 77.280983 94.779956 101.397460 86.931489 85.992649 67.996895 57.986678 61.200085 58.983841 51.253718 51.000000 60.000000 56.248365 48.030894 42.382625 53.071864 84.545801 103.307565 82.189308 75.273104 84.706873 97.904546 111.064179 129.239069 134.510512 127.123857 124.665126 129.000000 130.790533 138.670189 134.052302 133.165257 151.759703 172.121065 172.936462 167.000000 179.586763 191.053670 197.045206 205.728914 214.036902 223.799077 231.113446 238.250000 248.223536 258.070249 263.132245 271.012193 277.949512 275.084584 276.202873 279.693575 281.193601 282.062604 284.232039 285.682956 285.963240 286.960551 287.742000 | ||
39 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.748423 286.999049 285.790307 284.115544 282.029640 279.588688 276.810692 273.329782 268.197679 261.755874 255.863255 249.777435 243.714956 236.943366 229.779701 222.750000 215.776385 208.674821 202.162092 195.722971 188.996110 179.315774 172.109988 162.500000 151.095698 141.031595 132.638258 127.500572 124.141506 116.547254 117.088790 112.500000 112.998349 113.449385 99.664250 87.414953 83.910662 74.590953 89.285547 94.866371 89.776799 80.221010 62.156105 56.020752 59.219300 58.983841 61.243012 57.000000 54.000000 52.252647 59.979563 65.161656 62.901493 90.386592 120.622481 85.034617 84.603231 103.021569 98.801223 118.947459 142.042370 139.488550 128.732619 128.554051 124.500000 125.742522 126.917380 153.213175 150.159315 149.369523 156.858962 165.478640 175.500000 187.998135 191.488407 196.240297 205.728914 215.054743 227.502976 238.084838 248.000000 255.556627 258.852726 267.560749 272.183766 277.080952 275.704524 276.371403 279.157677 281.915492 283.356651 283.701340 284.371100 285.761485 287.003326 287.759129 | ||
40 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.755917 287.046102 285.847951 284.115544 282.082709 279.817050 277.068511 273.731706 269.967249 264.442281 255.863255 249.484542 243.203975 235.769651 229.557486 224.500000 219.959220 214.539328 207.251296 198.687695 188.996110 179.315774 170.240794 161.000000 152.161101 142.727384 133.833348 128.129981 122.820067 113.781888 108.435058 102.750000 98.220432 100.579294 99.664250 90.829167 84.786582 84.454396 75.549525 81.804193 82.189308 62.906095 53.394919 61.918530 61.200085 50.022339 58.246224 58.000000 55.000000 55.249435 133.663023 162.220135 104.185935 68.970360 92.726227 84.086180 79.938167 102.105834 126.598199 141.721376 141.188817 133.680839 126.319476 120.776200 117.750000 127.184811 181.533376 208.713632 175.335695 155.942519 156.293699 171.871059 192.500000 196.409507 194.096829 203.484484 212.028952 220.822507 234.293459 250.354487 257.250000 255.112197 258.070249 268.753039 270.572853 276.584631 280.354074 279.489215 278.286842 281.863928 284.993242 283.515596 284.166655 285.626982 286.973383 287.747353 | ||
41 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.759129 287.063212 285.992062 284.439249 282.135779 279.893170 276.810692 274.669528 274.517569 269.505124 254.994694 249.191649 243.714956 239.877656 235.112858 228.750000 221.911210 214.539328 205.554895 194.981790 184.166652 176.707353 167.904302 159.000000 151.095698 142.162121 135.028439 130.018210 126.123666 121.386646 112.761924 102.000000 98.220432 92.535486 89.708175 91.682720 93.545781 90.731133 66.392177 67.809002 69.859635 67.715794 54.368384 55.037790 59.219300 55.000951 58.246224 48.000000 70.000000 103.198050 212.325095 214.710945 129.742971 82.598871 90.802348 83.137744 66.875990 85.622608 130.184906 148.728735 148.017244 136.999531 129.536999 130.887406 131.250000 135.838543 200.199602 198.142116 184.147429 163.710607 163.076856 199.038839 222.500000 195.007611 195.835776 209.118852 220.181943 233.036597 246.331132 253.979610 257.000000 259.334280 264.916924 275.055141 272.623106 277.825432 283.040480 279.742011 279.425626 283.874910 286.211169 284.975017 284.865176 285.992062 286.981939 287.733436 | ||
42 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.762340 287.071767 286.097743 284.677768 282.427664 280.235712 276.965383 276.210236 276.708464 269.091831 254.126134 249.777435 246.951171 245.550615 238.446081 228.750000 219.122653 209.909454 200.804971 191.646476 182.154377 177.142090 169.773496 159.500000 152.693803 146.684226 141.601436 136.941715 130.748704 129.682747 121.415656 108.000000 108.331638 100.579294 92.197194 90.829167 88.290262 78.177659 59.982033 55.679837 65.117453 86.954589 68.970360 51.105938 56.248122 63.962453 60.244083 62.000000 113.000000 141.157369 179.466255 152.316208 117.947416 107.908963 92.726227 74.601817 65.942977 91.117017 105.974636 118.947459 132.653283 137.829204 161.712228 183.776794 149.250000 130.069388 161.484466 153.213175 173.447467 173.271329 176.077907 207.562064 226.500000 204.820879 210.616831 208.716397 233.893790 254.750534 260.529413 256.768167 261.000000 272.000528 275.871604 281.527570 278.041631 280.307034 283.557097 280.753193 282.774991 286.195273 286.744012 286.540579 285.546659 286.674184 287.123098 287.744141 | ||
43 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.762340 287.097433 286.049706 284.592583 282.958362 280.464074 278.563856 279.559600 277.635381 266.198777 254.250214 250.949008 248.654442 243.985661 233.335139 224.000000 216.334097 209.292138 201.483532 192.017066 183.764197 178.881037 171.642690 161.500000 159.086221 156.858962 151.759703 145.124038 136.034461 135.904822 126.463667 112.500000 113.776134 116.666908 110.449998 87.414953 62.888585 58.450772 52.656155 48.215736 57.529962 74.449372 69.943825 56.020752 55.257730 56.992396 58.246224 121.000000 181.000000 128.171286 76.906845 74.075190 102.220009 100.121243 65.791914 60.375271 74.340091 99.358630 82.661043 78.655143 97.657594 146.955606 210.779451 214.888199 132.000000 115.646502 137.978848 146.605977 159.600457 176.856600 187.948432 199.571540 219.000000 236.129874 238.874730 228.034229 257.240990 274.428789 271.641111 269.037815 274.500000 280.666909 281.544564 282.208879 281.849242 283.409036 284.487007 284.797923 285.521470 286.298400 286.477591 285.797600 285.120732 286.731829 287.230038 287.766623 | ||
44 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.771975 287.131653 286.011277 284.456286 283.011432 279.702869 280.471710 283.913775 280.837459 267.955274 254.374294 251.095454 245.077573 238.117082 230.890775 224.250000 217.170664 210.526771 204.197774 194.981790 188.191200 182.793669 172.577286 168.000000 166.011342 161.381066 155.344974 150.159315 143.963098 137.287506 125.021378 114.000000 105.998283 108.623101 104.642287 79.732973 55.005306 54.864066 49.908950 46.349710 41.406544 35.971781 44.633734 50.122975 51.296159 47.035172 56.248365 150.000000 199.000000 115.185203 65.953898 78.036760 102.220009 91.360057 60.982215 58.478398 73.407079 78.296729 71.004246 69.020024 98.511147 171.016120 207.561929 154.220960 93.750000 126.463667 160.793124 152.552455 153.306362 164.308152 182.861064 216.085289 251.500000 262.298586 259.307364 272.706716 275.770514 276.125191 277.196960 278.518908 279.750000 280.666909 281.153325 280.505608 280.531223 283.409036 284.590330 285.219249 284.918584 285.318691 284.917121 283.170642 284.013322 286.347534 287.221482 287.784822 | ||
45 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.826573 287.088878 286.040099 284.388138 282.507268 279.512568 278.357601 278.956715 274.349039 262.995754 255.863255 250.509668 243.714956 237.725844 235.557287 229.750000 220.795787 210.218112 203.179933 204.987733 201.874664 200.617882 186.128941 184.000000 183.590493 172.686328 158.332700 150.788724 146.605977 143.509581 132.232821 117.750000 101.331572 88.513583 76.433409 64.369012 57.633065 54.864066 50.824685 51.014774 48.045598 40.781480 52.421454 67.816307 60.209693 44.048004 49.255859 58.000000 91.000000 100.201261 86.864069 70.113619 63.884456 67.023430 65.791914 56.581526 71.541053 112.178917 106.871313 88.290262 99.364701 119.576400 118.275669 106.776068 116.250000 133.675110 151.805682 161.141811 159.600457 175.661510 191.340011 209.160168 242.500000 272.111853 272.784208 274.316535 275.399924 272.393108 275.653669 278.797763 279.500000 280.222479 279.392751 272.670562 270.572853 281.671915 284.590330 284.460862 281.502232 280.626401 281.682001 282.056175 284.745916 286.972013 287.426806 287.804091 | ||
46 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.826573 287.093155 286.049706 284.302952 282.294989 279.778990 276.862256 273.731706 269.293127 262.995754 257.352216 253.438600 246.440189 238.899559 236.890577 230.500000 221.632354 217.008595 216.411864 214.252495 210.326216 212.790516 196.876805 185.500000 186.254001 178.904222 161.917971 151.418134 149.909576 146.966290 140.165409 128.250000 110.664993 89.317964 71.455371 63.515458 60.260825 56.657419 55.403359 46.349710 42.354980 35.971781 42.686804 48.157049 41.392233 35.086503 42.263352 50.000000 72.000000 78.224813 63.962453 51.296159 46.191123 45.607199 45.591179 48.994035 65.009964 102.105834 91.627809 73.399624 113.021555 135.340185 107.014339 95.109291 135.000000 145.213420 150.422998 176.999085 175.335695 183.429597 196.992642 220.346901 253.500000 272.579152 273.218945 273.914081 273.917562 265.946783 271.949769 278.240052 276.500000 275.555967 278.414655 276.758412 272.037320 282.044155 284.590330 280.500398 276.344210 276.913820 280.197652 282.852223 284.439249 286.184209 287.238593 287.770905 | ||
47 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.791245 287.204372 285.953632 284.234804 282.241919 279.893170 276.810692 273.396769 269.882983 265.372191 259.957898 255.781746 248.484115 237.725844 232.446279 227.750000 224.699766 225.342368 221.840348 208.693638 206.704123 201.922093 188.465433 177.500000 187.319404 196.427378 176.856600 149.529905 155.856053 158.027757 145.213420 126.000000 106.776068 86.100441 69.796025 63.515458 67.268184 74.590953 60.897768 43.550672 38.561234 36.933721 35.872548 31.446680 42.382625 61.971008 56.248365 53.000000 67.000000 61.243012 57.988119 63.180871 66.833345 67.023430 76.373251 91.673671 79.938167 88.369812 83.557719 75.151463 107.900235 115.428035 102.188055 124.665126 159.750000 137.280832 158.719099 180.302684 186.665067 178.649236 190.774747 233.664440 269.500000 272.579152 272.349471 265.060074 271.694019 271.375267 255.899538 247.008219 254.750000 270.445024 280.566467 279.653972 279.066757 283.160876 284.590330 278.646563 274.535553 276.501311 280.654375 283.250247 284.132581 285.982454 287.165874 287.747353 | ||
48 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.789104 287.118821 285.924810 284.251841 282.507268 280.045411 277.068511 273.999655 270.641370 266.302101 260.330139 254.463726 250.698367 254.157864 250.890114 233.750000 227.767179 230.280901 221.501068 212.028952 212.740945 208.443147 193.605716 189.500000 202.767750 207.167377 190.600139 170.929829 163.123971 160.793124 153.146007 137.250000 110.664993 86.904821 71.455371 69.490332 75.151463 70.107569 56.319094 51.014774 46.148725 40.781480 36.846013 33.412605 45.353803 64.958176 64.239801 55.000000 69.000000 64.239801 60.975286 66.152049 66.833345 75.784616 106.193384 125.817381 89.268294 89.285547 89.834456 83.034743 89.975613 95.515885 128.732619 173.665588 160.500000 151.703719 175.311300 173.034767 170.929829 213.306855 247.866320 261.364922 271.500000 272.579152 271.479998 257.815887 272.435200 257.804056 237.997358 232.228869 246.250000 268.445090 279.588371 276.758412 281.849242 276.212391 273.121441 273.000795 273.664718 276.346620 280.235712 282.586873 284.098507 285.944025 287.105988 287.794457 | ||
49 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.783751 287.127376 286.001669 284.473323 282.693013 280.007351 276.759129 273.128820 269.293127 265.475514 260.206058 252.999260 252.231311 262.373874 252.667834 239.250000 237.805982 235.528092 225.911711 231.299657 252.181519 251.047363 243.139350 244.000000 243.253069 233.734743 212.111765 184.147429 172.374047 199.508260 213.722132 161.250000 112.220564 87.709202 73.944390 74.611652 79.531063 62.037479 51.740420 59.411888 55.633089 45.591179 40.739874 41.276309 47.334588 60.975286 71.232307 78.000000 89.000000 88.214108 78.898290 74.075190 84.526677 102.068173 103.307565 89.776799 86.469256 88.369812 104.181283 130.334417 126.678409 120.406073 144.015852 186.887935 213.750000 201.462679 176.693984 160.481092 165.894553 221.672487 246.735794 251.243592 268.500000 269.775361 264.089470 259.828161 253.535086 229.304514 224.725052 231.671158 242.500000 254.001123 259.048346 262.450936 277.309398 272.738148 266.715394 269.377392 272.994845 276.243493 279.893170 282.241919 284.439249 285.934418 287.063212 287.841560 | ||
50 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.778399 287.157319 286.011277 284.609620 282.746083 279.931230 277.223201 274.401578 269.967249 264.132311 259.585658 257.978445 262.450936 258.461488 257.112131 259.000000 253.700754 249.417715 252.714852 252.793905 273.511626 273.653682 272.579152 267.000000 252.308995 218.472639 202.551042 203.659124 178.320524 238.223396 257.711938 178.500000 113.776134 86.904821 74.774063 72.904546 74.275543 61.140802 54.487624 58.478875 56.581526 48.476998 50.474524 53.071864 57.238515 68.941065 86.216249 103.000000 96.000000 114.186274 103.791350 77.046368 98.288158 121.537474 86.954589 62.272144 96.732396 124.999205 142.738379 168.874893 152.285011 132.021493 129.536999 158.887671 213.000000 177.664915 140.052873 136.695181 162.747505 192.990319 202.080009 216.085289 247.000000 260.896691 254.959995 248.156971 227.593752 216.411864 221.329811 231.113446 242.250000 250.223470 249.267381 252.742292 266.179455 266.658223 267.438657 269.377392 272.525934 276.449747 280.045411 282.878757 284.916287 285.953632 287.067490 287.872606 | ||
51 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.782681 287.110266 285.934418 284.592583 282.878757 279.931230 277.687274 275.875299 271.231226 263.512371 259.089338 263.104076 269.264020 259.439584 271.333884 279.500000 262.902991 257.751488 271.035987 253.164495 267.877258 272.349471 253.419916 225.000000 200.636943 170.425276 178.649236 214.988495 203.427874 249.976206 239.683329 168.750000 112.998349 86.100441 74.774063 70.343885 69.895944 70.107569 71.886586 65.009964 61.323707 57.134456 61.182640 63.884456 68.132834 83.876902 105.195909 109.000000 93.000000 139.159510 128.684411 88.931079 98.288158 119.590544 92.726227 68.911198 111.660599 147.892575 146.325086 158.363854 136.067496 112.939017 114.253766 138.665258 159.750000 116.367646 108.251154 124.141506 153.306362 170.283603 181.165275 194.244525 214.500000 237.999067 238.874730 230.046503 217.958400 220.143947 222.564444 228.603746 240.750000 249.779040 250.832336 253.764254 256.806872 262.439500 270.848327 270.725635 272.324972 276.656002 280.311833 283.250247 284.848139 285.992062 287.127376 287.890805 | ||
52 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.780540 287.080323 285.934418 284.473323 282.852223 279.931230 277.223201 274.334591 269.798718 263.822341 259.585658 260.760931 261.428974 264.330066 269.778380 272.750000 253.700754 242.627232 249.322050 224.629028 236.083326 244.091573 204.820879 169.500000 147.899489 148.945278 169.686058 204.917943 245.713937 243.754130 192.808946 144.000000 114.553919 86.904821 71.455371 69.490332 75.151463 88.041103 92.948486 81.804193 77.447126 70.601613 71.890756 78.628900 91.902257 111.757130 124.175568 113.000000 104.000000 144.154158 132.667301 111.710110 111.066676 129.325194 121.584420 74.601817 103.263485 108.515978 107.767989 135.589937 116.435768 95.515885 114.253766 141.776398 135.000000 109.877347 109.633837 132.730863 147.012267 166.698332 181.165275 186.786703 195.000000 211.363057 217.137885 222.802316 222.034895 221.161787 223.799077 231.950013 238.500000 240.890445 246.919950 256.319161 255.049513 263.680301 271.571591 270.894166 272.324972 276.965383 280.540194 282.719548 284.371100 286.088135 287.221482 287.883311 | ||
53 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.768764 287.114543 286.040099 284.319989 282.427664 279.740929 276.810692 273.128820 268.787536 264.545604 260.081978 256.806872 252.571965 256.896534 250.667900 246.500000 231.950013 210.835429 201.483532 195.722971 187.788745 176.272616 166.502407 160.500000 156.422714 151.771594 157.137610 197.994438 254.303294 209.187044 149.540286 133.500000 122.331770 87.709202 66.477334 68.636779 83.034743 112.251373 107.600243 94.866371 90.725235 84.068770 80.651941 108.117787 152.316208 163.534696 136.162722 131.000000 121.000000 111.189485 102.795628 117.652466 139.572600 149.767961 134.089637 94.518980 82.737206 80.128199 106.871313 137.341777 108.753788 94.686213 115.862527 128.554051 126.000000 126.463667 115.855913 135.373742 145.753448 157.137610 166.468434 177.198075 193.000000 204.353580 209.747357 219.985132 219.440762 218.447545 227.194318 239.200260 243.500000 242.001519 245.941854 254.786217 256.513979 260.950539 266.405424 269.377392 273.396769 277.893529 280.578254 282.241919 284.337026 286.193816 287.281368 287.847984 | ||
54 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.786963 287.178707 286.184209 284.456286 282.348059 279.436447 276.552874 273.463756 269.293127 264.752251 260.826459 256.221086 248.824769 252.984148 252.890048 238.000000 221.353498 209.600796 198.769290 191.646476 181.751923 171.925247 165.100511 173.000000 170.805656 151.206331 146.381797 181.629791 208.713632 135.904822 108.435058 119.250000 103.664927 81.274156 71.455371 72.050992 89.166182 131.978259 146.061105 130.320853 122.972071 101.383685 76.758081 127.777045 212.730159 211.329373 136.162722 128.000000 119.000000 101.200191 112.752852 130.527570 126.794082 110.829358 116.774722 134.353308 94.866371 106.684508 107.767989 103.180900 110.460895 122.065418 120.688811 115.331704 127.500000 135.117399 138.670189 138.016621 153.935772 161.917971 165.903171 179.328881 195.500000 200.615193 209.312620 217.972858 217.217219 219.126106 228.737610 236.411704 243.250000 247.334676 246.333092 252.742292 258.564232 261.074619 265.062221 269.040331 275.339401 279.131056 280.235712 282.348059 284.302952 285.934418 287.182984 287.797668 | ||
55 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.918639 287.473859 286.635755 285.648882 284.232039 280.958857 276.656002 272.257985 268.619005 265.372191 260.206058 254.756620 247.802806 251.614813 260.000925 241.750000 218.843798 208.366163 200.126411 193.499428 183.764197 179.750511 183.792449 174.500000 156.955415 146.118963 145.186707 145.753448 141.320219 126.226038 120.694512 114.000000 90.442580 77.252253 74.774063 80.586526 99.677221 121.218139 123.167735 136.851942 163.754835 116.774722 89.413127 121.879268 188.960736 225.269487 180.115618 119.000000 143.000000 140.158440 123.705799 115.671681 121.879268 121.537474 107.155324 99.261162 88.335282 96.611426 110.458019 115.443779 106.193128 102.153269 123.906334 156.554315 163.500000 141.607698 146.966290 129.427264 177.853334 188.209958 173.251591 177.730776 197.000000 207.157371 206.704199 208.313942 232.411428 237.107960 226.268343 235.296281 258.250000 261.334214 247.506808 256.659815 260.028698 260.950539 264.545604 269.124597 274.133629 277.738838 280.083471 282.639943 284.660731 285.944025 287.011881 287.751635 | ||
56 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.958249 287.730513 287.020049 286.381477 285.028087 282.747688 278.048220 273.128820 269.208862 264.028987 258.717097 254.756620 248.313787 245.746234 243.334808 232.250000 218.843798 209.909454 202.162092 192.387657 187.386290 187.575775 184.259747 167.000000 154.824609 151.771594 151.162158 148.271086 139.998780 133.830797 132.953966 109.500000 88.109225 78.861014 75.603736 86.561400 109.312340 122.114816 122.252000 137.784955 121.075199 112.926963 95.253917 127.777045 203.816626 227.260932 166.130606 129.000000 163.000000 220.072797 165.526141 138.450711 192.652597 200.388144 155.252312 194.104799 210.559946 213.825481 149.015116 106.684580 118.142875 138.658877 162.516609 182.999009 159.000000 127.184811 131.065430 126.784385 172.188648 182.234507 170.425276 175.067268 197.000000 210.428460 202.356830 213.143400 260.946895 250.339890 227.194318 242.825384 258.750000 245.779172 240.660133 257.681778 264.568542 260.206058 263.512371 269.124597 273.463756 278.563856 282.671567 283.462526 284.081470 285.838344 287.016159 287.781610 | ||
57 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.940050 287.431083 286.405178 285.001473 283.356386 280.502134 277.016947 273.530744 268.956066 262.789108 257.476296 253.731493 246.951171 242.225087 240.890445 233.500000 219.680365 208.366163 201.144252 193.128838 188.593655 181.489459 174.913779 173.000000 167.076745 161.381066 154.747429 149.529905 151.231015 149.040315 129.348244 141.750000 112.998349 80.469776 75.603736 102.778914 131.210337 131.978259 147.892575 142.450019 111.590835 108.117264 98.174312 108.117787 127.556392 125.697244 124.175568 158.000000 193.000000 198.096348 178.470533 158.258564 177.908154 190.653494 192.767963 250.062545 251.612505 207.415337 131.081583 97.049461 125.824856 153.592989 178.604223 186.110150 135.000000 119.252223 127.608722 131.409423 140.088762 149.967068 159.685277 175.067268 196.000000 205.288177 197.139987 211.533581 245.382095 227.608112 231.515534 257.325878 255.750000 239.112726 253.766625 269.264020 264.568542 260.081978 263.615694 269.461657 274.133629 278.666983 282.024543 282.931827 283.996285 285.780700 287.020437 287.811585 | ||
58 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.807303 287.011881 285.665412 283.757765 281.445871 278.370761 275.263784 272.324972 268.619005 263.512371 257.848537 252.559921 246.780844 240.660133 239.779370 232.500000 218.564942 207.131530 200.465691 193.128838 188.191200 181.054722 175.848376 177.500000 171.338357 163.076856 155.942519 153.306362 165.106130 171.854592 148.819141 196.500000 135.554117 81.274156 79.752100 106.193128 126.830738 131.081583 145.145370 144.316044 119.178326 107.155324 91.360057 86.492603 89.921472 91.842681 128.171286 219.000000 218.000000 196.098490 214.316540 191.931914 188.720746 192.600424 161.985891 145.734544 154.579184 96.611426 95.214516 97.925381 101.925361 117.917054 156.081563 171.332233 120.750000 107.713914 120.003963 129.427264 135.682896 146.381797 159.120014 173.469164 187.000000 191.736522 189.749460 204.289393 209.805409 207.251296 228.737610 243.661951 237.250000 240.223800 266.677498 272.670562 257.685552 259.337498 264.442281 270.725635 274.602540 277.274765 279.969291 282.162314 284.149618 285.751878 286.981939 287.766623 | ||
59 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.716307 286.870722 285.473264 283.519246 280.915172 277.990159 274.593456 270.985226 267.523558 263.719017 258.841177 252.413474 246.440189 240.268894 236.668362 232.250000 221.632354 208.674821 200.126411 194.240609 191.410839 190.184197 183.325150 182.000000 176.665373 168.164224 162.515516 161.488686 165.766849 172.545933 173.338049 210.750000 158.887671 98.166151 83.900465 95.950487 104.056820 114.941403 119.504796 127.521815 115.384581 109.079203 95.253917 123.845194 155.287386 156.564639 201.093137 251.000000 241.000000 237.054597 237.218156 182.027987 173.976302 173.131122 108.117264 66.065889 77.139129 51.740420 85.351073 97.925381 87.414953 99.664250 145.624614 160.443241 111.000000 99.781326 117.238596 127.445105 140.718172 153.552339 161.946330 167.076745 173.500000 186.128941 200.183145 198.252571 191.646476 200.465691 216.082620 222.468921 224.500000 236.446147 253.962244 259.385048 252.413474 257.600376 264.545604 270.809900 273.731706 275.934111 279.093905 282.003105 284.132581 285.675019 286.999049 287.739859 | ||
60 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.721660 286.913497 285.550123 283.655543 281.100917 278.104339 274.696584 270.650290 266.343845 262.375814 258.096697 252.267027 247.632479 241.246991 236.223932 239.000000 228.882601 208.983479 199.447850 196.093562 197.447661 197.574724 188.932732 188.500000 186.254001 180.034749 174.466419 171.559238 167.088289 161.484466 174.780338 213.750000 207.110348 128.732619 86.389483 90.829167 89.166182 97.007869 105.768774 112.593612 104.003344 91.764288 135.165985 210.345930 230.557227 216.307985 250.040680 229.000000 250.000000 213.080290 160.547529 104.777362 97.305195 97.200847 66.753854 60.375271 65.942977 70.055116 85.351073 92.669861 87.414953 112.939017 158.494705 156.554315 100.500000 100.502470 116.547254 123.480787 135.682896 147.576887 155.163172 158.020818 164.500000 185.194344 203.661041 192.215748 193.870019 203.179933 209.292138 215.776385 224.250000 231.779634 238.508321 247.291825 251.827687 256.607736 263.615694 268.871801 272.592921 275.934111 279.093905 281.950035 284.422212 285.819129 287.037547 287.750565 | ||
61 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.732365 286.913497 285.540516 283.655543 281.074382 278.028219 274.748147 270.985226 266.343845 261.032611 256.359575 252.559921 251.039021 242.616326 242.445949 252.000000 234.459714 205.896897 202.162092 200.170057 201.472210 198.009461 190.801925 190.000000 188.917509 186.817906 184.624687 182.259200 178.320524 167.706541 169.011183 240.750000 259.221951 167.342893 100.493923 100.218254 101.429061 95.214516 104.853039 112.593612 105.900217 112.926963 205.255469 244.749632 203.816626 191.414924 205.088855 141.000000 178.000000 100.201261 45.043727 38.421055 41.276309 39.766408 43.667299 48.994035 60.344901 67.307912 71.004246 81.282903 81.440079 134.510512 185.843649 154.220960 93.000000 103.387048 110.325179 117.534309 129.388800 136.821074 144.423174 151.628399 161.000000 176.782972 184.532617 187.386290 197.946514 206.233456 211.144087 217.170664 225.000000 233.112924 240.855752 246.951171 251.827687 256.855896 262.272491 266.933702 271.923048 276.243493 278.941664 281.578546 284.814065 286.030491 286.977661 287.742000 | ||
62 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.729154 286.900665 285.550123 283.570357 281.684685 278.903604 275.005965 271.052214 266.849436 261.755874 257.724457 254.610173 252.060983 242.616326 252.667834 265.250000 239.200260 206.205555 207.929857 206.099504 201.874664 195.401039 190.801925 187.000000 182.525090 184.556853 194.782955 197.365029 181.624123 182.224717 181.270637 248.250000 262.333091 205.953167 132.021493 118.996429 139.969536 112.251373 101.190100 108.861561 147.631417 228.359734 244.194072 169.061488 100.815791 102.795628 101.200191 48.000000 35.000000 23.283693 36.082225 54.267337 59.952604 55.341850 48.476998 47.097162 54.746825 62.729238 62.037479 66.392264 77.172313 148.614952 196.300599 145.665324 90.750000 104.108192 110.325179 116.212870 128.129981 135.625984 141.596858 150.562996 159.500000 166.502407 175.403142 188.191200 195.352381 200.804971 208.057504 216.612952 225.750000 234.446213 241.442610 245.588554 251.095454 257.104056 261.755874 266.428110 271.119201 275.521602 278.827484 281.445871 284.268878 285.742270 286.874999 287.721660 | ||
63 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.727013 286.896387 285.569338 283.519246 283.754410 281.263339 275.212220 271.052214 269.798718 266.715394 261.695020 256.221086 248.824769 241.442610 250.001255 270.750000 253.421899 215.773962 207.251296 204.987733 201.874664 197.574724 194.073014 185.500000 177.730776 186.817906 216.294581 226.317867 190.213480 187.755451 177.664915 245.250000 262.333091 213.192594 145.296260 144.603030 169.750813 118.528109 120.420530 120.057714 225.403200 249.522409 148.794496 66.833345 56.248122 56.992396 45.260141 53.000000 44.000000 42.263352 46.039449 62.190478 60.935567 50.474524 52.324757 52.787780 50.081761 55.403359 69.210892 80.406983 83.147186 98.004904 115.058146 109.109423 94.500000 101.944759 108.942496 117.534309 126.241753 133.833348 141.031595 150.562996 159.500000 167.904302 175.403142 184.166652 192.017066 199.108570 208.057504 218.007231 227.250000 234.446213 239.095179 243.714956 251.534794 257.476296 262.272491 266.765171 271.052214 275.057529 278.637182 281.498941 283.519246 285.454050 286.896387 287.725942 | ||
64 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.728083 286.900665 285.492479 283.587395 282.693013 280.426013 275.160656 273.932667 277.045525 273.638057 263.556221 258.564232 250.698367 242.811945 242.223734 261.250000 255.373888 224.107735 208.608417 206.099504 212.338490 211.486305 195.942208 203.500000 217.683393 230.343164 240.793932 233.870781 202.106435 192.594843 169.011183 224.250000 257.666380 241.345919 170.186447 119.849982 119.823378 103.284606 113.094652 125.655790 192.207927 131.203818 56.315315 45.208160 54.267337 45.043727 44.261211 45.000000 48.000000 50.254788 50.022339 61.200085 61.918530 51.447989 46.553119 47.097162 52.880799 59.982033 68.314216 74.275543 68.636779 122.895091 185.039269 157.332100 87.750000 101.223615 109.633837 117.534309 126.241753 132.040713 142.162121 153.226504 161.000000 168.371601 174.968405 181.349468 191.275885 199.787130 208.366163 215.776385 222.500000 230.224130 237.921463 244.907246 252.120581 258.096697 262.892431 267.270762 271.722087 275.315347 278.408821 281.419336 283.740728 285.578945 286.943440 287.731295 | ||
65 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.732365 286.917775 285.598160 284.251841 283.117572 280.692435 277.635711 278.822740 279.826276 272.708147 265.293342 259.150018 255.467525 250.245478 247.334676 255.500000 241.709961 220.712494 223.876029 222.776076 220.387587 221.485254 217.905235 248.500000 263.495728 265.389476 243.781658 209.953219 217.963708 202.964969 163.242028 161.250000 234.332827 261.455436 183.461214 89.122060 72.523704 72.797599 70.055116 69.675028 57.529962 52.324757 65.076500 65.850382 52.286552 45.043727 47.258000 52.000000 63.000000 49.255859 49.026617 50.305766 53.071864 52.421454 50.400878 58.478398 62.210926 62.729238 66.520862 76.027383 74.611652 96.345558 123.906334 117.665059 93.750000 101.944759 111.016521 118.195029 124.353524 136.821074 149.510541 158.020818 164.000000 170.240794 176.272616 186.983835 192.017066 199.787130 207.440188 214.939818 223.250000 231.112990 238.312701 246.951171 255.049513 259.585658 264.132311 268.197679 271.856061 275.315347 278.637182 281.684685 283.979248 285.617375 286.934885 287.724872 | ||
66 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.738789 286.960551 285.857559 284.728879 283.011432 280.882736 281.245165 280.966334 276.034342 270.021741 266.658223 257.831998 257.000469 254.353483 251.334544 263.750000 252.585332 242.318574 265.607502 256.870400 219.985132 223.658938 249.681528 267.000000 270.420848 256.345267 233.623390 233.241372 250.338975 209.187044 156.751729 156.750000 202.443637 187.452411 136.999531 93.389827 63.764505 57.554096 57.234829 49.148748 40.458107 53.286697 66.049965 63.884456 53.276944 47.035172 46.259070 54.000000 50.000000 44.261211 48.030894 51.296159 52.088901 50.474524 50.400878 61.323707 67.809002 63.644972 75.487629 90.042102 84.854293 83.900465 94.948629 101.331572 102.750000 116.367646 121.386646 118.855748 125.612343 141.601436 153.467383 159.618923 165.000000 174.446480 193.227355 197.045206 192.017066 199.787130 208.674821 215.776385 224.250000 233.335139 240.855752 248.313787 256.513979 261.695020 265.992131 269.124597 272.124010 275.830984 279.170026 281.605081 284.115544 285.780700 286.956273 287.733436 | ||
67 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.742000 286.990494 286.011277 284.797028 283.329851 281.834242 280.420147 280.966334 280.331867 274.051350 266.782304 259.589358 262.110282 254.744721 254.889982 270.250000 272.662939 263.924654 258.482617 236.858514 211.131126 243.222099 267.906167 271.500000 250.178189 213.950534 209.124039 232.611962 219.285148 179.459351 145.213420 152.250000 157.332100 131.145761 121.235746 136.921050 127.706658 80.867689 57.234829 49.148748 53.736216 58.096396 57.288780 55.037790 49.315374 42.056560 40.265494 43.000000 45.000000 48.256929 52.013784 49.315374 50.122975 55.341850 61.944155 69.859635 72.474066 77.380995 92.524486 90.918022 91.682720 93.026867 94.948629 100.553787 112.500000 130.790533 128.300064 126.784385 134.424076 148.174432 157.424225 160.684326 163.000000 172.577286 195.835776 198.252571 192.758247 200.804971 211.144087 219.401509 228.500000 238.001651 244.963757 253.253273 260.321591 265.417422 268.471891 271.736818 274.267604 276.656002 279.208086 281.605081 284.047396 285.857559 286.999049 287.748423 | ||
68 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.754847 287.067490 286.097743 285.035547 283.780945 281.301399 278.151347 279.023702 280.331867 274.257997 267.650864 265.886562 267.731076 256.505295 264.445222 275.750000 278.797763 259.912096 219.465386 201.652419 200.667300 233.223150 248.746931 235.500000 196.908032 168.164224 170.283603 181.000381 168.409728 152.497024 171.895760 200.250000 171.332233 164.125370 181.801868 211.180195 200.408010 102.387929 55.403359 51.014774 65.117453 54.248637 40.739874 48.157049 59.219300 54.005229 42.263352 39.000000 50.000000 55.249435 54.005229 47.334588 51.105938 65.076500 72.525492 73.653380 82.737206 92.032751 98.801223 99.677221 104.486021 105.471960 106.209959 109.109423 114.750000 127.184811 124.843355 128.105825 147.641676 156.540065 161.381066 163.347834 161.500000 168.838899 188.445249 198.252571 195.352381 199.108570 212.070062 223.026632 232.500000 243.112594 252.006051 258.874067 265.300776 270.380626 272.191531 273.843447 275.071451 276.604438 279.093905 281.764290 284.183693 285.953632 287.097433 287.763411 | ||
69 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.786963 287.225760 286.107350 285.478511 284.046295 281.720061 280.368583 279.827550 277.298320 273.121441 271.373267 267.790368 266.538786 257.483391 272.667173 279.750000 265.691548 230.898217 199.108570 192.758247 191.410839 196.705250 202.484386 185.000000 167.076745 160.815803 152.357248 141.976991 147.266697 146.966290 192.808946 231.000000 224.999406 234.910873 243.197663 246.175884 210.043129 97.904546 60.897768 56.612850 72.704944 74.449372 79.678476 98.288158 93.883043 62.966731 55.249435 50.000000 60.000000 73.230166 61.971008 51.296159 68.799270 88.439662 81.182950 75.550253 94.866371 99.358630 105.974636 118.947459 116.435768 115.428035 123.101954 126.998481 117.750000 121.415656 133.830797 149.909576 157.712229 158.332700 161.381066 163.880535 164.500000 170.708093 181.489459 201.472210 202.764190 209.965539 220.095178 228.046034 236.500000 248.223536 259.048346 266.198132 271.305087 274.475270 274.981260 274.433304 274.669528 276.656002 279.512568 282.082709 284.319989 285.992062 287.118821 287.768764 | ||
70 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.814797 287.307034 286.116957 285.580734 284.975017 284.917121 284.699928 282.105118 277.635381 274.567967 271.993668 263.689863 260.066357 254.744721 268.222875 272.750000 240.315683 205.896897 202.840653 196.834743 185.374016 176.707353 170.708093 172.500000 178.796179 178.338959 164.905697 149.529905 147.927417 145.583606 164.684317 176.250000 224.221620 239.737157 214.988784 187.280700 153.108335 97.007869 96.611426 88.335282 86.931489 124.470240 157.555681 153.334081 104.777362 59.979563 68.235518 64.000000 75.000000 96.205543 86.864069 77.046368 96.322232 109.855893 94.650107 92.622108 98.598422 108.515978 131.978259 133.838097 124.117749 130.362148 144.015852 141.776398 129.750000 130.069388 173.237275 210.695791 186.035657 164.308152 161.381066 166.544043 173.500000 179.586763 182.358932 211.936035 218.699581 227.947393 229.972243 233.902003 243.500000 254.223338 265.112544 274.544160 277.895184 278.693993 276.531110 274.938895 275.741324 277.790401 280.045411 282.454199 284.456286 286.001669 287.101710 287.773046 | ||
71 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.822291 287.328422 286.539681 285.325177 286.540579 286.744012 283.513964 278.420816 274.264773 270.435034 265.045182 262.811183 257.170796 252.592909 252.890048 242.750000 222.468921 208.366163 204.197774 194.981790 186.178926 177.142090 172.577286 169.500000 172.403760 173.816855 168.490968 159.600457 151.891735 146.274948 142.328842 138.000000 167.443307 167.342893 132.851166 100.218254 97.049461 121.218139 150.639779 138.717968 114.436144 144.670975 141.980240 93.373343 63.180871 69.936788 67.236589 73.000000 90.000000 95.206614 112.752852 122.604429 111.066676 101.094708 107.155324 111.590835 101.397460 124.999205 163.361943 154.860175 144.603030 156.082008 160.103466 146.443109 141.750000 146.655708 221.631195 260.910491 243.311924 197.173136 178.904222 189.982912 202.000000 205.755475 208.877883 239.302964 239.823238 225.233151 223.799077 238.642549 252.750000 262.000859 274.111031 278.291356 281.556349 283.533117 279.320840 276.202873 277.148058 278.924801 280.426013 282.772618 284.950361 286.222638 287.259981 287.799809 | ||
72 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.828714 287.692015 287.413951 285.699993 286.301764 285.526085 280.162328 275.071451 273.000795 270.228387 266.285983 262.225397 257.681778 250.636716 241.779304 231.750000 221.074643 211.452746 202.840653 193.128838 188.593655 183.228406 174.913779 172.000000 170.272954 172.686328 176.259055 172.188648 161.802531 162.867149 157.472874 155.250000 164.332166 147.233375 117.917054 109.607341 116.319699 116.734756 142.398166 134.985917 89.776799 71.563553 60.209175 57.003715 64.171263 66.949620 63.240871 97.000000 97.000000 80.222672 106.778518 133.498748 115.981490 97.200847 109.079203 116.333017 125.655790 147.892575 194.745626 192.524730 182.159380 173.505139 161.712228 158.109886 167.250000 186.318647 254.815598 266.196249 265.970667 224.062668 209.428430 240.589561 269.000000 269.775361 268.871576 267.072348 255.017448 222.179628 224.416394 248.681353 263.500000 269.778380 280.175229 281.527570 281.849242 282.044155 279.734134 276.792729 276.478185 279.440438 282.176784 283.223712 284.899250 286.299497 287.418251 287.830855 | ||
73 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.784822 287.289923 286.366749 285.342214 283.595201 281.073037 278.048220 275.741324 274.011978 271.468267 268.023105 263.689863 258.874067 249.071762 238.668296 236.750000 243.104240 232.441509 203.519213 196.834743 192.618203 188.445249 181.923255 178.000000 178.263478 181.730538 184.624687 183.518019 178.981244 172.545933 161.799740 148.500000 144.887539 146.428994 124.554437 123.264196 143.473216 104.181283 79.212464 90.201307 56.581526 51.362818 50.474524 42.259272 41.392233 52.013784 73.230166 115.000000 118.000000 122.177709 145.611692 136.469926 109.100750 109.855893 136.013517 143.837672 147.115082 167.123006 192.055596 213.546808 210.326641 204.203036 201.126883 196.999141 209.250000 245.452484 263.111698 266.196249 254.011886 237.806206 245.605268 262.963026 270.500000 270.242659 257.568417 230.448958 230.187886 224.554590 237.688700 260.114435 273.250000 276.667041 278.219036 277.780374 279.506097 275.591990 274.567967 274.349039 277.817931 283.462401 285.373844 283.940155 284.950361 286.462822 287.294201 287.838349 | ||
74 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.753776 287.058935 286.068921 286.790367 286.195624 281.301399 277.532583 275.272413 276.118608 281.387307 280.307034 272.476659 260.577338 257.483391 266.000727 272.500000 265.970403 235.528092 201.144252 200.911238 194.630477 192.357881 187.998135 181.500000 183.590493 189.078958 191.795229 192.959162 188.892040 184.990084 181.270637 156.000000 146.443109 142.407091 125.384110 142.042370 182.889612 152.601823 122.252000 151.780146 71.756507 57.134456 55.341850 45.208160 47.334588 56.992396 67.236589 98.000000 104.000000 113.187344 148.598860 151.325816 113.032601 103.041638 139.861276 156.167344 151.780146 135.072287 182.192153 190.772891 177.038059 196.735980 211.583832 211.777059 246.750000 262.038804 264.494382 266.196249 262.823619 264.695739 236.561058 227.804723 260.500000 263.233183 225.397886 205.496758 219.440762 225.911711 246.948448 258.720156 261.250000 266.222941 270.785503 276.247431 273.501786 272.241828 273.948027 278.393768 283.176915 286.092146 285.449964 284.019760 285.972587 286.539681 287.187262 287.827643 | ||
75 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.739859 287.097433 286.981620 287.284442 285.664926 283.889495 282.018619 279.961524 280.921724 284.590330 281.423755 267.351028 267.220095 271.959219 276.222611 262.000000 237.527126 216.699936 204.537054 201.652419 200.667300 205.834725 195.474910 188.000000 190.515614 196.427378 199.563316 196.106210 185.588441 182.916059 207.231833 178.500000 146.443109 133.558903 124.554437 125.824856 140.845456 145.428409 135.988022 124.722777 87.879926 63.868034 61.182640 53.071864 45.353803 55.000951 68.235518 92.000000 101.000000 134.164863 126.692966 123.594822 110.083713 102.068173 126.394119 155.218908 151.780146 173.533149 182.192153 182.889612 171.063185 177.653503 190.669934 211.777059 261.000000 263.481092 265.185723 266.196249 267.229486 268.281010 216.776850 188.917509 217.000000 209.026564 196.705250 204.691848 222.776076 220.483227 239.540649 263.739558 269.750000 264.223007 265.112544 273.862851 279.652543 280.679274 281.697277 283.955271 285.722432 284.957746 282.747688 283.091037 286.279254 287.000835 287.431083 287.907934 | ||
76 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.731295 287.144486 287.577276 287.199257 284.285109 285.107422 283.204582 279.023702 279.152155 280.147427 271.745507 260.321591 268.753039 275.284746 266.445156 247.250000 229.440312 224.107735 223.197469 211.658362 209.923761 210.182094 200.615193 194.000000 199.038839 212.820008 221.074942 212.470857 197.481397 202.273627 202.904967 177.000000 159.665456 146.428994 127.043456 111.314448 114.567859 123.011493 102.105834 89.268294 85.034617 60.020275 50.474524 48.157049 46.344196 53.009506 60.244083 66.000000 93.000000 117.183062 113.748575 123.594822 131.708897 133.219055 133.127698 139.095490 202.162831 233.055912 217.162543 191.648811 175.330952 177.653503 205.953167 244.444033 263.250000 261.317659 243.062788 261.571211 254.641295 218.684761 178.904222 168.674850 183.500000 190.334627 193.227355 207.911487 230.929066 221.501068 240.466624 269.874382 270.500000 255.334412 261.004539 276.588085 281.556349 283.657197 284.590330 281.174519 281.502232 282.482692 281.948423 283.595201 286.296291 287.471595 287.756179 287.957178 | ||
77 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.738789 287.093155 286.856724 285.955550 283.568666 282.899929 280.007637 275.540363 272.916530 270.848327 266.285983 261.346717 272.840889 277.632178 258.889850 252.500000 245.335085 232.132851 226.590272 219.440762 213.545855 208.008410 202.951685 201.500000 204.365854 226.386323 249.757110 242.682514 219.945868 214.026436 186.318647 209.250000 217.999340 173.777939 126.213783 111.314448 116.319699 114.941403 91.117017 89.268294 75.550253 51.362818 38.792943 38.327420 42.382625 45.043727 45.260141 46.000000 77.000000 107.193767 119.722909 121.614036 135.640748 160.476077 152.366493 122.972071 210.559946 252.286343 229.716016 183.765531 161.674098 195.076634 244.563441 262.333091 252.000000 211.558699 238.223396 262.892650 219.394362 168.490968 155.163172 163.880535 174.500000 193.605716 203.226304 209.118852 220.552533 225.572431 240.775283 253.143043 250.000000 247.112461 260.026442 271.989253 275.991378 281.671915 283.970390 279.320685 278.554791 280.781092 282.290965 284.205504 286.432588 287.615706 287.760456 287.876888 | ||
78 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.751635 287.041824 285.944025 284.541471 283.170642 280.578254 277.790401 275.272413 271.736818 268.471891 268.023105 263.836309 268.923366 277.436559 267.778446 262.750000 256.489311 237.071383 218.108265 214.252495 205.496758 217.572622 225.849308 227.500000 224.608514 241.083163 264.098194 263.453029 245.713937 226.470587 213.722132 253.500000 262.333091 191.474314 125.384110 114.728662 116.319699 105.077959 97.527160 90.201307 67.962762 47.515058 35.872548 32.429643 31.488306 32.099335 38.267635 52.000000 78.000000 122.177709 123.705799 107.748539 115.981490 147.821031 150.442613 117.281453 162.043285 198.257989 194.745626 184.641451 169.356079 214.159111 261.455436 256.888595 231.750000 194.972379 242.371447 231.178103 186.035657 160.125336 156.293699 163.880535 177.000000 192.671119 208.008410 211.131126 208.323047 223.197469 232.441509 232.507725 235.500000 245.556957 255.527199 261.428974 274.819805 277.701352 279.114194 277.214055 276.143248 278.202910 280.996917 283.276782 286.177032 287.413951 287.388308 287.763411 | ||
79 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.761270 287.050380 285.819129 284.132581 282.693013 280.616315 278.357601 276.210236 273.927713 271.674914 268.767585 263.836309 263.302572 274.893508 280.666909 259.250000 251.191054 246.022473 218.108265 209.064228 204.289393 244.526310 262.765884 262.000000 258.168712 260.302108 264.098194 266.600076 264.214090 254.124256 262.759948 263.250000 249.110744 178.604223 125.384110 118.142875 111.064179 94.317839 86.538343 76.206117 62.272144 46.553119 34.899083 29.480754 27.526736 26.125001 34.271917 56.000000 83.000000 105.195909 99.808461 101.806184 110.083713 121.537474 131.203818 123.920508 127.521815 140.566696 165.155296 196.028410 200.937554 220.796494 244.563441 230.443901 204.000000 223.097009 200.890944 165.106130 169.671010 170.283603 163.642119 167.076745 180.000000 190.801925 203.661041 209.521306 209.805409 217.429704 224.416394 240.036827 249.750000 246.890247 248.093666 256.659815 272.915999 270.256546 271.674914 271.315492 271.856061 275.366911 279.436447 282.560338 285.546659 286.616540 286.986216 287.743071 | ||
80 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.776257 287.071767 285.915203 284.354063 282.321524 280.578254 278.460729 275.272413 271.905348 270.331711 270.628787 270.426407 279.653972 281.348944 277.333686 251.750000 243.940807 241.392599 218.786825 221.664305 234.473506 260.611575 270.709958 268.000000 265.626534 267.085265 267.683465 265.970667 266.196249 264.494382 257.711938 252.000000 191.554646 135.972045 117.087381 116.435768 112.816019 101.491253 80.128199 74.340091 59.426835 41.743420 33.925618 33.412605 31.488306 28.116446 26.280481 36.000000 50.000000 44.261211 59.979563 91.902257 116.964453 128.351729 134.089637 135.301744 137.784955 174.448884 180.398800 166.247133 188.987807 195.906307 185.843649 181.443439 166.500000 160.357451 137.978848 157.177493 169.041600 165.503242 167.033697 176.132671 183.000000 189.400030 198.009461 201.472210 206.840685 214.376182 223.799077 250.912198 261.750000 248.001321 248.093666 256.659815 257.246212 261.819100 266.818717 268.787536 271.856061 276.552874 280.882736 283.674806 285.001473 285.617375 286.904942 287.742000 | ||
81 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.788033 287.123098 286.270675 284.899250 282.480733 279.893170 277.584147 276.344210 278.056707 280.664044 279.314393 281.849242 280.335281 277.827797 257.334346 257.500000 264.297269 245.096499 221.501068 240.564419 259.425706 224.963149 252.018020 246.000000 242.720367 254.084214 260.512923 259.676571 264.874809 255.506939 215.885565 187.500000 134.776332 115.862527 109.620325 103.632468 107.560500 101.491253 79.212464 69.675028 48.994035 37.895661 35.872548 34.395568 31.488306 30.107890 32.274058 31.000000 26.000000 28.278340 66.949620 97.844613 109.100750 121.537474 142.747095 157.115781 185.368603 222.982829 187.572213 146.976895 162.527652 178.483176 175.386700 168.998877 153.000000 135.838543 153.188365 180.963403 183.518019 172.673784 169.294750 178.263478 187.500000 189.867329 203.661041 211.533581 207.211276 213.697621 222.255786 237.527126 246.500000 245.334742 247.506808 253.423600 256.074639 260.081978 263.512371 268.871801 274.066642 278.460729 281.720061 283.037967 283.502209 285.540516 286.964828 287.747353 | ||
82 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.876888 287.161596 286.251461 285.291103 283.409456 281.111098 277.945092 278.889727 283.533945 282.007247 274.227109 275.552038 263.302572 246.528711 250.667900 269.000000 256.210455 225.651027 219.804666 224.258438 228.034229 211.486305 198.745999 204.500000 229.402828 221.298955 190.600139 204.288534 248.356816 197.434235 135.117399 127.500000 118.442845 118.275669 115.428035 109.607341 109.312340 103.284606 84.706873 60.344901 41.406544 36.933721 34.899083 33.412605 31.488306 31.103613 36.269776 42.000000 39.000000 41.264423 83.876902 107.748539 105.168898 120.564009 178.338867 241.526618 246.947441 252.286343 237.786106 197.780250 159.966991 153.592989 164.125370 161.998811 154.500000 171.895760 176.002642 200.784995 191.070934 169.088513 165.337908 177.730776 188.000000 194.540313 208.008410 220.790042 233.152609 243.893565 232.132851 247.287074 262.500000 249.556825 244.181280 254.445563 257.539105 262.439500 267.025364 271.062696 274.602540 277.584147 279.664809 281.286661 283.604432 285.626982 286.994771 287.752706 | ||
83 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.861901 287.131653 286.030491 285.444437 284.364714 281.567820 278.821674 281.100308 285.219249 280.044104 265.417422 264.714989 255.637852 243.203184 245.334742 242.750000 231.113446 222.564444 219.126106 213.511314 219.582677 207.138936 192.671119 197.000000 195.842629 172.121065 154.747429 164.006324 163.123971 133.830797 121.415656 111.750000 112.220564 113.449385 116.257708 121.557089 123.327058 117.631433 103.937304 65.009964 39.509671 35.971781 34.899083 31.446680 29.507521 33.095058 38.267635 42.000000 58.000000 82.220531 84.872624 87.940687 106.151861 121.537474 131.203818 166.600145 212.425971 228.477238 250.339580 239.824405 167.648972 139.488550 148.842136 146.443109 175.500000 240.404473 200.199602 184.267002 175.965105 161.917971 163.076856 175.067268 185.500000 196.876805 200.183145 201.069755 233.523200 242.875724 231.206876 233.902003 242.250000 242.668164 245.550615 249.676404 256.221086 266.285983 278.080960 274.517569 272.257985 275.366911 278.675243 281.366266 283.706654 285.588553 286.990494 287.747353 | ||
84 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.790174 287.277091 286.597325 285.018510 283.170642 280.540194 281.915492 285.119546 283.365414 274.567967 263.432141 261.053824 255.978507 250.832336 241.334874 233.250000 227.488323 219.786519 213.358341 215.364266 209.923761 186.706301 195.942208 185.500000 160.151624 147.814752 147.576887 141.976991 132.070143 124.152013 127.184811 123.000000 116.109489 110.231862 109.620325 114.728662 117.195619 113.148049 118.589061 134.052904 85.034617 39.819540 30.031758 35.378531 41.392233 44.048004 37.268705 33.000000 48.000000 74.229095 71.928233 80.017546 103.202972 126.404799 140.823216 145.734544 158.311234 212.909746 252.132933 191.648811 137.774603 125.384110 127.123857 129.331836 147.000000 181.991781 169.780567 151.231015 161.488686 166.100787 172.686328 181.459687 187.000000 192.203821 191.488407 195.032932 210.546590 219.126106 220.712494 226.651756 234.500000 239.557155 243.985661 247.632479 255.195959 270.256546 280.664044 273.337856 270.717277 274.902838 278.637182 281.764290 283.859988 285.578945 286.943440 287.737718 | ||
85 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.747353 287.182984 286.482037 285.018510 282.772618 280.007351 282.998328 284.851597 277.214055 266.198777 260.702379 256.074639 256.148834 253.962244 238.890511 232.250000 226.372900 214.847987 207.929857 209.434819 209.521306 180.619985 181.923255 170.500000 151.628399 146.118963 148.174432 141.976991 136.034461 129.682747 148.097997 130.500000 116.887274 120.688811 127.873129 126.678409 119.823378 121.218139 143.313901 161.110273 98.312726 38.857601 31.978688 44.225198 47.334588 46.039449 41.264423 34.000000 41.000000 60.244083 69.936788 75.065582 76.662974 92.333522 122.546360 132.456435 121.923739 221.151359 254.822963 175.882252 136.067496 136.169858 135.167664 130.887406 131.250000 132.953966 142.126898 155.856053 171.559238 167.893423 173.251591 183.590493 185.500000 191.269224 198.878935 213.545855 216.846628 219.465386 223.799077 227.767179 233.250000 239.112726 244.768138 255.637852 265.593669 266.658223 269.711771 268.871801 270.851252 275.109093 278.675243 281.711220 283.894062 285.578945 286.922053 287.731295 | ||
86 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.732365 287.007604 285.924810 284.694805 282.321524 279.550628 279.852947 278.152867 270.809900 263.822341 260.702379 256.953319 254.956544 249.463001 239.112726 232.500000 230.834591 225.342368 212.340500 202.764190 207.106577 182.358932 167.437004 162.000000 158.020818 152.336857 149.967068 150.159315 144.623818 146.966290 185.597503 143.250000 123.887340 135.972045 141.977568 163.381205 194.276570 169.638680 124.999205 94.866371 62.272144 35.009841 36.846013 47.174086 47.334588 44.048004 40.265494 38.000000 53.000000 63.240871 68.941065 91.902257 105.168898 102.068173 103.307565 108.745526 107.928549 234.887381 258.409670 168.874893 179.598719 179.312849 141.602710 137.109687 139.500000 137.280832 142.126898 165.766849 174.076876 167.295877 170.425276 179.328881 189.000000 213.232250 240.178941 230.046503 225.370209 229.304514 231.824192 233.623147 238.250000 242.445949 246.333092 258.363086 263.543416 260.206058 263.822341 267.692088 271.923048 275.985674 279.017785 281.737755 284.234804 285.819129 286.973383 287.731295 | ||
87 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.730224 286.943440 285.598160 283.962210 281.817360 279.131966 276.088802 272.324972 268.619005 265.475514 262.067260 262.371843 256.659815 247.311189 240.446015 234.250000 236.690560 236.145408 218.447545 202.764190 197.447661 181.489459 168.371601 162.500000 162.282431 156.858962 152.357248 152.047543 148.588136 163.558491 194.251235 168.000000 134.776332 129.536999 137.829204 176.184506 216.174568 168.742003 89.285547 40.751634 36.664362 35.971781 36.846013 45.208160 50.305766 45.043727 34.271917 38.000000 64.000000 70.233377 71.928233 114.681288 156.282970 147.821031 111.965023 104.951780 117.258676 224.814298 218.955896 153.108335 205.205321 191.757943 131.950141 139.443043 141.750000 141.607698 149.040315 167.088289 165.894553 167.295877 170.990539 179.328881 203.500000 236.129874 248.004205 223.204771 224.629028 227.608112 227.811635 230.555735 236.500000 241.779304 245.941854 252.742292 252.706367 258.717097 267.541981 269.545923 272.324972 276.449747 279.246146 281.790825 284.541471 286.116957 287.063212 287.733436 | ||
88 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.732365 286.922053 285.511694 283.621469 281.870430 279.017785 275.263784 271.789074 268.703271 264.545604 260.702379 262.225397 258.703740 251.027955 242.001519 237.250000 236.132848 230.280901 216.411864 202.023009 191.008384 180.185248 184.259747 177.000000 165.478640 156.858962 152.357248 148.900496 147.927417 154.571049 165.405461 176.250000 139.443043 120.688811 135.340185 149.724351 133.838097 101.491253 86.538343 56.612850 46.148725 40.781480 32.952153 44.225198 57.238515 45.043727 28.278340 36.000000 60.000000 67.236589 86.864069 110.719717 141.538526 143.927170 119.660541 124.868944 134.052904 186.353437 149.911793 164.495294 210.326641 175.994157 128.732619 137.109687 132.000000 130.069388 149.040315 171.052607 164.006324 167.893423 172.121065 181.992389 210.500000 229.120397 205.834725 209.521306 226.852571 217.768985 213.613354 218.007231 226.500000 236.668362 244.572519 249.165423 253.438600 261.074619 268.988507 270.304309 272.324972 276.088802 279.170026 281.764290 284.302952 286.116957 287.093155 287.733436 | ||
89 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.729154 286.896387 285.511694 283.638506 281.552011 278.599122 274.851275 270.851252 266.849436 262.685784 259.089338 255.928193 254.104909 251.810432 245.779172 240.750000 234.180859 224.416394 212.679781 199.428876 194.630477 181.054722 199.680596 195.000000 170.805656 156.293699 152.954794 147.641676 143.302379 134.522139 148.097997 148.500000 142.554183 144.820233 146.125933 134.360390 109.312340 88.937779 86.538343 58.478875 44.251853 38.857601 32.952153 44.225198 57.238515 48.030894 30.276199 37.000000 54.000000 65.238730 89.851236 82.988723 84.526677 98.174312 110.041143 133.404872 133.119891 149.724044 142.738379 203.035769 245.322330 191.757943 127.928238 126.220696 128.250000 133.675110 146.274948 163.784690 157.712229 165.503242 173.251591 176.665373 190.000000 203.886282 196.270513 210.728671 221.664305 209.286978 207.748846 216.612952 228.000000 237.779436 243.594422 251.550002 259.882251 262.315420 266.302101 270.051514 273.530744 276.552874 279.208086 281.870430 283.979248 285.944025 287.080323 287.734506 | ||
90 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.724872 286.887832 285.530909 283.621469 281.074382 278.028219 274.593456 270.784264 266.765171 262.479138 257.476296 252.706367 252.401638 248.289285 245.556957 240.500000 231.392302 220.403836 211.661940 206.099504 201.069755 187.575775 180.521360 176.500000 166.011342 163.642119 164.308152 157.082819 153.213175 149.731657 140.165409 137.250000 154.998745 168.147274 170.186447 148.017244 111.064179 96.111193 78.296729 52.880799 39.509671 36.933721 31.978688 38.327420 58.228907 66.949620 50.254788 46.000000 60.000000 71.232307 64.958176 63.180871 79.611862 97.200847 108.117264 122.972071 126.588803 147.892575 152.601823 217.050488 241.908117 164.378737 105.405578 127.776266 132.750000 133.675110 138.670189 148.588136 154.565181 159.527790 168.164224 174.534567 179.000000 189.867329 194.096829 197.045206 201.652419 204.876334 211.452746 221.074643 230.500000 236.223932 241.442610 253.253273 260.760931 266.161903 271.881561 272.073878 273.999655 276.862256 279.055845 281.817360 284.047396 286.020884 287.182984 287.747353 | ||
91 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.719519 286.887832 285.521301 283.604432 281.100917 278.066279 274.696584 270.985226 267.102232 262.582461 256.855896 251.681241 249.335750 245.746234 241.334874 237.000000 232.228869 223.181760 211.322660 202.393600 192.618203 181.924195 172.577286 166.500000 172.936462 181.730538 185.222232 203.659124 231.838823 185.681426 214.443277 212.250000 233.555042 209.975071 171.845793 142.042370 109.312340 86.247749 60.897768 47.282723 41.406544 39.819540 38.792943 45.208160 57.238515 62.966731 56.248365 62.000000 67.000000 71.232307 66.949620 69.123227 83.543714 101.094708 111.965023 123.920508 143.383031 136.903757 152.601823 219.678248 220.569282 154.422662 123.906334 139.443043 133.500000 158.915162 153.188365 145.945257 153.306362 161.320426 167.598961 173.469164 180.000000 187.530836 188.010512 189.398564 197.205333 204.537054 211.761404 220.516932 230.500000 238.001651 240.855752 248.824769 262.957630 274.847510 272.811471 270.472840 273.061833 276.913820 279.626749 282.082709 284.711842 286.501252 287.191539 287.760199 | ||
92 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.720589 286.879277 285.511694 283.604432 281.127452 278.142399 274.748147 271.052214 267.270762 262.789108 257.352216 252.413474 246.780844 243.790041 243.334808 235.500000 227.209467 218.243228 205.215615 196.834743 191.813293 183.228406 174.913779 169.500000 171.338357 169.860013 170.283603 204.917943 257.606892 223.705220 254.827360 256.500000 260.777521 228.475827 164.378737 106.193128 76.027383 64.727509 50.824685 43.550672 46.148725 43.667299 39.766408 38.327420 39.411447 37.077947 37.268705 48.000000 52.000000 68.235518 79.894012 81.007938 83.543714 99.147777 113.888902 111.590835 125.655790 148.808309 225.232633 255.590964 211.180195 147.785279 136.776426 155.776530 144.750000 172.616905 155.953732 145.945257 163.376915 173.271329 172.121065 172.403760 176.000000 178.184868 183.228406 193.020658 200.911238 205.554895 212.687379 222.190065 231.500000 237.779436 242.225087 252.060983 269.401281 268.643505 263.615694 266.933702 272.391960 276.862256 280.273773 282.772618 285.308140 286.328319 287.063212 287.756988 | ||
93 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.721660 286.892110 285.521301 283.519246 281.100917 278.294640 275.005965 271.186188 267.102232 262.892431 258.096697 253.438600 247.632479 242.811945 238.890511 234.000000 237.805982 233.676142 210.983379 199.799466 188.593655 183.228406 175.848376 173.500000 174.001865 183.991590 187.612413 201.141486 243.071058 196.051552 202.183823 186.000000 154.220960 148.842136 120.406073 78.025866 64.640425 55.760742 52.656155 56.612850 48.994035 44.629239 40.739874 38.327420 43.373018 54.005229 64.239801 76.000000 40.000000 55.249435 98.812738 101.806184 87.475566 91.360057 106.193384 109.693962 110.727587 136.903757 235.992753 259.094643 195.816234 136.169858 126.319476 136.331902 146.250000 145.213420 141.435556 152.552455 215.617905 204.343677 177.208433 178.263478 183.500000 182.857852 187.141038 197.045206 203.134781 204.537054 209.909454 223.863199 238.250000 245.112527 247.311189 254.956544 265.154329 261.322779 260.929288 266.596641 272.257985 276.604438 280.235712 282.719548 284.541471 286.011277 287.054657 287.801950 | ||
94 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.723801 286.892110 285.521301 283.842951 281.525476 278.561062 275.521602 271.923048 267.776353 263.822341 259.089338 253.585047 250.528040 244.963757 236.001717 239.000000 255.095033 254.664905 229.983074 211.658362 184.166652 183.228406 176.315674 174.500000 178.263478 191.905274 206.136313 208.064991 193.517078 160.793124 161.799740 157.500000 111.442779 93.339867 80.581773 66.929672 63.764505 55.760742 56.319094 57.545863 38.561234 31.162082 45.607199 72.731122 84.969509 77.902567 70.233377 58.000000 29.000000 57.247294 102.795628 108.738932 97.305195 93.306987 95.612047 103.054908 113.526625 125.914939 183.088830 205.663529 197.523341 160.230372 122.297573 121.553985 140.250000 128.627100 133.139456 184.927722 209.323810 179.246781 160.250540 170.272954 181.500000 186.128941 187.575775 195.032932 198.687695 206.572736 215.156645 229.998024 239.750000 240.446015 243.790041 249.846731 260.321591 261.198699 261.549228 266.933702 272.793883 276.604438 279.474508 282.268454 284.711842 286.933583 287.563688 287.907934 | ||
95 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.722731 286.887832 285.550123 284.047396 281.817360 278.827484 275.882547 272.726896 268.703271 264.545604 260.081978 254.610173 251.039021 243.007564 235.112858 249.250000 258.162445 246.022473 226.929552 204.246552 186.178926 185.402091 181.923255 180.500000 181.459687 180.034749 190.002594 197.365029 161.802531 137.978848 139.444265 160.500000 123.887340 83.687299 66.477334 64.369012 62.888585 56.657419 55.403359 60.344901 59.426835 56.172516 78.705011 106.151861 99.825398 67.945343 51.253718 33.000000 33.000000 60.244083 83.876902 97.844613 98.288158 93.306987 91.764288 101.158035 123.789764 130.493613 157.085206 184.641451 179.598719 150.274297 125.515096 119.998415 126.000000 127.905955 128.991405 194.177798 178.482743 152.954794 150.641068 162.815132 174.000000 177.717569 184.532617 193.825568 198.687695 208.947698 217.317253 227.767179 233.500000 234.668428 240.855752 245.929208 259.150018 263.556221 263.305724 267.692088 273.061833 276.552874 279.093905 282.321524 286.159995 287.615706 287.858840 287.926133 | ||
96 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.722731 286.917775 285.636589 284.013322 281.896965 278.941664 276.037238 273.262794 269.545923 264.648927 259.957898 255.781746 248.654442 246.724331 251.334544 267.500000 251.748765 220.403836 210.644099 193.499428 191.008384 188.010512 187.998135 184.000000 177.730776 178.904222 182.234507 173.447467 153.873894 137.978848 140.165409 156.750000 129.331836 86.100441 68.136679 66.929672 62.012665 56.657419 50.824685 65.942977 87.879926 83.106830 86.492732 88.458529 69.123227 44.048004 37.268705 34.000000 43.000000 59.245153 73.919677 85.959901 89.441492 95.253917 111.003083 120.126762 128.454828 153.386983 198.332333 230.189286 162.527652 112.109344 127.928238 151.887605 155.250000 146.655708 133.139456 168.409728 162.118095 148.771977 148.380015 156.955415 167.000000 173.979182 185.836828 195.435387 202.393600 207.590577 212.687379 220.516932 228.000000 234.446213 241.442610 248.995096 262.371843 262.563580 264.648927 269.124597 272.927858 275.985674 279.284206 283.382921 287.301479 287.663742 287.666350 287.839419 | ||
97 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.733436 286.999049 285.723056 284.047396 282.029640 279.360327 276.449747 273.999655 270.725635 265.165544 259.213418 254.463726 248.824769 262.960731 277.111471 275.250000 241.431106 209.909454 207.929857 199.058285 191.008384 186.271564 187.998135 181.500000 189.982912 219.603165 213.306855 162.747505 147.266697 149.731657 149.540286 139.500000 117.665059 86.100441 71.455371 69.490332 61.136745 56.657419 49.908950 60.344901 73.653380 61.944155 51.447989 45.208160 41.392233 40.065115 40.265494 39.000000 44.000000 62.241942 79.894012 80.017546 78.628900 98.174312 130.241878 141.940799 126.588803 191.847845 248.546227 252.087284 156.552778 95.515885 127.123857 184.554580 199.500000 163.242028 135.213481 138.016621 150.159315 145.186707 145.553700 154.824609 164.000000 179.119465 188.010512 193.423113 201.652419 205.554895 209.600796 220.516932 231.500000 236.446147 241.638229 251.550002 262.811183 259.337498 264.132311 269.630188 272.793883 275.366911 279.550628 284.576993 287.182220 287.365914 287.264258 287.767693 | ||
98 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.751635 287.058935 285.732663 284.064433 282.162314 279.969291 277.171638 274.870490 271.652552 265.578837 259.213418 252.852814 258.874067 277.240939 272.667173 247.750000 222.468921 211.452746 209.286978 200.911238 193.423113 186.706301 192.671119 202.500000 242.720367 265.954739 222.270032 158.341638 149.909576 140.744214 126.463667 109.500000 99.776002 86.904821 77.263081 68.636779 60.260825 57.554096 52.656155 46.349710 41.406544 38.857601 44.633734 52.088901 49.315374 46.039449 52.252647 45.000000 49.000000 66.237660 74.915400 74.075190 71.748159 81.625406 111.003083 131.507999 116.325663 224.814298 252.132933 198.656170 117.289322 87.219156 114.253766 147.220894 148.500000 130.790533 117.238596 120.177188 138.829943 148.771977 160.815803 168.674850 167.000000 174.913779 184.532617 188.593655 197.575924 206.572736 213.613354 229.161457 240.500000 240.223800 242.029468 249.165423 258.124892 260.950539 263.719017 268.197679 272.525934 275.779420 279.778990 284.232039 286.091846 286.462822 287.050380 287.765552 | ||
99 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.752706 287.020437 285.857559 284.030359 281.950035 279.893170 277.481020 274.401578 269.967249 264.545604 258.965257 254.170833 276.247431 278.219036 242.001519 221.500000 217.449519 211.452746 202.501373 196.464152 213.143400 209.312620 237.064471 260.500000 265.626534 228.647375 174.466419 148.900496 144.623818 127.608722 119.252223 114.750000 105.220498 91.731106 81.411446 70.343885 60.260825 60.244126 58.150564 51.947786 52.787780 47.515058 55.341850 65.850382 64.171263 56.992396 65.238730 82.000000 78.000000 78.224813 80.889734 77.046368 74.697048 83.572336 95.612047 93.570544 98.598422 207.415337 231.509370 139.969536 86.561400 83.070792 93.339867 99.776002 96.750000 96.896749 106.868470 114.891430 124.353524 149.967068 167.033697 166.011342 164.000000 172.109988 188.445249 197.447661 196.834743 210.304819 234.293459 242.825384 241.500000 241.334874 241.833849 254.956544 268.376154 268.519425 264.855574 267.355028 272.458947 276.656002 279.778990 282.162314 284.268878 285.982454 286.969106 287.736648 | ||
100 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.748423 287.041824 285.847951 284.115544 282.109244 279.626749 276.965383 273.329782 269.124597 264.958897 258.965257 255.488853 269.775001 257.483391 235.335073 224.000000 219.122653 212.996037 203.858494 195.722971 210.326216 215.833674 257.158303 251.000000 204.898556 168.729487 150.564613 135.682896 130.087984 124.152013 122.857945 135.000000 103.664927 82.882918 75.603736 71.197439 70.771864 71.900922 69.139381 90.201307 92.622108 65.791914 54.368384 54.054827 55.257730 68.941065 125.174498 229.000000 209.000000 112.188415 91.842681 91.902257 87.475566 78.705011 73.487432 81.240871 97.665409 135.072287 198.332333 149.604655 89.122060 73.944390 82.882918 88.887010 93.000000 99.781326 108.251154 119.516468 128.129981 135.625984 145.553700 155.890012 164.000000 173.044585 188.879986 199.057481 194.240609 225.911711 260.220754 247.287074 229.500000 236.446147 241.051371 254.786217 265.300776 264.300702 264.545604 268.197679 272.458947 276.759129 280.273773 282.374594 284.268878 285.944025 287.033269 287.746282 | ||
101 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.749494 287.011881 285.771093 284.251841 282.135779 279.550628 277.738838 274.468566 269.208862 264.545604 259.337498 253.731493 249.165423 241.246991 235.112858 226.250000 217.449519 211.144087 204.537054 198.317104 200.667300 201.487356 202.484386 197.000000 192.113718 170.425276 141.601436 130.018210 128.766544 123.460672 125.021378 135.750000 99.776002 79.665395 74.774063 71.197439 73.399624 75.487629 70.970851 86.469256 90.725235 80.221010 63.129570 49.140012 59.219300 124.701521 223.069585 253.000000 247.000000 145.153087 88.855514 80.017546 92.390380 91.360057 78.297131 84.086180 93.000345 101.190100 129.288229 108.436420 84.854293 77.263081 78.056634 84.220299 93.000000 102.665903 112.399204 122.159347 126.871162 143.394071 159.685277 161.217028 159.500000 169.306197 181.054722 190.203474 195.352381 211.661940 225.651027 228.882601 230.750000 236.001717 240.268894 247.462152 254.756620 259.833818 264.752251 268.366210 271.387150 275.779420 279.702869 281.790825 284.354063 285.886381 287.088878 287.782681 | ||
102 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.749494 286.999049 285.828737 284.132581 281.631616 279.093905 280.368583 282.440054 276.961260 265.785484 261.446859 257.392659 246.951171 238.508321 233.112924 226.000000 218.564942 212.687379 206.233456 197.205333 193.020658 189.314723 180.054061 179.000000 177.730776 163.076856 149.369523 145.753448 133.391583 129.682747 118.531079 114.000000 98.220432 86.100441 78.922427 74.611652 70.771864 69.210892 69.139381 66.875990 64.169016 63.868034 63.129570 57.986678 78.036760 154.573194 249.041751 254.000000 250.000000 140.158440 85.868347 79.027153 78.628900 75.784616 80.221010 86.931489 82.737206 88.369812 99.697899 97.049461 83.147186 75.603736 78.056634 84.998085 92.250000 101.223615 112.399204 122.820067 127.500572 140.406345 152.336857 159.618923 169.000000 179.586763 180.619985 188.593655 197.575924 205.554895 212.687379 220.516932 229.000000 236.668362 241.833849 246.440189 252.267027 258.841177 263.099078 269.377392 276.076261 279.337310 280.958857 283.170642 284.473323 285.992062 287.118821 287.791245 | ||
103 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.753776 287.046102 285.972847 285.103695 283.223712 282.785748 284.493673 285.789419 278.983624 265.268867 264.300702 258.564232 247.121498 239.290798 231.557420 225.500000 219.959220 213.304695 205.894175 197.946514 191.410839 187.575775 180.988658 174.000000 167.609446 163.642119 164.905697 160.859276 143.302379 148.348973 125.021378 108.750000 95.109291 86.904821 82.241119 81.440079 79.531063 69.210892 59.982033 69.675028 67.014326 82.144890 92.333522 88.458529 100.815791 152.581749 218.074938 253.000000 249.000000 105.195909 55.996674 61.200085 81.577788 91.360057 81.182950 78.395562 81.804193 92.948486 96.111193 93.545781 91.682720 83.900465 79.665395 87.331440 97.500000 108.435058 117.929938 124.141506 130.647619 137.418619 143.292647 162.282431 194.500000 209.961161 185.836828 189.398564 199.428876 206.233456 212.996037 221.074643 228.250000 234.223998 241.442610 249.676404 253.438600 257.972617 261.859198 270.304309 278.621778 281.038910 281.796182 284.072830 284.285915 286.770258 287.392585 287.799809 | ||
104 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.754847 287.123098 286.635755 286.619996 285.930275 286.287289 284.803055 280.296461 272.073878 262.789108 260.206058 253.145707 245.418227 240.464514 233.779568 226.000000 218.564942 212.378720 206.572736 200.911238 194.630477 191.923144 186.128941 173.000000 163.880535 161.946330 170.283603 174.706286 155.856053 146.966290 130.790533 109.500000 94.331506 87.709202 83.070792 79.732973 83.034743 93.421163 110.347448 94.866371 97.364289 112.926963 149.767961 172.993339 164.200920 170.504753 231.061021 247.000000 181.000000 63.240871 35.086503 39.411447 61.918530 78.705011 70.601613 68.911198 77.139129 83.791138 79.074336 89.166182 103.632468 93.856540 81.274156 89.664795 102.000000 112.040780 118.621280 122.820067 126.241753 133.235803 142.162121 161.749729 190.000000 203.886282 187.141038 191.008384 200.540647 205.894175 215.156645 224.978622 229.500000 233.335139 243.203184 251.890656 254.317280 257.972617 262.995754 269.208862 274.535553 277.584147 280.159592 282.799153 284.115544 286.731829 287.396863 287.810515 | ||
105 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.750565 287.165874 287.404344 287.386665 286.726323 284.422338 279.285747 272.324972 266.259580 261.445904 255.118774 250.070328 245.588554 241.051371 237.779436 230.750000 221.074643 213.922012 209.286978 203.875962 198.252571 195.401039 189.867329 178.000000 166.011342 160.815803 166.698332 171.559238 157.177493 135.213481 121.415656 103.500000 94.331506 92.535486 86.389483 79.732973 83.910662 113.148049 172.617414 164.842323 177.032945 162.947830 208.175865 254.579261 202.826233 148.598860 226.066373 193.000000 80.000000 45.260141 39.069392 34.459484 38.327420 46.580664 55.210577 66.065889 70.608040 80.128199 94.317839 92.669861 97.657594 92.197194 82.882918 90.442580 101.250000 108.435058 113.781888 121.498627 131.906438 141.003890 148.945278 159.618923 173.000000 183.792449 188.445249 193.825568 201.652419 206.233456 216.082620 225.536333 230.000000 236.223932 246.919950 250.698367 253.731493 258.593017 263.719017 267.355028 270.650290 274.593456 278.523002 281.498941 284.013322 285.944025 287.131653 287.789104 | ||
106 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.753776 287.153041 287.500417 287.369628 285.479181 280.045411 273.974693 270.248366 267.186497 262.065844 257.352216 254.610173 249.846731 243.594422 241.779304 237.500000 228.603746 219.477861 213.019061 207.581866 200.667300 199.313672 195.007611 184.000000 171.871059 168.164224 165.503242 156.453410 149.909576 141.435556 117.809935 99.000000 94.331506 102.188055 102.153269 92.536274 87.414342 105.077959 181.774762 244.148403 234.887563 187.958264 204.282004 229.022225 149.345030 63.962453 121.178780 82.000000 35.000000 47.258000 45.043727 41.392233 43.242235 46.580664 54.248637 71.756507 75.273104 92.948486 130.184906 95.297621 81.440079 85.559811 86.100441 89.664795 99.000000 105.550481 114.473229 129.427264 156.453410 165.503242 165.337908 169.740253 180.000000 190.334627 195.401039 199.862390 207.952457 210.983379 216.082620 223.026632 230.500000 238.890511 246.333092 247.973133 252.559921 257.972617 262.479138 266.680906 271.186188 275.624729 279.093905 281.658150 283.859988 285.578945 286.994771 287.749494 | ||
107 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.769834 287.157319 286.923976 287.250368 285.001552 279.360327 274.284075 270.851252 266.933702 263.202401 262.191340 258.271338 257.170796 252.006051 245.779172 240.750000 233.065436 224.416394 218.447545 212.399543 205.094303 206.704199 201.549789 186.500000 176.665373 175.512644 180.441871 184.776838 174.356206 157.336416 139.444265 107.250000 93.553721 111.036243 119.576400 103.632468 85.662502 100.594576 171.701680 223.622124 156.167344 115.812782 110.829358 103.202972 67.142441 25.129278 21.285834 25.000000 37.000000 37.268705 39.069392 41.392233 44.225198 51.447989 66.753854 83.137744 79.005155 82.875403 101.491253 92.669861 88.268507 97.175231 103.796816 100.553787 97.500000 104.829336 124.152013 151.231015 175.335695 179.246781 185.122117 191.581017 192.500000 198.745999 202.791567 210.326216 220.552533 218.786825 219.169203 225.815189 233.000000 237.112792 240.855752 246.440189 252.120581 257.228136 262.375814 266.596641 271.521125 276.295056 279.550628 281.684685 283.808877 285.646197 286.999049 287.749494 | ||
108 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.774116 287.170152 286.213031 287.028886 285.797600 279.702869 274.129384 270.516315 266.849436 264.648927 263.183981 256.221086 261.428974 256.114056 247.334676 244.250000 236.690560 226.268343 221.840348 216.476038 209.118852 211.486305 200.147894 187.500000 185.188598 191.340011 224.062668 266.600076 241.088899 153.879707 153.146007 123.750000 101.331572 101.383674 100.493923 94.243380 96.173541 109.561343 126.830674 110.727587 88.828362 80.221010 39.766408 18.668162 31.488306 40.065115 36.269776 32.000000 33.000000 33.272987 33.095058 33.469091 35.378531 48.527594 73.487432 87.879926 76.206117 76.465260 91.627809 112.816019 104.486021 137.829204 174.582319 147.220894 108.000000 117.088790 139.361531 174.356206 181.000381 172.076239 189.078958 204.898556 202.500000 211.363057 215.833674 216.363039 227.964343 226.590272 226.885660 229.998024 233.000000 236.446147 241.246991 247.291825 253.292154 258.468937 263.409047 267.270762 271.655099 275.727856 278.827484 281.498941 283.945173 285.790307 287.028992 287.762340 | ||
109 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.771975 287.153041 286.107350 285.836290 284.789273 279.322267 274.180947 270.583302 266.596641 262.995754 261.570939 264.275649 260.917992 250.636716 241.779304 238.000000 238.084838 236.454067 229.643794 220.181943 212.338490 208.443147 202.951685 196.000000 176.665373 191.340011 240.196387 255.900114 200.784995 128.300064 132.232821 112.500000 112.998349 117.471289 108.790652 96.804041 92.669861 95.214516 115.841856 105.129510 86.931489 68.677733 39.766408 29.480754 35.449877 36.082225 34.271917 31.000000 31.000000 37.268705 37.077947 34.459484 38.327420 52.421454 73.487432 89.776799 89.268294 87.454077 107.767989 124.202978 97.657594 166.867755 256.629152 225.777191 156.750000 163.963173 176.693984 189.552760 179.741562 170.881148 195.862115 214.487184 210.000000 219.774428 220.181043 217.972858 217.217219 240.500763 244.479182 235.296281 235.250000 245.779172 252.201671 251.550002 253.292154 261.198699 264.442281 269.208862 273.061833 275.882547 278.941664 281.790825 283.996285 285.867166 287.131653 287.789104 | ||
110 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.777328 287.161596 286.107350 285.461474 284.576993 279.208086 274.180947 270.583302 266.259580 262.169168 259.709738 262.371843 256.659815 252.397290 248.890181 243.000000 238.363693 235.219433 229.304514 221.664305 215.960584 216.703148 209.961161 202.000000 180.926986 185.687380 219.282306 214.988495 149.909576 143.509581 145.934564 116.250000 112.998349 119.884431 113.768689 103.632468 97.925381 92.524486 96.611426 87.402269 85.034617 70.601613 41.713339 31.446680 34.459484 33.095058 31.275128 27.000000 30.000000 43.262282 42.056560 42.382625 51.105938 61.182640 70.601613 85.034617 95.799383 103.021569 105.974636 116.319699 107.046681 182.631541 261.455436 232.777257 155.250000 163.963173 182.224717 167.749009 176.594515 196.575590 228.082112 242.187665 230.000000 226.316607 228.441044 222.399861 221.293714 233.715157 260.529413 270.989805 269.250000 272.222743 269.807406 254.956544 267.351028 271.373267 267.438657 270.304309 273.798693 276.346620 279.664809 282.613408 284.728879 286.184209 287.285646 287.829784 | ||
111 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.770905 287.127376 286.251461 285.001473 283.170642 278.941664 274.541893 270.583302 266.343845 261.962521 256.979976 254.756620 251.720329 249.854239 249.112395 244.000000 237.248271 233.676142 230.661635 224.258438 218.375313 212.790516 206.690072 195.500000 189.982912 183.991590 197.173136 208.694400 159.820372 135.213481 128.627100 113.250000 116.109489 117.471289 110.449998 106.193128 110.188260 114.044726 110.347448 88.335282 85.034617 58.096396 36.846013 33.412605 34.459484 32.099335 31.275128 38.000000 42.000000 43.262282 47.035172 64.171263 73.714085 65.076500 69.639673 104.951780 116.325663 122.252000 122.114816 114.567859 130.946176 205.862382 261.455436 245.221819 180.750000 115.646502 134.522139 146.605977 189.812114 221.074942 226.951586 228.337425 234.500000 240.335560 251.047363 234.875961 222.034895 249.661330 272.875744 276.845774 269.250000 267.556231 272.154838 259.896030 277.895184 276.584631 268.471891 271.062696 274.669528 277.481020 281.187218 283.780945 285.512585 286.501252 287.272813 287.842631 | ||
112 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.782681 287.135931 286.116957 284.865176 282.480733 278.599122 274.490329 270.516315 266.259580 261.549228 256.359575 253.438600 252.912619 250.049859 243.334808 240.250000 238.363693 238.614675 240.840043 235.376152 225.619500 208.008410 202.951685 196.500000 188.384807 174.382118 192.990319 213.729676 147.266697 120.695305 112.040780 112.500000 123.109555 122.297573 112.109344 105.339574 112.816019 127.494876 112.178917 98.598422 81.240871 46.553119 34.899083 35.378531 31.488306 30.107890 51.253718 85.000000 52.000000 48.256929 59.979563 76.055975 81.577788 78.705011 85.992649 113.487708 145.249057 147.892575 139.151673 145.225056 152.285011 211.670093 261.455436 236.666182 151.500000 96.896749 113.090546 128.105825 165.265143 198.965771 214.515798 228.337425 249.000000 262.298586 261.046312 234.473506 228.334933 263.232540 277.814277 270.989805 264.000000 268.222875 271.372361 259.725703 270.719300 267.154544 265.268867 270.557105 275.406388 278.821674 282.062604 284.285109 285.665919 286.722221 287.358365 287.864042 | ||
113 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.794457 287.127376 286.107350 285.546659 282.507268 278.294640 274.335638 270.516315 266.259580 261.342581 257.476296 256.660426 254.445563 248.876143 248.890181 256.750000 251.748765 239.849308 237.786520 233.152609 227.229319 212.355779 206.222774 197.000000 186.786703 177.773696 190.600139 193.588572 132.730863 122.769330 122.136801 120.000000 123.109555 118.275669 130.362148 163.381205 188.145131 175.018740 105.768774 98.598422 69.859635 39.819540 33.925618 35.378531 30.497914 32.099335 57.247294 85.000000 62.000000 64.239801 69.936788 75.065582 102.220009 150.741426 180.262746 171.342326 170.440400 172.617414 165.155296 172.378573 177.038059 222.455840 261.455436 220.332695 108.750000 105.550481 120.003963 130.087984 154.565181 181.039416 209.993693 233.131739 252.000000 271.177256 261.481049 228.034229 230.929066 265.946783 277.814277 273.778362 272.500000 274.222677 267.068736 256.830142 263.104076 260.206058 264.028987 272.410939 277.282032 280.059201 282.367085 283.621736 285.342214 286.760651 287.426806 287.877959 | ||
114 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.791245 287.153041 286.664577 285.648882 281.976570 278.104339 274.387202 270.516315 266.006784 261.755874 261.446859 264.422096 257.170796 252.592909 260.667569 267.750000 255.652744 238.306016 232.018756 221.664305 218.777768 213.225253 209.961161 199.000000 196.908032 189.644221 179.246781 168.412191 143.963098 135.904822 134.396254 125.250000 119.998415 107.014339 146.955606 222.276389 259.094643 229.716016 150.639779 112.593612 58.478398 39.819540 35.872548 35.378531 35.449877 40.065115 54.250506 65.000000 71.000000 72.231236 72.923955 90.911865 158.248895 230.565561 255.294048 237.732872 193.765717 206.499602 208.195776 187.269211 211.180195 249.835046 242.954680 173.665588 99.000000 112.761924 131.065430 150.570296 165.894553 183.429597 207.732640 227.804723 241.000000 253.419916 246.699994 228.436684 235.005562 257.464776 268.245870 273.220650 278.500000 277.111471 268.242452 266.027805 267.497475 261.074619 270.538357 279.067889 280.497423 281.193601 282.861868 283.648271 285.342214 286.693399 287.533745 287.902581 | ||
115 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.792316 287.392585 287.337092 284.609620 281.127452 278.066279 274.593456 270.449328 265.753989 262.685784 265.665583 269.254834 261.599301 263.351970 262.223074 252.750000 242.825384 241.083941 237.107960 217.958400 209.521306 206.269462 205.288177 199.000000 203.300451 194.731589 173.868874 162.118095 155.856053 142.818240 136.559688 129.000000 122.331770 108.623101 140.318222 204.351768 230.189286 204.609070 184.521967 119.124701 50.890907 42.705360 42.686804 38.327420 41.392233 50.022339 60.244083 77.000000 84.000000 83.219460 86.864069 130.527570 210.345930 255.875653 256.255988 248.165672 209.626933 206.499602 206.402423 186.393291 218.862175 236.560280 180.212984 113.776134 111.000000 113.483068 137.978848 166.427569 169.671010 184.027142 203.775799 220.346901 230.500000 228.185800 225.397886 237.290690 242.417371 241.179323 243.861865 255.095033 269.000000 273.111603 269.611787 279.994627 271.597980 262.067260 276.531110 282.269967 281.234283 281.451419 283.052170 284.338179 285.563697 286.895154 287.751901 287.920780 | ||
116 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.840490 287.751901 287.173767 283.962210 281.100917 278.104339 274.696584 270.516315 266.006784 263.409047 263.556221 260.468037 259.896030 264.525686 253.112263 243.000000 241.988817 241.701257 232.358036 216.105447 208.313942 212.355779 202.017088 189.000000 197.440734 207.167377 188.209958 157.082819 147.927417 143.509581 150.261430 140.250000 123.109555 119.884431 132.021493 161.674098 176.758172 139.151673 111.263182 63.143939 38.561234 43.667299 46.580664 43.242235 45.353803 56.992396 67.236589 79.000000 110.000000 128.171286 129.680134 170.143276 229.022225 255.875653 256.255988 246.268800 192.832704 132.325083 123.908169 147.852815 163.381205 136.999531 113.449385 122.331770 122.250000 127.905955 152.497024 184.267002 191.700343 188.209958 198.688431 211.290975 215.000000 221.643622 224.093675 244.132423 237.599695 235.411559 230.898217 238.642549 253.500000 255.778842 252.592909 269.604674 263.836309 263.183981 271.158297 275.865812 278.353829 280.471710 282.214844 283.754410 285.342214 287.385129 287.807509 287.880100 | ||
117 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.948614 287.734791 286.049706 283.689617 281.153987 278.218520 274.799711 270.717277 266.343845 262.789108 260.081978 255.635299 256.148834 254.549102 237.557221 238.500000 243.104240 233.676142 222.518908 219.070171 222.802316 238.874730 234.260680 212.000000 221.945006 234.300006 207.928948 160.859276 139.998780 137.978848 150.261430 138.750000 121.553985 119.884431 161.889718 216.301515 241.576245 219.852573 105.768774 37.019583 38.561234 41.743420 42.686804 49.140012 56.248122 66.949620 88.214108 107.000000 143.000000 169.127394 176.479088 225.605264 255.562224 255.875653 256.255988 239.629745 156.445209 121.336265 118.528109 118.071539 102.778914 99.664250 121.493192 136.331902 135.750000 181.991781 197.434235 248.356816 252.753067 195.380500 185.687380 205.431257 204.500000 217.437936 225.397886 232.461232 224.258438 229.983074 234.910775 239.757972 243.750000 247.112461 250.636716 251.209348 263.689863 266.782304 267.955274 278.815094 281.971143 280.884219 282.481266 284.311644 286.211106 287.289055 287.615019 287.866183 | ||
118 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.959320 287.717680 285.847951 283.621469 281.047847 278.142399 274.851275 270.918239 266.512376 262.789108 260.702379 258.857125 256.830142 255.918437 246.001387 245.000000 240.036827 230.589559 236.768680 256.499809 269.084623 270.175787 268.373466 252.000000 224.608514 232.604217 241.391477 190.441524 130.087984 135.904822 138.001976 133.500000 121.553985 151.255279 216.648130 258.125631 258.218723 232.406046 118.589061 40.751634 46.148725 50.400878 44.633734 58.969641 90.911865 111.757130 115.185203 123.000000 136.000000 180.115618 222.282320 248.384294 255.562224 255.875653 256.255988 224.454763 102.330472 89.285547 122.114816 106.684580 103.632468 124.554437 131.950141 143.331968 205.500000 254.827360 256.198281 233.820982 206.176762 192.392774 225.255796 245.383875 223.000000 214.634146 214.529463 213.948310 214.993676 223.536749 233.058825 239.479116 245.750000 255.334412 262.373874 256.830142 261.053824 263.928461 269.918417 279.742011 282.440054 281.451419 283.661133 286.726323 286.926664 287.077693 287.730513 287.950755 | ||
119 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.914357 287.739068 286.510859 284.098507 281.074382 278.066279 275.366911 271.454137 266.596641 262.892431 261.074619 261.346717 259.214721 254.157864 246.668032 242.000000 233.902003 236.145408 258.482617 273.176381 274.316535 273.218945 260.896691 212.000000 179.861582 216.211587 230.038119 165.894553 136.695181 141.435556 149.540286 147.000000 123.887340 134.363284 207.521728 259.832738 239.824405 160.671913 70.055116 43.550672 48.045598 51.362818 47.554129 55.037790 81.007938 105.782795 113.187344 129.000000 209.000000 204.089925 231.243821 251.355472 255.562224 255.875653 240.864951 175.136072 86.469256 85.622608 122.114816 100.553141 95.950487 124.554437 133.558903 157.332100 252.000000 263.481092 263.803040 230.517383 197.994438 203.148587 219.037902 214.487184 203.500000 220.709025 251.916837 213.143400 222.034895 240.161482 250.652348 249.796775 254.250000 268.445090 272.154838 257.511450 259.735804 264.424782 268.161921 275.781547 283.042940 284.029601 283.356651 285.373041 285.802216 287.471595 287.837452 287.951826 | ||
120 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.949685 287.816065 286.972013 283.928136 281.127452 278.294640 275.624729 271.990036 267.270762 263.615694 262.811740 263.250523 258.192759 249.854239 243.557023 240.000000 232.228869 242.318574 272.053827 275.770514 274.316535 268.871576 220.241727 183.000000 168.142148 187.383169 186.417323 148.900496 144.623818 144.892265 156.751729 156.000000 128.554051 114.253766 185.120559 235.933243 158.363854 62.934156 52.656155 51.014774 51.839344 45.591179 51.447989 69.782233 93.883043 107.774240 104.196979 130.000000 201.000000 229.063162 247.175380 254.326650 255.562224 255.875653 225.473915 126.765817 76.206117 86.538343 94.317839 81.282903 87.414953 110.449998 121.493192 138.665258 201.750000 246.173628 237.532055 202.767154 169.671010 192.392774 230.343164 208.094765 167.000000 202.951685 247.569468 225.619500 229.817295 249.322050 255.590880 247.844786 246.000000 254.889982 260.026442 258.533413 259.442911 265.665583 268.678537 273.000795 279.157677 281.296728 281.187218 283.329851 285.086658 286.741436 287.307034 287.815867 | ||
121 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.949685 287.542300 286.203424 283.706654 281.313196 279.017785 275.985674 272.592921 268.787536 265.062221 264.176622 262.371843 255.637852 251.027955 246.890247 239.250000 235.853993 252.504297 276.803751 275.770514 273.511626 258.437891 193.605716 172.500000 171.871059 178.338959 169.088513 141.347581 138.016621 143.509581 146.655708 150.750000 132.442977 125.515096 189.268924 210.326641 113.691939 41.413916 49.908950 52.880799 50.890907 49.438938 64.103035 85.509640 114.681288 131.671578 109.191626 123.000000 183.000000 242.049245 255.141160 255.317043 255.562224 250.034862 191.806023 83.137744 73.407079 81.959669 95.214516 101.429061 102.778914 102.982942 107.014339 121.553985 151.500000 179.828348 174.619959 166.427569 150.788724 172.673784 202.645272 188.917509 162.000000 186.596240 212.355779 218.375313 218.328990 225.911711 233.058825 240.594539 247.000000 249.112395 251.614813 259.896030 263.104076 265.541503 269.195154 273.422121 276.009274 277.996656 280.502134 282.878757 284.916287 286.011277 287.071767 287.758058 | ||
122 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.895087 287.217205 285.569338 283.621469 281.207057 279.017785 276.552874 273.731706 270.135779 268.885184 272.986308 264.275649 255.637852 254.353483 249.779040 242.000000 241.709961 258.368805 276.803751 271.323429 245.339787 217.137885 178.184868 171.000000 170.272954 163.076856 149.369523 140.718172 150.570296 149.731657 141.607698 141.000000 134.776332 139.993949 204.203036 217.155069 118.947459 53.070712 48.993216 53.813812 52.787780 61.944155 79.678476 89.441492 108.738932 129.680134 121.178780 149.000000 194.000000 205.088855 242.196768 255.317043 255.562224 216.937050 126.394119 73.653380 72.474066 94.779956 121.218139 122.451138 113.875108 107.960979 108.623101 116.109489 129.750000 143.049987 154.571049 147.266697 144.494629 157.137610 165.903171 167.076745 175.000000 193.138418 205.399988 208.313942 209.064228 217.090424 225.651027 238.642549 247.500000 247.334676 249.854239 261.088319 265.740115 266.410063 270.538357 273.927713 274.602540 276.965383 281.415580 284.311644 285.171844 285.828737 287.063212 287.756988 | ||
123 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.811585 287.058935 285.569338 283.621469 281.021312 278.484942 276.552874 273.731706 269.714453 270.331711 276.832791 264.861436 257.681778 255.722818 248.445751 241.000000 246.729363 264.541970 276.803751 265.023390 206.301668 178.881037 169.773496 169.000000 161.749729 145.553700 136.223529 155.824000 186.909881 158.719099 145.934564 136.500000 132.442977 142.407091 208.351401 223.983496 124.202978 50.380682 50.824685 58.478875 60.375271 72.525492 87.466197 96.322232 106.758147 110.761407 113.187344 183.000000 195.000000 170.126324 230.248099 255.317043 224.107411 142.953705 77.335191 78.395562 70.608040 110.347448 122.114816 109.312340 105.339574 112.109344 116.666908 115.331704 127.500000 170.453472 178.076667 147.927417 148.271086 163.113061 159.120014 161.217028 186.000000 202.017088 207.138936 203.484484 211.658362 226.590272 232.441509 236.411704 240.000000 242.890379 250.832336 261.428974 262.371843 272.738148 275.807847 273.927713 274.334591 277.274765 281.758122 285.505716 285.205918 285.867166 287.020437 287.750565 | ||
124 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.752706 286.981939 285.617375 283.638506 281.047847 278.294640 275.676293 271.990036 268.113414 267.955274 269.387986 262.371843 259.385048 254.744721 246.001387 242.250000 256.768167 274.727694 273.410949 250.199771 191.410839 175.837879 171.175391 164.000000 153.759206 145.553700 145.186707 165.894553 191.534919 157.336416 147.376853 138.750000 128.554051 141.602710 189.268924 188.134253 106.684580 47.690652 53.571890 65.009964 75.550253 104.269505 106.935498 107.134824 117.652466 111.757130 103.198050 168.000000 173.000000 183.112407 235.226711 232.538012 140.555563 65.076500 67.715794 73.653380 79.005155 98.442895 91.627809 87.414342 95.950487 107.131306 114.253766 116.109489 129.750000 185.597503 178.076667 151.231015 156.453410 173.868874 167.598961 168.142148 193.000000 202.017088 196.705250 202.277119 213.511314 222.179628 228.428951 231.950013 238.250000 248.667966 257.092153 259.725703 259.150018 280.307034 281.697277 274.349039 273.999655 277.326329 280.844676 284.444319 284.797028 285.886381 287.003326 287.747353 | ||
125 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.743071 286.964828 285.694234 283.655543 281.127452 278.218520 274.851275 270.516315 267.692088 268.781861 268.891665 263.543416 259.725703 252.006051 244.668098 258.750000 272.941795 275.345010 261.536139 217.587809 184.166652 177.142090 171.642690 161.000000 153.226504 150.075805 146.381797 143.865219 147.266697 155.262390 145.213420 145.500000 132.442977 143.211471 151.103970 129.239069 90.042102 63.830832 63.644972 72.474066 96.415853 153.328433 141.006775 99.271121 99.825398 126.692966 133.165933 129.000000 172.000000 197.097419 217.303707 148.354638 76.662974 55.341850 60.020275 81.240871 96.732396 78.296729 79.074336 87.414342 95.096934 98.834577 107.014339 118.442845 126.000000 143.049987 146.274948 144.623818 150.159315 158.930245 162.511593 171.338357 194.000000 214.166847 205.834725 207.911487 212.028952 214.036902 224.107735 232.507725 246.250000 262.889718 263.938828 257.341123 265.740115 281.299675 281.490630 274.096243 274.133629 278.202910 280.502134 282.480733 284.541471 285.982454 287.037547 287.753776 | ||
126 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.748423 286.999049 285.713448 283.672580 281.207057 278.066279 274.645020 270.315353 268.534740 271.571591 270.380626 261.493164 256.489488 249.854239 242.445949 261.750000 269.037815 264.850629 264.250381 224.629028 180.947013 176.272616 171.175391 162.500000 156.422714 152.336857 149.369523 147.641676 155.195334 177.385325 158.915162 143.250000 134.776332 148.842136 147.785279 117.289322 90.042102 85.351073 81.959669 100.464447 104.003344 111.003083 120.564009 104.185935 108.738932 152.581749 157.140241 138.000000 170.000000 176.119900 147.603137 137.460319 117.947416 76.758081 57.134456 77.447126 82.737206 89.285547 88.041103 94.421701 94.243380 100.493923 107.014339 109.887208 123.000000 131.511677 133.830797 135.373742 144.494629 152.357248 154.032646 154.824609 183.500000 231.924188 212.790516 201.874664 222.034895 226.590272 227.194318 229.998024 239.250000 250.001255 254.744721 260.917992 272.037320 281.175595 278.080960 274.770365 279.358639 282.482692 281.872302 282.984897 284.626657 286.030491 287.020437 287.777328 | ||
127 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.731295 286.960551 285.684626 283.723691 281.286661 278.979725 275.366911 272.659909 274.011978 274.361320 264.300702 256.660426 254.615890 250.441097 244.445883 243.750000 238.363693 244.479182 254.750534 217.217219 181.751923 179.315774 171.642690 167.000000 170.272954 170.425276 166.100787 164.635734 165.766849 174.619959 183.434070 162.000000 136.331902 146.428994 175.994157 156.552778 95.297621 83.557719 100.274365 118.191688 103.054908 118.698601 147.821031 152.351118 149.345030 148.598860 122.177709 110.000000 111.000000 110.190556 100.804183 115.671681 114.015564 84.545801 63.868034 66.065889 77.139129 97.527160 88.041103 88.290262 94.243380 104.642287 108.623101 116.109489 138.000000 130.069388 120.695305 133.391583 149.529905 149.369523 151.206331 161.217028 191.000000 236.129874 226.267360 219.180223 242.787962 229.304514 228.428951 231.950013 233.250000 238.223866 250.636716 276.758412 281.556349 280.307034 276.427787 277.719646 280.631397 281.554546 281.643941 282.799153 284.507397 285.982454 286.999049 287.808374 | ||
128 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.733436 286.981939 285.790307 283.996285 281.711220 280.464074 276.707565 276.813121 281.932906 276.324464 258.220777 259.003571 255.808180 250.245478 245.779172 244.000000 247.008219 260.838071 264.928942 222.776076 182.556832 176.707353 174.446480 175.000000 187.319404 187.948432 176.856600 173.447467 175.016926 182.224717 185.597503 168.750000 132.442977 187.452411 237.389953 186.427147 104.056820 90.731133 92.032751 113.526625 123.920508 118.698601 128.351729 154.317044 162.220135 142.624525 129.170216 136.000000 154.000000 125.174498 123.705799 171.133668 132.691860 69.943825 74.449372 70.808071 74.340091 91.117017 87.144426 101.429061 107.046681 106.301633 107.014339 111.442779 122.250000 125.021378 117.238596 127.445105 137.571124 141.601436 147.249489 164.945939 209.000000 248.279633 201.922093 198.252571 209.805409 215.054743 224.107735 231.671158 234.000000 238.001651 254.549102 280.846262 279.213203 262.687660 267.645304 273.843447 276.076261 277.120074 278.903604 281.578546 284.268878 286.030491 287.157319 287.807303 | ||
129 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.740930 286.981939 285.761485 284.149618 281.976570 280.083471 276.965383 276.076261 280.584663 278.494254 262.191340 273.794679 266.368459 253.375386 250.890114 245.250000 257.047022 275.036352 255.768375 208.323047 184.166652 178.446300 181.455957 180.500000 185.721300 195.862115 206.136313 205.547353 189.552760 192.594843 195.693524 183.750000 146.443109 205.953167 258.961448 240.201010 175.882252 90.731133 88.369812 106.062523 116.333017 117.736661 132.245590 148.419266 141.421889 116.735742 108.192697 138.000000 150.000000 113.187344 100.804183 126.566000 102.220009 67.996895 83.106830 85.983053 77.139129 82.875403 85.351073 99.677221 101.071807 93.026867 90.926725 109.109423 138.000000 126.463667 109.633837 118.195029 125.612343 134.430894 142.727384 155.357310 179.000000 195.942208 180.185248 187.386290 193.870019 206.233456 218.551886 225.536333 233.250000 244.890313 254.549102 260.407011 262.957630 268.023105 273.534734 273.927713 273.798693 276.140365 279.398387 282.162314 284.677768 286.001669 287.161596 287.792316 | ||
130 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.754847 286.981939 285.723056 283.911099 281.578546 279.740929 277.068511 274.267604 274.854630 277.357697 276.584631 281.995689 277.950702 259.635204 253.778908 246.000000 241.709961 237.071383 222.518908 212.399543 213.545855 188.010512 184.259747 187.000000 194.244525 206.036851 218.087216 220.653181 208.052912 202.273627 212.279844 182.250000 160.443241 218.823259 260.620794 255.564971 200.408010 99.697899 116.757591 134.052904 123.920508 129.279939 123.484404 126.794082 131.517963 115.740019 103.198050 116.000000 120.000000 96.205543 88.855514 90.911865 77.645937 84.545801 116.774722 107.797090 77.139129 87.454077 89.834456 89.166182 86.561400 83.070792 89.317964 110.664993 127.500000 110.598491 106.177129 115.552150 123.094705 131.443168 140.466332 149.497593 158.000000 166.502407 178.011563 189.398564 194.611200 204.197774 214.539328 222.190065 234.250000 246.890247 248.484904 248.143460 263.836309 278.942153 277.977637 274.011978 272.927858 275.676293 279.626749 282.374594 284.558508 285.905596 287.080323 287.765552 | ||
131 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.768764 287.016159 285.742270 284.302952 282.878757 280.273773 277.068511 273.396769 272.916530 278.907547 283.905357 282.435029 273.862851 255.331579 246.445817 238.750000 227.767179 212.378720 209.626258 239.452647 248.559426 186.706301 179.586763 190.000000 202.235048 209.993693 219.879852 226.947276 217.302989 231.309979 223.818153 187.500000 185.332365 234.106492 260.620794 214.594408 136.465857 105.974636 149.724044 164.842323 137.198617 127.356059 109.855893 107.134824 150.335423 192.410647 168.128465 140.000000 137.000000 97.204473 87.859791 72.094404 89.441492 155.608751 189.882144 128.662690 63.143939 81.043934 96.111193 87.414342 84.854293 93.856540 103.796816 105.220498 99.000000 97.617893 107.559812 115.552150 123.724115 132.638258 141.596858 151.628399 161.000000 169.773496 179.750511 188.593655 197.205333 205.894175 214.230670 221.632354 232.000000 242.001519 243.985661 247.121498 267.936815 278.569913 272.294854 269.461657 271.655099 275.470038 279.208086 282.162314 284.268878 285.876773 287.101710 287.761270 | ||
132 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.775187 287.071767 285.819129 285.052584 284.550458 280.920797 277.016947 273.731706 275.444486 283.143803 283.781277 280.238330 259.725703 246.137473 240.001585 240.500000 244.219662 230.589559 213.697621 240.935009 246.949606 196.270513 179.586763 188.500000 200.104242 202.645272 218.684761 243.311924 238.446020 259.654990 239.683329 200.250000 207.110348 243.759061 246.516355 172.770292 90.918022 103.284606 143.313901 165.775336 141.940799 124.470240 106.935498 106.151861 174.104846 245.183935 190.104913 139.000000 137.000000 99.202332 78.898290 56.248122 117.947416 216.937050 209.120939 101.158035 51.014774 74.633790 105.077959 90.918022 92.536274 104.642287 102.992436 91.220366 87.000000 96.896749 107.559812 116.212870 124.982934 138.016165 147.814752 154.824609 164.000000 172.577286 178.881037 187.788745 198.317104 207.251296 214.539328 224.978622 234.250000 238.446081 242.029468 248.484115 262.811183 270.628787 266.405424 267.776353 272.257985 276.088802 279.322267 282.135779 284.217767 285.915203 287.110266 287.762340 | ||
133 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.781610 287.144486 285.944025 285.171844 283.993225 280.996917 277.738838 276.344210 279.573481 284.590330 281.423755 271.451533 253.082946 244.572519 244.223668 259.000000 268.201249 245.405157 209.626258 212.028952 234.875961 234.527361 190.801925 188.000000 196.908032 196.427378 217.489671 259.047162 265.535529 264.494382 259.154226 210.750000 206.332563 240.541538 243.197663 177.038059 106.684580 113.148049 131.409348 143.383031 133.404872 128.317999 113.749753 117.947416 164.200920 181.457700 102.199120 67.000000 77.000000 80.222672 60.975286 49.315374 112.049639 177.024983 134.089637 46.148725 52.880799 80.128199 102.387929 87.414342 90.829167 93.856540 84.491679 81.109159 90.750000 98.339037 107.559812 121.498627 132.535848 143.991616 153.467383 157.488117 159.500000 168.838899 179.750511 191.008384 199.428876 207.251296 214.539328 229.719168 239.750000 238.668296 241.246991 249.506077 257.246212 264.052541 268.161921 274.180508 275.674337 276.707565 279.893170 282.374594 284.319989 285.838344 287.020437 287.763411 | ||
134 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.796598 287.234315 286.174602 285.018510 282.984897 280.844676 279.337310 280.363448 283.449680 283.557097 275.467910 258.710678 255.126871 247.506808 247.334676 262.250000 256.210455 228.120293 208.608417 210.176000 264.657619 257.133680 197.344104 191.500000 200.104242 208.863167 234.220936 260.935391 259.589051 264.494382 262.038804 234.750000 210.999273 238.932776 259.791121 188.987807 102.304980 138.254996 159.797127 118.191688 97.364289 113.888902 127.378264 118.930379 88.931079 53.009506 30.276199 29.000000 43.000000 46.259070 44.048004 41.392233 57.986678 75.784616 66.753854 49.942471 62.210926 73.718055 79.971013 76.903303 76.318759 76.433409 78.056634 83.442514 91.500000 102.665903 113.781888 131.409423 145.753448 143.394071 151.771594 160.684326 161.000000 170.708093 180.185248 188.996110 198.317104 208.608417 216.699936 225.815189 233.250000 238.001651 243.594422 249.846731 257.831998 261.198699 270.538357 278.056707 277.148058 276.552874 279.931230 282.560338 284.422212 285.799915 287.165874 287.806233 | ||
135 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.803021 287.289923 286.491645 285.529622 283.940155 281.377519 280.626401 280.497423 281.343050 281.697277 272.241828 262.225397 257.852105 248.093666 240.890445 238.750000 232.228869 222.255786 218.108265 227.964343 259.425706 222.789464 185.661643 191.500000 208.094765 241.648426 265.293284 254.641295 252.981854 263.803040 257.711938 260.250000 253.777455 258.237914 222.455840 147.163691 106.684580 127.494876 127.746409 89.268294 67.962762 111.003083 126.404799 76.662974 29.507521 28.116446 28.278340 28.000000 29.000000 34.271917 40.065115 36.440269 34.395568 37.819478 48.476998 62.272144 68.742015 69.139381 75.487629 73.399624 72.050992 75.603736 80.469776 86.553655 96.750000 107.713914 115.855913 132.070143 140.718172 138.016165 149.510541 161.749729 162.000000 171.642690 188.010512 195.435387 200.911238 206.572736 214.847987 222.747777 231.750000 240.446015 245.354996 249.846731 257.978445 264.672942 267.645304 271.399757 274.133629 276.449747 279.284206 282.003105 284.592583 286.751043 287.717680 287.853336 | ||
136 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.813726 287.315589 286.280283 285.103695 283.515596 281.796182 280.110765 279.023702 278.815094 277.564344 272.986308 267.936815 255.637852 247.702427 238.223866 232.000000 237.527126 240.466624 233.036597 231.670247 219.180223 207.138936 197.344104 187.500000 218.748797 258.041056 246.171839 213.729676 241.088899 263.803040 262.038804 261.000000 260.777521 255.824771 183.461214 112.168002 117.195619 123.011493 94.779956 82.737206 76.498689 104.269505 71.890756 31.446680 24.555558 27.120723 28.278340 29.000000 31.000000 32.274058 33.095058 32.478699 35.378531 41.713339 57.134456 72.704944 60.344901 58.150564 64.727509 75.151463 73.758099 73.944390 79.665395 88.887010 99.000000 105.550481 111.016521 117.534309 124.353524 133.235803 143.292647 159.086221 178.500000 199.213297 238.005256 254.596248 232.782019 209.286978 211.452746 222.747777 234.750000 244.001453 246.137473 250.868694 255.049513 261.570939 264.752251 268.450475 272.927858 276.759129 279.474508 282.427664 286.296291 287.519632 287.559410 287.774116 | ||
137 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.794457 287.204372 286.462822 285.512585 284.391249 282.595447 279.440438 280.430435 282.944088 280.974014 278.942153 261.346717 250.187385 250.636716 248.667966 247.000000 261.229857 256.825513 216.411864 202.023009 209.118852 204.965251 196.409507 203.500000 237.393351 252.953688 221.672487 204.917943 260.910491 264.494382 263.481092 262.500000 262.333091 226.062685 142.807241 90.829167 102.304980 108.664666 103.021569 79.938167 61.323707 54.248637 36.846013 28.497791 30.497914 28.116446 28.278340 31.000000 39.000000 31.275128 33.095058 51.296159 51.105938 47.554129 62.906095 71.756507 59.411888 59.066298 64.727509 71.647784 72.050992 71.455371 77.252253 86.553655 93.750000 99.781326 108.251154 115.552150 124.353524 130.845623 151.771594 205.963959 257.500000 258.560199 253.221048 226.424410 213.511314 209.626258 217.934570 224.978622 231.750000 240.446015 247.115569 252.912619 255.928193 262.439500 266.715394 271.231226 277.081070 279.388874 279.664809 283.037967 287.148146 287.452380 287.272813 287.745212 | ||
138 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.825502 287.632129 287.317877 285.802216 284.444319 282.290965 279.749819 281.167296 281.174519 273.431410 267.774944 256.953319 251.379675 251.419194 250.667900 248.500000 258.162445 255.590880 221.840348 201.652419 209.118852 205.399988 212.764952 219.000000 234.197142 231.473690 228.245484 250.864838 266.196249 265.185723 262.038804 212.250000 192.332431 156.081563 109.620325 94.243380 106.684580 100.594576 86.538343 73.407079 52.787780 36.933721 32.952153 32.429643 30.497914 28.116446 28.278340 33.000000 44.000000 32.274058 38.073670 58.228907 52.088901 40.739874 53.286697 62.272144 59.411888 61.813503 75.487629 71.647784 66.929672 72.285044 80.469776 85.775870 93.750000 100.502470 108.942496 114.891430 124.982934 129.052987 161.946330 225.141215 267.000000 246.877738 199.748409 187.788745 195.352381 208.269137 219.477861 226.372900 232.000000 239.779370 247.311189 251.550002 258.124892 264.548862 269.401801 272.158144 277.014083 279.698256 279.931230 282.374594 285.580734 286.568503 287.118821 287.755917 | ||
139 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.884382 287.837452 287.289055 285.580734 283.489061 281.111098 279.543565 280.631397 278.140972 267.335334 259.957898 256.367532 253.253273 250.636716 244.668098 240.500000 244.498518 244.170524 225.911711 204.987733 207.911487 245.395783 242.204753 226.000000 210.758273 225.821059 256.330106 267.229486 258.928332 218.865828 195.693524 173.250000 194.665786 139.993949 90.537848 95.096934 99.677221 87.144426 76.465260 70.608040 50.890907 35.971781 33.925618 32.429643 30.497914 29.112168 28.278340 32.000000 46.000000 40.265494 35.086503 41.392233 43.242235 43.660269 50.400878 56.581526 63.143939 63.644972 77.280983 97.925381 141.188817 124.554437 82.882918 84.220299 96.750000 103.387048 108.942496 115.552150 124.982934 133.833348 152.336857 186.786703 212.000000 200.615193 174.533668 181.751923 195.352381 208.947698 216.699936 224.142055 234.000000 243.779238 250.049859 251.720329 258.710678 263.680301 267.541981 271.484022 275.942286 278.409165 280.007351 282.772618 284.677768 286.136172 287.140209 287.766623 | ||
140 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.859759 287.503802 286.645362 285.257029 283.276782 281.034977 280.832656 280.631397 275.191691 264.958897 258.841177 258.710678 253.934582 251.614813 242.445949 246.250000 246.729363 235.219433 223.876029 215.734857 212.338490 248.438942 230.054994 226.000000 213.421781 236.561058 268.281010 259.676571 219.945868 153.879707 130.790533 167.250000 205.554778 133.558903 78.922427 86.561400 88.290262 80.867689 81.043934 70.608040 51.839344 36.933721 31.978688 32.429643 30.497914 29.112168 33.272987 45.000000 47.000000 41.264423 31.103613 36.440269 45.208160 47.554129 51.362818 57.529962 64.076952 65.476442 71.004246 126.830738 197.523341 149.444624 74.839111 83.442514 97.500000 105.550481 108.942496 118.195029 130.647619 138.016165 144.423174 158.020818 176.500000 185.194344 178.881037 183.764197 194.981790 204.197774 215.156645 228.324890 238.750000 246.001387 252.592909 255.297198 258.564232 263.059901 267.438657 275.444486 278.152867 277.738838 280.197652 283.913620 285.120732 286.222638 287.200095 287.810515 | ||
141 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.821220 287.379752 286.289890 285.188881 284.444319 282.214844 281.399855 278.353829 270.894166 264.235634 260.826459 264.275649 255.126871 251.027955 242.223734 251.250000 255.095033 235.528092 216.751144 217.587809 210.326216 211.921042 202.017088 215.000000 221.945006 246.170531 262.903103 221.282591 153.213175 119.312621 109.877347 139.500000 144.109753 101.383674 73.944390 78.025866 81.282903 79.971013 88.369812 79.938167 54.684653 36.933721 31.978688 32.429643 28.517128 27.120723 43.262282 70.000000 52.000000 36.269776 32.099335 42.382625 49.140012 50.474524 57.134456 64.169016 65.942977 68.223647 66.520862 142.597296 194.109127 130.362148 66.795304 84.220299 96.000000 106.271625 111.016521 124.141506 134.424076 138.613710 144.988437 154.824609 169.000000 186.128941 183.663143 184.166652 191.646476 201.144252 219.477861 241.709961 249.000000 245.556957 251.027955 258.703740 259.735804 263.804381 269.401801 277.466851 278.889727 278.357601 280.920797 283.860550 285.222955 286.309105 287.247148 287.846913 | ||
142 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.884382 287.717680 286.232246 284.899250 285.028087 282.367085 278.924801 273.798693 267.607823 264.132311 262.563580 265.447222 255.297198 247.115569 237.779436 243.750000 254.816177 238.306016 205.215615 203.505371 199.459935 191.488407 194.073014 194.000000 199.571540 222.994744 218.684761 159.600457 113.569991 113.781888 106.271625 92.250000 77.220233 78.861014 78.092754 73.758099 74.275543 74.590953 81.959669 80.871180 56.581526 38.857601 33.925618 32.429643 26.536343 27.120723 47.258000 74.000000 51.000000 37.268705 44.048004 47.334588 50.122975 58.262245 68.677733 72.704944 73.407079 74.633790 77.280983 171.502653 205.205321 125.384110 65.186542 87.331440 98.250000 106.271625 114.473229 127.445105 129.388800 138.613710 148.380015 152.161101 159.000000 173.979182 184.967354 191.410839 196.093562 207.590577 225.651027 247.008219 253.500000 246.668032 249.267381 257.681778 260.760931 264.797022 269.505124 272.748000 275.473375 278.873238 281.567820 282.878757 284.609620 286.155387 287.234315 287.816938 | ||
143 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.960390 287.636407 286.049706 284.354063 283.489061 280.844676 276.604438 272.190998 268.197679 264.752251 261.446859 256.367532 252.401638 250.832336 242.445949 244.500000 248.402497 228.737610 201.144252 203.875962 198.655026 186.271564 181.455957 180.500000 173.469164 158.554751 141.003890 126.871162 119.516468 112.399204 101.223615 90.750000 87.331440 87.709202 78.922427 69.490332 69.895944 69.210892 58.150564 51.947786 50.890907 39.819540 32.952153 29.480754 26.536343 28.116446 38.267635 51.000000 41.000000 48.256929 65.953898 66.152049 63.884456 72.864221 80.221010 81.240871 85.536244 91.117017 111.354696 223.181927 242.761670 134.510512 65.186542 94.331506 102.000000 106.271625 116.547254 123.480787 126.241753 142.198981 154.597909 156.955415 160.000000 171.642690 189.314723 201.472210 206.470095 216.751144 228.737610 236.411704 242.750000 249.112395 252.788529 254.786217 260.028698 266.534143 268.781861 270.472840 273.932667 278.099783 281.111098 282.799153 284.541471 286.030491 287.182984 287.768764 | ||
144 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.915427 287.182984 285.982454 285.052584 282.799153 280.045411 276.656002 271.923048 268.703271 268.161921 263.183981 255.049513 253.593927 272.741696 270.445024 245.000000 221.074643 210.835429 206.572736 201.652419 196.642752 184.097880 176.782972 179.000000 164.945939 144.423174 131.443168 124.982934 118.195029 108.942496 100.502470 93.000000 87.331440 82.078537 72.285044 66.076118 65.516344 60.244126 51.740420 51.947786 50.890907 38.857601 33.925618 30.463717 27.526736 29.112168 39.266564 47.000000 47.000000 59.245153 69.936788 73.084797 74.697048 86.492732 98.497866 96.415853 104.196498 113.094652 149.015116 232.817046 190.694913 98.004904 75.643491 101.331572 100.500000 106.271625 115.164571 120.177188 130.018210 141.003890 150.075805 161.749729 175.500000 188.932732 203.661041 213.948310 214.252495 232.697316 240.466624 240.315683 244.250000 250.667900 254.157864 257.681778 262.518290 266.658223 268.058597 270.978431 274.535553 277.687274 280.387953 282.586873 284.439249 286.424393 287.371197 287.765552 | ||
145 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.841560 287.024714 285.867166 284.115544 281.658150 278.941664 275.521602 272.190998 269.714453 267.232011 262.811740 255.635299 262.280609 277.045320 261.556429 236.250000 218.843798 209.909454 203.179933 195.352381 189.801019 177.576826 171.642690 169.000000 158.553520 144.423174 133.235803 125.612343 118.855748 109.633837 100.502470 94.500000 91.220366 83.687299 72.285044 66.929672 65.516344 58.450772 51.740420 48.215736 42.354980 38.857601 36.846013 33.412605 31.488306 36.082225 42.263352 41.000000 43.000000 50.254788 68.941065 99.825398 102.220009 93.306987 102.345625 105.900217 102.330472 102.105834 159.775236 206.539449 131.799730 75.603736 85.296060 95.109291 99.750000 114.204213 121.386646 126.784385 136.312305 143.991616 156.293699 179.328881 197.000000 198.745999 211.051568 214.753219 211.658362 238.804361 246.022473 241.152250 242.500000 250.445685 258.265869 264.494861 264.861436 266.906384 268.368567 271.399757 274.602540 277.429456 280.045411 282.427664 284.558508 287.010442 287.555133 287.767693 | ||
146 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.770905 286.947718 285.607767 283.706654 281.207057 279.360327 277.841965 274.066642 269.040331 265.785484 261.695020 257.978445 255.808180 254.353483 241.779304 228.250000 218.843798 208.674821 203.179933 210.176000 199.862390 174.098931 170.240794 164.000000 154.824609 144.423174 135.028439 126.871162 120.177188 113.781888 109.156202 103.500000 95.109291 82.882918 72.285044 66.929672 62.888585 56.657419 50.824685 48.215736 48.994035 46.553119 38.792943 33.412605 38.421055 45.043727 40.265494 36.000000 55.000000 56.248365 75.911122 121.614036 124.828156 101.094708 98.497866 102.106471 101.397460 106.684508 127.494876 144.349136 116.435768 93.856540 94.144248 91.998151 93.000000 127.905955 144.892265 145.284538 170.300419 167.893423 161.381066 177.730776 199.500000 207.157371 218.007358 219.985132 217.587809 224.554590 231.206876 239.479116 246.250000 250.001255 254.940341 261.258646 263.396970 265.541503 268.058597 271.905348 275.205426 277.377892 279.893170 283.489061 286.585922 287.538847 287.413973 287.739859 | ||
147 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.734506 286.951996 285.665412 283.877025 281.498941 280.806616 280.523274 275.942286 269.293127 265.682161 260.702379 259.003571 257.852105 249.071762 239.557155 232.500000 225.536333 212.070062 201.483532 212.028952 211.936035 185.836828 171.642690 161.500000 153.759206 146.684226 136.223529 125.612343 117.534309 113.090546 111.319635 104.250000 95.109291 82.078537 71.455371 66.929672 62.888585 56.657419 49.908950 48.215736 50.890907 49.438938 37.819478 33.412605 40.401840 42.056560 32.274058 28.000000 60.000000 78.224813 90.846959 114.681288 112.049639 97.200847 101.383685 105.900217 103.263485 115.841856 118.528109 130.334417 118.142875 109.620325 111.840624 102.887142 116.250000 214.443277 179.459351 134.713022 155.824000 163.113061 160.250540 170.272954 187.500000 199.680596 211.051568 226.826864 229.817295 223.536749 221.638469 228.324890 242.000000 258.889850 268.046833 262.110282 261.346717 264.672942 267.955274 271.146961 273.597731 277.738838 282.976049 286.275229 287.301479 286.981620 287.067490 287.722731 | ||
148 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.733436 286.969106 285.742270 284.013322 281.711220 280.121532 278.460729 274.736515 269.461657 264.855574 260.330139 256.806872 255.978507 249.658620 242.001519 234.750000 225.815189 212.378720 200.804971 200.540647 203.484484 190.618934 172.109988 160.000000 154.824609 148.945278 138.016165 126.241753 116.212870 109.633837 104.829336 99.750000 91.220366 81.274156 73.114717 67.783225 61.136745 54.864066 51.740420 47.282723 48.045598 48.476998 38.792943 34.395568 36.440269 33.095058 31.275128 35.000000 65.000000 90.211967 107.774240 112.700503 104.185935 99.147777 111.003083 123.920508 121.923739 132.325083 150.808469 132.086257 119.849982 117.087381 117.471289 146.443109 206.250000 217.327854 160.793124 132.070143 148.271086 154.747429 159.120014 166.011342 174.500000 193.605716 214.094726 228.436684 228.705524 228.286673 235.836750 249.517920 263.250000 274.222677 279.392751 274.884814 268.669048 265.913743 268.058597 270.978431 273.530744 279.801383 286.058928 286.699788 285.648882 285.886381 286.892110 287.721660 | ||
149 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.736648 286.964828 285.799915 284.115544 281.870430 279.436447 276.759129 273.731706 269.714453 265.165544 261.695020 255.928193 250.357713 246.919950 241.557089 233.500000 223.305488 212.378720 201.822812 193.128838 189.398564 181.054722 168.838899 159.000000 151.628399 148.380015 145.784252 135.053486 116.212870 109.633837 101.223615 95.250000 87.331440 78.056634 72.285044 69.490332 65.516344 63.830832 58.150564 50.081761 53.736216 55.210577 43.660269 38.327420 38.421055 33.095058 36.269776 57.000000 78.000000 92.209826 114.744297 132.508355 131.708897 123.484404 130.241878 140.992363 128.454828 152.471249 209.989130 191.648811 169.356079 136.999531 142.407091 214.110414 243.750000 153.146007 133.830797 136.034461 149.529905 154.747429 157.424225 171.338357 201.500000 234.727978 247.569468 252.986429 253.164495 256.446935 264.541970 274.614929 279.750000 279.555834 274.697889 265.516824 266.179455 265.293342 267.025364 270.472840 275.406388 282.018619 285.678326 284.391249 283.928136 285.415620 286.874999 287.723801 | ||
150 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.739859 286.986216 285.828737 284.217767 282.135779 279.740929 277.068511 273.798693 270.051514 266.818717 263.804381 256.367532 247.632479 246.919950 241.334874 231.750000 221.353498 211.452746 202.501373 193.128838 184.971561 174.533668 166.502407 159.000000 147.899489 149.510541 154.747429 139.459353 114.891430 110.325179 101.944759 96.000000 88.887010 78.861014 73.114717 73.758099 76.903303 75.487629 62.729238 55.679837 66.065889 65.791914 56.315315 49.140012 46.344196 45.043727 51.253718 83.000000 100.000000 101.200191 113.748575 140.431497 149.402229 140.033310 144.670975 161.857963 135.918930 166.207271 225.232633 251.211364 218.862175 153.592989 174.582319 255.333025 214.500000 106.271625 121.386646 149.909576 157.082819 158.332700 176.077907 211.823676 249.500000 272.579152 272.784208 268.279713 260.946895 259.161177 263.924654 265.691548 263.750000 260.889784 255.722818 248.824769 258.710678 264.176622 266.405424 270.304309 275.741324 280.832656 283.014109 282.586873 283.417024 285.473264 286.887832 287.728083 | ||
151 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.748423 287.016159 285.780700 284.217767 282.215384 279.778990 277.120074 274.133629 270.725635 267.438657 263.680301 256.074639 247.973133 249.071762 241.779304 231.250000 220.238076 209.600796 200.804971 193.128838 185.776471 178.446300 169.773496 159.000000 147.899489 149.510541 148.771977 130.647619 114.230710 111.016521 106.992769 102.750000 95.887076 86.904821 79.752100 80.586526 83.910662 77.280983 68.223647 72.474066 77.447126 72.525492 70.917291 63.884456 59.219300 65.953898 72.231236 93.000000 110.000000 112.188415 113.748575 130.527570 129.742971 124.457869 146.594854 173.239199 161.110273 175.364619 185.778860 226.685607 206.912428 174.334812 209.170690 252.221885 192.000000 109.156202 120.695305 171.052607 167.153372 164.308152 215.081061 264.561131 271.500000 268.840764 251.047363 231.656323 218.328990 217.768985 229.354926 235.575137 233.250000 234.001783 242.420706 250.868694 259.442911 264.921102 266.922041 270.809900 273.932667 278.563856 282.937989 283.303316 283.417024 285.463657 286.900665 287.735577 | ||
152 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.742000 286.973383 285.780700 284.217767 282.029640 279.664809 277.223201 275.272413 272.242409 266.405424 260.454219 255.781746 249.676404 244.376899 238.001651 230.750000 221.632354 210.526771 200.126411 191.275885 183.361742 178.446300 173.511883 161.500000 151.095698 140.466332 131.443168 128.129981 120.837908 115.855913 116.367646 111.000000 99.776002 94.144248 90.537848 90.829167 91.793942 80.867689 81.959669 95.799383 85.034617 73.487432 67.023430 81.577788 94.873435 88.855514 81.221601 81.000000 93.000000 101.200191 116.735742 140.431497 120.896305 118.617079 159.100071 162.806399 191.899692 204.668133 172.328710 184.641451 194.109127 229.093224 261.455436 257.666380 225.000000 150.982574 146.966290 176.999085 169.041600 172.673784 228.647375 270.420848 264.000000 243.606649 192.792618 181.349468 189.052343 206.233456 221.638469 226.372900 229.250000 238.001651 246.724331 252.060983 258.857125 263.680301 266.818717 270.894166 274.133629 281.038910 285.602205 283.144107 283.331838 285.492479 286.926330 287.735577 | ||
153 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.738789 286.969106 285.934418 284.388138 282.135779 279.398387 277.016947 276.210236 273.422121 265.682161 259.709738 254.903066 254.275236 244.376899 234.446213 227.750000 219.680365 209.292138 199.447850 190.905295 182.154377 174.533668 172.109988 165.000000 154.824609 144.988437 141.003890 140.088762 132.070143 119.312621 117.088790 111.000000 99.776002 92.535486 103.812615 119.849982 118.071539 99.697899 95.695691 99.531434 82.189308 73.487432 71.890756 140.555563 165.191313 91.842681 78.224813 93.000000 88.000000 88.214108 132.667301 151.325816 141.538526 159.502611 199.501542 213.073527 252.545517 250.454873 190.262243 223.181927 253.004311 259.791121 261.455436 262.333091 253.500000 212.279844 165.632516 184.927722 189.812114 173.271329 219.037902 261.364922 224.500000 177.717569 180.185248 184.569106 189.052343 222.179628 247.874423 237.805982 228.500000 239.112726 244.572519 250.698367 255.928193 261.074619 266.508747 271.484022 276.411197 282.740510 284.498458 281.419336 283.485172 285.521301 286.926330 287.732365 | ||
154 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.754847 287.003326 285.847951 284.251841 282.294989 279.817050 277.532583 276.679147 273.674917 265.992131 260.454219 255.635299 255.808180 248.093666 234.890643 224.750000 216.612952 208.366163 199.447850 191.275885 182.959287 175.403142 169.773496 163.000000 154.291907 148.380015 141.601436 133.165257 129.427264 123.460672 120.694512 118.500000 106.776068 98.970532 115.428035 126.678409 122.451138 133.771613 120.420530 106.062523 143.837672 131.203818 185.786168 211.328893 148.354638 86.864069 104.196979 171.000000 160.000000 116.184133 131.671578 135.479533 146.453341 183.839238 227.397795 252.907854 254.411543 230.308707 239.579460 253.839124 258.979185 260.620794 261.455436 259.221951 240.750000 194.251235 164.941175 176.999085 179.112153 179.246781 214.515798 246.981980 218.000000 162.296721 176.707353 184.971561 194.611200 213.019061 225.651027 227.488323 230.750000 238.446081 244.181280 254.786217 260.468037 263.183981 265.992131 271.231226 276.679147 281.451419 282.595447 281.100917 283.502209 285.521301 286.909220 287.742000 | ||
155 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.764482 287.050380 285.838344 284.268878 282.135779 279.284206 279.956074 281.837169 277.298320 266.612071 260.702379 260.028698 251.890656 241.442610 232.446279 224.250000 216.334097 208.366163 199.447850 191.646476 183.361742 174.968405 166.969705 158.000000 150.030295 143.292647 136.821074 131.277029 126.784385 126.226038 122.136801 141.750000 200.888067 201.126883 161.889718 129.239069 131.210337 171.432033 178.111823 216.158022 238.681309 154.290372 173.131122 218.209633 227.586049 196.393536 114.186274 109.000000 118.000000 135.163792 128.684411 134.489141 191.669635 244.194072 251.446289 256.701600 256.277568 252.286343 256.616317 258.218723 259.832738 260.620794 261.455436 230.443901 143.250000 123.579089 137.978848 159.159652 165.265143 169.088513 223.560007 251.776294 200.500000 161.362124 179.750511 187.788745 193.870019 203.179933 216.082620 226.372900 232.750000 238.223866 244.768138 254.104909 260.321591 263.059901 267.335334 272.158144 275.875299 278.615419 280.083471 281.100917 283.536283 285.588553 286.943440 287.739859 | ||
156 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.742000 286.999049 285.819129 284.166655 281.843895 279.626749 282.018619 281.971143 275.107425 268.265244 262.687660 256.074639 248.143460 238.508321 230.668560 223.250000 215.497530 207.748846 199.787130 190.905295 182.556832 174.968405 167.437004 159.000000 151.095698 142.727384 138.613710 136.941715 132.730863 129.682747 123.579089 178.500000 242.888463 255.020391 224.115186 194.109127 183.765531 165.155296 142.398166 192.832704 196.950108 212.006758 232.512491 245.732595 255.317043 210.333650 86.216249 85.000000 109.000000 122.177709 129.680134 155.287386 215.260744 255.875653 256.255988 256.701600 257.210581 257.780751 258.409670 251.211364 255.564971 260.620794 231.693350 165.887737 129.000000 117.809935 126.226038 131.409423 145.124038 158.332700 190.209484 196.908032 175.000000 184.727046 190.184197 186.983835 192.758247 208.947698 224.725052 233.902003 237.750000 240.446015 245.746234 252.231311 258.124892 262.315420 268.575214 275.360221 280.899346 282.224874 280.654375 280.782498 283.536283 285.617375 286.990494 287.744141 | ||
157 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.731295 286.960551 285.723056 283.996285 281.658150 280.045411 283.204582 281.234283 272.326674 267.748627 262.811740 254.170833 247.632479 238.117082 229.779701 223.000000 215.218674 207.131530 199.787130 191.646476 183.764197 175.837879 169.773496 163.500000 154.824609 148.380015 145.784252 142.606400 140.659500 135.213481 145.934564 225.750000 258.444166 261.455436 258.961448 223.983496 163.619374 131.978259 115.841856 102.330472 138.147053 227.397795 255.875653 255.562224 213.720552 123.705799 89.213037 119.000000 121.000000 121.178780 140.633080 183.018380 231.971114 255.875653 256.255988 256.701600 257.210581 256.865017 242.269490 243.328085 254.711418 259.791121 198.713741 116.887274 121.500000 114.204213 118.621280 120.837908 127.500572 138.613710 149.510541 155.357310 164.500000 182.857852 185.402091 184.971561 194.240609 221.501068 237.688700 245.892796 248.750000 247.112461 248.876143 253.253273 257.978445 262.935821 270.435034 279.404950 284.717622 282.946764 279.626749 280.782498 283.587395 285.569338 286.994771 287.754847 | ||
158 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.732365 286.960551 285.636589 283.877025 281.605081 279.626749 280.832656 278.286842 270.388574 264.855574 260.081978 253.145707 246.099535 237.334605 229.557486 222.750000 215.218674 207.131530 199.108570 191.646476 183.361742 175.837879 170.708093 163.000000 155.357310 153.467383 151.162158 144.494629 141.320219 138.670189 179.107204 249.000000 262.333091 261.455436 232.411915 162.527652 106.684580 105.077959 102.105834 66.875990 95.467417 173.529168 224.724771 230.988151 152.316208 55.996674 82.220531 112.000000 155.000000 144.154158 165.526141 215.701337 248.681483 255.875653 256.255988 256.701600 257.210581 255.949282 218.955896 218.802328 223.983496 218.307476 177.799842 122.331770 103.500000 105.550481 111.707862 118.195029 121.835886 130.248077 141.031595 151.628399 161.500000 170.240794 177.576826 183.764197 196.464152 216.751144 241.392599 257.604734 256.750000 250.445685 252.788529 255.126871 259.589358 263.556221 275.084584 283.365414 282.774991 278.666983 277.990159 281.021312 283.655543 285.617375 287.003326 287.756988 | ||
159 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.732365 286.981939 285.703841 283.808877 281.578546 279.208086 278.099783 275.339401 269.040331 262.789108 257.972617 251.095454 243.714956 236.747747 230.001915 223.000000 215.497530 207.131530 198.769290 190.905295 182.959287 178.881037 171.642690 159.500000 152.161101 154.032646 152.954794 144.494629 138.677340 145.583606 213.722132 255.750000 262.333091 261.455436 198.395326 109.607341 79.531063 92.524486 84.706873 85.536244 84.086180 102.345625 139.059845 148.419266 98.835006 46.039449 58.246224 82.000000 166.000000 192.102772 213.320818 242.441939 255.562224 255.875653 256.255988 256.701600 256.277568 249.539138 194.745626 191.648811 186.427147 176.823830 174.582319 147.998679 93.000000 102.665903 108.251154 115.552150 123.094705 132.638258 150.075805 161.217028 161.000000 166.502407 174.968405 184.166652 197.946514 209.965539 237.071383 254.816177 255.000000 253.112263 256.309676 256.659815 262.371843 266.906384 280.147427 285.219249 279.626588 275.109093 277.571496 281.180522 283.791840 285.694234 287.033269 287.763411 | ||
160 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.729154 286.973383 285.761485 283.808877 281.737755 279.398387 277.584147 274.200617 269.293127 265.062221 258.717097 249.777435 243.203975 236.943366 230.446345 223.250000 215.497530 207.440188 199.108570 191.646476 186.581381 184.967354 171.642690 158.500000 150.030295 150.641068 151.759703 144.494629 141.320219 155.262390 240.404473 261.000000 254.555240 242.150299 205.032709 133.506836 77.779223 82.661043 72.802321 97.665409 101.158035 83.106830 73.837686 82.560751 73.084797 51.018061 65.238730 93.000000 143.000000 236.055668 255.141160 225.605264 216.243707 237.379817 250.484349 250.062545 237.617314 224.814298 173.225386 164.495294 177.038059 195.076634 197.909360 152.665390 88.500000 102.665903 108.942496 115.552150 123.724115 132.040713 149.510541 162.282431 162.500000 167.904302 181.054722 188.191200 198.687695 221.161787 237.688700 244.219662 250.250000 256.445487 256.505295 257.511450 262.811183 270.752867 281.800600 283.533945 277.349020 274.748147 277.914038 281.286661 283.894062 285.646197 287.067490 287.784822 | ||
161 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.722731 286.917775 285.646197 284.013322 282.162314 279.474508 276.088802 272.592921 271.821083 271.261621 260.454219 248.898755 243.033648 236.943366 230.668560 223.000000 215.497530 207.748846 199.447850 192.387657 193.020658 185.836828 168.838899 160.000000 152.693803 149.510541 149.369523 148.900496 147.266697 158.027757 230.308452 246.750000 210.221488 198.713741 200.054672 148.017244 73.399624 69.210892 70.055116 88.335282 94.518980 84.068770 80.651941 94.356306 86.950294 70.932510 101.200191 110.000000 140.000000 235.056739 255.141160 156.277779 136.623711 209.149330 242.788831 231.093818 178.837514 178.111823 161.568590 125.078898 177.038059 244.027336 222.040781 133.220762 85.500000 102.665903 111.016521 115.552150 124.353524 134.430894 146.684226 156.422714 160.500000 170.240794 192.792618 195.032932 201.652419 233.375877 243.553207 244.498518 249.500000 252.445619 252.006051 256.659815 259.735804 269.884306 281.387307 276.876994 272.257985 274.232511 278.180460 281.339731 283.706654 285.626982 287.084600 287.799809 | ||
162 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.727013 286.951996 285.742270 284.200730 282.321524 279.474508 275.985674 273.396769 274.770365 274.877937 260.950539 249.338095 243.374302 237.530224 232.001849 225.000000 217.449519 209.292138 200.804971 194.611200 191.813293 178.881037 169.773496 164.000000 159.618923 157.424225 157.735155 156.453410 157.838213 164.249833 177.664915 173.250000 140.220828 160.103466 156.082008 112.168002 83.034743 64.727509 64.560707 72.474066 67.014326 60.982215 77.731546 95.339269 94.873435 91.842681 99.202332 91.000000 118.000000 227.065303 255.141160 184.999165 191.669635 244.194072 237.979132 211.176654 134.985917 127.746409 136.461643 127.706658 211.180195 248.175700 165.734131 81.886944 93.000000 101.944759 113.090546 122.159347 128.759391 137.418619 146.118963 152.693803 159.500000 169.306197 181.924195 191.813293 213.140724 231.000915 231.206876 232.786580 240.500000 246.001387 249.463001 256.319161 262.957630 274.971590 283.557097 277.382586 272.124010 274.129384 278.332701 281.286661 283.689617 285.867166 287.161596 287.803021 | ||
163 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.781610 287.080323 286.030491 284.354063 282.188849 279.512568 276.037238 273.664718 273.422121 270.228387 258.468937 249.338095 244.736919 239.095179 233.112924 225.750000 218.843798 211.144087 202.162092 195.722971 188.191200 178.011563 170.240794 168.500000 168.142148 165.903171 166.100787 165.894553 155.856053 152.497024 154.588296 152.250000 181.443439 233.302111 191.757943 108.753788 80.406983 62.037479 68.223647 75.273104 66.065889 60.020275 62.156105 79.611862 94.873435 90.846959 79.223743 77.000000 88.000000 182.113477 231.243821 168.162491 129.742971 124.457869 97.535926 101.158035 124.722777 126.830674 100.594576 180.261852 249.590097 187.609578 94.144248 79.553589 95.250000 104.829336 120.003963 126.123666 128.759391 137.418619 147.249489 154.824609 163.000000 171.175391 179.315774 194.630477 224.258438 225.233151 224.725052 230.555735 238.000000 245.112527 251.223574 255.467525 267.790368 281.175595 284.590330 275.444486 271.387150 274.645020 278.523002 281.366266 283.996285 286.145780 287.285646 287.805162 | ||
164 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.785892 287.071767 286.251461 284.814065 282.109244 279.284206 275.470038 273.195807 274.686099 272.294854 257.724457 249.191649 244.225937 237.725844 230.001915 223.750000 218.007231 210.526771 201.144252 193.128838 185.374016 178.881037 173.979182 177.500000 178.263478 176.643170 173.868874 169.041600 166.427569 166.323858 140.886554 141.750000 202.443637 202.735644 152.763316 106.193128 73.399624 53.070712 59.066298 62.210926 67.962762 64.829974 65.076500 71.748159 76.055975 70.932510 67.236589 72.000000 75.000000 182.113477 246.179658 153.306601 52.088901 38.792943 65.791914 84.086180 124.722777 177.196088 141.841703 173.254493 201.791108 138.658877 75.643491 86.553655 96.000000 106.271625 117.238596 121.498627 125.612343 134.430894 144.988437 153.759206 164.500000 180.988658 194.096829 204.289393 222.405485 226.590272 228.737610 234.180859 240.750000 245.779172 248.680524 254.615890 276.430718 283.409036 275.291230 269.967249 270.985226 274.541893 278.294640 281.817360 284.626657 286.213031 287.328422 287.821220 | ||
165 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.783751 287.097433 286.289890 285.103695 282.799153 279.740929 276.346620 273.262794 270.894166 266.405424 256.359575 249.484542 244.055610 237.725844 230.224130 223.000000 215.776385 208.366163 201.822812 195.352381 191.410839 184.967354 182.857852 183.000000 182.525090 180.600012 175.661510 169.671010 171.052607 176.693984 169.011183 194.250000 212.554844 170.560416 128.702802 114.728662 92.669861 60.244126 58.150564 63.143939 63.220580 70.601613 76.758081 70.765196 68.132834 72.923955 68.235518 65.000000 75.000000 147.150946 192.410647 116.662073 41.276309 55.341850 100.421746 104.951780 115.392650 160.712862 158.878559 151.356495 148.017244 114.598362 82.882918 87.331440 95.250000 104.108192 111.016521 118.855748 126.241753 136.223529 146.118963 158.020818 173.000000 187.063538 197.574724 207.106577 222.034895 231.340195 235.836750 243.661951 249.250000 250.001255 252.984148 258.363086 266.179455 269.139825 268.368567 269.545923 271.789074 274.593456 278.256580 282.056175 284.848139 286.472430 287.307034 287.836208 | ||
166 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.814797 287.281368 286.395571 285.291103 283.542131 280.083471 276.759129 273.396769 269.208862 264.132311 257.104056 249.777435 244.225937 237.530224 231.335205 224.000000 215.776385 210.526771 207.929857 202.023009 197.045206 195.835776 195.942208 190.500000 185.721300 180.034749 176.259055 173.447467 167.088289 169.780567 202.183823 245.250000 192.332431 144.015852 125.384110 118.996429 116.319699 100.594576 65.476442 63.143939 48.994035 64.829974 78.705011 72.731122 67.142441 71.928233 72.231236 72.000000 72.000000 95.206614 111.757130 90.911865 71.748159 93.306987 127.356059 123.920508 107.928549 123.167735 120.321463 153.108335 169.356079 130.362148 87.709202 85.775870 95.250000 102.665903 109.633837 118.855748 126.871162 137.418619 150.075805 164.413237 178.000000 188.465433 202.356830 207.106577 216.105447 248.643489 263.307337 266.528115 264.250000 259.556495 261.004539 260.577338 260.175144 262.811740 265.888807 269.208862 272.324972 275.882547 279.512568 282.533803 285.154806 286.597325 287.379752 287.867253 | ||
167 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.808374 287.264258 286.357141 285.205918 283.250247 280.197652 277.171638 273.597731 269.293127 265.062221 260.330139 253.877940 244.566591 238.117082 232.890709 226.000000 220.516932 218.860544 217.429704 210.546590 207.106577 210.182094 201.082491 194.000000 184.655896 178.338959 176.856600 174.076876 166.427569 161.484466 194.972379 221.250000 165.109952 152.059659 146.955606 123.264196 116.319699 113.148049 70.970851 60.344901 78.395562 77.335191 72.864221 72.731122 73.084797 79.894012 96.205543 92.000000 90.000000 82.220531 107.774240 110.719717 101.237047 107.908963 122.546360 125.817381 111.660599 107.600243 93.421163 188.145131 229.104816 150.274297 77.252253 85.775870 97.500000 106.271625 111.707862 119.516468 128.129981 140.406345 156.293699 170.805656 183.500000 197.811402 214.529463 218.375313 218.699581 261.875419 277.814277 277.961196 269.000000 261.334214 266.677498 262.110282 263.543416 264.052541 267.025364 269.798718 272.793883 277.635711 281.567820 283.091037 285.239992 286.683792 287.623574 287.923992 | ||
168 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.788033 287.148764 286.270675 285.222955 283.091037 280.502134 277.429456 273.530744 269.630188 266.612071 263.432141 258.564232 246.780844 245.159376 238.890511 232.000000 228.324890 226.577002 221.840348 216.105447 215.155674 211.921042 197.811402 191.500000 186.786703 187.383169 187.612413 179.741562 170.391888 156.645074 163.963173 168.000000 161.998811 177.799842 169.356774 136.921050 120.699298 107.767989 74.633790 81.804193 141.940799 104.269505 73.837686 68.799270 68.132834 83.876902 112.188415 103.000000 105.000000 98.203402 129.680134 127.556392 113.032601 106.935498 110.041143 122.023635 119.124701 105.768774 112.251373 222.306007 241.054564 143.636914 72.425969 85.775870 100.500000 110.598491 114.473229 122.159347 136.941715 152.357248 164.207382 177.198075 197.000000 215.101444 222.354728 230.448958 242.417371 269.000305 277.814277 278.518908 270.750000 264.223007 270.589884 269.264020 268.522601 265.541503 268.678537 270.220044 274.937477 281.451419 283.775314 283.170642 285.291103 286.904761 287.803232 287.957178 | ||
169 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.808374 287.230038 286.424393 285.648882 283.701340 281.339459 277.532583 272.994845 270.304309 268.781861 264.300702 258.417785 250.868694 252.788529 246.223602 238.500000 233.344292 226.268343 218.447545 215.364266 210.728671 202.791567 195.474910 189.500000 199.038839 203.775799 199.563316 196.735619 187.570601 174.619959 167.568894 165.000000 178.332299 180.212984 161.889718 143.749477 138.217696 123.908169 92.948486 148.981107 177.032945 111.003083 88.439662 81.577788 69.123227 82.881179 100.201261 92.000000 92.000000 100.201261 107.774240 109.729325 108.117787 106.935498 111.965023 121.075199 122.856752 111.263182 142.738379 218.802328 187.280700 113.768689 80.469776 84.998085 100.500000 109.877347 115.164571 127.445105 150.159315 169.088513 180.600012 191.581017 214.500000 237.999067 224.963149 232.863687 267.246933 276.803751 277.814277 278.797763 278.500000 275.111537 272.937315 275.906776 268.669048 266.410063 269.918417 271.484022 279.157677 285.937455 284.955181 282.905292 285.512585 287.144945 287.820342 287.955037 | ||
170 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.825502 287.349809 286.568503 285.648882 283.489061 281.758122 278.254474 273.128820 270.388574 269.195154 262.811740 255.928193 252.912619 248.680524 245.112527 238.750000 230.276879 221.947127 215.394023 212.028952 207.106577 201.922093 196.876805 193.500000 210.225572 206.602114 195.380500 209.953219 217.963708 218.174487 207.231833 195.000000 187.665720 167.342893 140.318222 132.653283 143.473216 145.428409 150.639779 228.287187 157.115781 89.840408 100.121243 117.947416 124.585214 131.671578 110.190556 85.000000 85.000000 88.214108 93.834126 97.844613 98.288158 104.988568 112.926963 110.642399 124.722777 135.072287 153.498499 168.874893 124.971302 93.856540 89.317964 86.553655 99.000000 105.550481 112.399204 136.034461 155.194591 176.856600 207.732640 220.879603 229.500000 258.092900 238.439993 245.742242 270.952838 276.803751 275.036352 276.009207 279.250000 277.333686 269.611787 268.071730 265.154329 267.402704 272.708147 276.118608 282.373067 286.298400 284.650699 283.037967 285.393326 287.135338 287.820342 287.964672 | ||
171 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.811585 287.277091 286.251461 284.694805 282.799153 280.426013 278.254474 275.138439 271.231226 267.335334 261.322779 256.074639 251.379675 244.376899 241.334874 236.250000 229.440312 223.181760 219.126106 217.958400 213.545855 203.226304 200.147894 203.000000 210.225572 208.297903 200.758406 203.029714 207.392193 195.360210 199.299246 196.500000 187.665720 176.995461 159.400699 165.941865 188.145131 186.675536 250.454873 243.215390 109.693962 61.944155 64.103035 96.322232 172.124061 220.290875 157.140241 110.000000 89.000000 87.215178 92.838404 94.873435 98.288158 97.200847 97.535926 118.229890 146.182069 145.145370 148.118439 134.714017 113.875108 113.768689 117.471289 105.998283 102.000000 109.877347 115.164571 151.891735 163.376915 184.624687 223.560007 246.449278 243.500000 243.139350 252.351574 271.901806 274.658743 276.464471 263.924654 266.249259 277.750000 276.000396 265.503782 258.703740 264.568542 269.760226 272.191531 275.191691 282.172105 286.298400 285.373844 283.701340 285.171844 287.058479 287.794677 287.962531 | ||
172 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.815867 287.208650 286.213031 284.745916 283.303316 282.519326 283.978037 280.430435 272.242409 267.955274 262.439500 255.342406 255.637852 252.592909 243.334808 240.000000 233.623147 223.799077 224.215310 227.593752 217.167948 208.008410 216.036041 215.500000 213.954483 208.297903 191.197684 183.518019 202.106435 186.372768 179.828348 202.500000 189.999075 160.907847 200.054672 254.711418 240.700325 221.645926 249.539138 183.502577 64.169016 39.819540 35.872548 39.310383 64.171263 85.868347 85.217319 93.000000 86.000000 87.215178 91.842681 83.979116 106.151861 152.688356 193.729903 228.248509 216.158022 158.881392 140.945026 129.458497 118.142875 127.873129 142.407091 130.887406 112.500000 132.232821 166.323858 180.963403 194.217981 222.270032 236.561058 239.524158 244.500000 249.681528 270.610524 273.914081 267.246933 268.661025 273.801719 277.682341 274.500000 268.667305 268.829310 268.412384 257.685552 265.541503 266.922041 271.568287 281.100308 285.885891 284.308157 283.144107 285.018510 287.096908 287.576521 287.937909 | ||
173 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.792316 287.127376 286.078528 284.609620 284.921948 284.688760 282.018619 277.148058 271.821083 267.645304 263.804381 258.124892 257.852105 256.896534 245.334742 241.750000 252.585332 258.368805 244.232846 222.776076 211.131126 214.094726 210.895758 202.500000 189.982912 190.209484 202.551042 212.470857 212.677950 194.668868 176.943771 174.750000 176.776728 162.516609 210.010747 242.761670 208.291289 229.716016 245.876199 149.914120 63.220580 40.781480 35.872548 37.344457 41.392233 51.018061 82.220531 116.000000 96.000000 107.193767 120.718632 96.854220 111.066676 186.759633 250.484349 254.804727 239.483340 119.504796 96.111193 100.553141 108.753788 116.257708 128.732619 140.998613 140.250000 154.588296 192.594843 176.999085 189.812114 231.233210 252.953688 254.972503 260.000000 268.373466 272.784208 267.877258 262.058667 271.714547 277.814277 269.595527 258.000000 256.223272 259.635204 257.341123 261.346717 264.797022 266.612071 271.484022 276.143248 279.131056 281.187218 282.746083 284.677768 286.453215 287.319866 287.870465 | ||
174 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.790174 287.153041 286.395571 285.393326 284.019760 281.796182 278.563856 276.143248 272.579470 266.198777 262.563580 259.150018 254.615890 254.353483 251.778974 262.250000 274.057217 275.962327 259.161177 219.440762 212.338490 212.790516 203.418983 193.500000 189.450211 198.688431 207.331403 213.729676 227.874504 213.335095 174.780338 187.500000 193.110216 218.018878 249.005373 252.150758 238.948485 251.236257 247.707669 155.512196 76.498689 50.400878 45.607199 41.276309 47.334588 69.936788 92.209826 105.000000 103.000000 131.168075 134.658746 106.758147 117.947416 193.573889 256.255988 239.629745 155.512196 114.010387 111.354696 99.677221 99.364701 101.323596 112.645004 139.443043 150.750000 138.723121 162.175808 190.213480 196.735619 215.099490 241.083163 256.570608 263.500000 271.177256 272.784208 267.072348 265.764571 274.089509 277.814277 276.566918 264.000000 249.779040 250.636716 254.104909 261.493164 264.672942 266.818717 271.315492 274.803502 278.202910 281.225278 282.693013 284.728879 286.376356 287.311311 287.845842 | ||
175 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.792316 287.174429 286.462822 285.597771 283.091037 280.578254 277.945092 275.674337 273.674917 269.401801 263.308061 262.225397 260.066357 253.962244 265.778512 276.750000 278.797763 275.962327 254.411254 211.658362 208.313942 208.008410 201.549789 191.500000 190.515614 208.863167 215.697036 199.882667 206.070753 219.557170 212.279844 201.750000 224.221620 251.802868 260.620794 259.832738 259.094643 244.062843 164.375801 90.201307 60.375271 51.362818 47.554129 40.293346 51.296159 85.868347 106.194838 100.000000 118.000000 128.171286 134.658746 113.690895 137.606674 210.122795 256.255988 231.093818 119.124701 147.892575 118.528109 90.918022 93.389827 108.790652 120.688811 138.665258 161.250000 157.472874 177.385325 195.499237 214.359086 213.904400 224.690533 244.851173 252.500000 252.018020 258.872627 269.084623 272.805790 276.125191 277.814277 277.124629 260.250000 242.890379 249.854239 255.297198 257.392659 262.067260 267.645304 271.652552 274.937477 279.595128 283.280531 284.152434 285.120732 286.347534 287.375475 287.838349 | ||
176 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.805162 287.204372 286.251461 285.222955 283.037967 280.920797 277.996656 276.277223 278.225238 277.151050 266.906384 270.426407 265.857478 253.375386 269.556165 279.500000 278.797763 264.541970 230.322355 203.875962 199.057481 205.399988 206.690072 197.000000 189.982912 205.471588 212.111765 191.070934 186.909881 201.582285 215.885565 213.750000 246.777389 261.455436 260.620794 253.004311 220.554167 153.498499 70.055116 44.483685 44.251853 44.629239 45.607199 41.276309 47.334588 75.911122 109.191626 126.000000 132.000000 113.187344 116.735742 124.585214 154.317044 213.043190 254.332108 210.228218 93.933358 107.600243 88.937779 79.531063 95.096934 113.768689 115.862527 131.665192 189.000000 210.116411 178.076667 162.463251 180.370972 202.551042 225.255796 236.327948 238.000000 250.616125 261.481049 272.304261 275.399924 276.803751 263.307337 252.027621 242.250000 238.001651 250.636716 255.297198 256.660426 261.819100 269.401801 272.832265 275.607350 281.245165 285.792506 285.877205 285.257029 286.337927 287.302756 287.823361 | ||
177 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.866183 287.259981 286.107350 284.933324 283.489061 281.111098 277.945092 277.014083 279.236420 277.151050 267.402704 271.012193 262.961917 252.006051 265.111867 272.500000 270.710949 249.109056 212.001220 200.911238 193.423113 201.487356 206.690072 199.000000 194.244525 199.253694 198.368226 187.294476 183.606282 182.916059 213.722132 239.250000 256.888595 261.455436 244.857009 203.498214 139.969536 67.417539 42.583072 47.282723 47.097162 48.476998 47.554129 41.276309 38.421055 57.988119 104.196979 139.000000 127.000000 119.180921 122.710077 132.508355 140.555563 189.680028 247.598530 193.156363 61.277913 48.993216 63.830832 88.290262 107.046681 110.449998 100.579294 120.776200 201.000000 239.683329 168.397883 157.177493 167.782781 213.306855 250.692636 241.122262 227.000000 258.560199 272.784208 274.316535 265.764571 257.125496 238.923333 231.950013 235.000000 240.890445 250.049859 253.253273 260.468037 265.665583 270.641681 272.832265 278.018893 284.132728 286.401470 285.585321 285.444437 286.376356 287.212927 287.815867 | ||
178 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.917569 287.268536 286.376356 285.137769 283.966690 281.187218 277.996656 275.540363 273.422121 270.021741 264.548862 262.518290 258.192759 250.441097 258.445420 255.250000 251.748765 242.009916 214.036902 197.575924 191.008384 195.835776 199.213297 198.000000 201.169645 198.123168 189.405048 186.035657 188.231320 205.730336 249.779350 261.750000 262.333091 247.780964 190.098597 122.410642 84.786582 63.830832 53.571890 48.215736 52.787780 63.868034 54.368384 41.276309 39.411447 59.979563 102.199120 117.000000 119.000000 146.152016 166.521863 150.335423 146.453341 195.520819 249.522409 200.743854 52.880799 54.487624 68.314216 99.677221 109.607341 102.982942 99.774913 119.220630 171.000000 208.674122 184.990084 189.552760 197.365029 234.220936 252.388425 226.206619 215.000000 260.429392 271.479998 258.620797 235.746743 222.179628 224.107735 233.344292 241.500000 246.668032 249.854239 251.720329 263.104076 267.154544 269.918417 272.410939 280.363448 285.524946 284.308157 283.462526 285.495548 286.126565 287.153041 287.806233 | ||
179 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.861901 287.182984 286.923976 285.631845 283.966690 281.187218 278.357601 274.937477 272.748000 272.708147 268.767585 265.886562 262.961917 247.311189 243.779238 235.500000 239.757972 243.244549 219.126106 192.017066 188.996110 197.139987 197.811402 206.500000 205.963959 193.035800 182.832052 188.553295 213.999390 263.111698 263.481092 258.750000 242.110678 182.626126 122.895091 93.389827 79.531063 64.727509 59.066298 50.081761 51.839344 67.715794 58.262245 51.105938 63.180871 82.881179 100.201261 108.000000 130.000000 157.140241 187.432035 184.008773 217.226670 255.875653 244.712711 176.084508 48.215736 59.066298 70.107569 80.406983 84.000740 88.048829 102.188055 120.776200 132.000000 145.213420 176.693984 169.070448 159.600457 191.197684 195.862115 177.730776 206.000000 266.971570 258.437891 219.582677 207.952457 210.644099 216.699936 227.488323 239.000000 245.334742 247.898046 253.423600 262.664737 262.315420 268.161921 274.096243 278.487804 280.574837 280.996917 282.188849 284.473323 285.617375 286.964828 287.770905 | ||
180 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.832996 287.217205 286.808687 285.580734 283.409456 280.996917 281.967055 281.904156 280.500398 282.523864 282.416396 281.409903 270.285982 246.137473 235.779502 230.750000 232.228869 229.046268 209.626258 194.240609 197.045206 207.573673 204.353580 198.000000 201.702347 195.862115 177.454145 191.070934 252.321134 263.803040 255.548504 226.500000 140.220828 113.449385 108.790652 92.536274 83.910662 77.280983 69.139381 51.014774 40.458107 52.324757 48.527594 57.003715 74.075190 86.864069 110.190556 128.000000 130.000000 156.141311 180.461977 171.133668 210.345930 255.875653 212.006758 87.879926 48.215736 56.319094 62.934156 69.020024 80.586526 89.708175 101.383674 111.442779 111.000000 117.088790 143.509581 154.534614 149.529905 186.417323 194.731589 192.113718 220.000000 231.456889 211.486305 214.350764 210.546590 207.251296 218.243228 235.853993 243.250000 242.668164 247.898046 257.000469 262.371843 261.446859 267.232011 273.000795 274.267604 276.243493 280.083471 282.241919 283.655543 285.569338 286.917775 287.769834 | ||
181 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.856548 287.255703 286.270675 284.950361 282.905292 281.034977 281.915492 284.181724 284.882188 283.557097 280.927435 277.602291 254.956544 243.007564 236.446147 229.750000 220.795787 211.452746 203.858494 199.058285 204.691848 208.443147 214.634146 203.000000 206.496661 196.992642 178.051690 202.400305 264.874809 254.124256 184.155214 129.750000 116.887274 128.732619 122.065418 103.632468 98.801301 92.524486 77.380995 58.478875 48.045598 46.553119 45.607199 56.020752 69.123227 81.885457 108.192697 116.000000 126.000000 175.120971 187.432035 143.402675 189.703709 255.875653 190.844084 34.767489 49.148748 59.066298 62.037479 69.895944 81.440079 90.537848 96.557390 102.109357 104.250000 114.204213 165.632516 237.124581 209.953219 194.185410 186.817906 182.525090 193.000000 203.418983 203.661041 208.716397 207.952457 210.644099 226.577002 242.825384 246.000000 245.112527 252.788529 258.874067 260.321591 264.300702 266.715394 269.545923 272.124010 275.212220 278.751363 281.498941 283.655543 285.626982 286.922053 287.742000 | ||
182 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.785892 287.020437 285.982454 284.865176 283.409456 282.024543 279.440438 281.234283 285.219249 279.940780 263.183981 257.831998 248.313787 245.354996 238.001651 229.000000 219.959220 213.304695 210.644099 209.064228 206.704123 200.617882 194.073014 196.000000 200.636943 185.687380 176.856600 213.100267 255.624733 206.421677 158.915162 144.000000 152.665390 140.798329 122.895091 114.728662 110.188260 98.801223 72.802321 141.517006 106.848653 54.248637 55.341850 73.714085 81.007938 87.859791 95.206614 107.000000 144.000000 173.123112 182.453422 212.730159 247.698521 224.724771 124.470240 32.870616 47.282723 61.813503 82.661043 90.918022 91.682720 95.515885 98.970532 100.553787 120.000000 183.434070 218.174487 250.999695 204.917943 169.088513 167.033697 185.188598 198.500000 189.867329 188.879986 202.679574 218.699581 220.483227 224.416394 230.276879 237.500000 248.001321 259.243965 263.302572 257.685552 262.439500 263.719017 266.765171 270.918239 274.748147 278.256580 281.419336 283.877025 285.607767 286.904942 287.742000 | ||
183 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.775187 286.934885 285.838344 284.319989 283.727875 284.079796 283.410837 283.779800 281.848641 270.435034 257.104056 252.413474 250.528040 249.854239 238.001651 228.000000 220.795787 215.156645 212.679781 210.176000 200.264845 194.096829 186.128941 191.500000 192.646420 186.252643 179.844326 186.035657 201.445715 194.668868 173.338049 201.750000 174.443373 127.928238 107.131306 105.339574 99.677221 88.937779 93.864221 220.823085 148.579853 55.210577 53.394919 73.714085 83.979116 100.804183 106.194838 134.000000 174.000000 224.068514 236.222434 251.355472 212.311856 120.564009 52.324757 39.509671 46.349710 63.644972 89.834456 90.042102 90.829167 102.982942 106.209959 113.776134 165.000000 219.491287 158.719099 152.552455 150.788724 150.564613 164.772645 184.655896 191.000000 187.530836 191.488407 209.923761 218.328990 218.447545 221.638469 226.372900 235.000000 250.667900 263.351970 257.000469 252.999260 257.600376 261.652551 266.091050 270.516315 274.490329 278.142399 281.339731 283.894062 285.559731 286.883554 287.731295 | ||
184 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.783751 286.973383 285.944025 284.507397 283.515596 284.802940 286.143709 282.708003 272.916530 261.755874 255.863255 251.681241 248.143460 242.811945 234.668428 227.500000 220.795787 214.539328 210.644099 208.323047 203.082029 194.096829 190.801925 191.500000 189.982912 186.817906 184.624687 179.112153 176.338365 201.582285 193.530091 189.000000 146.443109 117.471289 111.279671 116.435768 111.940099 96.111193 130.493613 191.899692 113.487708 50.400878 50.474524 69.782233 95.863828 119.722909 127.172357 191.000000 227.000000 251.039610 255.141160 204.807018 109.100750 42.686804 35.971781 45.200289 48.215736 59.066298 84.454396 90.042102 85.707846 93.856540 102.992436 111.442779 139.500000 151.703719 129.682747 126.123666 135.682896 148.174432 159.120014 167.609446 177.000000 187.530836 193.227355 208.716397 210.917181 213.697621 223.490419 228.324890 238.500000 254.667767 257.483391 247.632479 250.070328 255.739175 261.239258 266.175315 270.516315 274.593456 278.218520 281.153987 283.672580 285.655804 286.939163 287.727013 | ||
185 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.793386 287.058935 286.136172 284.848139 282.772618 283.128290 284.545237 278.956715 267.270762 259.689408 256.235495 251.681241 245.247900 237.138986 232.446279 229.500000 222.468921 215.156645 212.340500 209.064228 208.716397 197.574724 195.474910 201.500000 201.169645 189.078958 187.612413 191.700343 175.677645 194.668868 189.203225 143.250000 121.553985 121.493192 117.087381 114.728662 111.064179 97.904546 142.398166 121.923739 75.550253 47.515058 47.554129 64.867419 89.921472 128.684411 187.108124 238.000000 252.000000 228.064232 186.436312 101.806184 38.327420 29.058293 40.781480 48.045598 58.478875 62.729238 79.971013 96.173541 88.268507 88.048829 96.557390 98.998217 107.250000 111.319635 133.139456 138.677340 139.459353 149.967068 164.207382 169.207551 172.000000 183.792449 191.053670 202.277119 208.323047 214.036902 222.873102 227.209467 239.500000 254.001123 250.636716 245.758881 250.070328 255.491015 261.239258 266.512376 270.918239 274.851275 278.370761 281.180522 283.655543 285.799915 287.003326 287.737718 | ||
186 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.796598 287.080323 286.145780 284.728879 282.427664 281.605881 280.987346 275.138439 266.175315 261.032611 256.855896 251.827687 244.566591 237.921463 238.668296 234.750000 224.142055 216.391278 214.376182 211.658362 211.936035 200.617882 202.017088 215.500000 213.421781 195.862115 188.807503 191.070934 179.641964 187.064109 166.847750 124.500000 119.220630 123.101954 112.109344 97.657594 90.042102 87.144426 117.673326 80.871180 65.117453 47.515058 45.607199 57.986678 68.132834 122.710077 245.046033 248.000000 189.000000 124.175568 70.932510 34.459484 30.463717 39.766408 39.819540 47.097162 72.474066 77.380995 70.107569 76.903303 83.147186 87.219156 90.926725 96.664861 109.500000 122.857945 124.843355 131.409423 137.571124 151.162158 169.860013 178.263478 178.500000 187.530836 199.748409 204.289393 212.770133 222.179628 223.799077 225.815189 237.000000 250.223470 252.984148 251.379675 250.509668 255.118774 261.859198 267.439293 271.454137 275.005965 278.637182 281.711220 283.877025 285.761485 286.999049 287.747353 | ||
187 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.791245 287.071767 286.030491 284.439249 282.533803 280.882736 277.738838 272.190998 266.175315 261.445904 256.731816 251.241901 244.055610 242.029468 248.445751 238.250000 223.863199 218.243228 215.733303 214.993676 216.765493 209.747357 217.437936 225.500000 217.683393 202.645272 187.612413 174.076876 176.338365 190.520818 151.703719 123.750000 117.665059 115.862527 107.131306 91.682720 78.655143 79.074336 82.875403 80.871180 70.808071 54.248637 47.554129 52.088901 56.248122 118.727187 248.042822 199.000000 61.000000 17.290116 24.133556 32.478699 37.344457 42.686804 48.476998 56.581526 75.273104 81.043934 76.384306 86.538422 98.511147 95.515885 93.339867 102.887142 110.250000 120.694512 117.238596 124.141506 137.571124 157.735155 169.294750 176.665373 188.000000 200.147894 216.703148 214.753219 220.923124 231.340195 230.898217 229.161457 235.250000 247.556891 257.874630 255.467525 250.509668 255.739175 263.925664 268.534740 271.722087 275.109093 278.827484 282.188849 283.979248 285.578945 286.947718 287.744141 | ||
188 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.799809 287.153041 286.107350 284.507397 282.135779 278.979725 275.521602 271.454137 266.596641 261.755874 257.228136 251.095454 244.566591 247.506808 246.445817 233.750000 224.142055 222.873102 220.143947 217.958400 223.607226 224.528412 225.849308 227.000000 227.804723 214.515798 195.978045 186.035657 177.659805 172.545933 143.771131 117.750000 111.442779 107.818720 103.812615 91.682720 79.531063 81.764366 71.886586 107.928549 100.209599 65.791914 48.527594 49.140012 57.238515 107.774240 178.117759 76.000000 19.000000 25.281552 28.116446 31.488306 39.310383 49.501059 66.753854 78.395562 64.076952 70.055116 140.945026 200.408010 171.063185 138.658877 131.145761 115.331704 106.500000 119.973368 128.300064 132.070143 142.606400 169.686058 183.991590 187.319404 197.500000 210.428460 222.354728 222.802316 229.817295 232.697316 233.058825 233.065436 235.750000 243.557023 252.397290 253.082946 251.974134 258.344857 265.475514 268.787536 271.722087 275.263784 278.675243 281.737755 283.894062 285.569338 286.913497 287.734506 | ||
189 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.807303 287.217205 286.261068 284.728879 282.348059 279.322267 275.676293 271.119201 266.175315 261.755874 257.104056 251.241901 245.077573 242.225087 234.001783 228.000000 226.651756 225.651027 221.161787 216.105447 224.412135 213.659989 201.082491 212.000000 243.253069 241.083163 237.208661 265.341257 241.088899 141.435556 125.742522 120.750000 109.109423 97.361771 89.708175 84.000740 81.282903 88.937779 86.538343 110.727587 106.848653 62.906095 44.633734 49.140012 54.267337 51.018061 35.270846 26.000000 29.000000 28.278340 30.107890 37.430662 50.122975 59.235710 63.868034 70.808071 65.942977 78.296729 224.335956 259.094643 188.987807 177.653503 189.061172 146.443109 129.000000 132.953966 137.287506 141.980939 153.306362 176.259055 190.774747 202.235048 220.500000 230.054994 228.875781 234.071052 245.752686 234.054437 225.959685 231.392302 239.250000 242.668164 246.724331 251.039021 255.195959 262.563580 264.752251 267.860619 272.057023 275.521602 278.446881 281.419336 283.945173 285.684626 286.926330 287.727013 | ||
190 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.840490 287.508080 286.683792 284.490360 283.276782 284.612639 281.090474 272.458947 265.585458 261.652551 256.235495 250.070328 244.907246 239.290798 233.112924 229.000000 228.324890 227.194318 224.215310 223.887847 223.204771 237.135782 249.681528 251.500000 261.897623 267.085265 265.293284 266.600076 248.356816 182.916059 145.213420 123.750000 108.331638 98.970532 92.197194 83.147186 76.903303 81.764366 84.706873 75.273104 62.272144 53.286697 47.554129 46.191123 46.344196 40.065115 30.276199 27.000000 29.000000 29.277269 42.056560 45.353803 45.208160 50.474524 57.134456 61.323707 65.942977 78.296729 225.232633 259.094643 208.619535 157.741354 132.754522 126.220696 138.750000 148.097997 150.422998 150.570296 174.076876 190.002594 206.602114 225.141215 232.000000 231.456889 248.438942 265.462529 243.158552 233.715157 229.972243 231.671158 236.750000 242.668164 248.484904 251.209348 256.074639 260.702379 265.062221 270.051514 274.334591 276.913820 279.474508 282.321524 283.894062 285.751878 287.003326 287.728083 | ||
191 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.838349 287.358365 286.501252 284.643694 284.630063 286.096988 281.709237 272.860871 266.512376 262.479138 255.863255 250.216775 244.055610 239.877656 235.112858 230.250000 226.651756 223.799077 222.518908 222.776076 217.972858 262.785260 270.242659 269.000000 269.355445 269.346318 268.281010 242.053105 182.945563 216.791803 180.549493 141.750000 110.664993 95.753009 92.197194 91.682720 84.786582 76.384306 80.128199 83.670218 59.426835 51.362818 52.421454 49.140012 45.353803 41.060837 32.274058 25.000000 29.000000 33.272987 38.073670 37.430662 39.310383 49.501059 60.020275 69.859635 79.938167 86.538343 182.192153 229.313366 171.916739 110.449998 90.122344 91.220366 113.250000 146.655708 160.793124 168.409728 196.106210 207.928948 223.560007 248.047383 264.000000 264.635078 264.958944 258.620797 237.229105 234.393718 232.132851 231.392302 234.500000 241.557089 250.441097 254.275236 257.246212 260.826459 265.268867 270.135779 273.195807 275.882547 279.208086 282.109244 283.979248 285.665412 286.973383 287.740930 | ||
192 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.826573 287.294201 286.491645 285.478511 283.542131 282.557387 280.987346 274.401578 266.849436 263.512371 256.855896 251.534794 251.379675 249.267381 237.112792 231.000000 227.767179 223.490419 223.876029 223.517257 213.948310 255.394732 270.242659 271.500000 270.420848 269.346318 268.281010 238.906057 165.106130 188.446793 166.847750 149.250000 123.887340 105.405578 95.515885 90.829167 86.538422 73.694276 68.223647 67.809002 57.529962 52.324757 50.474524 48.157049 43.373018 42.056560 44.261211 31.000000 27.000000 34.271917 38.073670 40.401840 47.174086 56.315315 66.753854 81.240871 93.933358 110.347448 137.358319 170.626733 151.431458 123.724764 102.992436 95.109291 126.750000 157.472874 168.397883 176.338365 199.882667 239.001297 247.301057 251.776294 271.500000 269.775361 255.394732 234.875961 234.634971 231.679476 230.898217 232.507725 234.750000 240.001585 249.463001 258.192759 261.346717 268.271265 269.505124 270.725635 273.195807 276.552874 279.893170 282.480733 284.285915 285.886381 287.080323 287.756988 | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/qcif/texture_synthesis b/SD-VBS/benchmarks/texture_synthesis/data/qcif/texture_synthesis new file mode 100755 index 0000000..7eb8bf7 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/qcif/texture_synthesis | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/sim/1.bmp b/SD-VBS/benchmarks/texture_synthesis/data/sim/1.bmp new file mode 100644 index 0000000..46f3539 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/sim/1.bmp | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/sim/Makefile b/SD-VBS/benchmarks/texture_synthesis/data/sim/Makefile new file mode 100644 index 0000000..94222e7 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/sim/Makefile | |||
@@ -0,0 +1,6 @@ | |||
1 | INPUT=sim | ||
2 | include ../../../../common/makefiles/Makefile.include | ||
3 | |||
4 | BMARK=texture_synthesis | ||
5 | include $(MAKEFILE_COMMON_DIR)/Makefile.common | ||
6 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/sim/expected.m b/SD-VBS/benchmarks/texture_synthesis/data/sim/expected.m new file mode 100644 index 0000000..d17b3c6 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/sim/expected.m | |||
@@ -0,0 +1,32 @@ | |||
1 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 280.768556 262.957630 238.306016 182.500000 140.052873 118.996429 93.688167 70.000000 75.000000 98.497866 92.536274 117.238596 163.000000 213.304695 252.267027 278.446881 | ||
2 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 279.855110 257.539105 225.342368 192.000000 160.101783 124.117749 87.916529 65.000000 70.000000 94.650107 95.096934 128.991405 173.500000 214.847987 251.974134 278.484942 | ||
3 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 279.093905 253.292154 218.243228 193.000000 152.497024 107.900235 73.487432 64.000000 80.000000 99.459806 95.096934 140.052873 189.000000 221.329811 259.589358 280.083471 | ||
4 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 278.561062 252.559921 216.391278 182.000000 136.596164 97.657594 64.829974 100.000000 189.000000 183.148565 112.168002 142.126898 182.000000 222.873102 260.907377 281.187218 | ||
5 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 279.664809 261.346717 228.120293 189.000000 133.830797 90.829167 61.944155 132.000000 255.000000 226.435855 106.193128 134.522139 170.000000 218.551886 258.271338 280.616315 | ||
6 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 280.730495 265.447222 229.972243 185.000000 132.448114 89.122060 78.297131 157.000000 242.000000 176.414987 86.561400 120.695305 167.000000 217.317253 257.246212 279.512568 | ||
7 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 279.664809 257.246212 215.465303 165.000000 126.917380 97.657594 110.041143 163.000000 169.000000 101.383685 84.854293 111.707862 168.000000 220.712494 256.074639 278.789423 | ||
8 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 278.979725 254.463726 217.317253 180.500000 131.756772 99.364701 111.003083 110.000000 72.000000 66.753854 87.414953 120.695305 172.500000 218.551886 252.852814 278.180460 | ||
9 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 281.377519 259.735804 220.403836 192.000000 134.522139 91.682720 80.221010 72.000000 65.000000 69.639673 87.414953 141.435556 181.000000 216.391278 252.559921 278.408821 | ||
10 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 281.149158 257.246212 218.243228 175.500000 127.608722 90.829167 64.829974 65.000000 84.000000 80.221010 84.854293 145.583606 177.000000 221.638469 256.806872 278.789423 | ||
11 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 279.017785 254.024387 216.082620 173.000000 135.904822 101.071807 68.677733 57.000000 66.000000 82.144890 107.046681 135.904822 226.500000 256.825513 259.296465 277.990159 | ||
12 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 278.903604 254.024387 217.008595 177.500000 155.953732 121.557089 81.182950 62.000000 66.000000 85.030709 99.364701 180.842034 260.000000 256.208197 254.756620 277.495375 | ||
13 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 279.246146 256.513979 221.329811 178.000000 149.040315 124.117749 94.650107 73.000000 65.000000 74.449372 110.460895 234.766688 238.500000 227.502976 249.777435 277.761797 | ||
14 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 280.882736 257.539105 221.638469 183.000000 148.348973 119.849982 92.726227 69.000000 58.000000 89.840408 188.987807 232.001321 194.000000 209.292138 249.191649 278.180460 | ||
15 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 282.176784 259.589358 221.329811 185.000000 146.274948 108.753788 77.335191 62.000000 87.000000 173.529168 248.736544 193.286185 167.000000 207.131530 250.509668 278.408821 | ||
16 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 281.910363 263.836309 231.515534 188.500000 139.361531 99.364701 69.639673 71.000000 146.000000 250.484349 214.594408 158.027757 163.000000 206.514213 250.656115 278.446881 | ||
17 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 281.796182 264.861436 244.787840 207.500000 173.237275 132.653283 78.297131 73.000000 150.000000 208.158999 121.557089 122.077988 164.500000 208.366163 250.363221 278.294640 | ||
18 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 281.605881 262.225397 232.441509 201.000000 229.927296 198.376894 96.573987 57.000000 91.000000 111.003083 127.531963 128.300064 164.000000 207.748846 249.630988 278.256580 | ||
19 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 281.453640 262.811183 229.046268 191.500000 218.865828 244.468777 174.491108 116.000000 141.000000 140.823216 129.239069 129.682747 164.500000 208.674821 249.484542 278.104339 | ||
20 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 280.920797 260.321591 230.280901 190.500000 196.051552 237.640350 246.636590 210.000000 159.000000 109.079203 95.950487 126.226038 167.500000 208.983479 249.484542 278.066279 | ||
21 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 280.426013 259.003571 227.811635 178.000000 212.643753 255.564971 225.473915 160.000000 102.000000 66.753854 96.804041 133.830797 170.500000 210.218112 250.070328 278.104339 | ||
22 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 279.893170 256.660426 218.551886 203.000000 245.136814 205.205321 135.051577 109.000000 75.000000 51.362818 101.925361 144.892265 169.000000 209.600796 250.656115 278.218520 | ||
23 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 279.702869 261.932504 242.627232 248.500000 234.766688 137.774603 73.487432 76.000000 61.000000 55.210577 95.950487 142.818240 164.500000 209.292138 250.656115 278.142399 | ||
24 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 281.948423 274.673359 274.419036 271.500000 191.212160 107.900235 65.791914 51.000000 48.000000 63.868034 102.778914 136.596164 161.000000 211.452746 251.681241 278.142399 | ||
25 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 284.460398 279.945436 276.888302 258.500000 161.484466 95.096934 65.791914 46.000000 51.000000 73.487432 118.142875 131.065430 162.000000 214.539328 252.852814 278.294640 | ||
26 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 282.747688 274.819805 274.727694 214.500000 140.052873 86.561400 56.172516 46.000000 52.000000 76.373251 106.193128 117.929938 164.500000 212.996037 251.534794 278.294640 | ||
27 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 281.339459 281.263456 271.332453 186.000000 124.152013 78.879419 42.705360 32.000000 36.000000 56.172516 78.879419 114.473229 162.000000 210.218112 250.656115 278.294640 | ||
28 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 281.377519 273.355339 234.602117 172.000000 115.164571 70.343885 42.705360 32.000000 28.000000 37.895661 72.050992 115.855913 162.000000 209.292138 250.363221 278.104339 | ||
29 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 279.398387 254.903066 216.082620 164.000000 111.016521 72.050992 44.629239 29.000000 24.000000 30.200143 62.661905 113.090546 161.500000 208.983479 250.070328 278.142399 | ||
30 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 279.664809 250.802561 212.378720 164.500000 113.090546 73.758099 41.743420 27.000000 43.000000 70.601613 78.879419 115.164571 164.000000 211.761404 253.731493 279.322267 | ||
31 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 280.540194 252.706367 213.922012 164.000000 112.399204 76.318759 52.324757 47.000000 64.000000 85.992649 87.414953 122.769330 169.000000 214.230670 254.903066 279.778990 | ||
32 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 280.121532 254.024387 214.230670 161.000000 111.016521 79.732973 67.715794 70.000000 74.000000 83.106830 103.632468 135.213481 176.500000 217.008595 255.342406 280.045411 | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/sim/texture_synthesis b/SD-VBS/benchmarks/texture_synthesis/data/sim/texture_synthesis new file mode 100755 index 0000000..53ca033 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/sim/texture_synthesis | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/sim_fast/1.bmp b/SD-VBS/benchmarks/texture_synthesis/data/sim_fast/1.bmp new file mode 100644 index 0000000..4be8889 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/sim_fast/1.bmp | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/sim_fast/Makefile b/SD-VBS/benchmarks/texture_synthesis/data/sim_fast/Makefile new file mode 100644 index 0000000..3a56abd --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/sim_fast/Makefile | |||
@@ -0,0 +1,6 @@ | |||
1 | INPUT=sim_fast | ||
2 | include ../../../../common/makefiles/Makefile.include | ||
3 | |||
4 | BMARK=texture_synthesis | ||
5 | include $(MAKEFILE_COMMON_DIR)/Makefile.common | ||
6 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/sim_fast/expected.m b/SD-VBS/benchmarks/texture_synthesis/data/sim_fast/expected.m new file mode 100644 index 0000000..445bae4 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/sim_fast/expected.m | |||
@@ -0,0 +1,16 @@ | |||
1 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 251.681241 159.000000 89.975613 67.000000 73.000000 95.096934 171.000000 256.221086 | ||
2 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 250.509668 166.000000 96.804041 66.000000 61.000000 84.854293 168.000000 255.049513 | ||
3 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 250.216775 166.500000 88.268507 53.000000 45.000000 78.879419 169.500000 254.317280 | ||
4 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 252.413474 177.000000 98.511147 58.000000 42.000000 90.829167 188.500000 258.124892 | ||
5 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 254.024387 176.500000 95.950487 57.000000 42.000000 92.536274 191.500000 259.442911 | ||
6 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 253.145707 164.500000 77.172313 44.000000 41.000000 95.950487 194.000000 261.639610 | ||
7 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 251.388348 167.500000 78.879419 36.000000 40.000000 102.778914 201.500000 263.104076 | ||
8 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 251.095454 185.500000 95.950487 36.000000 35.000000 85.707846 177.000000 255.488853 | ||
9 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 251.534794 168.500000 79.732973 48.000000 43.000000 82.293633 176.500000 258.857125 | ||
10 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 250.509668 159.500000 71.197439 45.000000 50.000000 78.025866 173.000000 260.468037 | ||
11 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 251.095454 160.500000 74.611652 63.000000 63.000000 88.268507 167.500000 252.267027 | ||
12 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 253.585047 177.000000 140.335263 132.000000 109.000000 130.946176 194.500000 255.928193 | ||
13 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 258.710678 232.500000 185.573593 135.000000 110.000000 151.431458 219.500000 263.104076 | ||
14 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 260.028698 240.000000 165.088312 99.000000 101.000000 151.431458 217.000000 265.593669 | ||
15 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 255.928193 203.000000 132.653283 101.000000 122.000000 152.285011 202.500000 263.689863 | ||
16 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 252.267027 187.000000 124.971302 124.000000 145.000000 158.259885 201.000000 262.518290 | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/sim_fast/texture_synthesis b/SD-VBS/benchmarks/texture_synthesis/data/sim_fast/texture_synthesis new file mode 100755 index 0000000..da8ff88 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/sim_fast/texture_synthesis | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/sqcif/1.bmp b/SD-VBS/benchmarks/texture_synthesis/data/sqcif/1.bmp new file mode 100644 index 0000000..81ec8ad --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/sqcif/1.bmp | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/sqcif/Makefile b/SD-VBS/benchmarks/texture_synthesis/data/sqcif/Makefile new file mode 100644 index 0000000..01f5b98 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/sqcif/Makefile | |||
@@ -0,0 +1,6 @@ | |||
1 | INPUT=sqcif | ||
2 | include ../../../../common/makefiles/Makefile.include | ||
3 | |||
4 | BMARK=texture_synthesis | ||
5 | include $(MAKEFILE_COMMON_DIR)/Makefile.common | ||
6 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/sqcif/expected.m b/SD-VBS/benchmarks/texture_synthesis/data/sqcif/expected.m new file mode 100644 index 0000000..9ca0b05 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/sqcif/expected.m | |||
@@ -0,0 +1,192 @@ | |||
1 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.925062 287.769011 287.596491 286.773330 285.001552 282.595447 279.956074 279.894537 278.225238 269.815094 262.935821 256.367532 246.951171 238.117082 230.446345 223.000000 216.055241 209.600796 202.840653 194.240609 184.971561 183.228406 181.455957 192.500000 219.281498 213.385271 178.649236 155.824000 144.623818 134.522139 154.588296 241.500000 211.777059 140.798329 104.642287 95.096934 88.290262 92.524486 86.538343 89.268294 83.137744 91.764288 73.837686 101.237047 192.922307 240.205323 161.135958 49.000000 39.000000 25.281552 36.082225 43.373018 33.412605 49.501059 102.345625 132.456435 97.665409 87.454077 93.421163 108.436420 116.435768 161.889718 189.061172 157.332100 153.750000 215.885565 195.360210 145.284538 141.976991 194.782955 207.732640 195.842629 219.500000 238.933664 189.314723 198.655026 204.617143 207.251296 211.144087 216.334097 223.000000 230.446345 237.138986 244.055610 250.509668 256.979976 261.755874 266.343845 271.789074 276.707565 280.654375 283.727875 285.597771 287.068086 287.700570 287.947544 | ||
2 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.944332 287.610741 286.895154 285.478511 284.417784 282.709628 280.420147 279.559600 276.539934 267.851951 260.950539 254.903066 249.506077 240.855752 231.557420 222.500000 215.497530 209.909454 203.858494 194.611200 188.191200 195.401039 196.409507 205.000000 228.337425 226.386323 207.928948 190.441524 149.909576 138.670189 146.655708 242.250000 231.221686 148.842136 106.301633 98.511147 83.034743 83.557719 86.538343 90.201307 76.498689 76.373251 64.103035 100.254084 185.989558 200.376426 105.195909 93.000000 62.000000 26.280481 33.095058 49.315374 44.225198 49.501059 88.878468 112.539271 97.665409 99.358630 116.734756 118.071539 127.531963 161.889718 165.734131 135.554117 153.000000 203.626112 190.520818 163.123971 148.900496 215.099490 232.604217 196.908032 191.500000 205.288177 191.053670 198.252571 206.840685 212.340500 212.070062 215.218674 223.000000 230.668560 237.530224 243.885283 250.802561 256.731816 261.859198 266.849436 272.257985 277.429456 281.834242 285.054622 286.841478 287.461988 287.747623 287.892946 | ||
3 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.861901 287.093155 285.924810 284.285915 282.746083 282.290965 280.832656 275.942286 269.798718 264.958897 259.957898 257.978445 253.423600 241.246991 231.112990 222.750000 216.055241 211.452746 205.894175 198.317104 200.667300 205.834725 204.353580 195.000000 208.094765 219.037902 208.526494 185.406248 157.838213 144.892265 148.097997 186.750000 171.332233 143.211471 125.384110 116.435768 108.436420 95.214516 85.622608 93.000345 72.704944 73.487432 68.970360 86.492603 135.479533 153.577472 104.196979 84.000000 44.000000 24.282622 30.107890 52.286552 53.071864 46.580664 66.753854 91.673671 94.866371 103.021569 125.701523 135.589937 136.921050 159.400699 160.907847 135.554117 150.000000 167.568894 164.249833 161.141811 155.194591 179.844326 189.078958 183.057792 187.000000 192.203821 194.096829 195.837842 201.652419 210.644099 217.008595 219.959220 223.750000 230.446345 237.530224 244.225937 251.241901 256.979976 262.582461 267.692088 272.994845 277.893529 281.796182 284.736203 286.585922 287.192982 287.653517 287.861901 | ||
4 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.761270 286.892110 285.473264 283.757765 282.613408 281.377519 277.893529 273.329782 269.377392 264.132311 259.461578 266.765242 259.385048 239.095179 229.779701 223.000000 217.728375 214.230670 207.251296 200.540647 205.899213 211.051568 203.418983 196.000000 224.608514 237.691584 206.136313 172.188648 163.784690 146.274948 138.723121 140.250000 137.887473 145.624614 130.362148 121.557089 139.969536 124.804846 106.684508 106.062523 74.601817 69.639673 71.890756 66.833345 90.911865 127.688689 107.193767 66.000000 38.000000 26.280481 29.112168 45.353803 50.122975 50.474524 67.715794 96.415853 105.129510 113.094652 120.321463 125.954818 135.213943 147.785279 147.233375 138.665258 148.500000 153.867152 151.114340 154.534614 160.859276 161.917971 177.773696 199.571540 199.000000 182.857852 194.966303 195.435387 202.764190 210.983379 219.477861 222.190065 223.750000 230.001915 237.725844 245.247900 252.413474 257.600376 263.409047 268.281945 273.932667 278.615419 281.453640 284.019760 286.364440 286.799080 287.516635 287.885452 | ||
5 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.724872 286.926330 285.655804 284.422212 283.409456 279.931230 274.954402 271.722087 269.293127 263.615694 258.096697 261.346717 253.423600 237.530224 229.779701 223.250000 218.007231 213.304695 205.215615 201.281828 209.923761 217.137885 207.624669 218.000000 239.524158 231.473690 192.392774 163.376915 159.820372 147.657632 134.396254 134.250000 139.443043 135.972045 116.257708 111.314448 128.582578 126.598199 122.252000 107.928549 82.189308 74.449372 74.811151 61.918530 74.075190 112.752852 103.198050 48.000000 37.000000 26.280481 31.103613 46.344196 48.157049 51.447989 72.525492 97.364289 111.660599 118.589061 119.424786 114.567859 126.678409 138.658877 145.624614 151.887605 156.000000 158.194018 151.805682 153.213175 157.082819 173.868874 213.950534 232.066336 205.500000 182.390554 194.096829 195.032932 204.246552 214.036902 221.638469 222.747777 223.250000 230.001915 239.290798 246.610517 252.559921 257.848537 262.995754 268.366210 274.401578 278.770110 281.263339 283.807480 286.023698 286.770258 287.379752 287.913286 | ||
6 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.756988 287.071767 286.001669 284.848139 282.878757 278.789423 274.284075 270.650290 266.933702 262.169168 256.359575 250.363221 244.225937 238.117082 230.890775 223.500000 216.612952 209.600796 202.840653 203.505371 218.375313 224.963149 223.980114 243.500000 230.468231 203.210536 185.819777 172.188648 165.106130 160.101783 148.819141 147.000000 141.776398 127.123857 114.598362 108.753788 105.808660 107.767989 115.841856 101.397460 88.828362 85.992649 76.758081 65.850382 70.113619 86.864069 81.221601 40.000000 31.000000 26.280481 34.090780 48.324981 45.208160 40.739874 57.134456 81.240871 105.129510 117.673326 122.114816 120.699298 123.264196 135.340185 154.472801 165.887737 159.750000 155.309440 151.805682 153.213175 187.923886 211.514219 220.733692 218.748797 205.000000 191.269224 197.139987 201.874664 219.811352 221.501068 221.947127 221.911210 223.250000 230.224130 240.073275 247.291825 252.852814 257.848537 262.582461 268.534740 274.066642 278.202910 281.605881 284.152434 285.308140 286.731829 287.349809 287.918639 | ||
7 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.785892 287.170152 286.040099 284.183693 281.631616 278.713303 274.902838 270.650290 266.091050 261.032611 255.615095 249.630988 244.566591 239.290798 231.557420 224.000000 216.612952 209.292138 205.554895 209.434819 221.594952 222.789464 225.849308 241.500000 221.412304 198.123168 195.380500 192.959162 184.927722 176.002642 162.520884 150.750000 140.220828 138.385187 131.191820 116.435768 102.304980 91.627809 99.358630 99.531434 89.776799 88.878468 75.784616 69.782233 69.123227 57.988119 48.256929 43.000000 31.000000 29.277269 35.086503 38.421055 35.378531 31.978688 39.819540 65.117453 93.000345 113.094652 115.838079 125.954818 127.531963 135.340185 151.255279 160.443241 155.250000 147.376853 150.422998 152.552455 226.317867 229.440574 184.556853 178.263478 201.500000 195.474910 200.183145 220.790042 245.382095 224.893870 215.465303 218.564942 223.500000 230.224130 239.290798 246.780844 253.145707 257.724457 263.615694 269.293127 273.597731 277.893529 282.062604 284.205504 284.967399 286.616540 287.490969 287.907934 | ||
8 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.754847 287.003326 285.799915 283.894062 281.817360 279.131966 275.521602 271.253175 266.512376 261.445904 256.359575 250.802561 246.269862 240.268894 233.335139 226.000000 219.680365 215.465303 213.019061 213.881905 214.753219 206.269462 200.147894 207.500000 213.954483 203.210536 189.405048 192.329753 196.159957 178.768009 156.030585 155.250000 151.887605 142.407091 129.532475 117.289322 108.436420 106.871313 118.589061 132.186879 92.622108 80.221010 72.864221 74.697048 71.104012 49.026617 38.267635 41.000000 33.000000 32.274058 31.103613 29.507521 31.446680 35.872548 41.743420 54.684653 79.938167 100.274365 102.387929 115.443779 131.799730 140.318222 141.602710 148.776464 162.000000 150.261430 150.422998 153.213175 182.888610 179.844326 173.816855 187.319404 197.500000 191.736522 195.835776 226.826864 235.376152 211.322660 207.440188 216.612952 223.500000 230.446345 239.095179 245.247900 250.949008 257.352216 265.165544 269.967249 273.999655 278.512292 281.758122 283.462526 285.308140 286.808687 287.619296 287.892946 | ||
9 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.736648 286.999049 285.751878 284.013322 281.631616 278.637182 275.109093 270.918239 266.596641 262.685784 258.841177 251.974134 247.291825 241.442610 237.557221 231.250000 226.094045 222.564444 218.108265 216.105447 216.765493 204.095778 210.428460 209.000000 204.365854 199.253694 194.782955 198.623848 206.070753 180.842034 164.684317 183.750000 182.221224 145.624614 128.702802 153.138564 190.772891 221.645926 241.297525 232.952251 101.158035 70.601613 68.970360 66.833345 58.228907 43.052282 37.268705 36.000000 32.000000 31.275128 28.116446 31.488306 35.378531 35.872548 37.895661 48.994035 71.541053 92.032751 93.421163 114.567859 126.678409 129.532475 135.972045 149.554249 159.000000 156.751729 149.040315 161.802531 164.006324 160.125336 169.860013 191.048315 201.500000 194.540313 193.662092 190.605929 194.981790 203.519213 211.452746 218.843798 225.250000 231.335205 238.899559 245.588554 250.656115 258.344857 265.372191 270.051514 274.602540 278.924801 281.682001 283.595201 285.648882 286.779865 287.443916 287.910075 | ||
10 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.745212 286.969106 285.655804 283.791840 281.419336 278.484942 275.005965 271.253175 267.186497 263.512371 260.454219 254.610173 249.335750 244.572519 238.001651 232.500000 228.882601 225.651027 219.465386 214.252495 226.826864 235.831572 237.531769 257.500000 257.636011 226.951586 213.306855 238.276648 242.410338 209.187044 236.077607 209.250000 205.554778 200.322502 222.455840 250.443651 250.335444 253.029610 230.308707 130.320853 81.240871 68.677733 64.103035 52.088901 45.353803 47.035172 38.267635 35.000000 37.000000 33.272987 31.103613 34.459484 34.395568 35.872548 40.781480 50.890907 72.474066 92.032751 105.077959 111.940099 111.314448 131.191820 158.494705 158.887671 147.000000 162.520884 162.867149 164.445410 169.671010 174.466419 173.816855 174.534567 177.500000 177.250271 183.228406 191.813293 202.023009 207.590577 211.452746 219.680365 228.250000 232.890709 239.290798 252.571965 255.781746 258.841177 264.028987 269.630188 274.736515 278.718547 281.605881 283.780945 285.325177 286.530074 287.268536 287.904722 | ||
11 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.736648 286.922053 285.578945 283.655543 281.419336 278.941664 276.243493 273.731706 269.967249 264.648927 262.563580 261.639610 254.615890 249.658620 243.334808 236.500000 231.392302 227.194318 220.143947 218.699581 249.364335 266.263155 266.971570 267.000000 247.514681 241.648426 255.135016 263.453029 257.606892 227.853271 255.548504 183.750000 202.443637 240.541538 258.131775 245.322330 233.692966 236.889430 124.999205 75.273104 104.003344 100.421746 73.837686 64.867419 57.238515 39.069392 38.267635 34.000000 33.000000 37.268705 34.090780 32.478699 34.395568 40.739874 46.553119 52.787780 78.072142 97.527160 105.974636 111.064179 109.607341 120.406073 135.972045 141.776398 145.500000 161.078595 162.867149 163.784690 158.341638 168.490968 171.555802 169.207551 173.000000 176.315674 187.141038 193.020658 199.058285 204.537054 213.304695 222.468921 229.000000 233.112924 244.963757 273.522197 264.861436 258.344857 262.995754 270.809900 276.009274 278.615419 281.111098 283.807480 285.154806 286.405178 287.392585 287.872606 | ||
12 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.730224 286.922053 285.578945 283.536283 281.313196 279.588688 277.584147 276.612159 274.096243 267.748627 264.797022 264.714989 261.088319 262.569493 252.667834 239.000000 230.834591 226.268343 224.554590 236.858514 262.645345 272.349471 272.579152 267.000000 249.645487 253.518951 268.281010 262.823619 249.017536 240.297422 224.539298 222.000000 222.666050 234.910873 239.049298 194.109127 140.845456 151.705146 112.178917 77.139129 135.301744 133.127698 77.731546 57.003715 53.276944 33.095058 34.271917 29.000000 36.000000 41.264423 32.099335 30.497914 35.378531 46.580664 60.020275 61.323707 72.474066 98.442895 106.871313 110.188260 139.481710 159.400699 148.037756 136.331902 147.750000 150.982574 156.645074 166.427569 157.082819 155.942519 163.642119 170.272954 174.500000 181.455957 192.357881 195.435387 196.834743 203.179933 216.699936 224.978622 227.750000 235.557287 252.397290 267.390422 256.221086 258.468937 266.818717 272.495204 276.076261 279.079492 281.834242 283.993225 284.950361 286.395571 287.319866 287.829784 | ||
13 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.731295 286.934885 285.588553 283.808877 281.605081 279.740929 277.841965 276.076261 274.264773 271.984884 270.132466 269.254834 269.775001 264.330066 252.890048 239.250000 234.459714 235.836750 234.054437 241.305600 270.694442 273.218945 272.579152 269.500000 264.028430 261.432634 266.488374 247.717791 197.481397 220.248512 240.404473 259.500000 223.443835 188.256791 172.675466 172.770292 171.502653 157.085206 155.218453 74.340091 101.158035 89.840408 61.182640 57.986678 57.238515 40.065115 35.270846 48.000000 55.000000 45.260141 29.112168 27.526736 34.395568 47.554129 72.525492 90.725235 75.273104 98.442895 123.908169 123.327058 137.774603 158.571026 155.277182 141.776398 147.750000 146.655708 151.114340 159.159652 157.082819 174.466419 186.817906 178.263478 170.500000 180.054061 192.357881 201.069755 206.099504 208.269137 216.082620 222.190065 227.000000 238.001651 251.810432 256.659815 260.614484 273.606709 271.778237 270.641370 274.803502 279.131056 281.796182 283.966690 285.154806 286.482037 287.259981 287.803021 | ||
14 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.733436 286.956273 286.184209 285.239992 282.905292 280.768556 279.285747 277.282032 274.517569 273.534734 275.964231 275.259145 270.285982 262.569493 256.667701 248.000000 242.546528 240.466624 236.429399 242.787962 273.109171 273.218945 270.242659 270.500000 270.420848 245.605268 233.623390 223.800229 166.427569 234.075346 259.154226 213.000000 182.221224 148.037756 163.549064 216.301515 210.043129 133.771613 115.841856 56.612850 66.065889 59.058336 64.103035 91.407417 86.950294 48.030894 44.261211 59.000000 63.000000 49.255859 29.112168 34.459484 54.054827 68.970360 83.106830 96.415853 80.871180 101.190100 126.598199 125.078898 124.117749 138.658877 152.059659 150.332034 146.250000 165.405461 198.816919 189.552760 181.000381 197.770681 197.557905 176.132671 167.500000 179.119465 190.184197 202.277119 213.140724 213.019061 214.847987 219.959220 227.000000 237.557221 249.854239 259.044394 268.522601 275.343830 269.091831 268.197679 273.463756 278.151347 280.958857 283.595201 285.308140 286.616540 287.298479 287.795527 | ||
15 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.740930 287.058935 286.731829 285.819253 283.568666 281.796182 280.729528 279.492613 277.803912 277.357697 279.190313 274.673359 266.368459 265.308163 263.556363 256.750000 249.517920 242.935891 237.107960 243.529143 272.304261 272.784208 252.952617 258.500000 256.570608 208.297903 195.380500 228.835505 202.767154 247.210839 225.981586 149.250000 158.887671 135.972045 158.571026 194.962680 143.473216 68.314216 48.077481 45.416698 53.736216 57.134456 67.996895 91.407417 80.017546 41.060837 42.263352 43.000000 50.000000 43.262282 28.116446 48.324981 79.611862 99.147777 102.345625 88.828362 81.804193 99.358630 110.458019 114.567859 123.264196 132.851166 144.820233 151.109819 156.000000 215.885565 255.506939 228.535224 192.959162 181.039416 171.555802 160.684326 166.500000 187.063538 191.488407 194.228023 207.952457 213.697621 216.082620 220.795787 229.500000 240.001585 250.636716 262.280609 265.593669 264.300702 264.442281 267.439293 272.458947 277.016947 280.311833 282.958362 284.967399 286.424393 287.264258 287.793386 | ||
16 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.786963 287.234315 286.530074 285.001473 283.144107 282.443206 281.142037 279.425626 280.247602 281.903924 276.832791 268.961941 267.560749 271.959219 269.778380 259.000000 250.633342 246.948448 241.518603 244.640914 271.096897 266.697892 230.054994 226.500000 224.075812 187.383169 197.770681 257.788343 228.535224 189.829476 172.616905 174.750000 176.776728 130.341380 105.471960 93.389827 59.384905 50.380682 46.246011 45.416698 39.509671 42.705360 47.554129 42.259272 31.488306 27.120723 30.276199 25.000000 31.000000 35.270846 39.069392 71.104012 96.322232 112.776288 122.546360 97.364289 84.603231 95.695691 102.387929 115.443779 130.946176 139.488550 140.798329 152.665390 196.500000 261.317659 261.729015 204.088594 155.824000 141.003890 143.292647 148.964892 163.500000 187.063538 187.575775 188.593655 202.764190 212.679781 216.082620 220.516932 232.000000 243.779238 250.832336 259.044394 260.468037 261.943180 264.338957 266.765171 271.186188 276.191929 279.817050 282.294989 284.456286 286.020884 287.114543 287.786963 | ||
17 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.862971 287.324144 286.136172 285.154806 283.780945 283.927555 282.534255 279.157677 277.972442 277.461020 270.876947 269.108387 269.604674 279.001513 280.666909 262.250000 244.498518 238.923333 241.518603 259.093943 269.084623 246.699994 228.185800 209.000000 211.823676 208.297903 220.477397 235.129600 167.088289 122.077988 181.991781 236.250000 162.776596 114.253766 96.345558 75.465206 60.260825 54.864066 51.740420 46.349710 37.612798 37.895661 37.819478 32.429643 29.507521 32.099335 33.272987 31.000000 23.000000 43.262282 73.919677 103.786969 114.015564 126.404799 139.861276 115.384581 100.464447 105.768774 113.148049 123.327058 138.628157 151.103970 148.842136 175.221158 256.500000 260.596515 230.618638 136.695181 118.688838 130.845623 142.162121 151.628399 159.500000 166.502407 174.533668 193.825568 205.728914 207.590577 211.761404 219.401509 230.500000 242.001519 250.636716 259.214721 261.786057 263.556221 264.442281 266.680906 270.918239 275.624729 279.398387 282.003105 284.319989 285.963240 287.084600 287.783751 | ||
18 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.861901 287.302756 286.049706 285.018510 284.152434 283.546953 283.049892 279.023702 274.938895 275.704524 272.862228 269.401281 267.220095 277.436559 279.778049 256.500000 236.969415 236.454067 249.661330 270.582248 249.766790 216.703148 237.064471 256.500000 256.570608 233.169480 200.758406 179.112153 159.159652 127.608722 163.963173 173.250000 125.442911 98.166151 88.048829 73.758099 61.136745 53.070712 51.740420 45.416698 40.458107 42.705360 39.766408 37.344457 39.411447 39.069392 35.270846 31.000000 30.000000 51.253718 88.855514 101.806184 122.862231 171.184192 201.425421 166.600145 116.325663 127.746409 127.494876 127.706658 137.774603 146.955606 158.494705 200.110282 263.250000 246.894772 142.818240 119.516468 124.353524 134.430894 144.423174 153.759206 161.000000 169.306197 176.707353 185.374016 194.981790 201.822812 209.600796 220.795787 233.500000 246.223602 255.527199 253.593927 253.877940 258.220777 265.888807 272.579470 275.339401 277.841965 280.540194 282.003105 284.439249 285.847951 287.131653 287.797668 | ||
19 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.834067 287.409695 286.693399 285.205918 284.125899 283.585013 282.585819 278.554791 274.686099 274.567967 272.986308 274.087572 273.011216 269.807406 262.667503 254.000000 252.585332 252.195639 250.679171 252.052724 222.399861 233.223150 262.298586 268.500000 250.178189 212.254745 171.478694 152.676953 157.177493 135.904822 117.088790 110.250000 110.664993 99.774913 88.878502 77.172313 62.012665 53.070712 49.908950 44.483685 40.458107 42.705360 38.792943 43.242235 50.305766 45.043727 34.271917 34.000000 45.000000 56.248365 80.889734 99.825398 109.100750 133.219055 165.833650 156.167344 110.727587 135.988022 131.978259 144.349136 160.820545 158.571026 176.191081 230.443901 254.250000 198.578101 113.781888 117.534309 126.241753 137.418619 148.380015 155.890012 162.000000 170.708093 179.315774 189.398564 202.393600 204.537054 210.218112 221.074643 235.000000 245.779172 247.115569 246.951171 251.681241 256.607736 267.438657 277.719646 280.698385 281.038910 281.491700 281.631616 284.183693 285.934418 287.101710 287.795527 | ||
20 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.869394 287.623574 287.068086 285.887401 284.948482 283.128290 281.606110 280.162486 277.382586 272.501501 267.650864 270.719300 275.225468 267.851214 256.001057 252.750000 256.210455 261.455388 255.429094 228.705524 221.997406 234.962098 241.270156 207.500000 212.889079 215.646324 178.051690 143.865219 143.963098 137.978848 119.252223 117.000000 117.665059 106.209959 94.686213 81.440079 63.764505 53.967389 48.077481 43.550672 40.458107 40.781480 48.527594 63.884456 65.161656 45.043727 35.270846 43.000000 62.000000 68.235518 79.894012 98.835006 116.964453 124.457869 120.622481 111.590835 102.330472 124.083470 128.391553 160.115694 182.159380 197.565653 227.671446 259.999736 245.250000 156.751729 109.633837 116.873589 128.759391 142.198981 157.989488 165.478640 165.500000 170.708093 181.489459 191.008384 200.540647 206.572736 215.465303 220.238076 228.250000 239.557155 241.638229 243.714956 250.509668 256.483656 263.615694 270.051514 275.004464 277.326329 279.474508 282.666478 284.371100 285.819129 287.028992 287.794457 | ||
21 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.868324 287.426806 286.664577 285.989624 286.142555 284.308157 281.451419 280.430435 280.584663 277.047727 270.008386 270.133514 265.176170 263.938828 259.112065 251.250000 248.123641 245.096499 235.072278 227.223162 230.851413 224.528412 214.634146 197.500000 200.104242 193.601063 169.088513 151.418134 142.641659 131.756772 127.905955 130.500000 115.331704 118.275669 111.279671 84.000740 63.764505 53.967389 47.161746 44.483685 40.458107 35.009841 52.421454 69.782233 61.200085 41.060837 41.264423 48.000000 60.000000 67.236589 77.902567 94.873435 113.032601 110.829358 92.726227 91.673671 110.727587 121.336265 127.494876 170.626733 206.912428 234.900934 257.433533 245.221819 185.250000 130.790533 114.473229 114.230710 140.088762 152.954794 153.467383 156.955415 165.000000 173.044585 184.097880 191.410839 199.058285 208.608417 214.230670 216.891808 226.750000 239.557155 241.833849 244.225937 250.949008 256.731816 262.582461 267.270762 271.722087 275.418474 278.827484 282.639943 284.967399 285.867166 287.225760 287.875818 | ||
22 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.897228 287.542300 287.029657 286.551848 286.116020 285.526085 282.740510 279.894537 278.730829 276.841080 274.227109 275.552038 273.692524 266.677498 254.223338 251.250000 249.796775 238.614675 226.590272 226.481981 228.436684 228.006307 209.026564 198.000000 185.188598 168.729487 157.137610 150.159315 139.998780 134.522139 127.905955 118.500000 107.553853 123.101954 117.917054 99.364701 89.166182 59.347449 47.161746 44.483685 44.251853 49.438938 56.315315 57.003715 48.324981 41.060837 47.258000 53.000000 69.000000 76.226954 75.911122 91.902257 104.185935 99.147777 92.726227 104.951780 125.655790 146.061105 152.601823 212.670888 245.322330 256.472430 250.194106 202.443637 139.500000 126.463667 122.077988 118.195029 135.682896 148.771977 152.336857 155.890012 164.500000 174.446480 185.402091 190.203474 196.834743 205.554895 210.835429 218.286086 231.500000 239.779370 238.117082 244.055610 250.949008 256.855896 262.169168 267.270762 271.454137 275.160656 278.713303 282.056175 284.831102 285.982454 287.191539 287.866183 | ||
23 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.945403 287.781844 287.558061 287.011849 285.319972 285.335784 284.596800 282.507042 280.331867 278.597577 279.066233 281.117009 281.868225 274.697889 254.889982 248.250000 244.777373 239.231991 236.429399 226.852571 220.387587 222.354728 211.830355 198.500000 178.263478 161.946330 154.747429 150.159315 141.980939 135.904822 119.973368 107.250000 107.553853 123.906334 117.917054 113.021555 111.064179 62.934156 46.246011 43.550672 48.994035 60.982215 54.368384 45.208160 43.373018 48.030894 56.248365 61.000000 85.000000 88.214108 74.915400 87.940687 98.288158 99.147777 107.155324 122.023635 127.521815 141.482431 198.332333 246.831765 259.832738 260.620794 220.432020 144.887539 125.250000 125.021378 123.460672 122.820067 128.759391 148.771977 162.511593 162.815132 163.500000 173.979182 183.663143 191.008384 198.317104 204.197774 209.909454 219.122653 230.000000 235.557287 236.356509 243.885283 251.095454 256.855896 261.859198 267.523558 272.124010 275.676293 278.827484 281.658150 284.439249 286.097743 287.221482 287.891876 | ||
24 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.964672 287.858840 287.634920 286.619996 285.426111 285.449964 285.782764 285.722432 284.713657 283.143803 283.036796 283.020815 282.038552 271.372361 258.667635 246.500000 234.738570 232.132851 235.411559 225.740800 218.375313 211.051568 210.895758 200.000000 181.459687 166.468434 160.125336 157.082819 149.909576 133.830797 122.136801 121.500000 116.887274 119.080050 114.598362 107.900235 95.297621 58.450772 48.077481 43.550672 49.942471 57.134456 53.394919 50.122975 52.286552 55.996674 64.239801 75.000000 94.000000 92.209826 73.919677 78.036760 93.373343 104.988568 115.812782 129.611126 134.985917 153.386983 236.889430 259.094643 259.832738 232.411915 162.516609 109.887208 118.500000 116.367646 120.003963 126.784385 128.759391 146.381797 163.076856 166.011342 167.500000 176.782972 183.228406 193.423113 202.393600 204.876334 209.600796 217.170664 224.500000 230.890775 237.725844 244.225937 250.949008 256.607736 262.065844 267.439293 272.257985 276.037238 279.093905 281.870430 284.319989 286.030491 287.336977 287.917569 | ||
25 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.958249 287.756179 287.356307 286.364440 286.540579 286.553711 286.246837 284.516660 283.112619 284.177037 283.284956 280.531223 277.439720 257.874630 255.778842 250.250000 240.873394 234.293459 226.929552 220.923124 218.777768 208.877883 204.353580 197.000000 183.057792 168.164224 160.125336 156.453410 148.588136 132.448114 133.675110 137.250000 121.553985 107.818720 103.812615 92.536274 70.771864 53.967389 49.908950 46.349710 45.200289 47.515058 59.235710 64.867419 63.180871 63.962453 71.232307 86.000000 90.000000 83.219460 68.941065 74.075190 96.322232 109.855893 115.812782 133.404872 157.378222 216.572685 252.132933 259.094643 253.857864 171.845793 99.774913 108.331638 111.750000 111.319635 120.003963 129.427264 145.124038 158.332700 163.642119 167.609446 174.000000 180.521360 185.836828 194.630477 202.023009 206.572736 213.613354 218.007231 222.250000 230.001915 237.725844 244.055610 250.363221 256.979976 262.892431 267.607823 271.923048 275.830984 279.360327 282.401129 284.405175 285.895988 287.264258 287.836208 | ||
26 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.923992 287.396863 286.626148 287.250368 287.124347 286.363410 285.267128 280.229473 277.382586 282.833834 280.307034 268.669048 265.176170 260.417681 257.778776 250.750000 255.931600 259.294780 239.482922 222.776076 213.545855 202.791567 192.203821 192.500000 181.459687 165.337908 154.747429 144.494629 132.070143 130.374089 127.184811 120.750000 111.442779 100.579294 92.197194 88.268507 79.531063 59.347449 48.077481 48.215736 43.303416 45.591179 65.076500 69.782233 67.142441 74.915400 79.223743 82.000000 77.000000 96.205543 101.799905 107.748539 114.015564 116.670149 114.850842 124.868944 176.038476 249.539138 257.512993 247.707684 200.084001 123.724764 86.904821 102.887142 112.500000 114.925357 123.460672 130.748704 191.700343 222.270032 193.601063 168.674850 177.000000 181.455957 188.445249 194.228023 200.911238 218.108265 225.651027 220.516932 221.000000 230.668560 237.725844 243.885283 250.802561 258.468937 264.442281 268.956066 272.592921 276.140365 279.588688 282.507268 284.592583 286.020884 287.153041 287.767693 | ||
27 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.841560 287.144486 286.309105 287.148146 286.991672 284.726820 281.451419 277.215045 276.624199 280.870690 274.723430 253.585047 258.022432 273.915411 265.111867 242.750000 247.008219 255.282222 235.072278 220.181943 206.704123 196.705250 188.932732 183.000000 174.001865 166.468434 158.930245 145.124038 131.409423 129.682747 114.925357 111.750000 109.109423 102.188055 95.515885 89.975613 78.655143 63.830832 53.571890 51.014774 54.684653 50.400878 52.421454 55.037790 70.113619 88.855514 78.224813 73.000000 84.000000 191.103842 244.188213 179.056810 132.691860 129.325194 108.117264 112.539271 201.229819 243.128994 231.509370 168.874893 108.753788 85.559811 86.100441 92.775936 106.500000 117.809935 120.695305 138.016621 231.982552 261.110468 201.514746 166.544043 188.500000 191.736522 198.878935 200.264845 222.405485 238.804361 224.416394 214.660963 222.000000 233.112924 241.051371 246.610517 254.317280 259.709738 265.062221 270.809900 274.334591 277.274765 280.273773 282.454199 284.694805 286.136172 287.255703 287.813726 | ||
28 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.796598 287.208650 286.501252 286.551848 285.319972 280.996917 278.099783 275.004464 270.978431 268.471891 262.439500 255.781746 255.297198 254.157864 246.223602 241.000000 248.960208 255.590880 237.107960 205.358324 203.886939 201.052619 191.736522 179.000000 170.805656 169.860013 166.100787 153.306362 138.677340 129.682747 136.559688 125.250000 110.664993 98.166151 98.004904 102.778914 95.297621 72.797599 59.982033 50.081761 70.808071 75.411312 67.996895 91.407417 107.748539 90.846959 92.209826 86.000000 98.000000 225.067444 255.141160 227.586049 192.652597 151.714891 126.394119 171.342326 235.751289 161.628597 87.144426 75.151463 83.147186 86.389483 89.317964 97.442646 114.000000 135.117399 127.608722 136.034461 206.176762 250.952200 223.560007 192.646420 198.000000 198.278700 198.878935 232.058777 264.282209 240.161482 213.613354 212.151262 225.250000 236.668362 245.159376 257.170796 265.154329 266.534143 267.851951 271.652552 274.870490 277.326329 279.931230 282.480733 284.762953 286.145780 287.264258 287.804091 | ||
29 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.867253 287.721958 286.943190 284.558508 282.427664 279.360327 275.779420 272.391960 269.208862 265.785484 261.198699 256.660426 250.698367 246.724331 239.779370 233.250000 231.113446 229.972243 221.161787 203.134781 197.850116 196.270513 193.138418 177.500000 168.142148 165.903171 161.320426 147.641676 134.052302 132.448114 140.886554 116.250000 115.331704 112.645004 105.471960 107.900235 104.056820 75.487629 66.392177 49.148748 66.065889 181.224686 198.441214 141.538526 90.911865 83.876902 115.185203 92.000000 156.000000 239.052456 255.141160 184.999165 127.777045 116.670149 111.003083 115.384581 111.660599 64.560707 71.900922 74.275543 76.318759 83.070792 91.731106 101.331572 111.750000 123.579089 133.830797 144.623818 152.047543 227.050394 245.605268 199.571540 177.500000 188.932732 203.226304 253.791339 249.829181 210.304819 204.662263 215.218674 224.250000 235.779502 248.680524 259.896030 266.179455 268.271265 269.505124 271.905348 274.736515 277.635711 280.349893 282.666478 284.831102 286.962405 287.713403 287.823361 | ||
30 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.909004 287.597908 286.270675 284.013322 281.843895 278.789423 275.521602 273.262794 270.557105 265.682161 260.950539 255.195959 252.571965 249.071762 238.890511 230.250000 223.584344 217.625911 212.679781 206.099504 198.655026 191.488407 189.400030 181.500000 166.011342 157.424225 152.954794 145.753448 140.659500 145.583606 132.953966 120.000000 143.331968 134.363284 108.790652 96.804041 93.545781 89.834456 85.622608 126.588803 147.631417 230.283614 209.149330 119.913342 82.988723 110.761407 135.163792 177.000000 230.000000 252.038539 255.141160 139.441104 53.071864 52.421454 57.134456 56.581526 51.014774 48.993216 65.624186 69.895944 77.172313 86.389483 94.948629 102.887142 109.500000 117.088790 142.126898 140.659500 187.923886 248.562019 224.690533 170.272954 162.000000 173.044585 190.184197 209.923761 204.617143 201.144252 207.748846 216.612952 225.250000 235.335073 246.919950 255.978507 265.007882 271.001027 270.538357 271.989613 275.071451 278.202910 280.958857 283.011432 285.018510 287.461988 287.858840 287.843701 | ||
31 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.788033 287.063212 285.675019 283.877025 281.684685 278.751363 276.346620 275.205426 271.821083 264.648927 259.957898 255.342406 255.978507 252.984148 241.557089 232.250000 223.863199 217.008595 213.358341 207.211276 197.850116 193.662092 183.792449 175.500000 162.282431 161.381066 164.308152 152.676953 140.659500 151.805682 133.675110 123.750000 127.776266 111.840624 93.856540 89.975613 94.421701 101.491253 99.358630 217.091035 211.176654 156.214252 121.537474 139.572600 155.287386 154.573194 203.090996 242.000000 240.000000 245.046033 207.346483 94.873435 28.497791 32.952153 41.743420 43.303416 47.282723 55.403359 62.934156 69.895944 81.440079 92.197194 100.579294 105.220498 111.750000 123.579089 132.448114 134.052302 213.729676 252.147290 215.646324 165.478640 152.500000 165.100511 175.403142 182.959287 191.646476 202.162092 209.292138 219.122653 229.000000 236.890577 245.746234 253.764254 263.543416 269.512066 271.158297 273.337856 276.344210 278.924801 281.263339 283.887085 286.177032 287.615706 287.850285 287.827643 | ||
32 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.717378 286.909220 285.655804 283.808877 281.605081 278.827484 276.243493 274.334591 271.315492 265.992131 260.950539 255.342406 255.467525 250.832336 240.001585 231.500000 225.257478 218.243228 211.322660 203.505371 195.837842 191.488407 180.054061 172.000000 162.815132 163.076856 164.308152 150.159315 135.373742 140.744214 130.069388 119.250000 105.998283 90.122344 93.856540 106.193128 111.940099 114.941403 94.779956 160.177260 140.043926 71.563553 65.076500 161.197784 215.701337 187.432035 213.080290 197.000000 180.000000 161.135958 97.817016 48.324981 34.395568 40.739874 46.553119 48.045598 58.478875 62.729238 66.520862 76.027383 89.122060 98.004904 101.383674 104.442713 111.000000 124.300234 124.152013 150.570296 217.506133 219.282306 185.122117 159.618923 153.000000 165.100511 172.794720 185.374016 194.981790 200.804971 207.748846 218.564942 227.750000 236.668362 249.463001 257.170796 263.543416 268.891665 271.984884 273.506387 276.143248 278.924801 281.225278 284.178969 287.165183 287.663742 287.854563 287.832996 | ||
33 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.748423 287.024714 285.723056 283.774802 281.684685 278.941664 275.882547 273.329782 270.809900 266.922041 261.198699 255.342406 253.423600 246.528711 236.446147 229.500000 224.420911 217.317253 207.590577 198.687695 192.618203 187.141038 184.727046 176.000000 166.011342 160.250540 153.552339 142.606400 134.052302 124.843355 121.415656 117.750000 108.331638 106.209959 114.598362 118.142875 115.443779 114.941403 83.791138 67.809002 61.323707 58.096396 67.023430 120.896305 163.210527 150.590305 141.157369 142.000000 131.000000 77.225884 29.112168 27.526736 41.276309 46.580664 47.515058 52.787780 70.608040 71.886586 71.900922 80.406983 95.096934 101.323596 102.188055 106.776068 111.750000 119.973368 130.374089 183.606282 223.800229 184.624687 146.684226 147.366787 157.500000 167.437004 178.011563 190.605929 194.981790 200.126411 208.057504 218.007231 226.000000 237.779436 256.505295 261.258646 261.786057 271.621427 273.328087 273.506387 275.942286 278.924801 281.111098 283.754410 287.079997 287.654135 287.794677 287.822291 | ||
34 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.759129 286.977661 285.598160 283.689617 281.578546 278.941664 276.295056 274.401578 271.399757 265.372191 259.213418 255.195959 251.039021 243.985661 234.668428 227.500000 220.795787 213.922012 205.894175 194.981790 188.191200 186.271564 189.400030 175.000000 164.413237 157.424225 146.979342 140.088762 139.998780 126.226038 124.300234 125.250000 116.887274 133.558903 127.043456 102.778914 99.677221 94.317839 80.128199 73.407079 85.034617 80.221010 73.837686 65.850382 66.152049 72.923955 83.219460 139.000000 116.000000 66.237660 35.086503 33.469091 44.225198 48.527594 49.438938 59.426835 72.474066 70.970851 75.487629 81.282903 94.243380 102.153269 109.427481 116.109489 116.250000 121.415656 134.522139 216.642269 228.835505 164.905697 135.378964 148.964892 158.500000 168.371601 180.185248 188.191200 195.722971 204.537054 211.144087 220.238076 230.250000 243.112594 258.657107 260.236684 261.493164 274.103029 273.224764 274.854630 278.085880 279.801383 280.996917 283.382921 286.415551 287.394736 287.461026 287.759129 | ||
35 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.734506 286.922053 285.569338 283.706654 281.472406 278.941664 276.501311 274.066642 270.725635 265.475514 259.089338 252.706367 246.099535 239.290798 231.335205 223.500000 216.055241 209.600796 202.501373 192.758247 184.569106 179.750511 176.782972 165.000000 158.020818 150.641068 141.003890 138.200534 143.963098 149.731657 149.540286 128.250000 114.553919 131.145761 118.746727 94.243380 92.669861 82.661043 80.128199 84.603231 100.209599 90.802348 76.758081 64.867419 61.200085 68.941065 78.224813 89.000000 80.000000 77.225884 44.048004 37.430662 49.140012 52.421454 52.324757 59.426835 57.545863 65.476442 78.177659 83.910662 91.682720 106.301633 117.471289 118.442845 117.000000 123.579089 149.731657 247.696096 211.841448 143.394071 133.117912 152.161101 160.000000 167.437004 177.142090 185.374016 198.317104 207.590577 213.922012 222.468921 235.250000 246.668032 251.810432 257.341123 268.522601 274.227109 270.951651 275.275956 279.626588 280.420147 281.073037 283.356386 286.159995 286.923976 286.994771 287.724872 | ||
36 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.730224 286.930608 285.598160 283.962210 282.109244 279.398387 276.552874 272.927858 269.124597 265.785484 259.089338 251.095454 244.225937 236.747747 229.557486 222.500000 214.939818 207.440188 199.447850 190.905295 182.154377 174.098931 168.838899 160.000000 151.095698 148.945278 147.576887 138.829943 136.034461 167.706541 186.318647 127.500000 101.331572 96.557390 100.493923 102.778914 93.545781 80.867689 83.791138 93.933358 89.776799 93.688167 80.651941 61.918530 64.171263 76.906845 68.235518 45.000000 63.000000 88.214108 46.039449 35.449877 56.020752 62.156105 54.248637 57.529962 60.344901 70.970851 82.661043 90.042102 97.657594 117.087381 127.123857 117.665059 111.750000 127.905955 238.223396 257.606892 158.971048 129.052987 143.292647 153.226504 161.000000 168.838899 178.011563 188.996110 199.428876 205.215615 215.156645 229.161457 239.750000 246.445817 252.984148 261.428974 268.083261 270.256546 272.398177 275.191691 277.817931 280.317019 281.796182 283.250247 286.773330 287.308270 287.003326 287.725942 | ||
37 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.729154 286.930608 285.655804 284.115544 282.719548 280.007351 276.191929 272.458947 268.787536 263.925664 257.352216 250.363221 243.374302 236.747747 229.779701 222.250000 215.218674 208.057504 199.447850 190.534704 182.556832 174.533668 165.567810 157.500000 151.628399 148.945278 142.796526 129.388800 130.748704 170.471908 162.520884 112.500000 115.331704 119.080050 107.131306 93.389827 83.034743 76.384306 81.959669 78.072142 86.931489 91.764288 70.917291 53.071864 55.257730 56.992396 51.253718 50.000000 58.000000 66.237660 37.077947 34.459484 71.748159 79.678476 53.286697 64.169016 70.608040 77.380995 94.317839 105.808660 112.168002 121.235746 123.906334 119.998415 120.750000 137.280832 228.544612 184.927722 135.053486 141.003890 164.207382 165.478640 160.000000 174.913779 189.314723 196.642752 204.987733 210.644099 219.477861 230.834591 237.250000 241.779304 251.810432 260.747665 265.886562 269.015745 274.464644 277.045525 278.420816 280.213892 281.643941 283.727875 287.114071 286.808687 286.969106 287.733436 | ||
38 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.733436 286.943440 285.761485 284.302952 282.188849 279.588688 276.140365 272.458947 268.703271 263.615694 256.483656 249.484542 243.203975 236.943366 230.001915 223.000000 215.776385 207.131530 198.430009 190.164114 182.959287 173.664194 167.437004 160.500000 152.161101 143.292647 134.430894 126.871162 127.445105 140.744214 140.165409 117.750000 128.554051 128.732619 99.664250 79.732973 82.158823 77.280983 94.779956 101.397460 86.931489 85.992649 67.996895 57.986678 61.200085 58.983841 51.253718 51.000000 60.000000 56.248365 48.030894 42.382625 53.071864 84.545801 103.307565 82.189308 75.273104 84.706873 97.904546 111.064179 129.239069 134.510512 127.123857 124.665126 129.000000 130.790533 138.670189 134.052302 133.165257 151.759703 172.121065 172.936462 167.000000 179.586763 191.053670 197.045206 205.728914 214.036902 223.799077 231.113446 238.250000 248.223536 258.070249 263.132245 271.012193 277.949512 275.084584 276.202873 279.693575 281.193601 282.062604 284.232039 285.682956 285.963240 286.960551 287.742000 | ||
39 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.748423 286.999049 285.790307 284.115544 282.029640 279.588688 276.810692 273.329782 268.197679 261.755874 255.863255 249.777435 243.714956 236.943366 229.779701 222.750000 215.776385 208.674821 202.162092 195.722971 188.996110 179.315774 172.109988 162.500000 151.095698 141.031595 132.638258 127.500572 124.141506 116.547254 117.088790 112.500000 112.998349 113.449385 99.664250 87.414953 83.910662 74.590953 89.285547 94.866371 89.776799 80.221010 62.156105 56.020752 59.219300 58.983841 61.243012 57.000000 54.000000 52.252647 59.979563 65.161656 62.901493 90.386592 120.622481 85.034617 84.603231 103.021569 98.801223 118.947459 142.042370 139.488550 128.732619 128.554051 124.500000 125.742522 126.917380 153.213175 150.159315 149.369523 156.858962 165.478640 175.500000 187.998135 191.488407 196.240297 205.728914 215.054743 227.502976 238.084838 248.000000 255.556627 258.852726 267.560749 272.183766 277.080952 275.704524 276.371403 279.157677 281.915492 283.356651 283.701340 284.371100 285.761485 287.003326 287.759129 | ||
40 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.755917 287.046102 285.847951 284.115544 282.082709 279.817050 277.068511 273.731706 269.967249 264.442281 255.863255 249.484542 243.203975 235.769651 229.557486 224.500000 219.959220 214.539328 207.251296 198.687695 188.996110 179.315774 170.240794 161.000000 152.161101 142.727384 133.833348 128.129981 122.820067 113.781888 108.435058 102.750000 98.220432 100.579294 99.664250 90.829167 84.786582 84.454396 75.549525 81.804193 82.189308 62.906095 53.394919 61.918530 61.200085 50.022339 58.246224 58.000000 55.000000 55.249435 133.663023 162.220135 104.185935 68.970360 92.726227 84.086180 79.938167 102.105834 126.598199 141.721376 141.188817 133.680839 126.319476 120.776200 117.750000 127.184811 181.533376 208.713632 175.335695 155.942519 156.293699 171.871059 192.500000 196.409507 194.096829 203.484484 212.028952 220.822507 234.293459 250.354487 257.250000 255.112197 258.070249 268.753039 270.572853 276.584631 280.354074 279.489215 278.286842 281.863928 284.993242 283.515596 284.166655 285.626982 286.973383 287.747353 | ||
41 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.759129 287.063212 285.992062 284.439249 282.135779 279.893170 276.810692 274.669528 274.517569 269.505124 254.994694 249.191649 243.714956 239.877656 235.112858 228.750000 221.911210 214.539328 205.554895 194.981790 184.166652 176.707353 167.904302 159.000000 151.095698 142.162121 135.028439 130.018210 126.123666 121.386646 112.761924 102.000000 98.220432 92.535486 89.708175 91.682720 93.545781 90.731133 66.392177 67.809002 69.859635 67.715794 54.368384 55.037790 59.219300 55.000951 58.246224 48.000000 70.000000 103.198050 212.325095 214.710945 129.742971 82.598871 90.802348 83.137744 66.875990 85.622608 130.184906 148.728735 148.017244 136.999531 129.536999 130.887406 131.250000 135.838543 200.199602 198.142116 184.147429 163.710607 163.076856 199.038839 222.500000 195.007611 195.835776 209.118852 220.181943 233.036597 246.331132 253.979610 257.000000 259.334280 264.916924 275.055141 272.623106 277.825432 283.040480 279.742011 279.425626 283.874910 286.211169 284.975017 284.865176 285.992062 286.981939 287.733436 | ||
42 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.762340 287.071767 286.097743 284.677768 282.427664 280.235712 276.965383 276.210236 276.708464 269.091831 254.126134 249.777435 246.951171 245.550615 238.446081 228.750000 219.122653 209.909454 200.804971 191.646476 182.154377 177.142090 169.773496 159.500000 152.693803 146.684226 141.601436 136.941715 130.748704 129.682747 121.415656 108.000000 108.331638 100.579294 92.197194 90.829167 88.290262 78.177659 59.982033 55.679837 65.117453 86.954589 68.970360 51.105938 56.248122 63.962453 60.244083 62.000000 113.000000 141.157369 179.466255 152.316208 117.947416 107.908963 92.726227 74.601817 65.942977 91.117017 105.974636 118.947459 132.653283 137.829204 161.712228 183.776794 149.250000 130.069388 161.484466 153.213175 173.447467 173.271329 176.077907 207.562064 226.500000 204.820879 210.616831 208.716397 233.893790 254.750534 260.529413 256.768167 261.000000 272.000528 275.871604 281.527570 278.041631 280.307034 283.557097 280.753193 282.774991 286.195273 286.744012 286.540579 285.546659 286.674184 287.123098 287.744141 | ||
43 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.762340 287.097433 286.049706 284.592583 282.958362 280.464074 278.563856 279.559600 277.635381 266.198777 254.250214 250.949008 248.654442 243.985661 233.335139 224.000000 216.334097 209.292138 201.483532 192.017066 183.764197 178.881037 171.642690 161.500000 159.086221 156.858962 151.759703 145.124038 136.034461 135.904822 126.463667 112.500000 113.776134 116.666908 110.449998 87.414953 62.888585 58.450772 52.656155 48.215736 57.529962 74.449372 69.943825 56.020752 55.257730 56.992396 58.246224 121.000000 181.000000 128.171286 76.906845 74.075190 102.220009 100.121243 65.791914 60.375271 74.340091 99.358630 82.661043 78.655143 97.657594 146.955606 210.779451 214.888199 132.000000 115.646502 137.978848 146.605977 159.600457 176.856600 187.948432 199.571540 219.000000 236.129874 238.874730 228.034229 257.240990 274.428789 271.641111 269.037815 274.500000 280.666909 281.544564 282.208879 281.849242 283.409036 284.487007 284.797923 285.521470 286.298400 286.477591 285.797600 285.120732 286.731829 287.230038 287.766623 | ||
44 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.771975 287.131653 286.011277 284.456286 283.011432 279.702869 280.471710 283.913775 280.837459 267.955274 254.374294 251.095454 245.077573 238.117082 230.890775 224.250000 217.170664 210.526771 204.197774 194.981790 188.191200 182.793669 172.577286 168.000000 166.011342 161.381066 155.344974 150.159315 143.963098 137.287506 125.021378 114.000000 105.998283 108.623101 104.642287 79.732973 55.005306 54.864066 49.908950 46.349710 41.406544 35.971781 44.633734 50.122975 51.296159 47.035172 56.248365 150.000000 199.000000 115.185203 65.953898 78.036760 102.220009 91.360057 60.982215 58.478398 73.407079 78.296729 71.004246 69.020024 98.511147 171.016120 207.561929 154.220960 93.750000 126.463667 160.793124 152.552455 153.306362 164.308152 182.861064 216.085289 251.500000 262.298586 259.307364 272.706716 275.770514 276.125191 277.196960 278.518908 279.750000 280.666909 281.153325 280.505608 280.531223 283.409036 284.590330 285.219249 284.918584 285.318691 284.917121 283.170642 284.013322 286.347534 287.221482 287.784822 | ||
45 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.826573 287.088878 286.040099 284.388138 282.507268 279.512568 278.357601 278.956715 274.349039 262.995754 255.863255 250.509668 243.714956 237.725844 235.557287 229.750000 220.795787 210.218112 203.179933 204.987733 201.874664 200.617882 186.128941 184.000000 183.590493 172.686328 158.332700 150.788724 146.605977 143.509581 132.232821 117.750000 101.331572 88.513583 76.433409 64.369012 57.633065 54.864066 50.824685 51.014774 48.045598 40.781480 52.421454 67.816307 60.209693 44.048004 49.255859 58.000000 91.000000 100.201261 86.864069 70.113619 63.884456 67.023430 65.791914 56.581526 71.541053 112.178917 106.871313 88.290262 99.364701 119.576400 118.275669 106.776068 116.250000 133.675110 151.805682 161.141811 159.600457 175.661510 191.340011 209.160168 242.500000 272.111853 272.784208 274.316535 275.399924 272.393108 275.653669 278.797763 279.500000 280.222479 279.392751 272.670562 270.572853 281.671915 284.590330 284.460862 281.502232 280.626401 281.682001 282.056175 284.745916 286.972013 287.426806 287.804091 | ||
46 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.826573 287.093155 286.049706 284.302952 282.294989 279.778990 276.862256 273.731706 269.293127 262.995754 257.352216 253.438600 246.440189 238.899559 236.890577 230.500000 221.632354 217.008595 216.411864 214.252495 210.326216 212.790516 196.876805 185.500000 186.254001 178.904222 161.917971 151.418134 149.909576 146.966290 140.165409 128.250000 110.664993 89.317964 71.455371 63.515458 60.260825 56.657419 55.403359 46.349710 42.354980 35.971781 42.686804 48.157049 41.392233 35.086503 42.263352 50.000000 72.000000 78.224813 63.962453 51.296159 46.191123 45.607199 45.591179 48.994035 65.009964 102.105834 91.627809 73.399624 113.021555 135.340185 107.014339 95.109291 135.000000 145.213420 150.422998 176.999085 175.335695 183.429597 196.992642 220.346901 253.500000 272.579152 273.218945 273.914081 273.917562 265.946783 271.949769 278.240052 276.500000 275.555967 278.414655 276.758412 272.037320 282.044155 284.590330 280.500398 276.344210 276.913820 280.197652 282.852223 284.439249 286.184209 287.238593 287.770905 | ||
47 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.791245 287.204372 285.953632 284.234804 282.241919 279.893170 276.810692 273.396769 269.882983 265.372191 259.957898 255.781746 248.484115 237.725844 232.446279 227.750000 224.699766 225.342368 221.840348 208.693638 206.704123 201.922093 188.465433 177.500000 187.319404 196.427378 176.856600 149.529905 155.856053 158.027757 145.213420 126.000000 106.776068 86.100441 69.796025 63.515458 67.268184 74.590953 60.897768 43.550672 38.561234 36.933721 35.872548 31.446680 42.382625 61.971008 56.248365 53.000000 67.000000 61.243012 57.988119 63.180871 66.833345 67.023430 76.373251 91.673671 79.938167 88.369812 83.557719 75.151463 107.900235 115.428035 102.188055 124.665126 159.750000 137.280832 158.719099 180.302684 186.665067 178.649236 190.774747 233.664440 269.500000 272.579152 272.349471 265.060074 271.694019 271.375267 255.899538 247.008219 254.750000 270.445024 280.566467 279.653972 279.066757 283.160876 284.590330 278.646563 274.535553 276.501311 280.654375 283.250247 284.132581 285.982454 287.165874 287.747353 | ||
48 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.789104 287.118821 285.924810 284.251841 282.507268 280.045411 277.068511 273.999655 270.641370 266.302101 260.330139 254.463726 250.698367 254.157864 250.890114 233.750000 227.767179 230.280901 221.501068 212.028952 212.740945 208.443147 193.605716 189.500000 202.767750 207.167377 190.600139 170.929829 163.123971 160.793124 153.146007 137.250000 110.664993 86.904821 71.455371 69.490332 75.151463 70.107569 56.319094 51.014774 46.148725 40.781480 36.846013 33.412605 45.353803 64.958176 64.239801 55.000000 69.000000 64.239801 60.975286 66.152049 66.833345 75.784616 106.193384 125.817381 89.268294 89.285547 89.834456 83.034743 89.975613 95.515885 128.732619 173.665588 160.500000 151.703719 175.311300 173.034767 170.929829 213.306855 247.866320 261.364922 271.500000 272.579152 271.479998 257.815887 272.435200 257.804056 237.997358 232.228869 246.250000 268.445090 279.588371 276.758412 281.849242 276.212391 273.121441 273.000795 273.664718 276.346620 280.235712 282.586873 284.098507 285.944025 287.105988 287.794457 | ||
49 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.783751 287.127376 286.001669 284.473323 282.693013 280.007351 276.759129 273.128820 269.293127 265.475514 260.206058 252.999260 252.231311 262.373874 252.667834 239.250000 237.805982 235.528092 225.911711 231.299657 252.181519 251.047363 243.139350 244.000000 243.253069 233.734743 212.111765 184.147429 172.374047 199.508260 213.722132 161.250000 112.220564 87.709202 73.944390 74.611652 79.531063 62.037479 51.740420 59.411888 55.633089 45.591179 40.739874 41.276309 47.334588 60.975286 71.232307 78.000000 89.000000 88.214108 78.898290 74.075190 84.526677 102.068173 103.307565 89.776799 86.469256 88.369812 104.181283 130.334417 126.678409 120.406073 144.015852 186.887935 213.750000 201.462679 176.693984 160.481092 165.894553 221.672487 246.735794 251.243592 268.500000 269.775361 264.089470 259.828161 253.535086 229.304514 224.725052 231.671158 242.500000 254.001123 259.048346 262.450936 277.309398 272.738148 266.715394 269.377392 272.994845 276.243493 279.893170 282.241919 284.439249 285.934418 287.063212 287.841560 | ||
50 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.778399 287.157319 286.011277 284.609620 282.746083 279.931230 277.223201 274.401578 269.967249 264.132311 259.585658 257.978445 262.450936 258.461488 257.112131 259.000000 253.700754 249.417715 252.714852 252.793905 273.511626 273.653682 272.579152 267.000000 252.308995 218.472639 202.551042 203.659124 178.320524 238.223396 257.711938 178.500000 113.776134 86.904821 74.774063 72.904546 74.275543 61.140802 54.487624 58.478875 56.581526 48.476998 50.474524 53.071864 57.238515 68.941065 86.216249 103.000000 96.000000 114.186274 103.791350 77.046368 98.288158 121.537474 86.954589 62.272144 96.732396 124.999205 142.738379 168.874893 152.285011 132.021493 129.536999 158.887671 213.000000 177.664915 140.052873 136.695181 162.747505 192.990319 202.080009 216.085289 247.000000 260.896691 254.959995 248.156971 227.593752 216.411864 221.329811 231.113446 242.250000 250.223470 249.267381 252.742292 266.179455 266.658223 267.438657 269.377392 272.525934 276.449747 280.045411 282.878757 284.916287 285.953632 287.067490 287.872606 | ||
51 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.782681 287.110266 285.934418 284.592583 282.878757 279.931230 277.687274 275.875299 271.231226 263.512371 259.089338 263.104076 269.264020 259.439584 271.333884 279.500000 262.902991 257.751488 271.035987 253.164495 267.877258 272.349471 253.419916 225.000000 200.636943 170.425276 178.649236 214.988495 203.427874 249.976206 239.683329 168.750000 112.998349 86.100441 74.774063 70.343885 69.895944 70.107569 71.886586 65.009964 61.323707 57.134456 61.182640 63.884456 68.132834 83.876902 105.195909 109.000000 93.000000 139.159510 128.684411 88.931079 98.288158 119.590544 92.726227 68.911198 111.660599 147.892575 146.325086 158.363854 136.067496 112.939017 114.253766 138.665258 159.750000 116.367646 108.251154 124.141506 153.306362 170.283603 181.165275 194.244525 214.500000 237.999067 238.874730 230.046503 217.958400 220.143947 222.564444 228.603746 240.750000 249.779040 250.832336 253.764254 256.806872 262.439500 270.848327 270.725635 272.324972 276.656002 280.311833 283.250247 284.848139 285.992062 287.127376 287.890805 | ||
52 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.780540 287.080323 285.934418 284.473323 282.852223 279.931230 277.223201 274.334591 269.798718 263.822341 259.585658 260.760931 261.428974 264.330066 269.778380 272.750000 253.700754 242.627232 249.322050 224.629028 236.083326 244.091573 204.820879 169.500000 147.899489 148.945278 169.686058 204.917943 245.713937 243.754130 192.808946 144.000000 114.553919 86.904821 71.455371 69.490332 75.151463 88.041103 92.948486 81.804193 77.447126 70.601613 71.890756 78.628900 91.902257 111.757130 124.175568 113.000000 104.000000 144.154158 132.667301 111.710110 111.066676 129.325194 121.584420 74.601817 103.263485 108.515978 107.767989 135.589937 116.435768 95.515885 114.253766 141.776398 135.000000 109.877347 109.633837 132.730863 147.012267 166.698332 181.165275 186.786703 195.000000 211.363057 217.137885 222.802316 222.034895 221.161787 223.799077 231.950013 238.500000 240.890445 246.919950 256.319161 255.049513 263.680301 271.571591 270.894166 272.324972 276.965383 280.540194 282.719548 284.371100 286.088135 287.221482 287.883311 | ||
53 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.768764 287.114543 286.040099 284.319989 282.427664 279.740929 276.810692 273.128820 268.787536 264.545604 260.081978 256.806872 252.571965 256.896534 250.667900 246.500000 231.950013 210.835429 201.483532 195.722971 187.788745 176.272616 166.502407 160.500000 156.422714 151.771594 157.137610 197.994438 254.303294 209.187044 149.540286 133.500000 122.331770 87.709202 66.477334 68.636779 83.034743 112.251373 107.600243 94.866371 90.725235 84.068770 80.651941 108.117787 152.316208 163.534696 136.162722 131.000000 121.000000 111.189485 102.795628 117.652466 139.572600 149.767961 134.089637 94.518980 82.737206 80.128199 106.871313 137.341777 108.753788 94.686213 115.862527 128.554051 126.000000 126.463667 115.855913 135.373742 145.753448 157.137610 166.468434 177.198075 193.000000 204.353580 209.747357 219.985132 219.440762 218.447545 227.194318 239.200260 243.500000 242.001519 245.941854 254.786217 256.513979 260.950539 266.405424 269.377392 273.396769 277.893529 280.578254 282.241919 284.337026 286.193816 287.281368 287.847984 | ||
54 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.786963 287.178707 286.184209 284.456286 282.348059 279.436447 276.552874 273.463756 269.293127 264.752251 260.826459 256.221086 248.824769 252.984148 252.890048 238.000000 221.353498 209.600796 198.769290 191.646476 181.751923 171.925247 165.100511 173.000000 170.805656 151.206331 146.381797 181.629791 208.713632 135.904822 108.435058 119.250000 103.664927 81.274156 71.455371 72.050992 89.166182 131.978259 146.061105 130.320853 122.972071 101.383685 76.758081 127.777045 212.730159 211.329373 136.162722 128.000000 119.000000 101.200191 112.752852 130.527570 126.794082 110.829358 116.774722 134.353308 94.866371 106.684508 107.767989 103.180900 110.460895 122.065418 120.688811 115.331704 127.500000 135.117399 138.670189 138.016621 153.935772 161.917971 165.903171 179.328881 195.500000 200.615193 209.312620 217.972858 217.217219 219.126106 228.737610 236.411704 243.250000 247.334676 246.333092 252.742292 258.564232 261.074619 265.062221 269.040331 275.339401 279.131056 280.235712 282.348059 284.302952 285.934418 287.182984 287.797668 | ||
55 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.918639 287.473859 286.635755 285.648882 284.232039 280.958857 276.656002 272.257985 268.619005 265.372191 260.206058 254.756620 247.802806 251.614813 260.000925 241.750000 218.843798 208.366163 200.126411 193.499428 183.764197 179.750511 183.792449 174.500000 156.955415 146.118963 145.186707 145.753448 141.320219 126.226038 120.694512 114.000000 90.442580 77.252253 74.774063 80.586526 99.677221 121.218139 123.167735 136.851942 163.754835 116.774722 89.413127 121.879268 188.960736 225.269487 180.115618 119.000000 143.000000 140.158440 123.705799 115.671681 121.879268 121.537474 107.155324 99.261162 88.335282 96.611426 110.458019 115.443779 106.193128 102.153269 123.906334 156.554315 163.500000 141.607698 146.966290 129.427264 177.853334 188.209958 173.251591 177.730776 197.000000 207.157371 206.704199 208.313942 232.411428 237.107960 226.268343 235.296281 258.250000 261.334214 247.506808 256.659815 260.028698 260.950539 264.545604 269.124597 274.133629 277.738838 280.083471 282.639943 284.660731 285.944025 287.011881 287.751635 | ||
56 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.958249 287.730513 287.020049 286.381477 285.028087 282.747688 278.048220 273.128820 269.208862 264.028987 258.717097 254.756620 248.313787 245.746234 243.334808 232.250000 218.843798 209.909454 202.162092 192.387657 187.386290 187.575775 184.259747 167.000000 154.824609 151.771594 151.162158 148.271086 139.998780 133.830797 132.953966 109.500000 88.109225 78.861014 75.603736 86.561400 109.312340 122.114816 122.252000 137.784955 121.075199 112.926963 95.253917 127.777045 203.816626 227.260932 166.130606 129.000000 163.000000 220.072797 165.526141 138.450711 192.652597 200.388144 155.252312 194.104799 210.559946 213.825481 149.015116 106.684580 118.142875 138.658877 162.516609 182.999009 159.000000 127.184811 131.065430 126.784385 172.188648 182.234507 170.425276 175.067268 197.000000 210.428460 202.356830 213.143400 260.946895 250.339890 227.194318 242.825384 258.750000 245.779172 240.660133 257.681778 264.568542 260.206058 263.512371 269.124597 273.463756 278.563856 282.671567 283.462526 284.081470 285.838344 287.016159 287.781610 | ||
57 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.940050 287.431083 286.405178 285.001473 283.356386 280.502134 277.016947 273.530744 268.956066 262.789108 257.476296 253.731493 246.951171 242.225087 240.890445 233.500000 219.680365 208.366163 201.144252 193.128838 188.593655 181.489459 174.913779 173.000000 167.076745 161.381066 154.747429 149.529905 151.231015 149.040315 129.348244 141.750000 112.998349 80.469776 75.603736 102.778914 131.210337 131.978259 147.892575 142.450019 111.590835 108.117264 98.174312 108.117787 127.556392 125.697244 124.175568 158.000000 193.000000 198.096348 178.470533 158.258564 177.908154 190.653494 192.767963 250.062545 251.612505 207.415337 131.081583 97.049461 125.824856 153.592989 178.604223 186.110150 135.000000 119.252223 127.608722 131.409423 140.088762 149.967068 159.685277 175.067268 196.000000 205.288177 197.139987 211.533581 245.382095 227.608112 231.515534 257.325878 255.750000 239.112726 253.766625 269.264020 264.568542 260.081978 263.615694 269.461657 274.133629 278.666983 282.024543 282.931827 283.996285 285.780700 287.020437 287.811585 | ||
58 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.807303 287.011881 285.665412 283.757765 281.445871 278.370761 275.263784 272.324972 268.619005 263.512371 257.848537 252.559921 246.780844 240.660133 239.779370 232.500000 218.564942 207.131530 200.465691 193.128838 188.191200 181.054722 175.848376 177.500000 171.338357 163.076856 155.942519 153.306362 165.106130 171.854592 148.819141 196.500000 135.554117 81.274156 79.752100 106.193128 126.830738 131.081583 145.145370 144.316044 119.178326 107.155324 91.360057 86.492603 89.921472 91.842681 128.171286 219.000000 218.000000 196.098490 214.316540 191.931914 188.720746 192.600424 161.985891 145.734544 154.579184 96.611426 95.214516 97.925381 101.925361 117.917054 156.081563 171.332233 120.750000 107.713914 120.003963 129.427264 135.682896 146.381797 159.120014 173.469164 187.000000 191.736522 189.749460 204.289393 209.805409 207.251296 228.737610 243.661951 237.250000 240.223800 266.677498 272.670562 257.685552 259.337498 264.442281 270.725635 274.602540 277.274765 279.969291 282.162314 284.149618 285.751878 286.981939 287.766623 | ||
59 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.716307 286.870722 285.473264 283.519246 280.915172 277.990159 274.593456 270.985226 267.523558 263.719017 258.841177 252.413474 246.440189 240.268894 236.668362 232.250000 221.632354 208.674821 200.126411 194.240609 191.410839 190.184197 183.325150 182.000000 176.665373 168.164224 162.515516 161.488686 165.766849 172.545933 173.338049 210.750000 158.887671 98.166151 83.900465 95.950487 104.056820 114.941403 119.504796 127.521815 115.384581 109.079203 95.253917 123.845194 155.287386 156.564639 201.093137 251.000000 241.000000 237.054597 237.218156 182.027987 173.976302 173.131122 108.117264 66.065889 77.139129 51.740420 85.351073 97.925381 87.414953 99.664250 145.624614 160.443241 111.000000 99.781326 117.238596 127.445105 140.718172 153.552339 161.946330 167.076745 173.500000 186.128941 200.183145 198.252571 191.646476 200.465691 216.082620 222.468921 224.500000 236.446147 253.962244 259.385048 252.413474 257.600376 264.545604 270.809900 273.731706 275.934111 279.093905 282.003105 284.132581 285.675019 286.999049 287.739859 | ||
60 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.721660 286.913497 285.550123 283.655543 281.100917 278.104339 274.696584 270.650290 266.343845 262.375814 258.096697 252.267027 247.632479 241.246991 236.223932 239.000000 228.882601 208.983479 199.447850 196.093562 197.447661 197.574724 188.932732 188.500000 186.254001 180.034749 174.466419 171.559238 167.088289 161.484466 174.780338 213.750000 207.110348 128.732619 86.389483 90.829167 89.166182 97.007869 105.768774 112.593612 104.003344 91.764288 135.165985 210.345930 230.557227 216.307985 250.040680 229.000000 250.000000 213.080290 160.547529 104.777362 97.305195 97.200847 66.753854 60.375271 65.942977 70.055116 85.351073 92.669861 87.414953 112.939017 158.494705 156.554315 100.500000 100.502470 116.547254 123.480787 135.682896 147.576887 155.163172 158.020818 164.500000 185.194344 203.661041 192.215748 193.870019 203.179933 209.292138 215.776385 224.250000 231.779634 238.508321 247.291825 251.827687 256.607736 263.615694 268.871801 272.592921 275.934111 279.093905 281.950035 284.422212 285.819129 287.037547 287.750565 | ||
61 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.732365 286.913497 285.540516 283.655543 281.074382 278.028219 274.748147 270.985226 266.343845 261.032611 256.359575 252.559921 251.039021 242.616326 242.445949 252.000000 234.459714 205.896897 202.162092 200.170057 201.472210 198.009461 190.801925 190.000000 188.917509 186.817906 184.624687 182.259200 178.320524 167.706541 169.011183 240.750000 259.221951 167.342893 100.493923 100.218254 101.429061 95.214516 104.853039 112.593612 105.900217 112.926963 205.255469 244.749632 203.816626 191.414924 205.088855 141.000000 178.000000 100.201261 45.043727 38.421055 41.276309 39.766408 43.667299 48.994035 60.344901 67.307912 71.004246 81.282903 81.440079 134.510512 185.843649 154.220960 93.000000 103.387048 110.325179 117.534309 129.388800 136.821074 144.423174 151.628399 161.000000 176.782972 184.532617 187.386290 197.946514 206.233456 211.144087 217.170664 225.000000 233.112924 240.855752 246.951171 251.827687 256.855896 262.272491 266.933702 271.923048 276.243493 278.941664 281.578546 284.814065 286.030491 286.977661 287.742000 | ||
62 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.729154 286.900665 285.550123 283.570357 281.684685 278.903604 275.005965 271.052214 266.849436 261.755874 257.724457 254.610173 252.060983 242.616326 252.667834 265.250000 239.200260 206.205555 207.929857 206.099504 201.874664 195.401039 190.801925 187.000000 182.525090 184.556853 194.782955 197.365029 181.624123 182.224717 181.270637 248.250000 262.333091 205.953167 132.021493 118.996429 139.969536 112.251373 101.190100 108.861561 147.631417 228.359734 244.194072 169.061488 100.815791 102.795628 101.200191 48.000000 35.000000 23.283693 36.082225 54.267337 59.952604 55.341850 48.476998 47.097162 54.746825 62.729238 62.037479 66.392264 77.172313 148.614952 196.300599 145.665324 90.750000 104.108192 110.325179 116.212870 128.129981 135.625984 141.596858 150.562996 159.500000 166.502407 175.403142 188.191200 195.352381 200.804971 208.057504 216.612952 225.750000 234.446213 241.442610 245.588554 251.095454 257.104056 261.755874 266.428110 271.119201 275.521602 278.827484 281.445871 284.268878 285.742270 286.874999 287.721660 | ||
63 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.727013 286.896387 285.569338 283.519246 283.754410 281.263339 275.212220 271.052214 269.798718 266.715394 261.695020 256.221086 248.824769 241.442610 250.001255 270.750000 253.421899 215.773962 207.251296 204.987733 201.874664 197.574724 194.073014 185.500000 177.730776 186.817906 216.294581 226.317867 190.213480 187.755451 177.664915 245.250000 262.333091 213.192594 145.296260 144.603030 169.750813 118.528109 120.420530 120.057714 225.403200 249.522409 148.794496 66.833345 56.248122 56.992396 45.260141 53.000000 44.000000 42.263352 46.039449 62.190478 60.935567 50.474524 52.324757 52.787780 50.081761 55.403359 69.210892 80.406983 83.147186 98.004904 115.058146 109.109423 94.500000 101.944759 108.942496 117.534309 126.241753 133.833348 141.031595 150.562996 159.500000 167.904302 175.403142 184.166652 192.017066 199.108570 208.057504 218.007231 227.250000 234.446213 239.095179 243.714956 251.534794 257.476296 262.272491 266.765171 271.052214 275.057529 278.637182 281.498941 283.519246 285.454050 286.896387 287.725942 | ||
64 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.728083 286.900665 285.492479 283.587395 282.693013 280.426013 275.160656 273.932667 277.045525 273.638057 263.556221 258.564232 250.698367 242.811945 242.223734 261.250000 255.373888 224.107735 208.608417 206.099504 212.338490 211.486305 195.942208 203.500000 217.683393 230.343164 240.793932 233.870781 202.106435 192.594843 169.011183 224.250000 257.666380 241.345919 170.186447 119.849982 119.823378 103.284606 113.094652 125.655790 192.207927 131.203818 56.315315 45.208160 54.267337 45.043727 44.261211 45.000000 48.000000 50.254788 50.022339 61.200085 61.918530 51.447989 46.553119 47.097162 52.880799 59.982033 68.314216 74.275543 68.636779 122.895091 185.039269 157.332100 87.750000 101.223615 109.633837 117.534309 126.241753 132.040713 142.162121 153.226504 161.000000 168.371601 174.968405 181.349468 191.275885 199.787130 208.366163 215.776385 222.500000 230.224130 237.921463 244.907246 252.120581 258.096697 262.892431 267.270762 271.722087 275.315347 278.408821 281.419336 283.740728 285.578945 286.943440 287.731295 | ||
65 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.732365 286.917775 285.598160 284.251841 283.117572 280.692435 277.635711 278.822740 279.826276 272.708147 265.293342 259.150018 255.467525 250.245478 247.334676 255.500000 241.709961 220.712494 223.876029 222.776076 220.387587 221.485254 217.905235 248.500000 263.495728 265.389476 243.781658 209.953219 217.963708 202.964969 163.242028 161.250000 234.332827 261.455436 183.461214 89.122060 72.523704 72.797599 70.055116 69.675028 57.529962 52.324757 65.076500 65.850382 52.286552 45.043727 47.258000 52.000000 63.000000 49.255859 49.026617 50.305766 53.071864 52.421454 50.400878 58.478398 62.210926 62.729238 66.520862 76.027383 74.611652 96.345558 123.906334 117.665059 93.750000 101.944759 111.016521 118.195029 124.353524 136.821074 149.510541 158.020818 164.000000 170.240794 176.272616 186.983835 192.017066 199.787130 207.440188 214.939818 223.250000 231.112990 238.312701 246.951171 255.049513 259.585658 264.132311 268.197679 271.856061 275.315347 278.637182 281.684685 283.979248 285.617375 286.934885 287.724872 | ||
66 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.738789 286.960551 285.857559 284.728879 283.011432 280.882736 281.245165 280.966334 276.034342 270.021741 266.658223 257.831998 257.000469 254.353483 251.334544 263.750000 252.585332 242.318574 265.607502 256.870400 219.985132 223.658938 249.681528 267.000000 270.420848 256.345267 233.623390 233.241372 250.338975 209.187044 156.751729 156.750000 202.443637 187.452411 136.999531 93.389827 63.764505 57.554096 57.234829 49.148748 40.458107 53.286697 66.049965 63.884456 53.276944 47.035172 46.259070 54.000000 50.000000 44.261211 48.030894 51.296159 52.088901 50.474524 50.400878 61.323707 67.809002 63.644972 75.487629 90.042102 84.854293 83.900465 94.948629 101.331572 102.750000 116.367646 121.386646 118.855748 125.612343 141.601436 153.467383 159.618923 165.000000 174.446480 193.227355 197.045206 192.017066 199.787130 208.674821 215.776385 224.250000 233.335139 240.855752 248.313787 256.513979 261.695020 265.992131 269.124597 272.124010 275.830984 279.170026 281.605081 284.115544 285.780700 286.956273 287.733436 | ||
67 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.742000 286.990494 286.011277 284.797028 283.329851 281.834242 280.420147 280.966334 280.331867 274.051350 266.782304 259.589358 262.110282 254.744721 254.889982 270.250000 272.662939 263.924654 258.482617 236.858514 211.131126 243.222099 267.906167 271.500000 250.178189 213.950534 209.124039 232.611962 219.285148 179.459351 145.213420 152.250000 157.332100 131.145761 121.235746 136.921050 127.706658 80.867689 57.234829 49.148748 53.736216 58.096396 57.288780 55.037790 49.315374 42.056560 40.265494 43.000000 45.000000 48.256929 52.013784 49.315374 50.122975 55.341850 61.944155 69.859635 72.474066 77.380995 92.524486 90.918022 91.682720 93.026867 94.948629 100.553787 112.500000 130.790533 128.300064 126.784385 134.424076 148.174432 157.424225 160.684326 163.000000 172.577286 195.835776 198.252571 192.758247 200.804971 211.144087 219.401509 228.500000 238.001651 244.963757 253.253273 260.321591 265.417422 268.471891 271.736818 274.267604 276.656002 279.208086 281.605081 284.047396 285.857559 286.999049 287.748423 | ||
68 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.754847 287.067490 286.097743 285.035547 283.780945 281.301399 278.151347 279.023702 280.331867 274.257997 267.650864 265.886562 267.731076 256.505295 264.445222 275.750000 278.797763 259.912096 219.465386 201.652419 200.667300 233.223150 248.746931 235.500000 196.908032 168.164224 170.283603 181.000381 168.409728 152.497024 171.895760 200.250000 171.332233 164.125370 181.801868 211.180195 200.408010 102.387929 55.403359 51.014774 65.117453 54.248637 40.739874 48.157049 59.219300 54.005229 42.263352 39.000000 50.000000 55.249435 54.005229 47.334588 51.105938 65.076500 72.525492 73.653380 82.737206 92.032751 98.801223 99.677221 104.486021 105.471960 106.209959 109.109423 114.750000 127.184811 124.843355 128.105825 147.641676 156.540065 161.381066 163.347834 161.500000 168.838899 188.445249 198.252571 195.352381 199.108570 212.070062 223.026632 232.500000 243.112594 252.006051 258.874067 265.300776 270.380626 272.191531 273.843447 275.071451 276.604438 279.093905 281.764290 284.183693 285.953632 287.097433 287.763411 | ||
69 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.786963 287.225760 286.107350 285.478511 284.046295 281.720061 280.368583 279.827550 277.298320 273.121441 271.373267 267.790368 266.538786 257.483391 272.667173 279.750000 265.691548 230.898217 199.108570 192.758247 191.410839 196.705250 202.484386 185.000000 167.076745 160.815803 152.357248 141.976991 147.266697 146.966290 192.808946 231.000000 224.999406 234.910873 243.197663 246.175884 210.043129 97.904546 60.897768 56.612850 72.704944 74.449372 79.678476 98.288158 93.883043 62.966731 55.249435 50.000000 60.000000 73.230166 61.971008 51.296159 68.799270 88.439662 81.182950 75.550253 94.866371 99.358630 105.974636 118.947459 116.435768 115.428035 123.101954 126.998481 117.750000 121.415656 133.830797 149.909576 157.712229 158.332700 161.381066 163.880535 164.500000 170.708093 181.489459 201.472210 202.764190 209.965539 220.095178 228.046034 236.500000 248.223536 259.048346 266.198132 271.305087 274.475270 274.981260 274.433304 274.669528 276.656002 279.512568 282.082709 284.319989 285.992062 287.118821 287.768764 | ||
70 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.814797 287.307034 286.116957 285.580734 284.975017 284.917121 284.699928 282.105118 277.635381 274.567967 271.993668 263.689863 260.066357 254.744721 268.222875 272.750000 240.315683 205.896897 202.840653 196.834743 185.374016 176.707353 170.708093 172.500000 178.796179 178.338959 164.905697 149.529905 147.927417 145.583606 164.684317 176.250000 224.221620 239.737157 214.988784 187.280700 153.108335 97.007869 96.611426 88.335282 86.931489 124.470240 157.555681 153.334081 104.777362 59.979563 68.235518 64.000000 75.000000 96.205543 86.864069 77.046368 96.322232 109.855893 94.650107 92.622108 98.598422 108.515978 131.978259 133.838097 124.117749 130.362148 144.015852 141.776398 129.750000 130.069388 173.237275 210.695791 186.035657 164.308152 161.381066 166.544043 173.500000 179.586763 182.358932 211.936035 218.699581 227.947393 229.972243 233.902003 243.500000 254.223338 265.112544 274.544160 277.895184 278.693993 276.531110 274.938895 275.741324 277.790401 280.045411 282.454199 284.456286 286.001669 287.101710 287.773046 | ||
71 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.822291 287.328422 286.539681 285.325177 286.540579 286.744012 283.513964 278.420816 274.264773 270.435034 265.045182 262.811183 257.170796 252.592909 252.890048 242.750000 222.468921 208.366163 204.197774 194.981790 186.178926 177.142090 172.577286 169.500000 172.403760 173.816855 168.490968 159.600457 151.891735 146.274948 142.328842 138.000000 167.443307 167.342893 132.851166 100.218254 97.049461 121.218139 150.639779 138.717968 114.436144 144.670975 141.980240 93.373343 63.180871 69.936788 67.236589 73.000000 90.000000 95.206614 112.752852 122.604429 111.066676 101.094708 107.155324 111.590835 101.397460 124.999205 163.361943 154.860175 144.603030 156.082008 160.103466 146.443109 141.750000 146.655708 221.631195 260.910491 243.311924 197.173136 178.904222 189.982912 202.000000 205.755475 208.877883 239.302964 239.823238 225.233151 223.799077 238.642549 252.750000 262.000859 274.111031 278.291356 281.556349 283.533117 279.320840 276.202873 277.148058 278.924801 280.426013 282.772618 284.950361 286.222638 287.259981 287.799809 | ||
72 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.828714 287.692015 287.413951 285.699993 286.301764 285.526085 280.162328 275.071451 273.000795 270.228387 266.285983 262.225397 257.681778 250.636716 241.779304 231.750000 221.074643 211.452746 202.840653 193.128838 188.593655 183.228406 174.913779 172.000000 170.272954 172.686328 176.259055 172.188648 161.802531 162.867149 157.472874 155.250000 164.332166 147.233375 117.917054 109.607341 116.319699 116.734756 142.398166 134.985917 89.776799 71.563553 60.209175 57.003715 64.171263 66.949620 63.240871 97.000000 97.000000 80.222672 106.778518 133.498748 115.981490 97.200847 109.079203 116.333017 125.655790 147.892575 194.745626 192.524730 182.159380 173.505139 161.712228 158.109886 167.250000 186.318647 254.815598 266.196249 265.970667 224.062668 209.428430 240.589561 269.000000 269.775361 268.871576 267.072348 255.017448 222.179628 224.416394 248.681353 263.500000 269.778380 280.175229 281.527570 281.849242 282.044155 279.734134 276.792729 276.478185 279.440438 282.176784 283.223712 284.899250 286.299497 287.418251 287.830855 | ||
73 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.784822 287.289923 286.366749 285.342214 283.595201 281.073037 278.048220 275.741324 274.011978 271.468267 268.023105 263.689863 258.874067 249.071762 238.668296 236.750000 243.104240 232.441509 203.519213 196.834743 192.618203 188.445249 181.923255 178.000000 178.263478 181.730538 184.624687 183.518019 178.981244 172.545933 161.799740 148.500000 144.887539 146.428994 124.554437 123.264196 143.473216 104.181283 79.212464 90.201307 56.581526 51.362818 50.474524 42.259272 41.392233 52.013784 73.230166 115.000000 118.000000 122.177709 145.611692 136.469926 109.100750 109.855893 136.013517 143.837672 147.115082 167.123006 192.055596 213.546808 210.326641 204.203036 201.126883 196.999141 209.250000 245.452484 263.111698 266.196249 254.011886 237.806206 245.605268 262.963026 270.500000 270.242659 257.568417 230.448958 230.187886 224.554590 237.688700 260.114435 273.250000 276.667041 278.219036 277.780374 279.506097 275.591990 274.567967 274.349039 277.817931 283.462401 285.373844 283.940155 284.950361 286.462822 287.294201 287.838349 | ||
74 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.753776 287.058935 286.068921 286.790367 286.195624 281.301399 277.532583 275.272413 276.118608 281.387307 280.307034 272.476659 260.577338 257.483391 266.000727 272.500000 265.970403 235.528092 201.144252 200.911238 194.630477 192.357881 187.998135 181.500000 183.590493 189.078958 191.795229 192.959162 188.892040 184.990084 181.270637 156.000000 146.443109 142.407091 125.384110 142.042370 182.889612 152.601823 122.252000 151.780146 71.756507 57.134456 55.341850 45.208160 47.334588 56.992396 67.236589 98.000000 104.000000 113.187344 148.598860 151.325816 113.032601 103.041638 139.861276 156.167344 151.780146 135.072287 182.192153 190.772891 177.038059 196.735980 211.583832 211.777059 246.750000 262.038804 264.494382 266.196249 262.823619 264.695739 236.561058 227.804723 260.500000 263.233183 225.397886 205.496758 219.440762 225.911711 246.948448 258.720156 261.250000 266.222941 270.785503 276.247431 273.501786 272.241828 273.948027 278.393768 283.176915 286.092146 285.449964 284.019760 285.972587 286.539681 287.187262 287.827643 | ||
75 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.739859 287.097433 286.981620 287.284442 285.664926 283.889495 282.018619 279.961524 280.921724 284.590330 281.423755 267.351028 267.220095 271.959219 276.222611 262.000000 237.527126 216.699936 204.537054 201.652419 200.667300 205.834725 195.474910 188.000000 190.515614 196.427378 199.563316 196.106210 185.588441 182.916059 207.231833 178.500000 146.443109 133.558903 124.554437 125.824856 140.845456 145.428409 135.988022 124.722777 87.879926 63.868034 61.182640 53.071864 45.353803 55.000951 68.235518 92.000000 101.000000 134.164863 126.692966 123.594822 110.083713 102.068173 126.394119 155.218908 151.780146 173.533149 182.192153 182.889612 171.063185 177.653503 190.669934 211.777059 261.000000 263.481092 265.185723 266.196249 267.229486 268.281010 216.776850 188.917509 217.000000 209.026564 196.705250 204.691848 222.776076 220.483227 239.540649 263.739558 269.750000 264.223007 265.112544 273.862851 279.652543 280.679274 281.697277 283.955271 285.722432 284.957746 282.747688 283.091037 286.279254 287.000835 287.431083 287.907934 | ||
76 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.731295 287.144486 287.577276 287.199257 284.285109 285.107422 283.204582 279.023702 279.152155 280.147427 271.745507 260.321591 268.753039 275.284746 266.445156 247.250000 229.440312 224.107735 223.197469 211.658362 209.923761 210.182094 200.615193 194.000000 199.038839 212.820008 221.074942 212.470857 197.481397 202.273627 202.904967 177.000000 159.665456 146.428994 127.043456 111.314448 114.567859 123.011493 102.105834 89.268294 85.034617 60.020275 50.474524 48.157049 46.344196 53.009506 60.244083 66.000000 93.000000 117.183062 113.748575 123.594822 131.708897 133.219055 133.127698 139.095490 202.162831 233.055912 217.162543 191.648811 175.330952 177.653503 205.953167 244.444033 263.250000 261.317659 243.062788 261.571211 254.641295 218.684761 178.904222 168.674850 183.500000 190.334627 193.227355 207.911487 230.929066 221.501068 240.466624 269.874382 270.500000 255.334412 261.004539 276.588085 281.556349 283.657197 284.590330 281.174519 281.502232 282.482692 281.948423 283.595201 286.296291 287.471595 287.756179 287.957178 | ||
77 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.738789 287.093155 286.856724 285.955550 283.568666 282.899929 280.007637 275.540363 272.916530 270.848327 266.285983 261.346717 272.840889 277.632178 258.889850 252.500000 245.335085 232.132851 226.590272 219.440762 213.545855 208.008410 202.951685 201.500000 204.365854 226.386323 249.757110 242.682514 219.945868 214.026436 186.318647 209.250000 217.999340 173.777939 126.213783 111.314448 116.319699 114.941403 91.117017 89.268294 75.550253 51.362818 38.792943 38.327420 42.382625 45.043727 45.260141 46.000000 77.000000 107.193767 119.722909 121.614036 135.640748 160.476077 152.366493 122.972071 210.559946 252.286343 229.716016 183.765531 161.674098 195.076634 244.563441 262.333091 252.000000 211.558699 238.223396 262.892650 219.394362 168.490968 155.163172 163.880535 174.500000 193.605716 203.226304 209.118852 220.552533 225.572431 240.775283 253.143043 250.000000 247.112461 260.026442 271.989253 275.991378 281.671915 283.970390 279.320685 278.554791 280.781092 282.290965 284.205504 286.432588 287.615706 287.760456 287.876888 | ||
78 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.751635 287.041824 285.944025 284.541471 283.170642 280.578254 277.790401 275.272413 271.736818 268.471891 268.023105 263.836309 268.923366 277.436559 267.778446 262.750000 256.489311 237.071383 218.108265 214.252495 205.496758 217.572622 225.849308 227.500000 224.608514 241.083163 264.098194 263.453029 245.713937 226.470587 213.722132 253.500000 262.333091 191.474314 125.384110 114.728662 116.319699 105.077959 97.527160 90.201307 67.962762 47.515058 35.872548 32.429643 31.488306 32.099335 38.267635 52.000000 78.000000 122.177709 123.705799 107.748539 115.981490 147.821031 150.442613 117.281453 162.043285 198.257989 194.745626 184.641451 169.356079 214.159111 261.455436 256.888595 231.750000 194.972379 242.371447 231.178103 186.035657 160.125336 156.293699 163.880535 177.000000 192.671119 208.008410 211.131126 208.323047 223.197469 232.441509 232.507725 235.500000 245.556957 255.527199 261.428974 274.819805 277.701352 279.114194 277.214055 276.143248 278.202910 280.996917 283.276782 286.177032 287.413951 287.388308 287.763411 | ||
79 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.761270 287.050380 285.819129 284.132581 282.693013 280.616315 278.357601 276.210236 273.927713 271.674914 268.767585 263.836309 263.302572 274.893508 280.666909 259.250000 251.191054 246.022473 218.108265 209.064228 204.289393 244.526310 262.765884 262.000000 258.168712 260.302108 264.098194 266.600076 264.214090 254.124256 262.759948 263.250000 249.110744 178.604223 125.384110 118.142875 111.064179 94.317839 86.538343 76.206117 62.272144 46.553119 34.899083 29.480754 27.526736 26.125001 34.271917 56.000000 83.000000 105.195909 99.808461 101.806184 110.083713 121.537474 131.203818 123.920508 127.521815 140.566696 165.155296 196.028410 200.937554 220.796494 244.563441 230.443901 204.000000 223.097009 200.890944 165.106130 169.671010 170.283603 163.642119 167.076745 180.000000 190.801925 203.661041 209.521306 209.805409 217.429704 224.416394 240.036827 249.750000 246.890247 248.093666 256.659815 272.915999 270.256546 271.674914 271.315492 271.856061 275.366911 279.436447 282.560338 285.546659 286.616540 286.986216 287.743071 | ||
80 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.776257 287.071767 285.915203 284.354063 282.321524 280.578254 278.460729 275.272413 271.905348 270.331711 270.628787 270.426407 279.653972 281.348944 277.333686 251.750000 243.940807 241.392599 218.786825 221.664305 234.473506 260.611575 270.709958 268.000000 265.626534 267.085265 267.683465 265.970667 266.196249 264.494382 257.711938 252.000000 191.554646 135.972045 117.087381 116.435768 112.816019 101.491253 80.128199 74.340091 59.426835 41.743420 33.925618 33.412605 31.488306 28.116446 26.280481 36.000000 50.000000 44.261211 59.979563 91.902257 116.964453 128.351729 134.089637 135.301744 137.784955 174.448884 180.398800 166.247133 188.987807 195.906307 185.843649 181.443439 166.500000 160.357451 137.978848 157.177493 169.041600 165.503242 167.033697 176.132671 183.000000 189.400030 198.009461 201.472210 206.840685 214.376182 223.799077 250.912198 261.750000 248.001321 248.093666 256.659815 257.246212 261.819100 266.818717 268.787536 271.856061 276.552874 280.882736 283.674806 285.001473 285.617375 286.904942 287.742000 | ||
81 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.788033 287.123098 286.270675 284.899250 282.480733 279.893170 277.584147 276.344210 278.056707 280.664044 279.314393 281.849242 280.335281 277.827797 257.334346 257.500000 264.297269 245.096499 221.501068 240.564419 259.425706 224.963149 252.018020 246.000000 242.720367 254.084214 260.512923 259.676571 264.874809 255.506939 215.885565 187.500000 134.776332 115.862527 109.620325 103.632468 107.560500 101.491253 79.212464 69.675028 48.994035 37.895661 35.872548 34.395568 31.488306 30.107890 32.274058 31.000000 26.000000 28.278340 66.949620 97.844613 109.100750 121.537474 142.747095 157.115781 185.368603 222.982829 187.572213 146.976895 162.527652 178.483176 175.386700 168.998877 153.000000 135.838543 153.188365 180.963403 183.518019 172.673784 169.294750 178.263478 187.500000 189.867329 203.661041 211.533581 207.211276 213.697621 222.255786 237.527126 246.500000 245.334742 247.506808 253.423600 256.074639 260.081978 263.512371 268.871801 274.066642 278.460729 281.720061 283.037967 283.502209 285.540516 286.964828 287.747353 | ||
82 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.876888 287.161596 286.251461 285.291103 283.409456 281.111098 277.945092 278.889727 283.533945 282.007247 274.227109 275.552038 263.302572 246.528711 250.667900 269.000000 256.210455 225.651027 219.804666 224.258438 228.034229 211.486305 198.745999 204.500000 229.402828 221.298955 190.600139 204.288534 248.356816 197.434235 135.117399 127.500000 118.442845 118.275669 115.428035 109.607341 109.312340 103.284606 84.706873 60.344901 41.406544 36.933721 34.899083 33.412605 31.488306 31.103613 36.269776 42.000000 39.000000 41.264423 83.876902 107.748539 105.168898 120.564009 178.338867 241.526618 246.947441 252.286343 237.786106 197.780250 159.966991 153.592989 164.125370 161.998811 154.500000 171.895760 176.002642 200.784995 191.070934 169.088513 165.337908 177.730776 188.000000 194.540313 208.008410 220.790042 233.152609 243.893565 232.132851 247.287074 262.500000 249.556825 244.181280 254.445563 257.539105 262.439500 267.025364 271.062696 274.602540 277.584147 279.664809 281.286661 283.604432 285.626982 286.994771 287.752706 | ||
83 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.861901 287.131653 286.030491 285.444437 284.364714 281.567820 278.821674 281.100308 285.219249 280.044104 265.417422 264.714989 255.637852 243.203184 245.334742 242.750000 231.113446 222.564444 219.126106 213.511314 219.582677 207.138936 192.671119 197.000000 195.842629 172.121065 154.747429 164.006324 163.123971 133.830797 121.415656 111.750000 112.220564 113.449385 116.257708 121.557089 123.327058 117.631433 103.937304 65.009964 39.509671 35.971781 34.899083 31.446680 29.507521 33.095058 38.267635 42.000000 58.000000 82.220531 84.872624 87.940687 106.151861 121.537474 131.203818 166.600145 212.425971 228.477238 250.339580 239.824405 167.648972 139.488550 148.842136 146.443109 175.500000 240.404473 200.199602 184.267002 175.965105 161.917971 163.076856 175.067268 185.500000 196.876805 200.183145 201.069755 233.523200 242.875724 231.206876 233.902003 242.250000 242.668164 245.550615 249.676404 256.221086 266.285983 278.080960 274.517569 272.257985 275.366911 278.675243 281.366266 283.706654 285.588553 286.990494 287.747353 | ||
84 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.790174 287.277091 286.597325 285.018510 283.170642 280.540194 281.915492 285.119546 283.365414 274.567967 263.432141 261.053824 255.978507 250.832336 241.334874 233.250000 227.488323 219.786519 213.358341 215.364266 209.923761 186.706301 195.942208 185.500000 160.151624 147.814752 147.576887 141.976991 132.070143 124.152013 127.184811 123.000000 116.109489 110.231862 109.620325 114.728662 117.195619 113.148049 118.589061 134.052904 85.034617 39.819540 30.031758 35.378531 41.392233 44.048004 37.268705 33.000000 48.000000 74.229095 71.928233 80.017546 103.202972 126.404799 140.823216 145.734544 158.311234 212.909746 252.132933 191.648811 137.774603 125.384110 127.123857 129.331836 147.000000 181.991781 169.780567 151.231015 161.488686 166.100787 172.686328 181.459687 187.000000 192.203821 191.488407 195.032932 210.546590 219.126106 220.712494 226.651756 234.500000 239.557155 243.985661 247.632479 255.195959 270.256546 280.664044 273.337856 270.717277 274.902838 278.637182 281.764290 283.859988 285.578945 286.943440 287.737718 | ||
85 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.747353 287.182984 286.482037 285.018510 282.772618 280.007351 282.998328 284.851597 277.214055 266.198777 260.702379 256.074639 256.148834 253.962244 238.890511 232.250000 226.372900 214.847987 207.929857 209.434819 209.521306 180.619985 181.923255 170.500000 151.628399 146.118963 148.174432 141.976991 136.034461 129.682747 148.097997 130.500000 116.887274 120.688811 127.873129 126.678409 119.823378 121.218139 143.313901 161.110273 98.312726 38.857601 31.978688 44.225198 47.334588 46.039449 41.264423 34.000000 41.000000 60.244083 69.936788 75.065582 76.662974 92.333522 122.546360 132.456435 121.923739 221.151359 254.822963 175.882252 136.067496 136.169858 135.167664 130.887406 131.250000 132.953966 142.126898 155.856053 171.559238 167.893423 173.251591 183.590493 185.500000 191.269224 198.878935 213.545855 216.846628 219.465386 223.799077 227.767179 233.250000 239.112726 244.768138 255.637852 265.593669 266.658223 269.711771 268.871801 270.851252 275.109093 278.675243 281.711220 283.894062 285.578945 286.922053 287.731295 | ||
86 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.732365 287.007604 285.924810 284.694805 282.321524 279.550628 279.852947 278.152867 270.809900 263.822341 260.702379 256.953319 254.956544 249.463001 239.112726 232.500000 230.834591 225.342368 212.340500 202.764190 207.106577 182.358932 167.437004 162.000000 158.020818 152.336857 149.967068 150.159315 144.623818 146.966290 185.597503 143.250000 123.887340 135.972045 141.977568 163.381205 194.276570 169.638680 124.999205 94.866371 62.272144 35.009841 36.846013 47.174086 47.334588 44.048004 40.265494 38.000000 53.000000 63.240871 68.941065 91.902257 105.168898 102.068173 103.307565 108.745526 107.928549 234.887381 258.409670 168.874893 179.598719 179.312849 141.602710 137.109687 139.500000 137.280832 142.126898 165.766849 174.076876 167.295877 170.425276 179.328881 189.000000 213.232250 240.178941 230.046503 225.370209 229.304514 231.824192 233.623147 238.250000 242.445949 246.333092 258.363086 263.543416 260.206058 263.822341 267.692088 271.923048 275.985674 279.017785 281.737755 284.234804 285.819129 286.973383 287.731295 | ||
87 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.730224 286.943440 285.598160 283.962210 281.817360 279.131966 276.088802 272.324972 268.619005 265.475514 262.067260 262.371843 256.659815 247.311189 240.446015 234.250000 236.690560 236.145408 218.447545 202.764190 197.447661 181.489459 168.371601 162.500000 162.282431 156.858962 152.357248 152.047543 148.588136 163.558491 194.251235 168.000000 134.776332 129.536999 137.829204 176.184506 216.174568 168.742003 89.285547 40.751634 36.664362 35.971781 36.846013 45.208160 50.305766 45.043727 34.271917 38.000000 64.000000 70.233377 71.928233 114.681288 156.282970 147.821031 111.965023 104.951780 117.258676 224.814298 218.955896 153.108335 205.205321 191.757943 131.950141 139.443043 141.750000 141.607698 149.040315 167.088289 165.894553 167.295877 170.990539 179.328881 203.500000 236.129874 248.004205 223.204771 224.629028 227.608112 227.811635 230.555735 236.500000 241.779304 245.941854 252.742292 252.706367 258.717097 267.541981 269.545923 272.324972 276.449747 279.246146 281.790825 284.541471 286.116957 287.063212 287.733436 | ||
88 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.732365 286.922053 285.511694 283.621469 281.870430 279.017785 275.263784 271.789074 268.703271 264.545604 260.702379 262.225397 258.703740 251.027955 242.001519 237.250000 236.132848 230.280901 216.411864 202.023009 191.008384 180.185248 184.259747 177.000000 165.478640 156.858962 152.357248 148.900496 147.927417 154.571049 165.405461 176.250000 139.443043 120.688811 135.340185 149.724351 133.838097 101.491253 86.538343 56.612850 46.148725 40.781480 32.952153 44.225198 57.238515 45.043727 28.278340 36.000000 60.000000 67.236589 86.864069 110.719717 141.538526 143.927170 119.660541 124.868944 134.052904 186.353437 149.911793 164.495294 210.326641 175.994157 128.732619 137.109687 132.000000 130.069388 149.040315 171.052607 164.006324 167.893423 172.121065 181.992389 210.500000 229.120397 205.834725 209.521306 226.852571 217.768985 213.613354 218.007231 226.500000 236.668362 244.572519 249.165423 253.438600 261.074619 268.988507 270.304309 272.324972 276.088802 279.170026 281.764290 284.302952 286.116957 287.093155 287.733436 | ||
89 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.729154 286.896387 285.511694 283.638506 281.552011 278.599122 274.851275 270.851252 266.849436 262.685784 259.089338 255.928193 254.104909 251.810432 245.779172 240.750000 234.180859 224.416394 212.679781 199.428876 194.630477 181.054722 199.680596 195.000000 170.805656 156.293699 152.954794 147.641676 143.302379 134.522139 148.097997 148.500000 142.554183 144.820233 146.125933 134.360390 109.312340 88.937779 86.538343 58.478875 44.251853 38.857601 32.952153 44.225198 57.238515 48.030894 30.276199 37.000000 54.000000 65.238730 89.851236 82.988723 84.526677 98.174312 110.041143 133.404872 133.119891 149.724044 142.738379 203.035769 245.322330 191.757943 127.928238 126.220696 128.250000 133.675110 146.274948 163.784690 157.712229 165.503242 173.251591 176.665373 190.000000 203.886282 196.270513 210.728671 221.664305 209.286978 207.748846 216.612952 228.000000 237.779436 243.594422 251.550002 259.882251 262.315420 266.302101 270.051514 273.530744 276.552874 279.208086 281.870430 283.979248 285.944025 287.080323 287.734506 | ||
90 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.724872 286.887832 285.530909 283.621469 281.074382 278.028219 274.593456 270.784264 266.765171 262.479138 257.476296 252.706367 252.401638 248.289285 245.556957 240.500000 231.392302 220.403836 211.661940 206.099504 201.069755 187.575775 180.521360 176.500000 166.011342 163.642119 164.308152 157.082819 153.213175 149.731657 140.165409 137.250000 154.998745 168.147274 170.186447 148.017244 111.064179 96.111193 78.296729 52.880799 39.509671 36.933721 31.978688 38.327420 58.228907 66.949620 50.254788 46.000000 60.000000 71.232307 64.958176 63.180871 79.611862 97.200847 108.117264 122.972071 126.588803 147.892575 152.601823 217.050488 241.908117 164.378737 105.405578 127.776266 132.750000 133.675110 138.670189 148.588136 154.565181 159.527790 168.164224 174.534567 179.000000 189.867329 194.096829 197.045206 201.652419 204.876334 211.452746 221.074643 230.500000 236.223932 241.442610 253.253273 260.760931 266.161903 271.881561 272.073878 273.999655 276.862256 279.055845 281.817360 284.047396 286.020884 287.182984 287.747353 | ||
91 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.719519 286.887832 285.521301 283.604432 281.100917 278.066279 274.696584 270.985226 267.102232 262.582461 256.855896 251.681241 249.335750 245.746234 241.334874 237.000000 232.228869 223.181760 211.322660 202.393600 192.618203 181.924195 172.577286 166.500000 172.936462 181.730538 185.222232 203.659124 231.838823 185.681426 214.443277 212.250000 233.555042 209.975071 171.845793 142.042370 109.312340 86.247749 60.897768 47.282723 41.406544 39.819540 38.792943 45.208160 57.238515 62.966731 56.248365 62.000000 67.000000 71.232307 66.949620 69.123227 83.543714 101.094708 111.965023 123.920508 143.383031 136.903757 152.601823 219.678248 220.569282 154.422662 123.906334 139.443043 133.500000 158.915162 153.188365 145.945257 153.306362 161.320426 167.598961 173.469164 180.000000 187.530836 188.010512 189.398564 197.205333 204.537054 211.761404 220.516932 230.500000 238.001651 240.855752 248.824769 262.957630 274.847510 272.811471 270.472840 273.061833 276.913820 279.626749 282.082709 284.711842 286.501252 287.191539 287.760199 | ||
92 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.720589 286.879277 285.511694 283.604432 281.127452 278.142399 274.748147 271.052214 267.270762 262.789108 257.352216 252.413474 246.780844 243.790041 243.334808 235.500000 227.209467 218.243228 205.215615 196.834743 191.813293 183.228406 174.913779 169.500000 171.338357 169.860013 170.283603 204.917943 257.606892 223.705220 254.827360 256.500000 260.777521 228.475827 164.378737 106.193128 76.027383 64.727509 50.824685 43.550672 46.148725 43.667299 39.766408 38.327420 39.411447 37.077947 37.268705 48.000000 52.000000 68.235518 79.894012 81.007938 83.543714 99.147777 113.888902 111.590835 125.655790 148.808309 225.232633 255.590964 211.180195 147.785279 136.776426 155.776530 144.750000 172.616905 155.953732 145.945257 163.376915 173.271329 172.121065 172.403760 176.000000 178.184868 183.228406 193.020658 200.911238 205.554895 212.687379 222.190065 231.500000 237.779436 242.225087 252.060983 269.401281 268.643505 263.615694 266.933702 272.391960 276.862256 280.273773 282.772618 285.308140 286.328319 287.063212 287.756988 | ||
93 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.721660 286.892110 285.521301 283.519246 281.100917 278.294640 275.005965 271.186188 267.102232 262.892431 258.096697 253.438600 247.632479 242.811945 238.890511 234.000000 237.805982 233.676142 210.983379 199.799466 188.593655 183.228406 175.848376 173.500000 174.001865 183.991590 187.612413 201.141486 243.071058 196.051552 202.183823 186.000000 154.220960 148.842136 120.406073 78.025866 64.640425 55.760742 52.656155 56.612850 48.994035 44.629239 40.739874 38.327420 43.373018 54.005229 64.239801 76.000000 40.000000 55.249435 98.812738 101.806184 87.475566 91.360057 106.193384 109.693962 110.727587 136.903757 235.992753 259.094643 195.816234 136.169858 126.319476 136.331902 146.250000 145.213420 141.435556 152.552455 215.617905 204.343677 177.208433 178.263478 183.500000 182.857852 187.141038 197.045206 203.134781 204.537054 209.909454 223.863199 238.250000 245.112527 247.311189 254.956544 265.154329 261.322779 260.929288 266.596641 272.257985 276.604438 280.235712 282.719548 284.541471 286.011277 287.054657 287.801950 | ||
94 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.723801 286.892110 285.521301 283.842951 281.525476 278.561062 275.521602 271.923048 267.776353 263.822341 259.089338 253.585047 250.528040 244.963757 236.001717 239.000000 255.095033 254.664905 229.983074 211.658362 184.166652 183.228406 176.315674 174.500000 178.263478 191.905274 206.136313 208.064991 193.517078 160.793124 161.799740 157.500000 111.442779 93.339867 80.581773 66.929672 63.764505 55.760742 56.319094 57.545863 38.561234 31.162082 45.607199 72.731122 84.969509 77.902567 70.233377 58.000000 29.000000 57.247294 102.795628 108.738932 97.305195 93.306987 95.612047 103.054908 113.526625 125.914939 183.088830 205.663529 197.523341 160.230372 122.297573 121.553985 140.250000 128.627100 133.139456 184.927722 209.323810 179.246781 160.250540 170.272954 181.500000 186.128941 187.575775 195.032932 198.687695 206.572736 215.156645 229.998024 239.750000 240.446015 243.790041 249.846731 260.321591 261.198699 261.549228 266.933702 272.793883 276.604438 279.474508 282.268454 284.711842 286.933583 287.563688 287.907934 | ||
95 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.722731 286.887832 285.550123 284.047396 281.817360 278.827484 275.882547 272.726896 268.703271 264.545604 260.081978 254.610173 251.039021 243.007564 235.112858 249.250000 258.162445 246.022473 226.929552 204.246552 186.178926 185.402091 181.923255 180.500000 181.459687 180.034749 190.002594 197.365029 161.802531 137.978848 139.444265 160.500000 123.887340 83.687299 66.477334 64.369012 62.888585 56.657419 55.403359 60.344901 59.426835 56.172516 78.705011 106.151861 99.825398 67.945343 51.253718 33.000000 33.000000 60.244083 83.876902 97.844613 98.288158 93.306987 91.764288 101.158035 123.789764 130.493613 157.085206 184.641451 179.598719 150.274297 125.515096 119.998415 126.000000 127.905955 128.991405 194.177798 178.482743 152.954794 150.641068 162.815132 174.000000 177.717569 184.532617 193.825568 198.687695 208.947698 217.317253 227.767179 233.500000 234.668428 240.855752 245.929208 259.150018 263.556221 263.305724 267.692088 273.061833 276.552874 279.093905 282.321524 286.159995 287.615706 287.858840 287.926133 | ||
96 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.722731 286.917775 285.636589 284.013322 281.896965 278.941664 276.037238 273.262794 269.545923 264.648927 259.957898 255.781746 248.654442 246.724331 251.334544 267.500000 251.748765 220.403836 210.644099 193.499428 191.008384 188.010512 187.998135 184.000000 177.730776 178.904222 182.234507 173.447467 153.873894 137.978848 140.165409 156.750000 129.331836 86.100441 68.136679 66.929672 62.012665 56.657419 50.824685 65.942977 87.879926 83.106830 86.492732 88.458529 69.123227 44.048004 37.268705 34.000000 43.000000 59.245153 73.919677 85.959901 89.441492 95.253917 111.003083 120.126762 128.454828 153.386983 198.332333 230.189286 162.527652 112.109344 127.928238 151.887605 155.250000 146.655708 133.139456 168.409728 162.118095 148.771977 148.380015 156.955415 167.000000 173.979182 185.836828 195.435387 202.393600 207.590577 212.687379 220.516932 228.000000 234.446213 241.442610 248.995096 262.371843 262.563580 264.648927 269.124597 272.927858 275.985674 279.284206 283.382921 287.301479 287.663742 287.666350 287.839419 | ||
97 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.733436 286.999049 285.723056 284.047396 282.029640 279.360327 276.449747 273.999655 270.725635 265.165544 259.213418 254.463726 248.824769 262.960731 277.111471 275.250000 241.431106 209.909454 207.929857 199.058285 191.008384 186.271564 187.998135 181.500000 189.982912 219.603165 213.306855 162.747505 147.266697 149.731657 149.540286 139.500000 117.665059 86.100441 71.455371 69.490332 61.136745 56.657419 49.908950 60.344901 73.653380 61.944155 51.447989 45.208160 41.392233 40.065115 40.265494 39.000000 44.000000 62.241942 79.894012 80.017546 78.628900 98.174312 130.241878 141.940799 126.588803 191.847845 248.546227 252.087284 156.552778 95.515885 127.123857 184.554580 199.500000 163.242028 135.213481 138.016621 150.159315 145.186707 145.553700 154.824609 164.000000 179.119465 188.010512 193.423113 201.652419 205.554895 209.600796 220.516932 231.500000 236.446147 241.638229 251.550002 262.811183 259.337498 264.132311 269.630188 272.793883 275.366911 279.550628 284.576993 287.182220 287.365914 287.264258 287.767693 | ||
98 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.751635 287.058935 285.732663 284.064433 282.162314 279.969291 277.171638 274.870490 271.652552 265.578837 259.213418 252.852814 258.874067 277.240939 272.667173 247.750000 222.468921 211.452746 209.286978 200.911238 193.423113 186.706301 192.671119 202.500000 242.720367 265.954739 222.270032 158.341638 149.909576 140.744214 126.463667 109.500000 99.776002 86.904821 77.263081 68.636779 60.260825 57.554096 52.656155 46.349710 41.406544 38.857601 44.633734 52.088901 49.315374 46.039449 52.252647 45.000000 49.000000 66.237660 74.915400 74.075190 71.748159 81.625406 111.003083 131.507999 116.325663 224.814298 252.132933 198.656170 117.289322 87.219156 114.253766 147.220894 148.500000 130.790533 117.238596 120.177188 138.829943 148.771977 160.815803 168.674850 167.000000 174.913779 184.532617 188.593655 197.575924 206.572736 213.613354 229.161457 240.500000 240.223800 242.029468 249.165423 258.124892 260.950539 263.719017 268.197679 272.525934 275.779420 279.778990 284.232039 286.091846 286.462822 287.050380 287.765552 | ||
99 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.752706 287.020437 285.857559 284.030359 281.950035 279.893170 277.481020 274.401578 269.967249 264.545604 258.965257 254.170833 276.247431 278.219036 242.001519 221.500000 217.449519 211.452746 202.501373 196.464152 213.143400 209.312620 237.064471 260.500000 265.626534 228.647375 174.466419 148.900496 144.623818 127.608722 119.252223 114.750000 105.220498 91.731106 81.411446 70.343885 60.260825 60.244126 58.150564 51.947786 52.787780 47.515058 55.341850 65.850382 64.171263 56.992396 65.238730 82.000000 78.000000 78.224813 80.889734 77.046368 74.697048 83.572336 95.612047 93.570544 98.598422 207.415337 231.509370 139.969536 86.561400 83.070792 93.339867 99.776002 96.750000 96.896749 106.868470 114.891430 124.353524 149.967068 167.033697 166.011342 164.000000 172.109988 188.445249 197.447661 196.834743 210.304819 234.293459 242.825384 241.500000 241.334874 241.833849 254.956544 268.376154 268.519425 264.855574 267.355028 272.458947 276.656002 279.778990 282.162314 284.268878 285.982454 286.969106 287.736648 | ||
100 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.748423 287.041824 285.847951 284.115544 282.109244 279.626749 276.965383 273.329782 269.124597 264.958897 258.965257 255.488853 269.775001 257.483391 235.335073 224.000000 219.122653 212.996037 203.858494 195.722971 210.326216 215.833674 257.158303 251.000000 204.898556 168.729487 150.564613 135.682896 130.087984 124.152013 122.857945 135.000000 103.664927 82.882918 75.603736 71.197439 70.771864 71.900922 69.139381 90.201307 92.622108 65.791914 54.368384 54.054827 55.257730 68.941065 125.174498 229.000000 209.000000 112.188415 91.842681 91.902257 87.475566 78.705011 73.487432 81.240871 97.665409 135.072287 198.332333 149.604655 89.122060 73.944390 82.882918 88.887010 93.000000 99.781326 108.251154 119.516468 128.129981 135.625984 145.553700 155.890012 164.000000 173.044585 188.879986 199.057481 194.240609 225.911711 260.220754 247.287074 229.500000 236.446147 241.051371 254.786217 265.300776 264.300702 264.545604 268.197679 272.458947 276.759129 280.273773 282.374594 284.268878 285.944025 287.033269 287.746282 | ||
101 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.749494 287.011881 285.771093 284.251841 282.135779 279.550628 277.738838 274.468566 269.208862 264.545604 259.337498 253.731493 249.165423 241.246991 235.112858 226.250000 217.449519 211.144087 204.537054 198.317104 200.667300 201.487356 202.484386 197.000000 192.113718 170.425276 141.601436 130.018210 128.766544 123.460672 125.021378 135.750000 99.776002 79.665395 74.774063 71.197439 73.399624 75.487629 70.970851 86.469256 90.725235 80.221010 63.129570 49.140012 59.219300 124.701521 223.069585 253.000000 247.000000 145.153087 88.855514 80.017546 92.390380 91.360057 78.297131 84.086180 93.000345 101.190100 129.288229 108.436420 84.854293 77.263081 78.056634 84.220299 93.000000 102.665903 112.399204 122.159347 126.871162 143.394071 159.685277 161.217028 159.500000 169.306197 181.054722 190.203474 195.352381 211.661940 225.651027 228.882601 230.750000 236.001717 240.268894 247.462152 254.756620 259.833818 264.752251 268.366210 271.387150 275.779420 279.702869 281.790825 284.354063 285.886381 287.088878 287.782681 | ||
102 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.749494 286.999049 285.828737 284.132581 281.631616 279.093905 280.368583 282.440054 276.961260 265.785484 261.446859 257.392659 246.951171 238.508321 233.112924 226.000000 218.564942 212.687379 206.233456 197.205333 193.020658 189.314723 180.054061 179.000000 177.730776 163.076856 149.369523 145.753448 133.391583 129.682747 118.531079 114.000000 98.220432 86.100441 78.922427 74.611652 70.771864 69.210892 69.139381 66.875990 64.169016 63.868034 63.129570 57.986678 78.036760 154.573194 249.041751 254.000000 250.000000 140.158440 85.868347 79.027153 78.628900 75.784616 80.221010 86.931489 82.737206 88.369812 99.697899 97.049461 83.147186 75.603736 78.056634 84.998085 92.250000 101.223615 112.399204 122.820067 127.500572 140.406345 152.336857 159.618923 169.000000 179.586763 180.619985 188.593655 197.575924 205.554895 212.687379 220.516932 229.000000 236.668362 241.833849 246.440189 252.267027 258.841177 263.099078 269.377392 276.076261 279.337310 280.958857 283.170642 284.473323 285.992062 287.118821 287.791245 | ||
103 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.753776 287.046102 285.972847 285.103695 283.223712 282.785748 284.493673 285.789419 278.983624 265.268867 264.300702 258.564232 247.121498 239.290798 231.557420 225.500000 219.959220 213.304695 205.894175 197.946514 191.410839 187.575775 180.988658 174.000000 167.609446 163.642119 164.905697 160.859276 143.302379 148.348973 125.021378 108.750000 95.109291 86.904821 82.241119 81.440079 79.531063 69.210892 59.982033 69.675028 67.014326 82.144890 92.333522 88.458529 100.815791 152.581749 218.074938 253.000000 249.000000 105.195909 55.996674 61.200085 81.577788 91.360057 81.182950 78.395562 81.804193 92.948486 96.111193 93.545781 91.682720 83.900465 79.665395 87.331440 97.500000 108.435058 117.929938 124.141506 130.647619 137.418619 143.292647 162.282431 194.500000 209.961161 185.836828 189.398564 199.428876 206.233456 212.996037 221.074643 228.250000 234.223998 241.442610 249.676404 253.438600 257.972617 261.859198 270.304309 278.621778 281.038910 281.796182 284.072830 284.285915 286.770258 287.392585 287.799809 | ||
104 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.754847 287.123098 286.635755 286.619996 285.930275 286.287289 284.803055 280.296461 272.073878 262.789108 260.206058 253.145707 245.418227 240.464514 233.779568 226.000000 218.564942 212.378720 206.572736 200.911238 194.630477 191.923144 186.128941 173.000000 163.880535 161.946330 170.283603 174.706286 155.856053 146.966290 130.790533 109.500000 94.331506 87.709202 83.070792 79.732973 83.034743 93.421163 110.347448 94.866371 97.364289 112.926963 149.767961 172.993339 164.200920 170.504753 231.061021 247.000000 181.000000 63.240871 35.086503 39.411447 61.918530 78.705011 70.601613 68.911198 77.139129 83.791138 79.074336 89.166182 103.632468 93.856540 81.274156 89.664795 102.000000 112.040780 118.621280 122.820067 126.241753 133.235803 142.162121 161.749729 190.000000 203.886282 187.141038 191.008384 200.540647 205.894175 215.156645 224.978622 229.500000 233.335139 243.203184 251.890656 254.317280 257.972617 262.995754 269.208862 274.535553 277.584147 280.159592 282.799153 284.115544 286.731829 287.396863 287.810515 | ||
105 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.750565 287.165874 287.404344 287.386665 286.726323 284.422338 279.285747 272.324972 266.259580 261.445904 255.118774 250.070328 245.588554 241.051371 237.779436 230.750000 221.074643 213.922012 209.286978 203.875962 198.252571 195.401039 189.867329 178.000000 166.011342 160.815803 166.698332 171.559238 157.177493 135.213481 121.415656 103.500000 94.331506 92.535486 86.389483 79.732973 83.910662 113.148049 172.617414 164.842323 177.032945 162.947830 208.175865 254.579261 202.826233 148.598860 226.066373 193.000000 80.000000 45.260141 39.069392 34.459484 38.327420 46.580664 55.210577 66.065889 70.608040 80.128199 94.317839 92.669861 97.657594 92.197194 82.882918 90.442580 101.250000 108.435058 113.781888 121.498627 131.906438 141.003890 148.945278 159.618923 173.000000 183.792449 188.445249 193.825568 201.652419 206.233456 216.082620 225.536333 230.000000 236.223932 246.919950 250.698367 253.731493 258.593017 263.719017 267.355028 270.650290 274.593456 278.523002 281.498941 284.013322 285.944025 287.131653 287.789104 | ||
106 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.753776 287.153041 287.500417 287.369628 285.479181 280.045411 273.974693 270.248366 267.186497 262.065844 257.352216 254.610173 249.846731 243.594422 241.779304 237.500000 228.603746 219.477861 213.019061 207.581866 200.667300 199.313672 195.007611 184.000000 171.871059 168.164224 165.503242 156.453410 149.909576 141.435556 117.809935 99.000000 94.331506 102.188055 102.153269 92.536274 87.414342 105.077959 181.774762 244.148403 234.887563 187.958264 204.282004 229.022225 149.345030 63.962453 121.178780 82.000000 35.000000 47.258000 45.043727 41.392233 43.242235 46.580664 54.248637 71.756507 75.273104 92.948486 130.184906 95.297621 81.440079 85.559811 86.100441 89.664795 99.000000 105.550481 114.473229 129.427264 156.453410 165.503242 165.337908 169.740253 180.000000 190.334627 195.401039 199.862390 207.952457 210.983379 216.082620 223.026632 230.500000 238.890511 246.333092 247.973133 252.559921 257.972617 262.479138 266.680906 271.186188 275.624729 279.093905 281.658150 283.859988 285.578945 286.994771 287.749494 | ||
107 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.769834 287.157319 286.923976 287.250368 285.001552 279.360327 274.284075 270.851252 266.933702 263.202401 262.191340 258.271338 257.170796 252.006051 245.779172 240.750000 233.065436 224.416394 218.447545 212.399543 205.094303 206.704199 201.549789 186.500000 176.665373 175.512644 180.441871 184.776838 174.356206 157.336416 139.444265 107.250000 93.553721 111.036243 119.576400 103.632468 85.662502 100.594576 171.701680 223.622124 156.167344 115.812782 110.829358 103.202972 67.142441 25.129278 21.285834 25.000000 37.000000 37.268705 39.069392 41.392233 44.225198 51.447989 66.753854 83.137744 79.005155 82.875403 101.491253 92.669861 88.268507 97.175231 103.796816 100.553787 97.500000 104.829336 124.152013 151.231015 175.335695 179.246781 185.122117 191.581017 192.500000 198.745999 202.791567 210.326216 220.552533 218.786825 219.169203 225.815189 233.000000 237.112792 240.855752 246.440189 252.120581 257.228136 262.375814 266.596641 271.521125 276.295056 279.550628 281.684685 283.808877 285.646197 286.999049 287.749494 | ||
108 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.774116 287.170152 286.213031 287.028886 285.797600 279.702869 274.129384 270.516315 266.849436 264.648927 263.183981 256.221086 261.428974 256.114056 247.334676 244.250000 236.690560 226.268343 221.840348 216.476038 209.118852 211.486305 200.147894 187.500000 185.188598 191.340011 224.062668 266.600076 241.088899 153.879707 153.146007 123.750000 101.331572 101.383674 100.493923 94.243380 96.173541 109.561343 126.830674 110.727587 88.828362 80.221010 39.766408 18.668162 31.488306 40.065115 36.269776 32.000000 33.000000 33.272987 33.095058 33.469091 35.378531 48.527594 73.487432 87.879926 76.206117 76.465260 91.627809 112.816019 104.486021 137.829204 174.582319 147.220894 108.000000 117.088790 139.361531 174.356206 181.000381 172.076239 189.078958 204.898556 202.500000 211.363057 215.833674 216.363039 227.964343 226.590272 226.885660 229.998024 233.000000 236.446147 241.246991 247.291825 253.292154 258.468937 263.409047 267.270762 271.655099 275.727856 278.827484 281.498941 283.945173 285.790307 287.028992 287.762340 | ||
109 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.771975 287.153041 286.107350 285.836290 284.789273 279.322267 274.180947 270.583302 266.596641 262.995754 261.570939 264.275649 260.917992 250.636716 241.779304 238.000000 238.084838 236.454067 229.643794 220.181943 212.338490 208.443147 202.951685 196.000000 176.665373 191.340011 240.196387 255.900114 200.784995 128.300064 132.232821 112.500000 112.998349 117.471289 108.790652 96.804041 92.669861 95.214516 115.841856 105.129510 86.931489 68.677733 39.766408 29.480754 35.449877 36.082225 34.271917 31.000000 31.000000 37.268705 37.077947 34.459484 38.327420 52.421454 73.487432 89.776799 89.268294 87.454077 107.767989 124.202978 97.657594 166.867755 256.629152 225.777191 156.750000 163.963173 176.693984 189.552760 179.741562 170.881148 195.862115 214.487184 210.000000 219.774428 220.181043 217.972858 217.217219 240.500763 244.479182 235.296281 235.250000 245.779172 252.201671 251.550002 253.292154 261.198699 264.442281 269.208862 273.061833 275.882547 278.941664 281.790825 283.996285 285.867166 287.131653 287.789104 | ||
110 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.777328 287.161596 286.107350 285.461474 284.576993 279.208086 274.180947 270.583302 266.259580 262.169168 259.709738 262.371843 256.659815 252.397290 248.890181 243.000000 238.363693 235.219433 229.304514 221.664305 215.960584 216.703148 209.961161 202.000000 180.926986 185.687380 219.282306 214.988495 149.909576 143.509581 145.934564 116.250000 112.998349 119.884431 113.768689 103.632468 97.925381 92.524486 96.611426 87.402269 85.034617 70.601613 41.713339 31.446680 34.459484 33.095058 31.275128 27.000000 30.000000 43.262282 42.056560 42.382625 51.105938 61.182640 70.601613 85.034617 95.799383 103.021569 105.974636 116.319699 107.046681 182.631541 261.455436 232.777257 155.250000 163.963173 182.224717 167.749009 176.594515 196.575590 228.082112 242.187665 230.000000 226.316607 228.441044 222.399861 221.293714 233.715157 260.529413 270.989805 269.250000 272.222743 269.807406 254.956544 267.351028 271.373267 267.438657 270.304309 273.798693 276.346620 279.664809 282.613408 284.728879 286.184209 287.285646 287.829784 | ||
111 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.770905 287.127376 286.251461 285.001473 283.170642 278.941664 274.541893 270.583302 266.343845 261.962521 256.979976 254.756620 251.720329 249.854239 249.112395 244.000000 237.248271 233.676142 230.661635 224.258438 218.375313 212.790516 206.690072 195.500000 189.982912 183.991590 197.173136 208.694400 159.820372 135.213481 128.627100 113.250000 116.109489 117.471289 110.449998 106.193128 110.188260 114.044726 110.347448 88.335282 85.034617 58.096396 36.846013 33.412605 34.459484 32.099335 31.275128 38.000000 42.000000 43.262282 47.035172 64.171263 73.714085 65.076500 69.639673 104.951780 116.325663 122.252000 122.114816 114.567859 130.946176 205.862382 261.455436 245.221819 180.750000 115.646502 134.522139 146.605977 189.812114 221.074942 226.951586 228.337425 234.500000 240.335560 251.047363 234.875961 222.034895 249.661330 272.875744 276.845774 269.250000 267.556231 272.154838 259.896030 277.895184 276.584631 268.471891 271.062696 274.669528 277.481020 281.187218 283.780945 285.512585 286.501252 287.272813 287.842631 | ||
112 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.782681 287.135931 286.116957 284.865176 282.480733 278.599122 274.490329 270.516315 266.259580 261.549228 256.359575 253.438600 252.912619 250.049859 243.334808 240.250000 238.363693 238.614675 240.840043 235.376152 225.619500 208.008410 202.951685 196.500000 188.384807 174.382118 192.990319 213.729676 147.266697 120.695305 112.040780 112.500000 123.109555 122.297573 112.109344 105.339574 112.816019 127.494876 112.178917 98.598422 81.240871 46.553119 34.899083 35.378531 31.488306 30.107890 51.253718 85.000000 52.000000 48.256929 59.979563 76.055975 81.577788 78.705011 85.992649 113.487708 145.249057 147.892575 139.151673 145.225056 152.285011 211.670093 261.455436 236.666182 151.500000 96.896749 113.090546 128.105825 165.265143 198.965771 214.515798 228.337425 249.000000 262.298586 261.046312 234.473506 228.334933 263.232540 277.814277 270.989805 264.000000 268.222875 271.372361 259.725703 270.719300 267.154544 265.268867 270.557105 275.406388 278.821674 282.062604 284.285109 285.665919 286.722221 287.358365 287.864042 | ||
113 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.794457 287.127376 286.107350 285.546659 282.507268 278.294640 274.335638 270.516315 266.259580 261.342581 257.476296 256.660426 254.445563 248.876143 248.890181 256.750000 251.748765 239.849308 237.786520 233.152609 227.229319 212.355779 206.222774 197.000000 186.786703 177.773696 190.600139 193.588572 132.730863 122.769330 122.136801 120.000000 123.109555 118.275669 130.362148 163.381205 188.145131 175.018740 105.768774 98.598422 69.859635 39.819540 33.925618 35.378531 30.497914 32.099335 57.247294 85.000000 62.000000 64.239801 69.936788 75.065582 102.220009 150.741426 180.262746 171.342326 170.440400 172.617414 165.155296 172.378573 177.038059 222.455840 261.455436 220.332695 108.750000 105.550481 120.003963 130.087984 154.565181 181.039416 209.993693 233.131739 252.000000 271.177256 261.481049 228.034229 230.929066 265.946783 277.814277 273.778362 272.500000 274.222677 267.068736 256.830142 263.104076 260.206058 264.028987 272.410939 277.282032 280.059201 282.367085 283.621736 285.342214 286.760651 287.426806 287.877959 | ||
114 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.791245 287.153041 286.664577 285.648882 281.976570 278.104339 274.387202 270.516315 266.006784 261.755874 261.446859 264.422096 257.170796 252.592909 260.667569 267.750000 255.652744 238.306016 232.018756 221.664305 218.777768 213.225253 209.961161 199.000000 196.908032 189.644221 179.246781 168.412191 143.963098 135.904822 134.396254 125.250000 119.998415 107.014339 146.955606 222.276389 259.094643 229.716016 150.639779 112.593612 58.478398 39.819540 35.872548 35.378531 35.449877 40.065115 54.250506 65.000000 71.000000 72.231236 72.923955 90.911865 158.248895 230.565561 255.294048 237.732872 193.765717 206.499602 208.195776 187.269211 211.180195 249.835046 242.954680 173.665588 99.000000 112.761924 131.065430 150.570296 165.894553 183.429597 207.732640 227.804723 241.000000 253.419916 246.699994 228.436684 235.005562 257.464776 268.245870 273.220650 278.500000 277.111471 268.242452 266.027805 267.497475 261.074619 270.538357 279.067889 280.497423 281.193601 282.861868 283.648271 285.342214 286.693399 287.533745 287.902581 | ||
115 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.792316 287.392585 287.337092 284.609620 281.127452 278.066279 274.593456 270.449328 265.753989 262.685784 265.665583 269.254834 261.599301 263.351970 262.223074 252.750000 242.825384 241.083941 237.107960 217.958400 209.521306 206.269462 205.288177 199.000000 203.300451 194.731589 173.868874 162.118095 155.856053 142.818240 136.559688 129.000000 122.331770 108.623101 140.318222 204.351768 230.189286 204.609070 184.521967 119.124701 50.890907 42.705360 42.686804 38.327420 41.392233 50.022339 60.244083 77.000000 84.000000 83.219460 86.864069 130.527570 210.345930 255.875653 256.255988 248.165672 209.626933 206.499602 206.402423 186.393291 218.862175 236.560280 180.212984 113.776134 111.000000 113.483068 137.978848 166.427569 169.671010 184.027142 203.775799 220.346901 230.500000 228.185800 225.397886 237.290690 242.417371 241.179323 243.861865 255.095033 269.000000 273.111603 269.611787 279.994627 271.597980 262.067260 276.531110 282.269967 281.234283 281.451419 283.052170 284.338179 285.563697 286.895154 287.751901 287.920780 | ||
116 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.840490 287.751901 287.173767 283.962210 281.100917 278.104339 274.696584 270.516315 266.006784 263.409047 263.556221 260.468037 259.896030 264.525686 253.112263 243.000000 241.988817 241.701257 232.358036 216.105447 208.313942 212.355779 202.017088 189.000000 197.440734 207.167377 188.209958 157.082819 147.927417 143.509581 150.261430 140.250000 123.109555 119.884431 132.021493 161.674098 176.758172 139.151673 111.263182 63.143939 38.561234 43.667299 46.580664 43.242235 45.353803 56.992396 67.236589 79.000000 110.000000 128.171286 129.680134 170.143276 229.022225 255.875653 256.255988 246.268800 192.832704 132.325083 123.908169 147.852815 163.381205 136.999531 113.449385 122.331770 122.250000 127.905955 152.497024 184.267002 191.700343 188.209958 198.688431 211.290975 215.000000 221.643622 224.093675 244.132423 237.599695 235.411559 230.898217 238.642549 253.500000 255.778842 252.592909 269.604674 263.836309 263.183981 271.158297 275.865812 278.353829 280.471710 282.214844 283.754410 285.342214 287.385129 287.807509 287.880100 | ||
117 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.948614 287.734791 286.049706 283.689617 281.153987 278.218520 274.799711 270.717277 266.343845 262.789108 260.081978 255.635299 256.148834 254.549102 237.557221 238.500000 243.104240 233.676142 222.518908 219.070171 222.802316 238.874730 234.260680 212.000000 221.945006 234.300006 207.928948 160.859276 139.998780 137.978848 150.261430 138.750000 121.553985 119.884431 161.889718 216.301515 241.576245 219.852573 105.768774 37.019583 38.561234 41.743420 42.686804 49.140012 56.248122 66.949620 88.214108 107.000000 143.000000 169.127394 176.479088 225.605264 255.562224 255.875653 256.255988 239.629745 156.445209 121.336265 118.528109 118.071539 102.778914 99.664250 121.493192 136.331902 135.750000 181.991781 197.434235 248.356816 252.753067 195.380500 185.687380 205.431257 204.500000 217.437936 225.397886 232.461232 224.258438 229.983074 234.910775 239.757972 243.750000 247.112461 250.636716 251.209348 263.689863 266.782304 267.955274 278.815094 281.971143 280.884219 282.481266 284.311644 286.211106 287.289055 287.615019 287.866183 | ||
118 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.959320 287.717680 285.847951 283.621469 281.047847 278.142399 274.851275 270.918239 266.512376 262.789108 260.702379 258.857125 256.830142 255.918437 246.001387 245.000000 240.036827 230.589559 236.768680 256.499809 269.084623 270.175787 268.373466 252.000000 224.608514 232.604217 241.391477 190.441524 130.087984 135.904822 138.001976 133.500000 121.553985 151.255279 216.648130 258.125631 258.218723 232.406046 118.589061 40.751634 46.148725 50.400878 44.633734 58.969641 90.911865 111.757130 115.185203 123.000000 136.000000 180.115618 222.282320 248.384294 255.562224 255.875653 256.255988 224.454763 102.330472 89.285547 122.114816 106.684580 103.632468 124.554437 131.950141 143.331968 205.500000 254.827360 256.198281 233.820982 206.176762 192.392774 225.255796 245.383875 223.000000 214.634146 214.529463 213.948310 214.993676 223.536749 233.058825 239.479116 245.750000 255.334412 262.373874 256.830142 261.053824 263.928461 269.918417 279.742011 282.440054 281.451419 283.661133 286.726323 286.926664 287.077693 287.730513 287.950755 | ||
119 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.914357 287.739068 286.510859 284.098507 281.074382 278.066279 275.366911 271.454137 266.596641 262.892431 261.074619 261.346717 259.214721 254.157864 246.668032 242.000000 233.902003 236.145408 258.482617 273.176381 274.316535 273.218945 260.896691 212.000000 179.861582 216.211587 230.038119 165.894553 136.695181 141.435556 149.540286 147.000000 123.887340 134.363284 207.521728 259.832738 239.824405 160.671913 70.055116 43.550672 48.045598 51.362818 47.554129 55.037790 81.007938 105.782795 113.187344 129.000000 209.000000 204.089925 231.243821 251.355472 255.562224 255.875653 240.864951 175.136072 86.469256 85.622608 122.114816 100.553141 95.950487 124.554437 133.558903 157.332100 252.000000 263.481092 263.803040 230.517383 197.994438 203.148587 219.037902 214.487184 203.500000 220.709025 251.916837 213.143400 222.034895 240.161482 250.652348 249.796775 254.250000 268.445090 272.154838 257.511450 259.735804 264.424782 268.161921 275.781547 283.042940 284.029601 283.356651 285.373041 285.802216 287.471595 287.837452 287.951826 | ||
120 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.949685 287.816065 286.972013 283.928136 281.127452 278.294640 275.624729 271.990036 267.270762 263.615694 262.811740 263.250523 258.192759 249.854239 243.557023 240.000000 232.228869 242.318574 272.053827 275.770514 274.316535 268.871576 220.241727 183.000000 168.142148 187.383169 186.417323 148.900496 144.623818 144.892265 156.751729 156.000000 128.554051 114.253766 185.120559 235.933243 158.363854 62.934156 52.656155 51.014774 51.839344 45.591179 51.447989 69.782233 93.883043 107.774240 104.196979 130.000000 201.000000 229.063162 247.175380 254.326650 255.562224 255.875653 225.473915 126.765817 76.206117 86.538343 94.317839 81.282903 87.414953 110.449998 121.493192 138.665258 201.750000 246.173628 237.532055 202.767154 169.671010 192.392774 230.343164 208.094765 167.000000 202.951685 247.569468 225.619500 229.817295 249.322050 255.590880 247.844786 246.000000 254.889982 260.026442 258.533413 259.442911 265.665583 268.678537 273.000795 279.157677 281.296728 281.187218 283.329851 285.086658 286.741436 287.307034 287.815867 | ||
121 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.949685 287.542300 286.203424 283.706654 281.313196 279.017785 275.985674 272.592921 268.787536 265.062221 264.176622 262.371843 255.637852 251.027955 246.890247 239.250000 235.853993 252.504297 276.803751 275.770514 273.511626 258.437891 193.605716 172.500000 171.871059 178.338959 169.088513 141.347581 138.016621 143.509581 146.655708 150.750000 132.442977 125.515096 189.268924 210.326641 113.691939 41.413916 49.908950 52.880799 50.890907 49.438938 64.103035 85.509640 114.681288 131.671578 109.191626 123.000000 183.000000 242.049245 255.141160 255.317043 255.562224 250.034862 191.806023 83.137744 73.407079 81.959669 95.214516 101.429061 102.778914 102.982942 107.014339 121.553985 151.500000 179.828348 174.619959 166.427569 150.788724 172.673784 202.645272 188.917509 162.000000 186.596240 212.355779 218.375313 218.328990 225.911711 233.058825 240.594539 247.000000 249.112395 251.614813 259.896030 263.104076 265.541503 269.195154 273.422121 276.009274 277.996656 280.502134 282.878757 284.916287 286.011277 287.071767 287.758058 | ||
122 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.895087 287.217205 285.569338 283.621469 281.207057 279.017785 276.552874 273.731706 270.135779 268.885184 272.986308 264.275649 255.637852 254.353483 249.779040 242.000000 241.709961 258.368805 276.803751 271.323429 245.339787 217.137885 178.184868 171.000000 170.272954 163.076856 149.369523 140.718172 150.570296 149.731657 141.607698 141.000000 134.776332 139.993949 204.203036 217.155069 118.947459 53.070712 48.993216 53.813812 52.787780 61.944155 79.678476 89.441492 108.738932 129.680134 121.178780 149.000000 194.000000 205.088855 242.196768 255.317043 255.562224 216.937050 126.394119 73.653380 72.474066 94.779956 121.218139 122.451138 113.875108 107.960979 108.623101 116.109489 129.750000 143.049987 154.571049 147.266697 144.494629 157.137610 165.903171 167.076745 175.000000 193.138418 205.399988 208.313942 209.064228 217.090424 225.651027 238.642549 247.500000 247.334676 249.854239 261.088319 265.740115 266.410063 270.538357 273.927713 274.602540 276.965383 281.415580 284.311644 285.171844 285.828737 287.063212 287.756988 | ||
123 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.811585 287.058935 285.569338 283.621469 281.021312 278.484942 276.552874 273.731706 269.714453 270.331711 276.832791 264.861436 257.681778 255.722818 248.445751 241.000000 246.729363 264.541970 276.803751 265.023390 206.301668 178.881037 169.773496 169.000000 161.749729 145.553700 136.223529 155.824000 186.909881 158.719099 145.934564 136.500000 132.442977 142.407091 208.351401 223.983496 124.202978 50.380682 50.824685 58.478875 60.375271 72.525492 87.466197 96.322232 106.758147 110.761407 113.187344 183.000000 195.000000 170.126324 230.248099 255.317043 224.107411 142.953705 77.335191 78.395562 70.608040 110.347448 122.114816 109.312340 105.339574 112.109344 116.666908 115.331704 127.500000 170.453472 178.076667 147.927417 148.271086 163.113061 159.120014 161.217028 186.000000 202.017088 207.138936 203.484484 211.658362 226.590272 232.441509 236.411704 240.000000 242.890379 250.832336 261.428974 262.371843 272.738148 275.807847 273.927713 274.334591 277.274765 281.758122 285.505716 285.205918 285.867166 287.020437 287.750565 | ||
124 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.752706 286.981939 285.617375 283.638506 281.047847 278.294640 275.676293 271.990036 268.113414 267.955274 269.387986 262.371843 259.385048 254.744721 246.001387 242.250000 256.768167 274.727694 273.410949 250.199771 191.410839 175.837879 171.175391 164.000000 153.759206 145.553700 145.186707 165.894553 191.534919 157.336416 147.376853 138.750000 128.554051 141.602710 189.268924 188.134253 106.684580 47.690652 53.571890 65.009964 75.550253 104.269505 106.935498 107.134824 117.652466 111.757130 103.198050 168.000000 173.000000 183.112407 235.226711 232.538012 140.555563 65.076500 67.715794 73.653380 79.005155 98.442895 91.627809 87.414342 95.950487 107.131306 114.253766 116.109489 129.750000 185.597503 178.076667 151.231015 156.453410 173.868874 167.598961 168.142148 193.000000 202.017088 196.705250 202.277119 213.511314 222.179628 228.428951 231.950013 238.250000 248.667966 257.092153 259.725703 259.150018 280.307034 281.697277 274.349039 273.999655 277.326329 280.844676 284.444319 284.797028 285.886381 287.003326 287.747353 | ||
125 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.743071 286.964828 285.694234 283.655543 281.127452 278.218520 274.851275 270.516315 267.692088 268.781861 268.891665 263.543416 259.725703 252.006051 244.668098 258.750000 272.941795 275.345010 261.536139 217.587809 184.166652 177.142090 171.642690 161.000000 153.226504 150.075805 146.381797 143.865219 147.266697 155.262390 145.213420 145.500000 132.442977 143.211471 151.103970 129.239069 90.042102 63.830832 63.644972 72.474066 96.415853 153.328433 141.006775 99.271121 99.825398 126.692966 133.165933 129.000000 172.000000 197.097419 217.303707 148.354638 76.662974 55.341850 60.020275 81.240871 96.732396 78.296729 79.074336 87.414342 95.096934 98.834577 107.014339 118.442845 126.000000 143.049987 146.274948 144.623818 150.159315 158.930245 162.511593 171.338357 194.000000 214.166847 205.834725 207.911487 212.028952 214.036902 224.107735 232.507725 246.250000 262.889718 263.938828 257.341123 265.740115 281.299675 281.490630 274.096243 274.133629 278.202910 280.502134 282.480733 284.541471 285.982454 287.037547 287.753776 | ||
126 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.748423 286.999049 285.713448 283.672580 281.207057 278.066279 274.645020 270.315353 268.534740 271.571591 270.380626 261.493164 256.489488 249.854239 242.445949 261.750000 269.037815 264.850629 264.250381 224.629028 180.947013 176.272616 171.175391 162.500000 156.422714 152.336857 149.369523 147.641676 155.195334 177.385325 158.915162 143.250000 134.776332 148.842136 147.785279 117.289322 90.042102 85.351073 81.959669 100.464447 104.003344 111.003083 120.564009 104.185935 108.738932 152.581749 157.140241 138.000000 170.000000 176.119900 147.603137 137.460319 117.947416 76.758081 57.134456 77.447126 82.737206 89.285547 88.041103 94.421701 94.243380 100.493923 107.014339 109.887208 123.000000 131.511677 133.830797 135.373742 144.494629 152.357248 154.032646 154.824609 183.500000 231.924188 212.790516 201.874664 222.034895 226.590272 227.194318 229.998024 239.250000 250.001255 254.744721 260.917992 272.037320 281.175595 278.080960 274.770365 279.358639 282.482692 281.872302 282.984897 284.626657 286.030491 287.020437 287.777328 | ||
127 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.731295 286.960551 285.684626 283.723691 281.286661 278.979725 275.366911 272.659909 274.011978 274.361320 264.300702 256.660426 254.615890 250.441097 244.445883 243.750000 238.363693 244.479182 254.750534 217.217219 181.751923 179.315774 171.642690 167.000000 170.272954 170.425276 166.100787 164.635734 165.766849 174.619959 183.434070 162.000000 136.331902 146.428994 175.994157 156.552778 95.297621 83.557719 100.274365 118.191688 103.054908 118.698601 147.821031 152.351118 149.345030 148.598860 122.177709 110.000000 111.000000 110.190556 100.804183 115.671681 114.015564 84.545801 63.868034 66.065889 77.139129 97.527160 88.041103 88.290262 94.243380 104.642287 108.623101 116.109489 138.000000 130.069388 120.695305 133.391583 149.529905 149.369523 151.206331 161.217028 191.000000 236.129874 226.267360 219.180223 242.787962 229.304514 228.428951 231.950013 233.250000 238.223866 250.636716 276.758412 281.556349 280.307034 276.427787 277.719646 280.631397 281.554546 281.643941 282.799153 284.507397 285.982454 286.999049 287.808374 | ||
128 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.733436 286.981939 285.790307 283.996285 281.711220 280.464074 276.707565 276.813121 281.932906 276.324464 258.220777 259.003571 255.808180 250.245478 245.779172 244.000000 247.008219 260.838071 264.928942 222.776076 182.556832 176.707353 174.446480 175.000000 187.319404 187.948432 176.856600 173.447467 175.016926 182.224717 185.597503 168.750000 132.442977 187.452411 237.389953 186.427147 104.056820 90.731133 92.032751 113.526625 123.920508 118.698601 128.351729 154.317044 162.220135 142.624525 129.170216 136.000000 154.000000 125.174498 123.705799 171.133668 132.691860 69.943825 74.449372 70.808071 74.340091 91.117017 87.144426 101.429061 107.046681 106.301633 107.014339 111.442779 122.250000 125.021378 117.238596 127.445105 137.571124 141.601436 147.249489 164.945939 209.000000 248.279633 201.922093 198.252571 209.805409 215.054743 224.107735 231.671158 234.000000 238.001651 254.549102 280.846262 279.213203 262.687660 267.645304 273.843447 276.076261 277.120074 278.903604 281.578546 284.268878 286.030491 287.157319 287.807303 | ||
129 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.740930 286.981939 285.761485 284.149618 281.976570 280.083471 276.965383 276.076261 280.584663 278.494254 262.191340 273.794679 266.368459 253.375386 250.890114 245.250000 257.047022 275.036352 255.768375 208.323047 184.166652 178.446300 181.455957 180.500000 185.721300 195.862115 206.136313 205.547353 189.552760 192.594843 195.693524 183.750000 146.443109 205.953167 258.961448 240.201010 175.882252 90.731133 88.369812 106.062523 116.333017 117.736661 132.245590 148.419266 141.421889 116.735742 108.192697 138.000000 150.000000 113.187344 100.804183 126.566000 102.220009 67.996895 83.106830 85.983053 77.139129 82.875403 85.351073 99.677221 101.071807 93.026867 90.926725 109.109423 138.000000 126.463667 109.633837 118.195029 125.612343 134.430894 142.727384 155.357310 179.000000 195.942208 180.185248 187.386290 193.870019 206.233456 218.551886 225.536333 233.250000 244.890313 254.549102 260.407011 262.957630 268.023105 273.534734 273.927713 273.798693 276.140365 279.398387 282.162314 284.677768 286.001669 287.161596 287.792316 | ||
130 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.754847 286.981939 285.723056 283.911099 281.578546 279.740929 277.068511 274.267604 274.854630 277.357697 276.584631 281.995689 277.950702 259.635204 253.778908 246.000000 241.709961 237.071383 222.518908 212.399543 213.545855 188.010512 184.259747 187.000000 194.244525 206.036851 218.087216 220.653181 208.052912 202.273627 212.279844 182.250000 160.443241 218.823259 260.620794 255.564971 200.408010 99.697899 116.757591 134.052904 123.920508 129.279939 123.484404 126.794082 131.517963 115.740019 103.198050 116.000000 120.000000 96.205543 88.855514 90.911865 77.645937 84.545801 116.774722 107.797090 77.139129 87.454077 89.834456 89.166182 86.561400 83.070792 89.317964 110.664993 127.500000 110.598491 106.177129 115.552150 123.094705 131.443168 140.466332 149.497593 158.000000 166.502407 178.011563 189.398564 194.611200 204.197774 214.539328 222.190065 234.250000 246.890247 248.484904 248.143460 263.836309 278.942153 277.977637 274.011978 272.927858 275.676293 279.626749 282.374594 284.558508 285.905596 287.080323 287.765552 | ||
131 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.768764 287.016159 285.742270 284.302952 282.878757 280.273773 277.068511 273.396769 272.916530 278.907547 283.905357 282.435029 273.862851 255.331579 246.445817 238.750000 227.767179 212.378720 209.626258 239.452647 248.559426 186.706301 179.586763 190.000000 202.235048 209.993693 219.879852 226.947276 217.302989 231.309979 223.818153 187.500000 185.332365 234.106492 260.620794 214.594408 136.465857 105.974636 149.724044 164.842323 137.198617 127.356059 109.855893 107.134824 150.335423 192.410647 168.128465 140.000000 137.000000 97.204473 87.859791 72.094404 89.441492 155.608751 189.882144 128.662690 63.143939 81.043934 96.111193 87.414342 84.854293 93.856540 103.796816 105.220498 99.000000 97.617893 107.559812 115.552150 123.724115 132.638258 141.596858 151.628399 161.000000 169.773496 179.750511 188.593655 197.205333 205.894175 214.230670 221.632354 232.000000 242.001519 243.985661 247.121498 267.936815 278.569913 272.294854 269.461657 271.655099 275.470038 279.208086 282.162314 284.268878 285.876773 287.101710 287.761270 | ||
132 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.775187 287.071767 285.819129 285.052584 284.550458 280.920797 277.016947 273.731706 275.444486 283.143803 283.781277 280.238330 259.725703 246.137473 240.001585 240.500000 244.219662 230.589559 213.697621 240.935009 246.949606 196.270513 179.586763 188.500000 200.104242 202.645272 218.684761 243.311924 238.446020 259.654990 239.683329 200.250000 207.110348 243.759061 246.516355 172.770292 90.918022 103.284606 143.313901 165.775336 141.940799 124.470240 106.935498 106.151861 174.104846 245.183935 190.104913 139.000000 137.000000 99.202332 78.898290 56.248122 117.947416 216.937050 209.120939 101.158035 51.014774 74.633790 105.077959 90.918022 92.536274 104.642287 102.992436 91.220366 87.000000 96.896749 107.559812 116.212870 124.982934 138.016165 147.814752 154.824609 164.000000 172.577286 178.881037 187.788745 198.317104 207.251296 214.539328 224.978622 234.250000 238.446081 242.029468 248.484115 262.811183 270.628787 266.405424 267.776353 272.257985 276.088802 279.322267 282.135779 284.217767 285.915203 287.110266 287.762340 | ||
133 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.781610 287.144486 285.944025 285.171844 283.993225 280.996917 277.738838 276.344210 279.573481 284.590330 281.423755 271.451533 253.082946 244.572519 244.223668 259.000000 268.201249 245.405157 209.626258 212.028952 234.875961 234.527361 190.801925 188.000000 196.908032 196.427378 217.489671 259.047162 265.535529 264.494382 259.154226 210.750000 206.332563 240.541538 243.197663 177.038059 106.684580 113.148049 131.409348 143.383031 133.404872 128.317999 113.749753 117.947416 164.200920 181.457700 102.199120 67.000000 77.000000 80.222672 60.975286 49.315374 112.049639 177.024983 134.089637 46.148725 52.880799 80.128199 102.387929 87.414342 90.829167 93.856540 84.491679 81.109159 90.750000 98.339037 107.559812 121.498627 132.535848 143.991616 153.467383 157.488117 159.500000 168.838899 179.750511 191.008384 199.428876 207.251296 214.539328 229.719168 239.750000 238.668296 241.246991 249.506077 257.246212 264.052541 268.161921 274.180508 275.674337 276.707565 279.893170 282.374594 284.319989 285.838344 287.020437 287.763411 | ||
134 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.796598 287.234315 286.174602 285.018510 282.984897 280.844676 279.337310 280.363448 283.449680 283.557097 275.467910 258.710678 255.126871 247.506808 247.334676 262.250000 256.210455 228.120293 208.608417 210.176000 264.657619 257.133680 197.344104 191.500000 200.104242 208.863167 234.220936 260.935391 259.589051 264.494382 262.038804 234.750000 210.999273 238.932776 259.791121 188.987807 102.304980 138.254996 159.797127 118.191688 97.364289 113.888902 127.378264 118.930379 88.931079 53.009506 30.276199 29.000000 43.000000 46.259070 44.048004 41.392233 57.986678 75.784616 66.753854 49.942471 62.210926 73.718055 79.971013 76.903303 76.318759 76.433409 78.056634 83.442514 91.500000 102.665903 113.781888 131.409423 145.753448 143.394071 151.771594 160.684326 161.000000 170.708093 180.185248 188.996110 198.317104 208.608417 216.699936 225.815189 233.250000 238.001651 243.594422 249.846731 257.831998 261.198699 270.538357 278.056707 277.148058 276.552874 279.931230 282.560338 284.422212 285.799915 287.165874 287.806233 | ||
135 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.803021 287.289923 286.491645 285.529622 283.940155 281.377519 280.626401 280.497423 281.343050 281.697277 272.241828 262.225397 257.852105 248.093666 240.890445 238.750000 232.228869 222.255786 218.108265 227.964343 259.425706 222.789464 185.661643 191.500000 208.094765 241.648426 265.293284 254.641295 252.981854 263.803040 257.711938 260.250000 253.777455 258.237914 222.455840 147.163691 106.684580 127.494876 127.746409 89.268294 67.962762 111.003083 126.404799 76.662974 29.507521 28.116446 28.278340 28.000000 29.000000 34.271917 40.065115 36.440269 34.395568 37.819478 48.476998 62.272144 68.742015 69.139381 75.487629 73.399624 72.050992 75.603736 80.469776 86.553655 96.750000 107.713914 115.855913 132.070143 140.718172 138.016165 149.510541 161.749729 162.000000 171.642690 188.010512 195.435387 200.911238 206.572736 214.847987 222.747777 231.750000 240.446015 245.354996 249.846731 257.978445 264.672942 267.645304 271.399757 274.133629 276.449747 279.284206 282.003105 284.592583 286.751043 287.717680 287.853336 | ||
136 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.813726 287.315589 286.280283 285.103695 283.515596 281.796182 280.110765 279.023702 278.815094 277.564344 272.986308 267.936815 255.637852 247.702427 238.223866 232.000000 237.527126 240.466624 233.036597 231.670247 219.180223 207.138936 197.344104 187.500000 218.748797 258.041056 246.171839 213.729676 241.088899 263.803040 262.038804 261.000000 260.777521 255.824771 183.461214 112.168002 117.195619 123.011493 94.779956 82.737206 76.498689 104.269505 71.890756 31.446680 24.555558 27.120723 28.278340 29.000000 31.000000 32.274058 33.095058 32.478699 35.378531 41.713339 57.134456 72.704944 60.344901 58.150564 64.727509 75.151463 73.758099 73.944390 79.665395 88.887010 99.000000 105.550481 111.016521 117.534309 124.353524 133.235803 143.292647 159.086221 178.500000 199.213297 238.005256 254.596248 232.782019 209.286978 211.452746 222.747777 234.750000 244.001453 246.137473 250.868694 255.049513 261.570939 264.752251 268.450475 272.927858 276.759129 279.474508 282.427664 286.296291 287.519632 287.559410 287.774116 | ||
137 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.794457 287.204372 286.462822 285.512585 284.391249 282.595447 279.440438 280.430435 282.944088 280.974014 278.942153 261.346717 250.187385 250.636716 248.667966 247.000000 261.229857 256.825513 216.411864 202.023009 209.118852 204.965251 196.409507 203.500000 237.393351 252.953688 221.672487 204.917943 260.910491 264.494382 263.481092 262.500000 262.333091 226.062685 142.807241 90.829167 102.304980 108.664666 103.021569 79.938167 61.323707 54.248637 36.846013 28.497791 30.497914 28.116446 28.278340 31.000000 39.000000 31.275128 33.095058 51.296159 51.105938 47.554129 62.906095 71.756507 59.411888 59.066298 64.727509 71.647784 72.050992 71.455371 77.252253 86.553655 93.750000 99.781326 108.251154 115.552150 124.353524 130.845623 151.771594 205.963959 257.500000 258.560199 253.221048 226.424410 213.511314 209.626258 217.934570 224.978622 231.750000 240.446015 247.115569 252.912619 255.928193 262.439500 266.715394 271.231226 277.081070 279.388874 279.664809 283.037967 287.148146 287.452380 287.272813 287.745212 | ||
138 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.825502 287.632129 287.317877 285.802216 284.444319 282.290965 279.749819 281.167296 281.174519 273.431410 267.774944 256.953319 251.379675 251.419194 250.667900 248.500000 258.162445 255.590880 221.840348 201.652419 209.118852 205.399988 212.764952 219.000000 234.197142 231.473690 228.245484 250.864838 266.196249 265.185723 262.038804 212.250000 192.332431 156.081563 109.620325 94.243380 106.684580 100.594576 86.538343 73.407079 52.787780 36.933721 32.952153 32.429643 30.497914 28.116446 28.278340 33.000000 44.000000 32.274058 38.073670 58.228907 52.088901 40.739874 53.286697 62.272144 59.411888 61.813503 75.487629 71.647784 66.929672 72.285044 80.469776 85.775870 93.750000 100.502470 108.942496 114.891430 124.982934 129.052987 161.946330 225.141215 267.000000 246.877738 199.748409 187.788745 195.352381 208.269137 219.477861 226.372900 232.000000 239.779370 247.311189 251.550002 258.124892 264.548862 269.401801 272.158144 277.014083 279.698256 279.931230 282.374594 285.580734 286.568503 287.118821 287.755917 | ||
139 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.884382 287.837452 287.289055 285.580734 283.489061 281.111098 279.543565 280.631397 278.140972 267.335334 259.957898 256.367532 253.253273 250.636716 244.668098 240.500000 244.498518 244.170524 225.911711 204.987733 207.911487 245.395783 242.204753 226.000000 210.758273 225.821059 256.330106 267.229486 258.928332 218.865828 195.693524 173.250000 194.665786 139.993949 90.537848 95.096934 99.677221 87.144426 76.465260 70.608040 50.890907 35.971781 33.925618 32.429643 30.497914 29.112168 28.278340 32.000000 46.000000 40.265494 35.086503 41.392233 43.242235 43.660269 50.400878 56.581526 63.143939 63.644972 77.280983 97.925381 141.188817 124.554437 82.882918 84.220299 96.750000 103.387048 108.942496 115.552150 124.982934 133.833348 152.336857 186.786703 212.000000 200.615193 174.533668 181.751923 195.352381 208.947698 216.699936 224.142055 234.000000 243.779238 250.049859 251.720329 258.710678 263.680301 267.541981 271.484022 275.942286 278.409165 280.007351 282.772618 284.677768 286.136172 287.140209 287.766623 | ||
140 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.859759 287.503802 286.645362 285.257029 283.276782 281.034977 280.832656 280.631397 275.191691 264.958897 258.841177 258.710678 253.934582 251.614813 242.445949 246.250000 246.729363 235.219433 223.876029 215.734857 212.338490 248.438942 230.054994 226.000000 213.421781 236.561058 268.281010 259.676571 219.945868 153.879707 130.790533 167.250000 205.554778 133.558903 78.922427 86.561400 88.290262 80.867689 81.043934 70.608040 51.839344 36.933721 31.978688 32.429643 30.497914 29.112168 33.272987 45.000000 47.000000 41.264423 31.103613 36.440269 45.208160 47.554129 51.362818 57.529962 64.076952 65.476442 71.004246 126.830738 197.523341 149.444624 74.839111 83.442514 97.500000 105.550481 108.942496 118.195029 130.647619 138.016165 144.423174 158.020818 176.500000 185.194344 178.881037 183.764197 194.981790 204.197774 215.156645 228.324890 238.750000 246.001387 252.592909 255.297198 258.564232 263.059901 267.438657 275.444486 278.152867 277.738838 280.197652 283.913620 285.120732 286.222638 287.200095 287.810515 | ||
141 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.821220 287.379752 286.289890 285.188881 284.444319 282.214844 281.399855 278.353829 270.894166 264.235634 260.826459 264.275649 255.126871 251.027955 242.223734 251.250000 255.095033 235.528092 216.751144 217.587809 210.326216 211.921042 202.017088 215.000000 221.945006 246.170531 262.903103 221.282591 153.213175 119.312621 109.877347 139.500000 144.109753 101.383674 73.944390 78.025866 81.282903 79.971013 88.369812 79.938167 54.684653 36.933721 31.978688 32.429643 28.517128 27.120723 43.262282 70.000000 52.000000 36.269776 32.099335 42.382625 49.140012 50.474524 57.134456 64.169016 65.942977 68.223647 66.520862 142.597296 194.109127 130.362148 66.795304 84.220299 96.000000 106.271625 111.016521 124.141506 134.424076 138.613710 144.988437 154.824609 169.000000 186.128941 183.663143 184.166652 191.646476 201.144252 219.477861 241.709961 249.000000 245.556957 251.027955 258.703740 259.735804 263.804381 269.401801 277.466851 278.889727 278.357601 280.920797 283.860550 285.222955 286.309105 287.247148 287.846913 | ||
142 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.884382 287.717680 286.232246 284.899250 285.028087 282.367085 278.924801 273.798693 267.607823 264.132311 262.563580 265.447222 255.297198 247.115569 237.779436 243.750000 254.816177 238.306016 205.215615 203.505371 199.459935 191.488407 194.073014 194.000000 199.571540 222.994744 218.684761 159.600457 113.569991 113.781888 106.271625 92.250000 77.220233 78.861014 78.092754 73.758099 74.275543 74.590953 81.959669 80.871180 56.581526 38.857601 33.925618 32.429643 26.536343 27.120723 47.258000 74.000000 51.000000 37.268705 44.048004 47.334588 50.122975 58.262245 68.677733 72.704944 73.407079 74.633790 77.280983 171.502653 205.205321 125.384110 65.186542 87.331440 98.250000 106.271625 114.473229 127.445105 129.388800 138.613710 148.380015 152.161101 159.000000 173.979182 184.967354 191.410839 196.093562 207.590577 225.651027 247.008219 253.500000 246.668032 249.267381 257.681778 260.760931 264.797022 269.505124 272.748000 275.473375 278.873238 281.567820 282.878757 284.609620 286.155387 287.234315 287.816938 | ||
143 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.960390 287.636407 286.049706 284.354063 283.489061 280.844676 276.604438 272.190998 268.197679 264.752251 261.446859 256.367532 252.401638 250.832336 242.445949 244.500000 248.402497 228.737610 201.144252 203.875962 198.655026 186.271564 181.455957 180.500000 173.469164 158.554751 141.003890 126.871162 119.516468 112.399204 101.223615 90.750000 87.331440 87.709202 78.922427 69.490332 69.895944 69.210892 58.150564 51.947786 50.890907 39.819540 32.952153 29.480754 26.536343 28.116446 38.267635 51.000000 41.000000 48.256929 65.953898 66.152049 63.884456 72.864221 80.221010 81.240871 85.536244 91.117017 111.354696 223.181927 242.761670 134.510512 65.186542 94.331506 102.000000 106.271625 116.547254 123.480787 126.241753 142.198981 154.597909 156.955415 160.000000 171.642690 189.314723 201.472210 206.470095 216.751144 228.737610 236.411704 242.750000 249.112395 252.788529 254.786217 260.028698 266.534143 268.781861 270.472840 273.932667 278.099783 281.111098 282.799153 284.541471 286.030491 287.182984 287.768764 | ||
144 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.915427 287.182984 285.982454 285.052584 282.799153 280.045411 276.656002 271.923048 268.703271 268.161921 263.183981 255.049513 253.593927 272.741696 270.445024 245.000000 221.074643 210.835429 206.572736 201.652419 196.642752 184.097880 176.782972 179.000000 164.945939 144.423174 131.443168 124.982934 118.195029 108.942496 100.502470 93.000000 87.331440 82.078537 72.285044 66.076118 65.516344 60.244126 51.740420 51.947786 50.890907 38.857601 33.925618 30.463717 27.526736 29.112168 39.266564 47.000000 47.000000 59.245153 69.936788 73.084797 74.697048 86.492732 98.497866 96.415853 104.196498 113.094652 149.015116 232.817046 190.694913 98.004904 75.643491 101.331572 100.500000 106.271625 115.164571 120.177188 130.018210 141.003890 150.075805 161.749729 175.500000 188.932732 203.661041 213.948310 214.252495 232.697316 240.466624 240.315683 244.250000 250.667900 254.157864 257.681778 262.518290 266.658223 268.058597 270.978431 274.535553 277.687274 280.387953 282.586873 284.439249 286.424393 287.371197 287.765552 | ||
145 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.841560 287.024714 285.867166 284.115544 281.658150 278.941664 275.521602 272.190998 269.714453 267.232011 262.811740 255.635299 262.280609 277.045320 261.556429 236.250000 218.843798 209.909454 203.179933 195.352381 189.801019 177.576826 171.642690 169.000000 158.553520 144.423174 133.235803 125.612343 118.855748 109.633837 100.502470 94.500000 91.220366 83.687299 72.285044 66.929672 65.516344 58.450772 51.740420 48.215736 42.354980 38.857601 36.846013 33.412605 31.488306 36.082225 42.263352 41.000000 43.000000 50.254788 68.941065 99.825398 102.220009 93.306987 102.345625 105.900217 102.330472 102.105834 159.775236 206.539449 131.799730 75.603736 85.296060 95.109291 99.750000 114.204213 121.386646 126.784385 136.312305 143.991616 156.293699 179.328881 197.000000 198.745999 211.051568 214.753219 211.658362 238.804361 246.022473 241.152250 242.500000 250.445685 258.265869 264.494861 264.861436 266.906384 268.368567 271.399757 274.602540 277.429456 280.045411 282.427664 284.558508 287.010442 287.555133 287.767693 | ||
146 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.770905 286.947718 285.607767 283.706654 281.207057 279.360327 277.841965 274.066642 269.040331 265.785484 261.695020 257.978445 255.808180 254.353483 241.779304 228.250000 218.843798 208.674821 203.179933 210.176000 199.862390 174.098931 170.240794 164.000000 154.824609 144.423174 135.028439 126.871162 120.177188 113.781888 109.156202 103.500000 95.109291 82.882918 72.285044 66.929672 62.888585 56.657419 50.824685 48.215736 48.994035 46.553119 38.792943 33.412605 38.421055 45.043727 40.265494 36.000000 55.000000 56.248365 75.911122 121.614036 124.828156 101.094708 98.497866 102.106471 101.397460 106.684508 127.494876 144.349136 116.435768 93.856540 94.144248 91.998151 93.000000 127.905955 144.892265 145.284538 170.300419 167.893423 161.381066 177.730776 199.500000 207.157371 218.007358 219.985132 217.587809 224.554590 231.206876 239.479116 246.250000 250.001255 254.940341 261.258646 263.396970 265.541503 268.058597 271.905348 275.205426 277.377892 279.893170 283.489061 286.585922 287.538847 287.413973 287.739859 | ||
147 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.734506 286.951996 285.665412 283.877025 281.498941 280.806616 280.523274 275.942286 269.293127 265.682161 260.702379 259.003571 257.852105 249.071762 239.557155 232.500000 225.536333 212.070062 201.483532 212.028952 211.936035 185.836828 171.642690 161.500000 153.759206 146.684226 136.223529 125.612343 117.534309 113.090546 111.319635 104.250000 95.109291 82.078537 71.455371 66.929672 62.888585 56.657419 49.908950 48.215736 50.890907 49.438938 37.819478 33.412605 40.401840 42.056560 32.274058 28.000000 60.000000 78.224813 90.846959 114.681288 112.049639 97.200847 101.383685 105.900217 103.263485 115.841856 118.528109 130.334417 118.142875 109.620325 111.840624 102.887142 116.250000 214.443277 179.459351 134.713022 155.824000 163.113061 160.250540 170.272954 187.500000 199.680596 211.051568 226.826864 229.817295 223.536749 221.638469 228.324890 242.000000 258.889850 268.046833 262.110282 261.346717 264.672942 267.955274 271.146961 273.597731 277.738838 282.976049 286.275229 287.301479 286.981620 287.067490 287.722731 | ||
148 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.733436 286.969106 285.742270 284.013322 281.711220 280.121532 278.460729 274.736515 269.461657 264.855574 260.330139 256.806872 255.978507 249.658620 242.001519 234.750000 225.815189 212.378720 200.804971 200.540647 203.484484 190.618934 172.109988 160.000000 154.824609 148.945278 138.016165 126.241753 116.212870 109.633837 104.829336 99.750000 91.220366 81.274156 73.114717 67.783225 61.136745 54.864066 51.740420 47.282723 48.045598 48.476998 38.792943 34.395568 36.440269 33.095058 31.275128 35.000000 65.000000 90.211967 107.774240 112.700503 104.185935 99.147777 111.003083 123.920508 121.923739 132.325083 150.808469 132.086257 119.849982 117.087381 117.471289 146.443109 206.250000 217.327854 160.793124 132.070143 148.271086 154.747429 159.120014 166.011342 174.500000 193.605716 214.094726 228.436684 228.705524 228.286673 235.836750 249.517920 263.250000 274.222677 279.392751 274.884814 268.669048 265.913743 268.058597 270.978431 273.530744 279.801383 286.058928 286.699788 285.648882 285.886381 286.892110 287.721660 | ||
149 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.736648 286.964828 285.799915 284.115544 281.870430 279.436447 276.759129 273.731706 269.714453 265.165544 261.695020 255.928193 250.357713 246.919950 241.557089 233.500000 223.305488 212.378720 201.822812 193.128838 189.398564 181.054722 168.838899 159.000000 151.628399 148.380015 145.784252 135.053486 116.212870 109.633837 101.223615 95.250000 87.331440 78.056634 72.285044 69.490332 65.516344 63.830832 58.150564 50.081761 53.736216 55.210577 43.660269 38.327420 38.421055 33.095058 36.269776 57.000000 78.000000 92.209826 114.744297 132.508355 131.708897 123.484404 130.241878 140.992363 128.454828 152.471249 209.989130 191.648811 169.356079 136.999531 142.407091 214.110414 243.750000 153.146007 133.830797 136.034461 149.529905 154.747429 157.424225 171.338357 201.500000 234.727978 247.569468 252.986429 253.164495 256.446935 264.541970 274.614929 279.750000 279.555834 274.697889 265.516824 266.179455 265.293342 267.025364 270.472840 275.406388 282.018619 285.678326 284.391249 283.928136 285.415620 286.874999 287.723801 | ||
150 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.739859 286.986216 285.828737 284.217767 282.135779 279.740929 277.068511 273.798693 270.051514 266.818717 263.804381 256.367532 247.632479 246.919950 241.334874 231.750000 221.353498 211.452746 202.501373 193.128838 184.971561 174.533668 166.502407 159.000000 147.899489 149.510541 154.747429 139.459353 114.891430 110.325179 101.944759 96.000000 88.887010 78.861014 73.114717 73.758099 76.903303 75.487629 62.729238 55.679837 66.065889 65.791914 56.315315 49.140012 46.344196 45.043727 51.253718 83.000000 100.000000 101.200191 113.748575 140.431497 149.402229 140.033310 144.670975 161.857963 135.918930 166.207271 225.232633 251.211364 218.862175 153.592989 174.582319 255.333025 214.500000 106.271625 121.386646 149.909576 157.082819 158.332700 176.077907 211.823676 249.500000 272.579152 272.784208 268.279713 260.946895 259.161177 263.924654 265.691548 263.750000 260.889784 255.722818 248.824769 258.710678 264.176622 266.405424 270.304309 275.741324 280.832656 283.014109 282.586873 283.417024 285.473264 286.887832 287.728083 | ||
151 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.748423 287.016159 285.780700 284.217767 282.215384 279.778990 277.120074 274.133629 270.725635 267.438657 263.680301 256.074639 247.973133 249.071762 241.779304 231.250000 220.238076 209.600796 200.804971 193.128838 185.776471 178.446300 169.773496 159.000000 147.899489 149.510541 148.771977 130.647619 114.230710 111.016521 106.992769 102.750000 95.887076 86.904821 79.752100 80.586526 83.910662 77.280983 68.223647 72.474066 77.447126 72.525492 70.917291 63.884456 59.219300 65.953898 72.231236 93.000000 110.000000 112.188415 113.748575 130.527570 129.742971 124.457869 146.594854 173.239199 161.110273 175.364619 185.778860 226.685607 206.912428 174.334812 209.170690 252.221885 192.000000 109.156202 120.695305 171.052607 167.153372 164.308152 215.081061 264.561131 271.500000 268.840764 251.047363 231.656323 218.328990 217.768985 229.354926 235.575137 233.250000 234.001783 242.420706 250.868694 259.442911 264.921102 266.922041 270.809900 273.932667 278.563856 282.937989 283.303316 283.417024 285.463657 286.900665 287.735577 | ||
152 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.742000 286.973383 285.780700 284.217767 282.029640 279.664809 277.223201 275.272413 272.242409 266.405424 260.454219 255.781746 249.676404 244.376899 238.001651 230.750000 221.632354 210.526771 200.126411 191.275885 183.361742 178.446300 173.511883 161.500000 151.095698 140.466332 131.443168 128.129981 120.837908 115.855913 116.367646 111.000000 99.776002 94.144248 90.537848 90.829167 91.793942 80.867689 81.959669 95.799383 85.034617 73.487432 67.023430 81.577788 94.873435 88.855514 81.221601 81.000000 93.000000 101.200191 116.735742 140.431497 120.896305 118.617079 159.100071 162.806399 191.899692 204.668133 172.328710 184.641451 194.109127 229.093224 261.455436 257.666380 225.000000 150.982574 146.966290 176.999085 169.041600 172.673784 228.647375 270.420848 264.000000 243.606649 192.792618 181.349468 189.052343 206.233456 221.638469 226.372900 229.250000 238.001651 246.724331 252.060983 258.857125 263.680301 266.818717 270.894166 274.133629 281.038910 285.602205 283.144107 283.331838 285.492479 286.926330 287.735577 | ||
153 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.738789 286.969106 285.934418 284.388138 282.135779 279.398387 277.016947 276.210236 273.422121 265.682161 259.709738 254.903066 254.275236 244.376899 234.446213 227.750000 219.680365 209.292138 199.447850 190.905295 182.154377 174.533668 172.109988 165.000000 154.824609 144.988437 141.003890 140.088762 132.070143 119.312621 117.088790 111.000000 99.776002 92.535486 103.812615 119.849982 118.071539 99.697899 95.695691 99.531434 82.189308 73.487432 71.890756 140.555563 165.191313 91.842681 78.224813 93.000000 88.000000 88.214108 132.667301 151.325816 141.538526 159.502611 199.501542 213.073527 252.545517 250.454873 190.262243 223.181927 253.004311 259.791121 261.455436 262.333091 253.500000 212.279844 165.632516 184.927722 189.812114 173.271329 219.037902 261.364922 224.500000 177.717569 180.185248 184.569106 189.052343 222.179628 247.874423 237.805982 228.500000 239.112726 244.572519 250.698367 255.928193 261.074619 266.508747 271.484022 276.411197 282.740510 284.498458 281.419336 283.485172 285.521301 286.926330 287.732365 | ||
154 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.754847 287.003326 285.847951 284.251841 282.294989 279.817050 277.532583 276.679147 273.674917 265.992131 260.454219 255.635299 255.808180 248.093666 234.890643 224.750000 216.612952 208.366163 199.447850 191.275885 182.959287 175.403142 169.773496 163.000000 154.291907 148.380015 141.601436 133.165257 129.427264 123.460672 120.694512 118.500000 106.776068 98.970532 115.428035 126.678409 122.451138 133.771613 120.420530 106.062523 143.837672 131.203818 185.786168 211.328893 148.354638 86.864069 104.196979 171.000000 160.000000 116.184133 131.671578 135.479533 146.453341 183.839238 227.397795 252.907854 254.411543 230.308707 239.579460 253.839124 258.979185 260.620794 261.455436 259.221951 240.750000 194.251235 164.941175 176.999085 179.112153 179.246781 214.515798 246.981980 218.000000 162.296721 176.707353 184.971561 194.611200 213.019061 225.651027 227.488323 230.750000 238.446081 244.181280 254.786217 260.468037 263.183981 265.992131 271.231226 276.679147 281.451419 282.595447 281.100917 283.502209 285.521301 286.909220 287.742000 | ||
155 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.764482 287.050380 285.838344 284.268878 282.135779 279.284206 279.956074 281.837169 277.298320 266.612071 260.702379 260.028698 251.890656 241.442610 232.446279 224.250000 216.334097 208.366163 199.447850 191.646476 183.361742 174.968405 166.969705 158.000000 150.030295 143.292647 136.821074 131.277029 126.784385 126.226038 122.136801 141.750000 200.888067 201.126883 161.889718 129.239069 131.210337 171.432033 178.111823 216.158022 238.681309 154.290372 173.131122 218.209633 227.586049 196.393536 114.186274 109.000000 118.000000 135.163792 128.684411 134.489141 191.669635 244.194072 251.446289 256.701600 256.277568 252.286343 256.616317 258.218723 259.832738 260.620794 261.455436 230.443901 143.250000 123.579089 137.978848 159.159652 165.265143 169.088513 223.560007 251.776294 200.500000 161.362124 179.750511 187.788745 193.870019 203.179933 216.082620 226.372900 232.750000 238.223866 244.768138 254.104909 260.321591 263.059901 267.335334 272.158144 275.875299 278.615419 280.083471 281.100917 283.536283 285.588553 286.943440 287.739859 | ||
156 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.742000 286.999049 285.819129 284.166655 281.843895 279.626749 282.018619 281.971143 275.107425 268.265244 262.687660 256.074639 248.143460 238.508321 230.668560 223.250000 215.497530 207.748846 199.787130 190.905295 182.556832 174.968405 167.437004 159.000000 151.095698 142.727384 138.613710 136.941715 132.730863 129.682747 123.579089 178.500000 242.888463 255.020391 224.115186 194.109127 183.765531 165.155296 142.398166 192.832704 196.950108 212.006758 232.512491 245.732595 255.317043 210.333650 86.216249 85.000000 109.000000 122.177709 129.680134 155.287386 215.260744 255.875653 256.255988 256.701600 257.210581 257.780751 258.409670 251.211364 255.564971 260.620794 231.693350 165.887737 129.000000 117.809935 126.226038 131.409423 145.124038 158.332700 190.209484 196.908032 175.000000 184.727046 190.184197 186.983835 192.758247 208.947698 224.725052 233.902003 237.750000 240.446015 245.746234 252.231311 258.124892 262.315420 268.575214 275.360221 280.899346 282.224874 280.654375 280.782498 283.536283 285.617375 286.990494 287.744141 | ||
157 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.731295 286.960551 285.723056 283.996285 281.658150 280.045411 283.204582 281.234283 272.326674 267.748627 262.811740 254.170833 247.632479 238.117082 229.779701 223.000000 215.218674 207.131530 199.787130 191.646476 183.764197 175.837879 169.773496 163.500000 154.824609 148.380015 145.784252 142.606400 140.659500 135.213481 145.934564 225.750000 258.444166 261.455436 258.961448 223.983496 163.619374 131.978259 115.841856 102.330472 138.147053 227.397795 255.875653 255.562224 213.720552 123.705799 89.213037 119.000000 121.000000 121.178780 140.633080 183.018380 231.971114 255.875653 256.255988 256.701600 257.210581 256.865017 242.269490 243.328085 254.711418 259.791121 198.713741 116.887274 121.500000 114.204213 118.621280 120.837908 127.500572 138.613710 149.510541 155.357310 164.500000 182.857852 185.402091 184.971561 194.240609 221.501068 237.688700 245.892796 248.750000 247.112461 248.876143 253.253273 257.978445 262.935821 270.435034 279.404950 284.717622 282.946764 279.626749 280.782498 283.587395 285.569338 286.994771 287.754847 | ||
158 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.732365 286.960551 285.636589 283.877025 281.605081 279.626749 280.832656 278.286842 270.388574 264.855574 260.081978 253.145707 246.099535 237.334605 229.557486 222.750000 215.218674 207.131530 199.108570 191.646476 183.361742 175.837879 170.708093 163.000000 155.357310 153.467383 151.162158 144.494629 141.320219 138.670189 179.107204 249.000000 262.333091 261.455436 232.411915 162.527652 106.684580 105.077959 102.105834 66.875990 95.467417 173.529168 224.724771 230.988151 152.316208 55.996674 82.220531 112.000000 155.000000 144.154158 165.526141 215.701337 248.681483 255.875653 256.255988 256.701600 257.210581 255.949282 218.955896 218.802328 223.983496 218.307476 177.799842 122.331770 103.500000 105.550481 111.707862 118.195029 121.835886 130.248077 141.031595 151.628399 161.500000 170.240794 177.576826 183.764197 196.464152 216.751144 241.392599 257.604734 256.750000 250.445685 252.788529 255.126871 259.589358 263.556221 275.084584 283.365414 282.774991 278.666983 277.990159 281.021312 283.655543 285.617375 287.003326 287.756988 | ||
159 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.732365 286.981939 285.703841 283.808877 281.578546 279.208086 278.099783 275.339401 269.040331 262.789108 257.972617 251.095454 243.714956 236.747747 230.001915 223.000000 215.497530 207.131530 198.769290 190.905295 182.959287 178.881037 171.642690 159.500000 152.161101 154.032646 152.954794 144.494629 138.677340 145.583606 213.722132 255.750000 262.333091 261.455436 198.395326 109.607341 79.531063 92.524486 84.706873 85.536244 84.086180 102.345625 139.059845 148.419266 98.835006 46.039449 58.246224 82.000000 166.000000 192.102772 213.320818 242.441939 255.562224 255.875653 256.255988 256.701600 256.277568 249.539138 194.745626 191.648811 186.427147 176.823830 174.582319 147.998679 93.000000 102.665903 108.251154 115.552150 123.094705 132.638258 150.075805 161.217028 161.000000 166.502407 174.968405 184.166652 197.946514 209.965539 237.071383 254.816177 255.000000 253.112263 256.309676 256.659815 262.371843 266.906384 280.147427 285.219249 279.626588 275.109093 277.571496 281.180522 283.791840 285.694234 287.033269 287.763411 | ||
160 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.729154 286.973383 285.761485 283.808877 281.737755 279.398387 277.584147 274.200617 269.293127 265.062221 258.717097 249.777435 243.203975 236.943366 230.446345 223.250000 215.497530 207.440188 199.108570 191.646476 186.581381 184.967354 171.642690 158.500000 150.030295 150.641068 151.759703 144.494629 141.320219 155.262390 240.404473 261.000000 254.555240 242.150299 205.032709 133.506836 77.779223 82.661043 72.802321 97.665409 101.158035 83.106830 73.837686 82.560751 73.084797 51.018061 65.238730 93.000000 143.000000 236.055668 255.141160 225.605264 216.243707 237.379817 250.484349 250.062545 237.617314 224.814298 173.225386 164.495294 177.038059 195.076634 197.909360 152.665390 88.500000 102.665903 108.942496 115.552150 123.724115 132.040713 149.510541 162.282431 162.500000 167.904302 181.054722 188.191200 198.687695 221.161787 237.688700 244.219662 250.250000 256.445487 256.505295 257.511450 262.811183 270.752867 281.800600 283.533945 277.349020 274.748147 277.914038 281.286661 283.894062 285.646197 287.067490 287.784822 | ||
161 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.722731 286.917775 285.646197 284.013322 282.162314 279.474508 276.088802 272.592921 271.821083 271.261621 260.454219 248.898755 243.033648 236.943366 230.668560 223.000000 215.497530 207.748846 199.447850 192.387657 193.020658 185.836828 168.838899 160.000000 152.693803 149.510541 149.369523 148.900496 147.266697 158.027757 230.308452 246.750000 210.221488 198.713741 200.054672 148.017244 73.399624 69.210892 70.055116 88.335282 94.518980 84.068770 80.651941 94.356306 86.950294 70.932510 101.200191 110.000000 140.000000 235.056739 255.141160 156.277779 136.623711 209.149330 242.788831 231.093818 178.837514 178.111823 161.568590 125.078898 177.038059 244.027336 222.040781 133.220762 85.500000 102.665903 111.016521 115.552150 124.353524 134.430894 146.684226 156.422714 160.500000 170.240794 192.792618 195.032932 201.652419 233.375877 243.553207 244.498518 249.500000 252.445619 252.006051 256.659815 259.735804 269.884306 281.387307 276.876994 272.257985 274.232511 278.180460 281.339731 283.706654 285.626982 287.084600 287.799809 | ||
162 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.727013 286.951996 285.742270 284.200730 282.321524 279.474508 275.985674 273.396769 274.770365 274.877937 260.950539 249.338095 243.374302 237.530224 232.001849 225.000000 217.449519 209.292138 200.804971 194.611200 191.813293 178.881037 169.773496 164.000000 159.618923 157.424225 157.735155 156.453410 157.838213 164.249833 177.664915 173.250000 140.220828 160.103466 156.082008 112.168002 83.034743 64.727509 64.560707 72.474066 67.014326 60.982215 77.731546 95.339269 94.873435 91.842681 99.202332 91.000000 118.000000 227.065303 255.141160 184.999165 191.669635 244.194072 237.979132 211.176654 134.985917 127.746409 136.461643 127.706658 211.180195 248.175700 165.734131 81.886944 93.000000 101.944759 113.090546 122.159347 128.759391 137.418619 146.118963 152.693803 159.500000 169.306197 181.924195 191.813293 213.140724 231.000915 231.206876 232.786580 240.500000 246.001387 249.463001 256.319161 262.957630 274.971590 283.557097 277.382586 272.124010 274.129384 278.332701 281.286661 283.689617 285.867166 287.161596 287.803021 | ||
163 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.781610 287.080323 286.030491 284.354063 282.188849 279.512568 276.037238 273.664718 273.422121 270.228387 258.468937 249.338095 244.736919 239.095179 233.112924 225.750000 218.843798 211.144087 202.162092 195.722971 188.191200 178.011563 170.240794 168.500000 168.142148 165.903171 166.100787 165.894553 155.856053 152.497024 154.588296 152.250000 181.443439 233.302111 191.757943 108.753788 80.406983 62.037479 68.223647 75.273104 66.065889 60.020275 62.156105 79.611862 94.873435 90.846959 79.223743 77.000000 88.000000 182.113477 231.243821 168.162491 129.742971 124.457869 97.535926 101.158035 124.722777 126.830674 100.594576 180.261852 249.590097 187.609578 94.144248 79.553589 95.250000 104.829336 120.003963 126.123666 128.759391 137.418619 147.249489 154.824609 163.000000 171.175391 179.315774 194.630477 224.258438 225.233151 224.725052 230.555735 238.000000 245.112527 251.223574 255.467525 267.790368 281.175595 284.590330 275.444486 271.387150 274.645020 278.523002 281.366266 283.996285 286.145780 287.285646 287.805162 | ||
164 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.785892 287.071767 286.251461 284.814065 282.109244 279.284206 275.470038 273.195807 274.686099 272.294854 257.724457 249.191649 244.225937 237.725844 230.001915 223.750000 218.007231 210.526771 201.144252 193.128838 185.374016 178.881037 173.979182 177.500000 178.263478 176.643170 173.868874 169.041600 166.427569 166.323858 140.886554 141.750000 202.443637 202.735644 152.763316 106.193128 73.399624 53.070712 59.066298 62.210926 67.962762 64.829974 65.076500 71.748159 76.055975 70.932510 67.236589 72.000000 75.000000 182.113477 246.179658 153.306601 52.088901 38.792943 65.791914 84.086180 124.722777 177.196088 141.841703 173.254493 201.791108 138.658877 75.643491 86.553655 96.000000 106.271625 117.238596 121.498627 125.612343 134.430894 144.988437 153.759206 164.500000 180.988658 194.096829 204.289393 222.405485 226.590272 228.737610 234.180859 240.750000 245.779172 248.680524 254.615890 276.430718 283.409036 275.291230 269.967249 270.985226 274.541893 278.294640 281.817360 284.626657 286.213031 287.328422 287.821220 | ||
165 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.783751 287.097433 286.289890 285.103695 282.799153 279.740929 276.346620 273.262794 270.894166 266.405424 256.359575 249.484542 244.055610 237.725844 230.224130 223.000000 215.776385 208.366163 201.822812 195.352381 191.410839 184.967354 182.857852 183.000000 182.525090 180.600012 175.661510 169.671010 171.052607 176.693984 169.011183 194.250000 212.554844 170.560416 128.702802 114.728662 92.669861 60.244126 58.150564 63.143939 63.220580 70.601613 76.758081 70.765196 68.132834 72.923955 68.235518 65.000000 75.000000 147.150946 192.410647 116.662073 41.276309 55.341850 100.421746 104.951780 115.392650 160.712862 158.878559 151.356495 148.017244 114.598362 82.882918 87.331440 95.250000 104.108192 111.016521 118.855748 126.241753 136.223529 146.118963 158.020818 173.000000 187.063538 197.574724 207.106577 222.034895 231.340195 235.836750 243.661951 249.250000 250.001255 252.984148 258.363086 266.179455 269.139825 268.368567 269.545923 271.789074 274.593456 278.256580 282.056175 284.848139 286.472430 287.307034 287.836208 | ||
166 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.814797 287.281368 286.395571 285.291103 283.542131 280.083471 276.759129 273.396769 269.208862 264.132311 257.104056 249.777435 244.225937 237.530224 231.335205 224.000000 215.776385 210.526771 207.929857 202.023009 197.045206 195.835776 195.942208 190.500000 185.721300 180.034749 176.259055 173.447467 167.088289 169.780567 202.183823 245.250000 192.332431 144.015852 125.384110 118.996429 116.319699 100.594576 65.476442 63.143939 48.994035 64.829974 78.705011 72.731122 67.142441 71.928233 72.231236 72.000000 72.000000 95.206614 111.757130 90.911865 71.748159 93.306987 127.356059 123.920508 107.928549 123.167735 120.321463 153.108335 169.356079 130.362148 87.709202 85.775870 95.250000 102.665903 109.633837 118.855748 126.871162 137.418619 150.075805 164.413237 178.000000 188.465433 202.356830 207.106577 216.105447 248.643489 263.307337 266.528115 264.250000 259.556495 261.004539 260.577338 260.175144 262.811740 265.888807 269.208862 272.324972 275.882547 279.512568 282.533803 285.154806 286.597325 287.379752 287.867253 | ||
167 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.808374 287.264258 286.357141 285.205918 283.250247 280.197652 277.171638 273.597731 269.293127 265.062221 260.330139 253.877940 244.566591 238.117082 232.890709 226.000000 220.516932 218.860544 217.429704 210.546590 207.106577 210.182094 201.082491 194.000000 184.655896 178.338959 176.856600 174.076876 166.427569 161.484466 194.972379 221.250000 165.109952 152.059659 146.955606 123.264196 116.319699 113.148049 70.970851 60.344901 78.395562 77.335191 72.864221 72.731122 73.084797 79.894012 96.205543 92.000000 90.000000 82.220531 107.774240 110.719717 101.237047 107.908963 122.546360 125.817381 111.660599 107.600243 93.421163 188.145131 229.104816 150.274297 77.252253 85.775870 97.500000 106.271625 111.707862 119.516468 128.129981 140.406345 156.293699 170.805656 183.500000 197.811402 214.529463 218.375313 218.699581 261.875419 277.814277 277.961196 269.000000 261.334214 266.677498 262.110282 263.543416 264.052541 267.025364 269.798718 272.793883 277.635711 281.567820 283.091037 285.239992 286.683792 287.623574 287.923992 | ||
168 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.788033 287.148764 286.270675 285.222955 283.091037 280.502134 277.429456 273.530744 269.630188 266.612071 263.432141 258.564232 246.780844 245.159376 238.890511 232.000000 228.324890 226.577002 221.840348 216.105447 215.155674 211.921042 197.811402 191.500000 186.786703 187.383169 187.612413 179.741562 170.391888 156.645074 163.963173 168.000000 161.998811 177.799842 169.356774 136.921050 120.699298 107.767989 74.633790 81.804193 141.940799 104.269505 73.837686 68.799270 68.132834 83.876902 112.188415 103.000000 105.000000 98.203402 129.680134 127.556392 113.032601 106.935498 110.041143 122.023635 119.124701 105.768774 112.251373 222.306007 241.054564 143.636914 72.425969 85.775870 100.500000 110.598491 114.473229 122.159347 136.941715 152.357248 164.207382 177.198075 197.000000 215.101444 222.354728 230.448958 242.417371 269.000305 277.814277 278.518908 270.750000 264.223007 270.589884 269.264020 268.522601 265.541503 268.678537 270.220044 274.937477 281.451419 283.775314 283.170642 285.291103 286.904761 287.803232 287.957178 | ||
169 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.808374 287.230038 286.424393 285.648882 283.701340 281.339459 277.532583 272.994845 270.304309 268.781861 264.300702 258.417785 250.868694 252.788529 246.223602 238.500000 233.344292 226.268343 218.447545 215.364266 210.728671 202.791567 195.474910 189.500000 199.038839 203.775799 199.563316 196.735619 187.570601 174.619959 167.568894 165.000000 178.332299 180.212984 161.889718 143.749477 138.217696 123.908169 92.948486 148.981107 177.032945 111.003083 88.439662 81.577788 69.123227 82.881179 100.201261 92.000000 92.000000 100.201261 107.774240 109.729325 108.117787 106.935498 111.965023 121.075199 122.856752 111.263182 142.738379 218.802328 187.280700 113.768689 80.469776 84.998085 100.500000 109.877347 115.164571 127.445105 150.159315 169.088513 180.600012 191.581017 214.500000 237.999067 224.963149 232.863687 267.246933 276.803751 277.814277 278.797763 278.500000 275.111537 272.937315 275.906776 268.669048 266.410063 269.918417 271.484022 279.157677 285.937455 284.955181 282.905292 285.512585 287.144945 287.820342 287.955037 | ||
170 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.825502 287.349809 286.568503 285.648882 283.489061 281.758122 278.254474 273.128820 270.388574 269.195154 262.811740 255.928193 252.912619 248.680524 245.112527 238.750000 230.276879 221.947127 215.394023 212.028952 207.106577 201.922093 196.876805 193.500000 210.225572 206.602114 195.380500 209.953219 217.963708 218.174487 207.231833 195.000000 187.665720 167.342893 140.318222 132.653283 143.473216 145.428409 150.639779 228.287187 157.115781 89.840408 100.121243 117.947416 124.585214 131.671578 110.190556 85.000000 85.000000 88.214108 93.834126 97.844613 98.288158 104.988568 112.926963 110.642399 124.722777 135.072287 153.498499 168.874893 124.971302 93.856540 89.317964 86.553655 99.000000 105.550481 112.399204 136.034461 155.194591 176.856600 207.732640 220.879603 229.500000 258.092900 238.439993 245.742242 270.952838 276.803751 275.036352 276.009207 279.250000 277.333686 269.611787 268.071730 265.154329 267.402704 272.708147 276.118608 282.373067 286.298400 284.650699 283.037967 285.393326 287.135338 287.820342 287.964672 | ||
171 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.811585 287.277091 286.251461 284.694805 282.799153 280.426013 278.254474 275.138439 271.231226 267.335334 261.322779 256.074639 251.379675 244.376899 241.334874 236.250000 229.440312 223.181760 219.126106 217.958400 213.545855 203.226304 200.147894 203.000000 210.225572 208.297903 200.758406 203.029714 207.392193 195.360210 199.299246 196.500000 187.665720 176.995461 159.400699 165.941865 188.145131 186.675536 250.454873 243.215390 109.693962 61.944155 64.103035 96.322232 172.124061 220.290875 157.140241 110.000000 89.000000 87.215178 92.838404 94.873435 98.288158 97.200847 97.535926 118.229890 146.182069 145.145370 148.118439 134.714017 113.875108 113.768689 117.471289 105.998283 102.000000 109.877347 115.164571 151.891735 163.376915 184.624687 223.560007 246.449278 243.500000 243.139350 252.351574 271.901806 274.658743 276.464471 263.924654 266.249259 277.750000 276.000396 265.503782 258.703740 264.568542 269.760226 272.191531 275.191691 282.172105 286.298400 285.373844 283.701340 285.171844 287.058479 287.794677 287.962531 | ||
172 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.815867 287.208650 286.213031 284.745916 283.303316 282.519326 283.978037 280.430435 272.242409 267.955274 262.439500 255.342406 255.637852 252.592909 243.334808 240.000000 233.623147 223.799077 224.215310 227.593752 217.167948 208.008410 216.036041 215.500000 213.954483 208.297903 191.197684 183.518019 202.106435 186.372768 179.828348 202.500000 189.999075 160.907847 200.054672 254.711418 240.700325 221.645926 249.539138 183.502577 64.169016 39.819540 35.872548 39.310383 64.171263 85.868347 85.217319 93.000000 86.000000 87.215178 91.842681 83.979116 106.151861 152.688356 193.729903 228.248509 216.158022 158.881392 140.945026 129.458497 118.142875 127.873129 142.407091 130.887406 112.500000 132.232821 166.323858 180.963403 194.217981 222.270032 236.561058 239.524158 244.500000 249.681528 270.610524 273.914081 267.246933 268.661025 273.801719 277.682341 274.500000 268.667305 268.829310 268.412384 257.685552 265.541503 266.922041 271.568287 281.100308 285.885891 284.308157 283.144107 285.018510 287.096908 287.576521 287.937909 | ||
173 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.792316 287.127376 286.078528 284.609620 284.921948 284.688760 282.018619 277.148058 271.821083 267.645304 263.804381 258.124892 257.852105 256.896534 245.334742 241.750000 252.585332 258.368805 244.232846 222.776076 211.131126 214.094726 210.895758 202.500000 189.982912 190.209484 202.551042 212.470857 212.677950 194.668868 176.943771 174.750000 176.776728 162.516609 210.010747 242.761670 208.291289 229.716016 245.876199 149.914120 63.220580 40.781480 35.872548 37.344457 41.392233 51.018061 82.220531 116.000000 96.000000 107.193767 120.718632 96.854220 111.066676 186.759633 250.484349 254.804727 239.483340 119.504796 96.111193 100.553141 108.753788 116.257708 128.732619 140.998613 140.250000 154.588296 192.594843 176.999085 189.812114 231.233210 252.953688 254.972503 260.000000 268.373466 272.784208 267.877258 262.058667 271.714547 277.814277 269.595527 258.000000 256.223272 259.635204 257.341123 261.346717 264.797022 266.612071 271.484022 276.143248 279.131056 281.187218 282.746083 284.677768 286.453215 287.319866 287.870465 | ||
174 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.790174 287.153041 286.395571 285.393326 284.019760 281.796182 278.563856 276.143248 272.579470 266.198777 262.563580 259.150018 254.615890 254.353483 251.778974 262.250000 274.057217 275.962327 259.161177 219.440762 212.338490 212.790516 203.418983 193.500000 189.450211 198.688431 207.331403 213.729676 227.874504 213.335095 174.780338 187.500000 193.110216 218.018878 249.005373 252.150758 238.948485 251.236257 247.707669 155.512196 76.498689 50.400878 45.607199 41.276309 47.334588 69.936788 92.209826 105.000000 103.000000 131.168075 134.658746 106.758147 117.947416 193.573889 256.255988 239.629745 155.512196 114.010387 111.354696 99.677221 99.364701 101.323596 112.645004 139.443043 150.750000 138.723121 162.175808 190.213480 196.735619 215.099490 241.083163 256.570608 263.500000 271.177256 272.784208 267.072348 265.764571 274.089509 277.814277 276.566918 264.000000 249.779040 250.636716 254.104909 261.493164 264.672942 266.818717 271.315492 274.803502 278.202910 281.225278 282.693013 284.728879 286.376356 287.311311 287.845842 | ||
175 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.792316 287.174429 286.462822 285.597771 283.091037 280.578254 277.945092 275.674337 273.674917 269.401801 263.308061 262.225397 260.066357 253.962244 265.778512 276.750000 278.797763 275.962327 254.411254 211.658362 208.313942 208.008410 201.549789 191.500000 190.515614 208.863167 215.697036 199.882667 206.070753 219.557170 212.279844 201.750000 224.221620 251.802868 260.620794 259.832738 259.094643 244.062843 164.375801 90.201307 60.375271 51.362818 47.554129 40.293346 51.296159 85.868347 106.194838 100.000000 118.000000 128.171286 134.658746 113.690895 137.606674 210.122795 256.255988 231.093818 119.124701 147.892575 118.528109 90.918022 93.389827 108.790652 120.688811 138.665258 161.250000 157.472874 177.385325 195.499237 214.359086 213.904400 224.690533 244.851173 252.500000 252.018020 258.872627 269.084623 272.805790 276.125191 277.814277 277.124629 260.250000 242.890379 249.854239 255.297198 257.392659 262.067260 267.645304 271.652552 274.937477 279.595128 283.280531 284.152434 285.120732 286.347534 287.375475 287.838349 | ||
176 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.805162 287.204372 286.251461 285.222955 283.037967 280.920797 277.996656 276.277223 278.225238 277.151050 266.906384 270.426407 265.857478 253.375386 269.556165 279.500000 278.797763 264.541970 230.322355 203.875962 199.057481 205.399988 206.690072 197.000000 189.982912 205.471588 212.111765 191.070934 186.909881 201.582285 215.885565 213.750000 246.777389 261.455436 260.620794 253.004311 220.554167 153.498499 70.055116 44.483685 44.251853 44.629239 45.607199 41.276309 47.334588 75.911122 109.191626 126.000000 132.000000 113.187344 116.735742 124.585214 154.317044 213.043190 254.332108 210.228218 93.933358 107.600243 88.937779 79.531063 95.096934 113.768689 115.862527 131.665192 189.000000 210.116411 178.076667 162.463251 180.370972 202.551042 225.255796 236.327948 238.000000 250.616125 261.481049 272.304261 275.399924 276.803751 263.307337 252.027621 242.250000 238.001651 250.636716 255.297198 256.660426 261.819100 269.401801 272.832265 275.607350 281.245165 285.792506 285.877205 285.257029 286.337927 287.302756 287.823361 | ||
177 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.866183 287.259981 286.107350 284.933324 283.489061 281.111098 277.945092 277.014083 279.236420 277.151050 267.402704 271.012193 262.961917 252.006051 265.111867 272.500000 270.710949 249.109056 212.001220 200.911238 193.423113 201.487356 206.690072 199.000000 194.244525 199.253694 198.368226 187.294476 183.606282 182.916059 213.722132 239.250000 256.888595 261.455436 244.857009 203.498214 139.969536 67.417539 42.583072 47.282723 47.097162 48.476998 47.554129 41.276309 38.421055 57.988119 104.196979 139.000000 127.000000 119.180921 122.710077 132.508355 140.555563 189.680028 247.598530 193.156363 61.277913 48.993216 63.830832 88.290262 107.046681 110.449998 100.579294 120.776200 201.000000 239.683329 168.397883 157.177493 167.782781 213.306855 250.692636 241.122262 227.000000 258.560199 272.784208 274.316535 265.764571 257.125496 238.923333 231.950013 235.000000 240.890445 250.049859 253.253273 260.468037 265.665583 270.641681 272.832265 278.018893 284.132728 286.401470 285.585321 285.444437 286.376356 287.212927 287.815867 | ||
178 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.917569 287.268536 286.376356 285.137769 283.966690 281.187218 277.996656 275.540363 273.422121 270.021741 264.548862 262.518290 258.192759 250.441097 258.445420 255.250000 251.748765 242.009916 214.036902 197.575924 191.008384 195.835776 199.213297 198.000000 201.169645 198.123168 189.405048 186.035657 188.231320 205.730336 249.779350 261.750000 262.333091 247.780964 190.098597 122.410642 84.786582 63.830832 53.571890 48.215736 52.787780 63.868034 54.368384 41.276309 39.411447 59.979563 102.199120 117.000000 119.000000 146.152016 166.521863 150.335423 146.453341 195.520819 249.522409 200.743854 52.880799 54.487624 68.314216 99.677221 109.607341 102.982942 99.774913 119.220630 171.000000 208.674122 184.990084 189.552760 197.365029 234.220936 252.388425 226.206619 215.000000 260.429392 271.479998 258.620797 235.746743 222.179628 224.107735 233.344292 241.500000 246.668032 249.854239 251.720329 263.104076 267.154544 269.918417 272.410939 280.363448 285.524946 284.308157 283.462526 285.495548 286.126565 287.153041 287.806233 | ||
179 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.861901 287.182984 286.923976 285.631845 283.966690 281.187218 278.357601 274.937477 272.748000 272.708147 268.767585 265.886562 262.961917 247.311189 243.779238 235.500000 239.757972 243.244549 219.126106 192.017066 188.996110 197.139987 197.811402 206.500000 205.963959 193.035800 182.832052 188.553295 213.999390 263.111698 263.481092 258.750000 242.110678 182.626126 122.895091 93.389827 79.531063 64.727509 59.066298 50.081761 51.839344 67.715794 58.262245 51.105938 63.180871 82.881179 100.201261 108.000000 130.000000 157.140241 187.432035 184.008773 217.226670 255.875653 244.712711 176.084508 48.215736 59.066298 70.107569 80.406983 84.000740 88.048829 102.188055 120.776200 132.000000 145.213420 176.693984 169.070448 159.600457 191.197684 195.862115 177.730776 206.000000 266.971570 258.437891 219.582677 207.952457 210.644099 216.699936 227.488323 239.000000 245.334742 247.898046 253.423600 262.664737 262.315420 268.161921 274.096243 278.487804 280.574837 280.996917 282.188849 284.473323 285.617375 286.964828 287.770905 | ||
180 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.832996 287.217205 286.808687 285.580734 283.409456 280.996917 281.967055 281.904156 280.500398 282.523864 282.416396 281.409903 270.285982 246.137473 235.779502 230.750000 232.228869 229.046268 209.626258 194.240609 197.045206 207.573673 204.353580 198.000000 201.702347 195.862115 177.454145 191.070934 252.321134 263.803040 255.548504 226.500000 140.220828 113.449385 108.790652 92.536274 83.910662 77.280983 69.139381 51.014774 40.458107 52.324757 48.527594 57.003715 74.075190 86.864069 110.190556 128.000000 130.000000 156.141311 180.461977 171.133668 210.345930 255.875653 212.006758 87.879926 48.215736 56.319094 62.934156 69.020024 80.586526 89.708175 101.383674 111.442779 111.000000 117.088790 143.509581 154.534614 149.529905 186.417323 194.731589 192.113718 220.000000 231.456889 211.486305 214.350764 210.546590 207.251296 218.243228 235.853993 243.250000 242.668164 247.898046 257.000469 262.371843 261.446859 267.232011 273.000795 274.267604 276.243493 280.083471 282.241919 283.655543 285.569338 286.917775 287.769834 | ||
181 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.856548 287.255703 286.270675 284.950361 282.905292 281.034977 281.915492 284.181724 284.882188 283.557097 280.927435 277.602291 254.956544 243.007564 236.446147 229.750000 220.795787 211.452746 203.858494 199.058285 204.691848 208.443147 214.634146 203.000000 206.496661 196.992642 178.051690 202.400305 264.874809 254.124256 184.155214 129.750000 116.887274 128.732619 122.065418 103.632468 98.801301 92.524486 77.380995 58.478875 48.045598 46.553119 45.607199 56.020752 69.123227 81.885457 108.192697 116.000000 126.000000 175.120971 187.432035 143.402675 189.703709 255.875653 190.844084 34.767489 49.148748 59.066298 62.037479 69.895944 81.440079 90.537848 96.557390 102.109357 104.250000 114.204213 165.632516 237.124581 209.953219 194.185410 186.817906 182.525090 193.000000 203.418983 203.661041 208.716397 207.952457 210.644099 226.577002 242.825384 246.000000 245.112527 252.788529 258.874067 260.321591 264.300702 266.715394 269.545923 272.124010 275.212220 278.751363 281.498941 283.655543 285.626982 286.922053 287.742000 | ||
182 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.785892 287.020437 285.982454 284.865176 283.409456 282.024543 279.440438 281.234283 285.219249 279.940780 263.183981 257.831998 248.313787 245.354996 238.001651 229.000000 219.959220 213.304695 210.644099 209.064228 206.704123 200.617882 194.073014 196.000000 200.636943 185.687380 176.856600 213.100267 255.624733 206.421677 158.915162 144.000000 152.665390 140.798329 122.895091 114.728662 110.188260 98.801223 72.802321 141.517006 106.848653 54.248637 55.341850 73.714085 81.007938 87.859791 95.206614 107.000000 144.000000 173.123112 182.453422 212.730159 247.698521 224.724771 124.470240 32.870616 47.282723 61.813503 82.661043 90.918022 91.682720 95.515885 98.970532 100.553787 120.000000 183.434070 218.174487 250.999695 204.917943 169.088513 167.033697 185.188598 198.500000 189.867329 188.879986 202.679574 218.699581 220.483227 224.416394 230.276879 237.500000 248.001321 259.243965 263.302572 257.685552 262.439500 263.719017 266.765171 270.918239 274.748147 278.256580 281.419336 283.877025 285.607767 286.904942 287.742000 | ||
183 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.775187 286.934885 285.838344 284.319989 283.727875 284.079796 283.410837 283.779800 281.848641 270.435034 257.104056 252.413474 250.528040 249.854239 238.001651 228.000000 220.795787 215.156645 212.679781 210.176000 200.264845 194.096829 186.128941 191.500000 192.646420 186.252643 179.844326 186.035657 201.445715 194.668868 173.338049 201.750000 174.443373 127.928238 107.131306 105.339574 99.677221 88.937779 93.864221 220.823085 148.579853 55.210577 53.394919 73.714085 83.979116 100.804183 106.194838 134.000000 174.000000 224.068514 236.222434 251.355472 212.311856 120.564009 52.324757 39.509671 46.349710 63.644972 89.834456 90.042102 90.829167 102.982942 106.209959 113.776134 165.000000 219.491287 158.719099 152.552455 150.788724 150.564613 164.772645 184.655896 191.000000 187.530836 191.488407 209.923761 218.328990 218.447545 221.638469 226.372900 235.000000 250.667900 263.351970 257.000469 252.999260 257.600376 261.652551 266.091050 270.516315 274.490329 278.142399 281.339731 283.894062 285.559731 286.883554 287.731295 | ||
184 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.783751 286.973383 285.944025 284.507397 283.515596 284.802940 286.143709 282.708003 272.916530 261.755874 255.863255 251.681241 248.143460 242.811945 234.668428 227.500000 220.795787 214.539328 210.644099 208.323047 203.082029 194.096829 190.801925 191.500000 189.982912 186.817906 184.624687 179.112153 176.338365 201.582285 193.530091 189.000000 146.443109 117.471289 111.279671 116.435768 111.940099 96.111193 130.493613 191.899692 113.487708 50.400878 50.474524 69.782233 95.863828 119.722909 127.172357 191.000000 227.000000 251.039610 255.141160 204.807018 109.100750 42.686804 35.971781 45.200289 48.215736 59.066298 84.454396 90.042102 85.707846 93.856540 102.992436 111.442779 139.500000 151.703719 129.682747 126.123666 135.682896 148.174432 159.120014 167.609446 177.000000 187.530836 193.227355 208.716397 210.917181 213.697621 223.490419 228.324890 238.500000 254.667767 257.483391 247.632479 250.070328 255.739175 261.239258 266.175315 270.516315 274.593456 278.218520 281.153987 283.672580 285.655804 286.939163 287.727013 | ||
185 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.793386 287.058935 286.136172 284.848139 282.772618 283.128290 284.545237 278.956715 267.270762 259.689408 256.235495 251.681241 245.247900 237.138986 232.446279 229.500000 222.468921 215.156645 212.340500 209.064228 208.716397 197.574724 195.474910 201.500000 201.169645 189.078958 187.612413 191.700343 175.677645 194.668868 189.203225 143.250000 121.553985 121.493192 117.087381 114.728662 111.064179 97.904546 142.398166 121.923739 75.550253 47.515058 47.554129 64.867419 89.921472 128.684411 187.108124 238.000000 252.000000 228.064232 186.436312 101.806184 38.327420 29.058293 40.781480 48.045598 58.478875 62.729238 79.971013 96.173541 88.268507 88.048829 96.557390 98.998217 107.250000 111.319635 133.139456 138.677340 139.459353 149.967068 164.207382 169.207551 172.000000 183.792449 191.053670 202.277119 208.323047 214.036902 222.873102 227.209467 239.500000 254.001123 250.636716 245.758881 250.070328 255.491015 261.239258 266.512376 270.918239 274.851275 278.370761 281.180522 283.655543 285.799915 287.003326 287.737718 | ||
186 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.796598 287.080323 286.145780 284.728879 282.427664 281.605881 280.987346 275.138439 266.175315 261.032611 256.855896 251.827687 244.566591 237.921463 238.668296 234.750000 224.142055 216.391278 214.376182 211.658362 211.936035 200.617882 202.017088 215.500000 213.421781 195.862115 188.807503 191.070934 179.641964 187.064109 166.847750 124.500000 119.220630 123.101954 112.109344 97.657594 90.042102 87.144426 117.673326 80.871180 65.117453 47.515058 45.607199 57.986678 68.132834 122.710077 245.046033 248.000000 189.000000 124.175568 70.932510 34.459484 30.463717 39.766408 39.819540 47.097162 72.474066 77.380995 70.107569 76.903303 83.147186 87.219156 90.926725 96.664861 109.500000 122.857945 124.843355 131.409423 137.571124 151.162158 169.860013 178.263478 178.500000 187.530836 199.748409 204.289393 212.770133 222.179628 223.799077 225.815189 237.000000 250.223470 252.984148 251.379675 250.509668 255.118774 261.859198 267.439293 271.454137 275.005965 278.637182 281.711220 283.877025 285.761485 286.999049 287.747353 | ||
187 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.791245 287.071767 286.030491 284.439249 282.533803 280.882736 277.738838 272.190998 266.175315 261.445904 256.731816 251.241901 244.055610 242.029468 248.445751 238.250000 223.863199 218.243228 215.733303 214.993676 216.765493 209.747357 217.437936 225.500000 217.683393 202.645272 187.612413 174.076876 176.338365 190.520818 151.703719 123.750000 117.665059 115.862527 107.131306 91.682720 78.655143 79.074336 82.875403 80.871180 70.808071 54.248637 47.554129 52.088901 56.248122 118.727187 248.042822 199.000000 61.000000 17.290116 24.133556 32.478699 37.344457 42.686804 48.476998 56.581526 75.273104 81.043934 76.384306 86.538422 98.511147 95.515885 93.339867 102.887142 110.250000 120.694512 117.238596 124.141506 137.571124 157.735155 169.294750 176.665373 188.000000 200.147894 216.703148 214.753219 220.923124 231.340195 230.898217 229.161457 235.250000 247.556891 257.874630 255.467525 250.509668 255.739175 263.925664 268.534740 271.722087 275.109093 278.827484 282.188849 283.979248 285.578945 286.947718 287.744141 | ||
188 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.799809 287.153041 286.107350 284.507397 282.135779 278.979725 275.521602 271.454137 266.596641 261.755874 257.228136 251.095454 244.566591 247.506808 246.445817 233.750000 224.142055 222.873102 220.143947 217.958400 223.607226 224.528412 225.849308 227.000000 227.804723 214.515798 195.978045 186.035657 177.659805 172.545933 143.771131 117.750000 111.442779 107.818720 103.812615 91.682720 79.531063 81.764366 71.886586 107.928549 100.209599 65.791914 48.527594 49.140012 57.238515 107.774240 178.117759 76.000000 19.000000 25.281552 28.116446 31.488306 39.310383 49.501059 66.753854 78.395562 64.076952 70.055116 140.945026 200.408010 171.063185 138.658877 131.145761 115.331704 106.500000 119.973368 128.300064 132.070143 142.606400 169.686058 183.991590 187.319404 197.500000 210.428460 222.354728 222.802316 229.817295 232.697316 233.058825 233.065436 235.750000 243.557023 252.397290 253.082946 251.974134 258.344857 265.475514 268.787536 271.722087 275.263784 278.675243 281.737755 283.894062 285.569338 286.913497 287.734506 | ||
189 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.807303 287.217205 286.261068 284.728879 282.348059 279.322267 275.676293 271.119201 266.175315 261.755874 257.104056 251.241901 245.077573 242.225087 234.001783 228.000000 226.651756 225.651027 221.161787 216.105447 224.412135 213.659989 201.082491 212.000000 243.253069 241.083163 237.208661 265.341257 241.088899 141.435556 125.742522 120.750000 109.109423 97.361771 89.708175 84.000740 81.282903 88.937779 86.538343 110.727587 106.848653 62.906095 44.633734 49.140012 54.267337 51.018061 35.270846 26.000000 29.000000 28.278340 30.107890 37.430662 50.122975 59.235710 63.868034 70.808071 65.942977 78.296729 224.335956 259.094643 188.987807 177.653503 189.061172 146.443109 129.000000 132.953966 137.287506 141.980939 153.306362 176.259055 190.774747 202.235048 220.500000 230.054994 228.875781 234.071052 245.752686 234.054437 225.959685 231.392302 239.250000 242.668164 246.724331 251.039021 255.195959 262.563580 264.752251 267.860619 272.057023 275.521602 278.446881 281.419336 283.945173 285.684626 286.926330 287.727013 | ||
190 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.840490 287.508080 286.683792 284.490360 283.276782 284.612639 281.090474 272.458947 265.585458 261.652551 256.235495 250.070328 244.907246 239.290798 233.112924 229.000000 228.324890 227.194318 224.215310 223.887847 223.204771 237.135782 249.681528 251.500000 261.897623 267.085265 265.293284 266.600076 248.356816 182.916059 145.213420 123.750000 108.331638 98.970532 92.197194 83.147186 76.903303 81.764366 84.706873 75.273104 62.272144 53.286697 47.554129 46.191123 46.344196 40.065115 30.276199 27.000000 29.000000 29.277269 42.056560 45.353803 45.208160 50.474524 57.134456 61.323707 65.942977 78.296729 225.232633 259.094643 208.619535 157.741354 132.754522 126.220696 138.750000 148.097997 150.422998 150.570296 174.076876 190.002594 206.602114 225.141215 232.000000 231.456889 248.438942 265.462529 243.158552 233.715157 229.972243 231.671158 236.750000 242.668164 248.484904 251.209348 256.074639 260.702379 265.062221 270.051514 274.334591 276.913820 279.474508 282.321524 283.894062 285.751878 287.003326 287.728083 | ||
191 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.838349 287.358365 286.501252 284.643694 284.630063 286.096988 281.709237 272.860871 266.512376 262.479138 255.863255 250.216775 244.055610 239.877656 235.112858 230.250000 226.651756 223.799077 222.518908 222.776076 217.972858 262.785260 270.242659 269.000000 269.355445 269.346318 268.281010 242.053105 182.945563 216.791803 180.549493 141.750000 110.664993 95.753009 92.197194 91.682720 84.786582 76.384306 80.128199 83.670218 59.426835 51.362818 52.421454 49.140012 45.353803 41.060837 32.274058 25.000000 29.000000 33.272987 38.073670 37.430662 39.310383 49.501059 60.020275 69.859635 79.938167 86.538343 182.192153 229.313366 171.916739 110.449998 90.122344 91.220366 113.250000 146.655708 160.793124 168.409728 196.106210 207.928948 223.560007 248.047383 264.000000 264.635078 264.958944 258.620797 237.229105 234.393718 232.132851 231.392302 234.500000 241.557089 250.441097 254.275236 257.246212 260.826459 265.268867 270.135779 273.195807 275.882547 279.208086 282.109244 283.979248 285.665412 286.973383 287.740930 | ||
192 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 287.826573 287.294201 286.491645 285.478511 283.542131 282.557387 280.987346 274.401578 266.849436 263.512371 256.855896 251.534794 251.379675 249.267381 237.112792 231.000000 227.767179 223.490419 223.876029 223.517257 213.948310 255.394732 270.242659 271.500000 270.420848 269.346318 268.281010 238.906057 165.106130 188.446793 166.847750 149.250000 123.887340 105.405578 95.515885 90.829167 86.538422 73.694276 68.223647 67.809002 57.529962 52.324757 50.474524 48.157049 43.373018 42.056560 44.261211 31.000000 27.000000 34.271917 38.073670 40.401840 47.174086 56.315315 66.753854 81.240871 93.933358 110.347448 137.358319 170.626733 151.431458 123.724764 102.992436 95.109291 126.750000 157.472874 168.397883 176.338365 199.882667 239.001297 247.301057 251.776294 271.500000 269.775361 255.394732 234.875961 234.634971 231.679476 230.898217 232.507725 234.750000 240.001585 249.463001 258.192759 261.346717 268.271265 269.505124 270.725635 273.195807 276.552874 279.893170 282.480733 284.285915 285.886381 287.080323 287.756988 | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/sqcif/texture_synthesis b/SD-VBS/benchmarks/texture_synthesis/data/sqcif/texture_synthesis new file mode 100755 index 0000000..ead6019 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/sqcif/texture_synthesis | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/test/1.bmp b/SD-VBS/benchmarks/texture_synthesis/data/test/1.bmp new file mode 100644 index 0000000..6dba615 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/test/1.bmp | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/test/Makefile b/SD-VBS/benchmarks/texture_synthesis/data/test/Makefile new file mode 100644 index 0000000..e2861e5 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/test/Makefile | |||
@@ -0,0 +1,5 @@ | |||
1 | INPUT=test | ||
2 | include ../../../../common/makefiles/Makefile.include | ||
3 | |||
4 | BMARK=texture_synthesis | ||
5 | include $(MAKEFILE_COMMON_DIR)/Makefile.common | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/test/expected.m b/SD-VBS/benchmarks/texture_synthesis/data/test/expected.m new file mode 100644 index 0000000..445bae4 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/test/expected.m | |||
@@ -0,0 +1,16 @@ | |||
1 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 251.681241 159.000000 89.975613 67.000000 73.000000 95.096934 171.000000 256.221086 | ||
2 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 250.509668 166.000000 96.804041 66.000000 61.000000 84.854293 168.000000 255.049513 | ||
3 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 250.216775 166.500000 88.268507 53.000000 45.000000 78.879419 169.500000 254.317280 | ||
4 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 252.413474 177.000000 98.511147 58.000000 42.000000 90.829167 188.500000 258.124892 | ||
5 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 254.024387 176.500000 95.950487 57.000000 42.000000 92.536274 191.500000 259.442911 | ||
6 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 253.145707 164.500000 77.172313 44.000000 41.000000 95.950487 194.000000 261.639610 | ||
7 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 251.388348 167.500000 78.879419 36.000000 40.000000 102.778914 201.500000 263.104076 | ||
8 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 251.095454 185.500000 95.950487 36.000000 35.000000 85.707846 177.000000 255.488853 | ||
9 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 251.534794 168.500000 79.732973 48.000000 43.000000 82.293633 176.500000 258.857125 | ||
10 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 250.509668 159.500000 71.197439 45.000000 50.000000 78.025866 173.000000 260.468037 | ||
11 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 251.095454 160.500000 74.611652 63.000000 63.000000 88.268507 167.500000 252.267027 | ||
12 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 253.585047 177.000000 140.335263 132.000000 109.000000 130.946176 194.500000 255.928193 | ||
13 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 258.710678 232.500000 185.573593 135.000000 110.000000 151.431458 219.500000 263.104076 | ||
14 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 260.028698 240.000000 165.088312 99.000000 101.000000 151.431458 217.000000 265.593669 | ||
15 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 255.928193 203.000000 132.653283 101.000000 122.000000 152.285011 202.500000 263.689863 | ||
16 | 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 288.000000 252.267027 187.000000 124.971302 124.000000 145.000000 158.259885 201.000000 262.518290 | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/test/texture_synthesis b/SD-VBS/benchmarks/texture_synthesis/data/test/texture_synthesis new file mode 100755 index 0000000..8c62aaa --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/test/texture_synthesis | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/vga/1.bmp b/SD-VBS/benchmarks/texture_synthesis/data/vga/1.bmp new file mode 100644 index 0000000..b5e5100 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/vga/1.bmp | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/vga/Makefile b/SD-VBS/benchmarks/texture_synthesis/data/vga/Makefile new file mode 100644 index 0000000..39622f9 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/vga/Makefile | |||
@@ -0,0 +1,7 @@ | |||
1 | INPUT=vga | ||
2 | include ../../../../common/makefiles/Makefile.include | ||
3 | |||
4 | BMARK=texture_synthesis | ||
5 | include $(MAKEFILE_COMMON_DIR)/Makefile.common | ||
6 | |||
7 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/data/vga/texture_synthesis b/SD-VBS/benchmarks/texture_synthesis/data/vga/texture_synthesis new file mode 100755 index 0000000..d593fa8 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/data/vga/texture_synthesis | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd new file mode 100755 index 0000000..e3b1f28 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd.c b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd.c new file mode 100755 index 0000000..9649dda --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd.c | |||
@@ -0,0 +1,52 @@ | |||
1 | /* | ||
2 | RES = innerProd(MAT); | ||
3 | Computes mat'*mat | ||
4 | Odelia Schwartz, 8/97. | ||
5 | */ | ||
6 | |||
7 | #define V4_COMPAT | ||
8 | #include <mex.h> | ||
9 | |||
10 | #include <stdio.h> | ||
11 | #include <ctype.h> | ||
12 | #include <math.h> | ||
13 | #include <strings.h> | ||
14 | #include <stdlib.h> | ||
15 | |||
16 | void mexFunction(int nlhs, /* Num return vals on lhs */ | ||
17 | Matrix *plhs[], /* Matrices on lhs */ | ||
18 | int nrhs, /* Num args on rhs */ | ||
19 | Matrix *prhs[] /* Matrices on rhs */ | ||
20 | ) | ||
21 | { | ||
22 | register double *res, *mat, tmp; | ||
23 | register int len, wid, i, k, j, jlen, ilen, imat, jmat; | ||
24 | Matrix *arg; | ||
25 | |||
26 | /* get matrix input argument */ | ||
27 | /* should be matrix in which num rows >= num columns */ | ||
28 | arg=prhs[0]; | ||
29 | mat= mxGetPr(arg); | ||
30 | len = (int) mxGetM(arg); | ||
31 | wid = (int) mxGetN(arg); | ||
32 | if ( wid > len ) | ||
33 | printf("innerProd: Warning: width %d is greater than length %d.\n",wid,len); | ||
34 | plhs[0] = (Matrix *) mxCreateFull(wid,wid,REAL); | ||
35 | if (plhs[0] == NULL) | ||
36 | mexErrMsgTxt(sprintf("Error allocating %dx%d result matrix",wid,wid)); | ||
37 | res = mxGetPr(plhs[0]); | ||
38 | |||
39 | for(i=0, ilen=0; i<wid; i++, ilen+=len) | ||
40 | { | ||
41 | for(j=i, jlen=ilen; j<wid; j++, jlen+=len) | ||
42 | { | ||
43 | tmp = 0.0; | ||
44 | for(k=0, imat=ilen, jmat=jlen; k<len; k++, imat++, jmat++) | ||
45 | tmp += mat[imat]*mat[jmat]; | ||
46 | res[i*wid+j] = tmp; | ||
47 | res[j*wid+i] = tmp; | ||
48 | } | ||
49 | } | ||
50 | return; | ||
51 | |||
52 | } | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd.ctf b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd.ctf new file mode 100755 index 0000000..c6bf079 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd.ctf | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd.prj b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd.prj new file mode 100755 index 0000000..deba3f8 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd.prj | |||
@@ -0,0 +1,233 @@ | |||
1 | <?xml version="1.0" encoding="UTF-8" standalone="yes"?> | ||
2 | |||
3 | <project> | ||
4 | |||
5 | <MATLABPath> | ||
6 | <Directory>/u/kvs/VisionBenchmark/texture_synthesis/src</Directory> | ||
7 | <Directory>/pkg/matlab/toolbox/compiler/deploy</Directory> | ||
8 | <Directory>/pkg/matlab/toolbox/matlab/general</Directory> | ||
9 | <Directory>/pkg/matlab/toolbox/matlab/ops</Directory> | ||
10 | <Directory>/pkg/matlab/toolbox/matlab/lang</Directory> | ||
11 | <Directory>/pkg/matlab/toolbox/matlab/elmat</Directory> | ||
12 | <Directory>/pkg/matlab/toolbox/matlab/elfun</Directory> | ||
13 | <Directory>/pkg/matlab/toolbox/matlab/specfun</Directory> | ||
14 | <Directory>/pkg/matlab/toolbox/matlab/matfun</Directory> | ||
15 | <Directory>/pkg/matlab/toolbox/matlab/datafun</Directory> | ||
16 | <Directory>/pkg/matlab/toolbox/matlab/polyfun</Directory> | ||
17 | <Directory>/pkg/matlab/toolbox/matlab/funfun</Directory> | ||
18 | <Directory>/pkg/matlab/toolbox/matlab/sparfun</Directory> | ||
19 | <Directory>/pkg/matlab/toolbox/matlab/scribe</Directory> | ||
20 | <Directory>/pkg/matlab/toolbox/matlab/graph2d</Directory> | ||
21 | <Directory>/pkg/matlab/toolbox/matlab/graph3d</Directory> | ||
22 | <Directory>/pkg/matlab/toolbox/matlab/specgraph</Directory> | ||
23 | <Directory>/pkg/matlab/toolbox/matlab/graphics</Directory> | ||
24 | <Directory>/pkg/matlab/toolbox/matlab/uitools</Directory> | ||
25 | <Directory>/pkg/matlab/toolbox/matlab/strfun</Directory> | ||
26 | <Directory>/pkg/matlab/toolbox/matlab/imagesci</Directory> | ||
27 | <Directory>/pkg/matlab/toolbox/matlab/iofun</Directory> | ||
28 | <Directory>/pkg/matlab/toolbox/matlab/audiovideo</Directory> | ||
29 | <Directory>/pkg/matlab/toolbox/matlab/timefun</Directory> | ||
30 | <Directory>/pkg/matlab/toolbox/matlab/datatypes</Directory> | ||
31 | <Directory>/pkg/matlab/toolbox/matlab/verctrl</Directory> | ||
32 | <Directory>/pkg/matlab/toolbox/matlab/codetools</Directory> | ||
33 | <Directory>/pkg/matlab/toolbox/matlab/helptools</Directory> | ||
34 | <Directory>/pkg/matlab/toolbox/matlab/demos</Directory> | ||
35 | <Directory>/pkg/matlab/toolbox/matlab/timeseries</Directory> | ||
36 | <Directory>/pkg/matlab/toolbox/matlab/hds</Directory> | ||
37 | <Directory>/pkg/matlab/toolbox/matlab/guide</Directory> | ||
38 | <Directory>/pkg/matlab/toolbox/matlab/plottools</Directory> | ||
39 | <Directory>/pkg/matlab/toolbox/local</Directory> | ||
40 | <Directory>/pkg/matlab/toolbox/shared/controllib</Directory> | ||
41 | <Directory>/pkg/matlab/toolbox/simulink/simulink</Directory> | ||
42 | <Directory>/pkg/matlab/toolbox/simulink/blocks</Directory> | ||
43 | <Directory>/pkg/matlab/toolbox/simulink/components</Directory> | ||
44 | <Directory>/pkg/matlab/toolbox/simulink/fixedandfloat</Directory> | ||
45 | <Directory>/pkg/matlab/toolbox/simulink/fixedandfloat/fxpdemos</Directory> | ||
46 | <Directory>/pkg/matlab/toolbox/simulink/fixedandfloat/obsolete</Directory> | ||
47 | <Directory>/pkg/matlab/toolbox/simulink/simdemos</Directory> | ||
48 | <Directory>/pkg/matlab/toolbox/simulink/simdemos/aerospace</Directory> | ||
49 | <Directory>/pkg/matlab/toolbox/simulink/simdemos/automotive</Directory> | ||
50 | <Directory>/pkg/matlab/toolbox/simulink/simdemos/simfeatures</Directory> | ||
51 | <Directory>/pkg/matlab/toolbox/simulink/simdemos/simgeneral</Directory> | ||
52 | <Directory>/pkg/matlab/toolbox/simulink/dee</Directory> | ||
53 | <Directory>/pkg/matlab/toolbox/shared/dastudio</Directory> | ||
54 | <Directory>/pkg/matlab/toolbox/shared/glue</Directory> | ||
55 | <Directory>/pkg/matlab/toolbox/stateflow/stateflow</Directory> | ||
56 | <Directory>/pkg/matlab/toolbox/rtw/rtw</Directory> | ||
57 | <Directory>/pkg/matlab/toolbox/simulink/simulink/modeladvisor</Directory> | ||
58 | <Directory>/pkg/matlab/toolbox/simulink/simulink/modeladvisor/fixpt</Directory> | ||
59 | <Directory>/pkg/matlab/toolbox/simulink/simulink/MPlayIO</Directory> | ||
60 | <Directory>/pkg/matlab/toolbox/simulink/simulink/dataobjectwizard</Directory> | ||
61 | <Directory>/pkg/matlab/toolbox/shared/fixedpointlib</Directory> | ||
62 | <Directory>/pkg/matlab/toolbox/simulink/dataimportexport</Directory> | ||
63 | <Directory>/pkg/matlab/toolbox/shared/hdlshared</Directory> | ||
64 | <Directory>/pkg/matlab/toolbox/rtw/rtwdemos</Directory> | ||
65 | <Directory>/pkg/matlab/toolbox/rtw/rtwdemos/rsimdemos</Directory> | ||
66 | <Directory>/pkg/matlab/toolbox/rtw/targets/asap2/asap2</Directory> | ||
67 | <Directory>/pkg/matlab/toolbox/rtw/targets/asap2/asap2/user</Directory> | ||
68 | <Directory>/pkg/matlab/toolbox/rtw/targets/common/can/blocks</Directory> | ||
69 | <Directory>/pkg/matlab/toolbox/rtw/targets/common/configuration/resource</Directory> | ||
70 | <Directory>/pkg/matlab/toolbox/rtw/targets/common/tgtcommon</Directory> | ||
71 | <Directory>/pkg/matlab/toolbox/stateflow/sfdemos</Directory> | ||
72 | <Directory>/pkg/matlab/toolbox/stateflow/coder</Directory> | ||
73 | <Directory>/pkg/matlab/toolbox/bioinfo/bioinfo</Directory> | ||
74 | <Directory>/pkg/matlab/toolbox/bioinfo/biolearning</Directory> | ||
75 | <Directory>/pkg/matlab/toolbox/bioinfo/microarray</Directory> | ||
76 | <Directory>/pkg/matlab/toolbox/bioinfo/mass_spec</Directory> | ||
77 | <Directory>/pkg/matlab/toolbox/bioinfo/proteins</Directory> | ||
78 | <Directory>/pkg/matlab/toolbox/bioinfo/biomatrices</Directory> | ||
79 | <Directory>/pkg/matlab/toolbox/bioinfo/biodemos</Directory> | ||
80 | <Directory>/pkg/matlab/toolbox/bioinfo/graphtheory</Directory> | ||
81 | <Directory>/pkg/matlab/toolbox/commblks/commblks</Directory> | ||
82 | <Directory>/pkg/matlab/toolbox/commblks/commmasks</Directory> | ||
83 | <Directory>/pkg/matlab/toolbox/commblks/commmex</Directory> | ||
84 | <Directory>/pkg/matlab/toolbox/commblks/commblksdemos</Directory> | ||
85 | <Directory>/pkg/matlab/toolbox/commblks/commblksobsolete/v3</Directory> | ||
86 | <Directory>/pkg/matlab/toolbox/commblks/commblksobsolete/v2p5</Directory> | ||
87 | <Directory>/pkg/matlab/toolbox/commblks/commblksobsolete/v2</Directory> | ||
88 | <Directory>/pkg/matlab/toolbox/comm/comm</Directory> | ||
89 | <Directory>/pkg/matlab/toolbox/comm/commdemos</Directory> | ||
90 | <Directory>/pkg/matlab/toolbox/comm/commdemos/commdocdemos</Directory> | ||
91 | <Directory>/pkg/matlab/toolbox/comm/commobsolete</Directory> | ||
92 | <Directory>/pkg/matlab/toolbox/compiler</Directory> | ||
93 | <Directory>/pkg/matlab/toolbox/control/control</Directory> | ||
94 | <Directory>/pkg/matlab/toolbox/control/ctrlguis</Directory> | ||
95 | <Directory>/pkg/matlab/toolbox/control/ctrlobsolete</Directory> | ||
96 | <Directory>/pkg/matlab/toolbox/control/ctrlutil</Directory> | ||
97 | <Directory>/pkg/matlab/toolbox/control/ctrldemos</Directory> | ||
98 | <Directory>/pkg/matlab/toolbox/shared/slcontrollib</Directory> | ||
99 | <Directory>/pkg/matlab/toolbox/curvefit/curvefit</Directory> | ||
100 | <Directory>/pkg/matlab/toolbox/curvefit/cftoolgui</Directory> | ||
101 | <Directory>/pkg/matlab/toolbox/shared/optimlib</Directory> | ||
102 | <Directory>/pkg/matlab/toolbox/database/database</Directory> | ||
103 | <Directory>/pkg/matlab/toolbox/database/dbdemos</Directory> | ||
104 | <Directory>/pkg/matlab/toolbox/database/vqb</Directory> | ||
105 | <Directory>/pkg/matlab/toolbox/dspblks/dspblks</Directory> | ||
106 | <Directory>/pkg/matlab/toolbox/dspblks/dspmasks</Directory> | ||
107 | <Directory>/pkg/matlab/toolbox/dspblks/dspmex</Directory> | ||
108 | <Directory>/pkg/matlab/toolbox/dspblks/dspdemos</Directory> | ||
109 | <Directory>/pkg/matlab/toolbox/shared/filterdesignlib</Directory> | ||
110 | <Directory>/pkg/matlab/toolbox/rtw/targets/ecoder</Directory> | ||
111 | <Directory>/pkg/matlab/toolbox/rtw/targets/ecoder/ecoderdemos</Directory> | ||
112 | <Directory>/pkg/matlab/toolbox/rtw/targets/mpt</Directory> | ||
113 | <Directory>/pkg/matlab/toolbox/rtw/targets/mpt/mpt</Directory> | ||
114 | <Directory>/pkg/matlab/toolbox/rtw/targets/mpt/user_specific</Directory> | ||
115 | <Directory>/pkg/matlab/toolbox/fixedpoint/fixedpoint</Directory> | ||
116 | <Directory>/pkg/matlab/toolbox/fixedpoint/fidemos</Directory> | ||
117 | <Directory>/pkg/matlab/toolbox/fixedpoint/fimex</Directory> | ||
118 | <Directory>/pkg/matlab/toolbox/fixpoint</Directory> | ||
119 | <Directory>/pkg/matlab/toolbox/gads</Directory> | ||
120 | <Directory>/pkg/matlab/toolbox/gads/gads</Directory> | ||
121 | <Directory>/pkg/matlab/toolbox/gads/gadsdemos</Directory> | ||
122 | <Directory>/pkg/matlab/toolbox/ident/ident</Directory> | ||
123 | <Directory>/pkg/matlab/toolbox/ident/idobsolete</Directory> | ||
124 | <Directory>/pkg/matlab/toolbox/ident/idguis</Directory> | ||
125 | <Directory>/pkg/matlab/toolbox/ident/idutils</Directory> | ||
126 | <Directory>/pkg/matlab/toolbox/ident/iddemos</Directory> | ||
127 | <Directory>/pkg/matlab/toolbox/ident/idhelp</Directory> | ||
128 | <Directory>/pkg/matlab/toolbox/images/images</Directory> | ||
129 | <Directory>/pkg/matlab/toolbox/images/imuitools</Directory> | ||
130 | <Directory>/pkg/matlab/toolbox/images/imdemos</Directory> | ||
131 | <Directory>/pkg/matlab/toolbox/images/iptutils</Directory> | ||
132 | <Directory>/pkg/matlab/toolbox/shared/imageslib</Directory> | ||
133 | <Directory>/pkg/matlab/toolbox/images/medformats</Directory> | ||
134 | <Directory>/pkg/matlab/toolbox/instrument/instrument</Directory> | ||
135 | <Directory>/pkg/matlab/toolbox/instrument/instrumentdemos</Directory> | ||
136 | <Directory>/pkg/matlab/toolbox/map/map</Directory> | ||
137 | <Directory>/pkg/matlab/toolbox/map/mapdemos</Directory> | ||
138 | <Directory>/pkg/matlab/toolbox/map/mapdisp</Directory> | ||
139 | <Directory>/pkg/matlab/toolbox/map/mapformats</Directory> | ||
140 | <Directory>/pkg/matlab/toolbox/map/mapproj</Directory> | ||
141 | <Directory>/pkg/matlab/toolbox/shared/mapgeodesy</Directory> | ||
142 | <Directory>/pkg/matlab/toolbox/slvnv/simcoverage</Directory> | ||
143 | <Directory>/pkg/matlab/toolbox/nnet</Directory> | ||
144 | <Directory>/pkg/matlab/toolbox/nnet/nncontrol</Directory> | ||
145 | <Directory>/pkg/matlab/toolbox/nnet/nndemos</Directory> | ||
146 | <Directory>/pkg/matlab/toolbox/nnet/nnet</Directory> | ||
147 | <Directory>/pkg/matlab/toolbox/nnet/nnet/nnanalyze</Directory> | ||
148 | <Directory>/pkg/matlab/toolbox/nnet/nnet/nncustom</Directory> | ||
149 | <Directory>/pkg/matlab/toolbox/nnet/nnet/nndistance</Directory> | ||
150 | <Directory>/pkg/matlab/toolbox/nnet/nnet/nnformat</Directory> | ||
151 | <Directory>/pkg/matlab/toolbox/nnet/nnet/nninit</Directory> | ||
152 | <Directory>/pkg/matlab/toolbox/nnet/nnet/nnlearn</Directory> | ||
153 | <Directory>/pkg/matlab/toolbox/nnet/nnet/nnnetinput</Directory> | ||
154 | <Directory>/pkg/matlab/toolbox/nnet/nnet/nnnetwork</Directory> | ||
155 | <Directory>/pkg/matlab/toolbox/nnet/nnet/nnperformance</Directory> | ||
156 | <Directory>/pkg/matlab/toolbox/nnet/nnet/nnplot</Directory> | ||
157 | <Directory>/pkg/matlab/toolbox/nnet/nnet/nnprocess</Directory> | ||
158 | <Directory>/pkg/matlab/toolbox/nnet/nnet/nnsearch</Directory> | ||
159 | <Directory>/pkg/matlab/toolbox/nnet/nnet/nntopology</Directory> | ||
160 | <Directory>/pkg/matlab/toolbox/nnet/nnet/nntrain</Directory> | ||
161 | <Directory>/pkg/matlab/toolbox/nnet/nnet/nntransfer</Directory> | ||
162 | <Directory>/pkg/matlab/toolbox/nnet/nnet/nnweight</Directory> | ||
163 | <Directory>/pkg/matlab/toolbox/nnet/nnguis</Directory> | ||
164 | <Directory>/pkg/matlab/toolbox/nnet/nnguis/nftool</Directory> | ||
165 | <Directory>/pkg/matlab/toolbox/nnet/nnguis/nntool</Directory> | ||
166 | <Directory>/pkg/matlab/toolbox/nnet/nnobsolete</Directory> | ||
167 | <Directory>/pkg/matlab/toolbox/nnet/nnresource</Directory> | ||
168 | <Directory>/pkg/matlab/toolbox/nnet/nnutils</Directory> | ||
169 | <Directory>/pkg/matlab/toolbox/optim</Directory> | ||
170 | <Directory>/pkg/matlab/toolbox/pde</Directory> | ||
171 | <Directory>/pkg/matlab/toolbox/robust/robust</Directory> | ||
172 | <Directory>/pkg/matlab/toolbox/robust/rctlmi</Directory> | ||
173 | <Directory>/pkg/matlab/toolbox/robust/rctutil</Directory> | ||
174 | <Directory>/pkg/matlab/toolbox/robust/rctdemos</Directory> | ||
175 | <Directory>/pkg/matlab/toolbox/robust/rctobsolete/robust</Directory> | ||
176 | <Directory>/pkg/matlab/toolbox/robust/rctobsolete/lmi</Directory> | ||
177 | <Directory>/pkg/matlab/toolbox/robust/rctobsolete/mutools/commands</Directory> | ||
178 | <Directory>/pkg/matlab/toolbox/robust/rctobsolete/mutools/subs</Directory> | ||
179 | <Directory>/pkg/matlab/toolbox/signal/signal</Directory> | ||
180 | <Directory>/pkg/matlab/toolbox/signal/sigtools</Directory> | ||
181 | <Directory>/pkg/matlab/toolbox/signal/sptoolgui</Directory> | ||
182 | <Directory>/pkg/matlab/toolbox/signal/sigdemos</Directory> | ||
183 | <Directory>/pkg/matlab/toolbox/shared/spcuilib</Directory> | ||
184 | <Directory>/pkg/matlab/toolbox/slcontrol/slcontrol</Directory> | ||
185 | <Directory>/pkg/matlab/toolbox/slcontrol/slctrlguis</Directory> | ||
186 | <Directory>/pkg/matlab/toolbox/slcontrol/slctrlutil</Directory> | ||
187 | <Directory>/pkg/matlab/toolbox/slcontrol/slctrldemos</Directory> | ||
188 | <Directory>/pkg/matlab/toolbox/splines</Directory> | ||
189 | <Directory>/pkg/matlab/toolbox/stats</Directory> | ||
190 | <Directory>/pkg/matlab/toolbox/symbolic</Directory> | ||
191 | <Directory>/pkg/matlab/toolbox/vipblks/vipblks</Directory> | ||
192 | <Directory>/pkg/matlab/toolbox/vipblks/vipmasks</Directory> | ||
193 | <Directory>/pkg/matlab/toolbox/vipblks/vipmex</Directory> | ||
194 | <Directory>/pkg/matlab/toolbox/vipblks/vipdemos</Directory> | ||
195 | <Directory>/pkg/matlab/toolbox/wavelet/wavelet</Directory> | ||
196 | <Directory>/pkg/matlab/toolbox/wavelet/wmultisig1d</Directory> | ||
197 | <Directory>/pkg/matlab/toolbox/wavelet/wavedemo</Directory> | ||
198 | <Directory>/pkg/matlab/work</Directory> | ||
199 | <Directory>/pkg/matlab/toolbox/vr/vr</Directory> | ||
200 | <Directory>/pkg/matlab/toolbox/vr/vrdemos</Directory> | ||
201 | </MATLABPath> | ||
202 | |||
203 | <MCCProperties> | ||
204 | <output/> | ||
205 | <wrapper> | ||
206 | <type>main</type> | ||
207 | <component_name>innerProd</component_name> | ||
208 | </wrapper> | ||
209 | <link>exe</link> | ||
210 | <create_vb_wrapper>false</create_vb_wrapper> | ||
211 | <intermediate_dir>../MEX</intermediate_dir> | ||
212 | <output_dir>../MEX</output_dir> | ||
213 | <generate_code_only>false</generate_code_only> | ||
214 | <verbose>false</verbose> | ||
215 | <MCR_runtime_options> | ||
216 | <share_mcr>false</share_mcr> | ||
217 | </MCR_runtime_options> | ||
218 | <options_file/> | ||
219 | <toolboxes_on_path shortcut="all"/> | ||
220 | <debug>false</debug> | ||
221 | <warning shortcut="default"/> | ||
222 | <license_file/> | ||
223 | </MCCProperties> | ||
224 | |||
225 | <file_info> | ||
226 | <category name="Main function"> | ||
227 | <file>/u/kvs/VisionBenchmark/texture_synthesis/src/innerProd.m</file> | ||
228 | </category> | ||
229 | <category name="Other files"/> | ||
230 | <category name="C/C++ files"/> | ||
231 | </file_info> | ||
232 | |||
233 | </project> | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd_main.c b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd_main.c new file mode 100755 index 0000000..3c828de --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd_main.c | |||
@@ -0,0 +1,103 @@ | |||
1 | /* | ||
2 | * MATLAB Compiler: 4.4 (R2006a) | ||
3 | * Date: Thu Jul 24 17:19:07 2008 | ||
4 | * Arguments: "-B" "macro_default" "-m" "-W" "main" "-T" "link:exe" "-d" | ||
5 | * "../MEX" "innerProd.m" | ||
6 | */ | ||
7 | |||
8 | #include <stdio.h> | ||
9 | #include "mclmcr.h" | ||
10 | #ifdef __cplusplus | ||
11 | extern "C" { | ||
12 | #endif | ||
13 | |||
14 | extern mclComponentData __MCC_innerProd_component_data; | ||
15 | |||
16 | #ifdef __cplusplus | ||
17 | } | ||
18 | #endif | ||
19 | |||
20 | static HMCRINSTANCE _mcr_inst = NULL; | ||
21 | |||
22 | |||
23 | static int mclDefaultPrintHandler(const char *s) | ||
24 | { | ||
25 | return fwrite(s, sizeof(char), strlen(s), stdout); | ||
26 | } | ||
27 | |||
28 | static int mclDefaultErrorHandler(const char *s) | ||
29 | { | ||
30 | int written = 0, len = 0; | ||
31 | len = strlen(s); | ||
32 | written = fwrite(s, sizeof(char), len, stderr); | ||
33 | if (len > 0 && s[ len-1 ] != '\n') | ||
34 | written += fwrite("\n", sizeof(char), 1, stderr); | ||
35 | return written; | ||
36 | } | ||
37 | |||
38 | |||
39 | /* This symbol is defined in shared libraries. Define it here | ||
40 | * (to nothing) in case this isn't a shared library. | ||
41 | */ | ||
42 | #ifndef LIB_innerProd_C_API | ||
43 | #define LIB_innerProd_C_API /* No special import/export declaration */ | ||
44 | #endif | ||
45 | |||
46 | LIB_innerProd_C_API | ||
47 | bool MW_CALL_CONV innerProdInitializeWithHandlers( | ||
48 | mclOutputHandlerFcn error_handler, | ||
49 | mclOutputHandlerFcn print_handler | ||
50 | ) | ||
51 | { | ||
52 | if (_mcr_inst != NULL) | ||
53 | return true; | ||
54 | if (!mclmcrInitialize()) | ||
55 | return false; | ||
56 | if (!mclInitializeComponentInstance(&_mcr_inst, | ||
57 | &__MCC_innerProd_component_data, | ||
58 | true, NoObjectType, ExeTarget, | ||
59 | error_handler, print_handler)) | ||
60 | return false; | ||
61 | return true; | ||
62 | } | ||
63 | |||
64 | LIB_innerProd_C_API | ||
65 | bool MW_CALL_CONV innerProdInitialize(void) | ||
66 | { | ||
67 | return innerProdInitializeWithHandlers(mclDefaultErrorHandler, | ||
68 | mclDefaultPrintHandler); | ||
69 | } | ||
70 | |||
71 | LIB_innerProd_C_API | ||
72 | void MW_CALL_CONV innerProdTerminate(void) | ||
73 | { | ||
74 | if (_mcr_inst != NULL) | ||
75 | mclTerminateInstance(&_mcr_inst); | ||
76 | } | ||
77 | |||
78 | int run_main(int argc, const char **argv) | ||
79 | { | ||
80 | int _retval; | ||
81 | /* Generate and populate the path_to_component. */ | ||
82 | char path_to_component[(PATH_MAX*2)+1]; | ||
83 | separatePathName(argv[0], path_to_component, (PATH_MAX*2)+1); | ||
84 | __MCC_innerProd_component_data.path_to_component = path_to_component; | ||
85 | if (!innerProdInitialize()) { | ||
86 | return -1; | ||
87 | } | ||
88 | _retval = mclMain(_mcr_inst, argc, argv, "innerProd", 1); | ||
89 | if (_retval == 0 /* no error */) mclWaitForFiguresToDie(NULL); | ||
90 | innerProdTerminate(); | ||
91 | mclTerminateApplication(); | ||
92 | return _retval; | ||
93 | } | ||
94 | |||
95 | int main(int argc, const char **argv) | ||
96 | { | ||
97 | if (!mclInitializeApplication( | ||
98 | __MCC_innerProd_component_data.runtime_options, | ||
99 | __MCC_innerProd_component_data.runtime_option_count)) | ||
100 | return 0; | ||
101 | |||
102 | return mclRunMain(run_main, argc, argv); | ||
103 | } | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd_mcc_component_data.c b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd_mcc_component_data.c new file mode 100755 index 0000000..df204ee --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/MEX/innerProd_mcc_component_data.c | |||
@@ -0,0 +1,151 @@ | |||
1 | /* | ||
2 | * MATLAB Compiler: 4.4 (R2006a) | ||
3 | * Date: Thu Jul 24 17:19:07 2008 | ||
4 | * Arguments: "-B" "macro_default" "-m" "-W" "main" "-T" "link:exe" "-d" | ||
5 | * "../MEX" "innerProd.m" | ||
6 | */ | ||
7 | |||
8 | #include "mclmcr.h" | ||
9 | |||
10 | #ifdef __cplusplus | ||
11 | extern "C" { | ||
12 | #endif | ||
13 | const unsigned char __MCC_innerProd_session_key[] = { | ||
14 | 'B', 'C', 'C', '8', 'A', 'E', 'C', 'F', '0', '7', '5', '2', 'D', 'F', | ||
15 | 'F', '9', '4', '2', '0', 'B', '6', 'F', '5', 'B', 'E', 'A', 'E', '4', | ||
16 | 'C', '2', 'F', '5', '4', 'D', '1', '4', '6', '3', 'B', 'A', '5', '1', | ||
17 | 'D', '8', '3', '7', 'F', '5', '4', '6', 'C', '1', 'D', 'B', '9', '3', | ||
18 | 'C', 'D', 'A', 'D', 'F', '3', '5', 'F', '5', 'A', '2', 'D', '9', 'A', | ||
19 | '4', '4', '6', 'D', 'C', '5', '3', '7', '7', '5', '7', '2', '3', '0', | ||
20 | 'E', '2', 'E', '7', '0', 'F', '7', '4', 'B', 'A', '8', 'B', '9', '8', | ||
21 | '5', '8', 'D', 'D', '3', '3', '3', '7', '9', 'E', '8', '1', '3', '9', | ||
22 | '1', '2', 'A', '6', 'B', '0', '4', '8', 'F', 'D', '9', 'D', '3', '5', | ||
23 | '2', '8', '4', '3', '7', '3', '1', 'D', '7', '0', 'E', '0', '0', '3', | ||
24 | 'D', '9', '7', '3', '0', 'F', '8', '7', '0', 'C', 'A', 'B', '4', '1', | ||
25 | 'F', '0', '4', '5', 'E', '1', '7', '4', 'C', 'E', '6', 'A', 'C', 'D', | ||
26 | 'C', '6', 'F', '8', '6', '5', 'F', '5', '1', 'A', '6', '9', 'F', 'E', | ||
27 | '7', '9', 'A', '3', 'E', '7', 'C', '6', '2', '3', '7', 'C', 'E', '9', | ||
28 | 'A', '0', '6', '3', '5', '9', '3', '4', '1', '5', '9', 'D', '9', '2', | ||
29 | '4', 'B', '1', '0', '6', '0', 'A', '3', '5', '8', '2', '1', '8', '4', | ||
30 | 'E', 'B', 'C', 'D', 'B', '6', '4', '7', 'F', 'D', '9', 'A', '3', '3', | ||
31 | 'D', '0', '1', '5', 'C', '2', '1', 'B', '5', 'C', '1', '5', '9', '3', | ||
32 | '0', '4', '6', '1', '\0'}; | ||
33 | |||
34 | const unsigned char __MCC_innerProd_public_key[] = { | ||
35 | '3', '0', '8', '1', '9', 'D', '3', '0', '0', 'D', '0', '6', '0', '9', | ||
36 | '2', 'A', '8', '6', '4', '8', '8', '6', 'F', '7', '0', 'D', '0', '1', | ||
37 | '0', '1', '0', '1', '0', '5', '0', '0', '0', '3', '8', '1', '8', 'B', | ||
38 | '0', '0', '3', '0', '8', '1', '8', '7', '0', '2', '8', '1', '8', '1', | ||
39 | '0', '0', 'C', '4', '9', 'C', 'A', 'C', '3', '4', 'E', 'D', '1', '3', | ||
40 | 'A', '5', '2', '0', '6', '5', '8', 'F', '6', 'F', '8', 'E', '0', '1', | ||
41 | '3', '8', 'C', '4', '3', '1', '5', 'B', '4', '3', '1', '5', '2', '7', | ||
42 | '7', 'E', 'D', '3', 'F', '7', 'D', 'A', 'E', '5', '3', '0', '9', '9', | ||
43 | 'D', 'B', '0', '8', 'E', 'E', '5', '8', '9', 'F', '8', '0', '4', 'D', | ||
44 | '4', 'B', '9', '8', '1', '3', '2', '6', 'A', '5', '2', 'C', 'C', 'E', | ||
45 | '4', '3', '8', '2', 'E', '9', 'F', '2', 'B', '4', 'D', '0', '8', '5', | ||
46 | 'E', 'B', '9', '5', '0', 'C', '7', 'A', 'B', '1', '2', 'E', 'D', 'E', | ||
47 | '2', 'D', '4', '1', '2', '9', '7', '8', '2', '0', 'E', '6', '3', '7', | ||
48 | '7', 'A', '5', 'F', 'E', 'B', '5', '6', '8', '9', 'D', '4', 'E', '6', | ||
49 | '0', '3', '2', 'F', '6', '0', 'C', '4', '3', '0', '7', '4', 'A', '0', | ||
50 | '4', 'C', '2', '6', 'A', 'B', '7', '2', 'F', '5', '4', 'B', '5', '1', | ||
51 | 'B', 'B', '4', '6', '0', '5', '7', '8', '7', '8', '5', 'B', '1', '9', | ||
52 | '9', '0', '1', '4', '3', '1', '4', 'A', '6', '5', 'F', '0', '9', '0', | ||
53 | 'B', '6', '1', 'F', 'C', '2', '0', '1', '6', '9', '4', '5', '3', 'B', | ||
54 | '5', '8', 'F', 'C', '8', 'B', 'A', '4', '3', 'E', '6', '7', '7', '6', | ||
55 | 'E', 'B', '7', 'E', 'C', 'D', '3', '1', '7', '8', 'B', '5', '6', 'A', | ||
56 | 'B', '0', 'F', 'A', '0', '6', 'D', 'D', '6', '4', '9', '6', '7', 'C', | ||
57 | 'B', '1', '4', '9', 'E', '5', '0', '2', '0', '1', '1', '1', '\0'}; | ||
58 | |||
59 | static const char * MCC_innerProd_matlabpath_data[] = | ||
60 | { "innerProd/", "toolbox/compiler/deploy/", "$TOOLBOXMATLABDIR/general/", | ||
61 | "$TOOLBOXMATLABDIR/ops/", "$TOOLBOXMATLABDIR/lang/", | ||
62 | "$TOOLBOXMATLABDIR/elmat/", "$TOOLBOXMATLABDIR/elfun/", | ||
63 | "$TOOLBOXMATLABDIR/specfun/", "$TOOLBOXMATLABDIR/matfun/", | ||
64 | "$TOOLBOXMATLABDIR/datafun/", "$TOOLBOXMATLABDIR/polyfun/", | ||
65 | "$TOOLBOXMATLABDIR/funfun/", "$TOOLBOXMATLABDIR/sparfun/", | ||
66 | "$TOOLBOXMATLABDIR/scribe/", "$TOOLBOXMATLABDIR/graph2d/", | ||
67 | "$TOOLBOXMATLABDIR/graph3d/", "$TOOLBOXMATLABDIR/specgraph/", | ||
68 | "$TOOLBOXMATLABDIR/graphics/", "$TOOLBOXMATLABDIR/uitools/", | ||
69 | "$TOOLBOXMATLABDIR/strfun/", "$TOOLBOXMATLABDIR/imagesci/", | ||
70 | "$TOOLBOXMATLABDIR/iofun/", "$TOOLBOXMATLABDIR/audiovideo/", | ||
71 | "$TOOLBOXMATLABDIR/timefun/", "$TOOLBOXMATLABDIR/datatypes/", | ||
72 | "$TOOLBOXMATLABDIR/verctrl/", "$TOOLBOXMATLABDIR/codetools/", | ||
73 | "$TOOLBOXMATLABDIR/helptools/", "$TOOLBOXMATLABDIR/demos/", | ||
74 | "$TOOLBOXMATLABDIR/timeseries/", "$TOOLBOXMATLABDIR/hds/", | ||
75 | "$TOOLBOXMATLABDIR/guide/", "$TOOLBOXMATLABDIR/plottools/", | ||
76 | "toolbox/local/", "toolbox/compiler/", "toolbox/database/database/" }; | ||
77 | |||
78 | static const char * MCC_innerProd_classpath_data[] = | ||
79 | { "java/jar/toolbox/database.jar" }; | ||
80 | |||
81 | static const char * MCC_innerProd_libpath_data[] = | ||
82 | { "" }; | ||
83 | |||
84 | static const char * MCC_innerProd_app_opts_data[] = | ||
85 | { "" }; | ||
86 | |||
87 | static const char * MCC_innerProd_run_opts_data[] = | ||
88 | { "" }; | ||
89 | |||
90 | static const char * MCC_innerProd_warning_state_data[] = | ||
91 | { "" }; | ||
92 | |||
93 | |||
94 | mclComponentData __MCC_innerProd_component_data = { | ||
95 | |||
96 | /* Public key data */ | ||
97 | __MCC_innerProd_public_key, | ||
98 | |||
99 | /* Component name */ | ||
100 | "innerProd", | ||
101 | |||
102 | /* Component Root */ | ||
103 | "", | ||
104 | |||
105 | /* Application key data */ | ||
106 | __MCC_innerProd_session_key, | ||
107 | |||
108 | /* Component's MATLAB Path */ | ||
109 | MCC_innerProd_matlabpath_data, | ||
110 | |||
111 | /* Number of directories in the MATLAB Path */ | ||
112 | 36, | ||
113 | |||
114 | /* Component's Java class path */ | ||
115 | MCC_innerProd_classpath_data, | ||
116 | /* Number of directories in the Java class path */ | ||
117 | 1, | ||
118 | |||
119 | /* Component's load library path (for extra shared libraries) */ | ||
120 | MCC_innerProd_libpath_data, | ||
121 | /* Number of directories in the load library path */ | ||
122 | 0, | ||
123 | |||
124 | /* MCR instance-specific runtime options */ | ||
125 | MCC_innerProd_app_opts_data, | ||
126 | /* Number of MCR instance-specific runtime options */ | ||
127 | 0, | ||
128 | |||
129 | /* MCR global runtime options */ | ||
130 | MCC_innerProd_run_opts_data, | ||
131 | /* Number of MCR global runtime options */ | ||
132 | 0, | ||
133 | |||
134 | /* Component preferences directory */ | ||
135 | "innerProd_EEEFF7AADF2C5D8569D4742763DAC0AB", | ||
136 | |||
137 | /* MCR warning status data */ | ||
138 | MCC_innerProd_warning_state_data, | ||
139 | /* Number of MCR warning status modifiers */ | ||
140 | 0, | ||
141 | |||
142 | /* Path to component - evaluated at runtime */ | ||
143 | NULL | ||
144 | |||
145 | }; | ||
146 | |||
147 | #ifdef __cplusplus | ||
148 | } | ||
149 | #endif | ||
150 | |||
151 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/MEX/mccExcludedFiles.log b/SD-VBS/benchmarks/texture_synthesis/src/MEX/mccExcludedFiles.log new file mode 100755 index 0000000..981940f --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/MEX/mccExcludedFiles.log | |||
@@ -0,0 +1,12 @@ | |||
1 | This file contains the list of various toolbox functions that are not | ||
2 | included in the CTF file. An error will be thrown if any of these functions | ||
3 | are called at run-time. Some of these functions may be from toolboxes | ||
4 | that you are not using in your application. The reason for this is that | ||
5 | these toolboxes have overloaded some methods that are called by your code. | ||
6 | If you know which toolboxes are being used by your code, you can use the -p | ||
7 | flag with the -N flag to list these toolboxes explicitly. This will | ||
8 | cause MATLAB Compiler to only look for functions in the specified toolbox | ||
9 | directories in addition to the MATLAB directories. Refer to the MCC | ||
10 | documentation for more information on this. | ||
11 | |||
12 | 0 item(s) excluded by M-file compilabilty rules. | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/c/script_texture_synthesis.c b/SD-VBS/benchmarks/texture_synthesis/src/c/script_texture_synthesis.c new file mode 100644 index 0000000..01ddefd --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/c/script_texture_synthesis.c | |||
@@ -0,0 +1,197 @@ | |||
1 | /******************************** | ||
2 | Author: Sravanthi Kota Venkata | ||
3 | ********************************/ | ||
4 | |||
5 | #include "texture.h" | ||
6 | #include <malloc.h> | ||
7 | #include "extra.h" | ||
8 | #define TEXTURE_MEM 1<<28 | ||
9 | int WIDTHin,HEIGHTin; | ||
10 | F2D *target, *result; | ||
11 | int WIDTH,HEIGHT; | ||
12 | int localx, localy,targetin=0; | ||
13 | int *atlas; | ||
14 | int *xloopin, *yloopin; | ||
15 | int *xloopout, *yloopout; | ||
16 | |||
17 | int main(int argc, char **argv) | ||
18 | { | ||
19 | SET_UP | ||
20 | mallopt(M_TOP_PAD, TEXTURE_MEM); | ||
21 | mallopt(M_MMAP_MAX, 0); | ||
22 | params* data; | ||
23 | I2D *im; | ||
24 | F2D* image; | ||
25 | data = malloc(sizeof(params)); | ||
26 | im = parse_flags(argc, argv); | ||
27 | image = fiDeepCopy(im); | ||
28 | init_params(data); | ||
29 | |||
30 | printf("start.\n"); | ||
31 | for_each_job{ | ||
32 | create_texture(image, data); | ||
33 | } | ||
34 | printf("end..\n"); | ||
35 | #ifdef CHECK | ||
36 | { | ||
37 | int ret=0; | ||
38 | #ifdef GENERATE_OUTPUT | ||
39 | fWriteMatrix(result, argv[1]); | ||
40 | #endif | ||
41 | ret = fSelfCheck(result, "expected_C.txt", 1.0); | ||
42 | if(ret < 0) | ||
43 | printf("Error in Texture Synthesis\n"); | ||
44 | } | ||
45 | #endif | ||
46 | iFreeHandle(im); | ||
47 | fFreeHandle(image); | ||
48 | free(data); | ||
49 | fFreeHandle(target); | ||
50 | fFreeHandle(result); | ||
51 | free(atlas); | ||
52 | WRITE_TO_FILE | ||
53 | return 0; | ||
54 | } | ||
55 | |||
56 | I2D* parse_flags(int argc, char ** argv) | ||
57 | { | ||
58 | int i, tsx,tsy; | ||
59 | I2D* image; | ||
60 | char fileNm[256]; | ||
61 | |||
62 | printf("Input image: "); | ||
63 | scanf("%s", fileNm); | ||
64 | image = readImage(fileNm); | ||
65 | WIDTHin = image->width; | ||
66 | HEIGHTin = image->height; | ||
67 | |||
68 | localx = 3; | ||
69 | localy = 3; | ||
70 | |||
71 | #ifdef test | ||
72 | WIDTH = WIDTHin*2; | ||
73 | HEIGHT = HEIGHTin*2; | ||
74 | localx = 2; | ||
75 | localy = 2; | ||
76 | #endif | ||
77 | #ifdef sim_fast | ||
78 | WIDTH = WIDTHin*2; | ||
79 | HEIGHT = HEIGHTin*2; | ||
80 | localx = 3; | ||
81 | localy = 3; | ||
82 | #endif | ||
83 | #ifdef sim | ||
84 | WIDTH = WIDTHin*3; | ||
85 | HEIGHT = HEIGHTin*3; | ||
86 | localx = 2; | ||
87 | localy = 2; | ||
88 | #endif | ||
89 | #ifdef sqcif | ||
90 | WIDTH = WIDTHin*6; | ||
91 | HEIGHT = HEIGHTin*6; | ||
92 | localx = 2; | ||
93 | localy = 2; | ||
94 | #endif | ||
95 | #ifdef qcif | ||
96 | WIDTH = WIDTHin*10; | ||
97 | HEIGHT = HEIGHTin*10; | ||
98 | localx = 2; | ||
99 | localy = 2; | ||
100 | #endif | ||
101 | #ifdef cif | ||
102 | WIDTH = WIDTHin*10; | ||
103 | HEIGHT = HEIGHTin*10; | ||
104 | localx = 3; | ||
105 | localy = 3; | ||
106 | #endif | ||
107 | #ifdef vga | ||
108 | WIDTH = WIDTHin*20; | ||
109 | HEIGHT = HEIGHTin*20; | ||
110 | localx = 3; | ||
111 | localy = 3; | ||
112 | #endif | ||
113 | #ifdef fullhd | ||
114 | WIDTH = WIDTHin*20; | ||
115 | HEIGHT = HEIGHTin*20; | ||
116 | localx = 15; | ||
117 | localy = 15; | ||
118 | #endif | ||
119 | #ifdef wuxga | ||
120 | WIDTH = WIDTHin*20; | ||
121 | HEIGHT = HEIGHTin*20; | ||
122 | localx = 5; | ||
123 | localy = 5; | ||
124 | #endif | ||
125 | printf("Input size\t\t- (%dx%d)\n", HEIGHTin, WIDTHin); | ||
126 | |||
127 | // xloopin = malloc(2*WIDTHin*sizeof(int)); | ||
128 | // yloopin = malloc(2*HEIGHTin*sizeof(int)); | ||
129 | // | ||
130 | // for(i=-WIDTHin/2;i<WIDTHin+WIDTHin/2;i++) | ||
131 | // { | ||
132 | // arrayref(xloopin,i+WIDTHin/2) = (WIDTHin+i)%WIDTHin; | ||
133 | // } | ||
134 | // | ||
135 | // for(i=-HEIGHTin/2;i<HEIGHTin+HEIGHTin/2;i++) | ||
136 | // { | ||
137 | // arrayref(yloopin,i+HEIGHTin/2) = (HEIGHTin+i)%HEIGHTin; | ||
138 | // } | ||
139 | // xloopin += WIDTHin/2; yloopin += HEIGHTin/2; | ||
140 | |||
141 | result = fMallocHandle(1,HEIGHT*WIDTH); | ||
142 | target = fMallocHandle(1, WIDTH*HEIGHT); | ||
143 | |||
144 | atlas = malloc(2*WIDTH*HEIGHT*sizeof(int)); | ||
145 | xloopout = malloc(2*WIDTH*sizeof(int)); | ||
146 | yloopout = malloc(2*HEIGHT*sizeof(int)); | ||
147 | |||
148 | for(i=-WIDTH/2;i<WIDTH+WIDTH/2;i++) | ||
149 | { | ||
150 | arrayref(xloopout,i+WIDTH/2) = (WIDTH+i)%WIDTH; | ||
151 | } | ||
152 | for(i=-HEIGHT/2;i<HEIGHT+HEIGHT/2;i++) | ||
153 | { | ||
154 | arrayref(yloopout,i+HEIGHT/2) = (HEIGHT+i)%HEIGHT; | ||
155 | } | ||
156 | xloopout += WIDTH/2; yloopout += HEIGHT/2; | ||
157 | |||
158 | if (result == NULL) | ||
159 | { | ||
160 | printf("Can't allocate %dx%d image. Exiting.\n",WIDTH,HEIGHT); | ||
161 | exit(1); | ||
162 | } | ||
163 | |||
164 | return image; | ||
165 | } | ||
166 | |||
167 | void init_params(params *data) | ||
168 | { | ||
169 | int i,j; | ||
170 | data->localx = localx; data->localy = localy; | ||
171 | data->widthin = WIDTHin; data->widthout = WIDTH; | ||
172 | data->heightin = HEIGHTin; data->heightout = HEIGHT; | ||
173 | |||
174 | |||
175 | if(!targetin) | ||
176 | { | ||
177 | for(i=0;i<data->heightout;i++) | ||
178 | { | ||
179 | for(j=0;j<data->widthout;j++) | ||
180 | { | ||
181 | asubsref(target,a(j,i,data->widthout)+R) = 1.0; | ||
182 | // asubsref(target,a(j,i,data->widthout)+G) = 1.0; | ||
183 | // asubsref(target,a(j,i,data->widthout)+B) = 1.0; | ||
184 | } | ||
185 | } | ||
186 | } | ||
187 | |||
188 | for(i=0;i<data->heightout;i++) | ||
189 | { | ||
190 | for(j=0;j<data->widthout;j++) | ||
191 | { | ||
192 | asubsref(result,a(j,i,data->widthout)+R) = 1.0; | ||
193 | // asubsref(result,a(j,i,data->widthout)+G) = 1.0; | ||
194 | // asubsref(result,a(j,i,data->widthout)+B) = 1.0; | ||
195 | } | ||
196 | } | ||
197 | } | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/c/texture.c b/SD-VBS/benchmarks/texture_synthesis/src/c/texture.c new file mode 100644 index 0000000..fb0f1ae --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/c/texture.c | |||
@@ -0,0 +1,396 @@ | |||
1 | /******************************** | ||
2 | Author: Sravanthi Kota Venkata | ||
3 | ********************************/ | ||
4 | |||
5 | #include "texture.h" | ||
6 | #include <math.h> | ||
7 | |||
8 | int vrstartx, vrfinishx, vrstarty, vrfinishy; | ||
9 | extern params data; | ||
10 | int* candlistx, *candlisty; | ||
11 | int *atlas; | ||
12 | int anotherpass=0,maxcand = 40; | ||
13 | F2D *target, *result; | ||
14 | int *xloopout, *yloopout; | ||
15 | int *xloopin, *yloopin; | ||
16 | |||
17 | double compare_rest(F2D *image,int x, int y, F2D *tar,int x1, int y1, params* data); | ||
18 | |||
19 | /********************************* | ||
20 | This is the main texture synthesis function. Called just once | ||
21 | from main to generate image from 'image' into 'result'. | ||
22 | Synthesis parameters (image and neighborhood sizes) are in global | ||
23 | 'data-> structure. | ||
24 | *********************************/ | ||
25 | |||
26 | //void create_texture(F2D *image, F2D *result, params *data) | ||
27 | void create_texture(F2D *image, params *data) | ||
28 | { | ||
29 | |||
30 | int i,j,k, ncand, bestx,besty; | ||
31 | double diff,curdiff; | ||
32 | int tsx,tsy; | ||
33 | srand48(1); | ||
34 | candlistx = (int*)malloc(sizeof(int)*(data->localx*(data->localy+1)+1)); | ||
35 | candlisty = (int*)malloc(sizeof(int)*(data->localx*(data->localy+1)+1)); | ||
36 | // if(!anotherpass) init(result, image,data); | ||
37 | if(!anotherpass) init(image,data); | ||
38 | |||
39 | for(i=0;i<data->heightout-data->localy/2;i++) | ||
40 | { | ||
41 | for(j=0;j<data->widthout;j++) | ||
42 | { | ||
43 | // First, create a list of candidates for particular pixel. | ||
44 | if(anotherpass) ncand = create_all_candidates(j,i, data); | ||
45 | else ncand = create_candidates(j,i, data); | ||
46 | |||
47 | // If there are multiple candidates, choose the best based on L_2 norm | ||
48 | |||
49 | if(ncand > 1) | ||
50 | { | ||
51 | diff = 1e10; | ||
52 | for(k=0;k<ncand;k++) | ||
53 | { | ||
54 | curdiff = compare_neighb(image, arrayref(candlistx,k),arrayref(candlisty,k),result,j,i, data); | ||
55 | curdiff += compare_rest(image,arrayref(candlistx,k),arrayref(candlisty,k),target,j,i,data); | ||
56 | if(curdiff < diff) | ||
57 | { | ||
58 | diff = curdiff; | ||
59 | bestx = arrayref(candlistx,k); | ||
60 | besty = arrayref(candlisty,k); | ||
61 | } | ||
62 | } | ||
63 | } | ||
64 | else | ||
65 | { | ||
66 | bestx = arrayref(candlistx,0); | ||
67 | besty = arrayref(candlisty,0); | ||
68 | } | ||
69 | |||
70 | // Copy the best candidate to the output image and record its position | ||
71 | // in the atlas (atlas is used to create candidates) | ||
72 | |||
73 | asubsref(result,a(j,i,data->widthout)+R) = asubsref(image,a(bestx,besty,data->widthin)+R); | ||
74 | // asubsref(result,a(j,i,data->widthout)+G) = asubsref(image,a(bestx,besty,data->widthin)+G); | ||
75 | // asubsref(result,a(j,i,data->widthout)+B) = asubsref(image,a(bestx,besty,data->widthin)+B); | ||
76 | arrayref(atlas,aa(j,i)) = bestx; | ||
77 | arrayref(atlas,aa(j,i)+1) = besty; | ||
78 | } | ||
79 | } | ||
80 | |||
81 | // Use full neighborhoods for the last few rows. This is a small | ||
82 | // fraction of total area - can be ignored for optimization purposes. | ||
83 | |||
84 | for(;i<data->heightout;i++) | ||
85 | { | ||
86 | for(j=0;j<data->widthout;j++) | ||
87 | { | ||
88 | ncand = create_all_candidates(j,i,data); | ||
89 | if(ncand > 1) | ||
90 | { | ||
91 | diff = 1e10; | ||
92 | for(k=0;k<ncand;k++) | ||
93 | { | ||
94 | curdiff = compare_full_neighb(image, arrayref(candlistx,k),arrayref(candlisty,k),result,j,i, data); | ||
95 | if(curdiff < diff) | ||
96 | { | ||
97 | diff = curdiff; | ||
98 | bestx = arrayref(candlistx,k); | ||
99 | besty = arrayref(candlisty,k); | ||
100 | } | ||
101 | } | ||
102 | } | ||
103 | else | ||
104 | { | ||
105 | bestx = arrayref(candlistx,0); | ||
106 | besty = arrayref(candlisty,0); | ||
107 | } | ||
108 | |||
109 | asubsref(result,a(j,i,data->widthout)+R) = asubsref(image,a(bestx,besty,data->widthin)+R); | ||
110 | // asubsref(result,a(j,i,data->widthout)+G) = asubsref(image,a(bestx,besty,data->widthin)+G); | ||
111 | // asubsref(result,a(j,i,data->widthout)+B) = asubsref(image,a(bestx,besty,data->widthin)+B); | ||
112 | arrayref(atlas,aa(j,i)) = bestx; | ||
113 | arrayref(atlas,aa(j,i)+1) = besty; | ||
114 | } | ||
115 | } | ||
116 | |||
117 | /********************************* | ||
118 | End of main texture synthesis loop | ||
119 | *********************************/ | ||
120 | |||
121 | for(i=0;i<data->localy/2;i++) | ||
122 | { | ||
123 | for(j=0;j<data->widthout;j++) | ||
124 | { | ||
125 | ncand = create_all_candidates(j,i,data); | ||
126 | if(ncand > 1) | ||
127 | { | ||
128 | diff = 1e10; | ||
129 | for(k=0;k<ncand;k++) | ||
130 | { | ||
131 | curdiff = compare_full_neighb(image,arrayref(candlistx,k),arrayref(candlisty,k),result,j,i, data); | ||
132 | if(curdiff < diff) | ||
133 | { | ||
134 | diff = curdiff; | ||
135 | bestx = arrayref(candlistx,k); | ||
136 | besty = arrayref(candlisty,k); | ||
137 | } | ||
138 | } | ||
139 | } | ||
140 | else | ||
141 | { | ||
142 | bestx = arrayref(candlistx,0); | ||
143 | besty = arrayref(candlisty,0); | ||
144 | } | ||
145 | |||
146 | asubsref(result,a(j,i,data->widthout)+R) = asubsref(image,a(bestx,besty,data->widthin)+R); | ||
147 | // asubsref(result,a(j,i,data->widthout)+G) = asubsref(image,a(bestx,besty,data->widthin)+G); | ||
148 | // asubsref(result,a(j,i,data->widthout)+B) = asubsref(image,a(bestx,besty,data->widthin)+B); | ||
149 | arrayref(atlas,aa(j,i)) = bestx; | ||
150 | arrayref(atlas,aa(j,i)+1) = besty; | ||
151 | } | ||
152 | } | ||
153 | } | ||
154 | |||
155 | // Creates a list of valid candidates for given pixel using only L-shaped causal area | ||
156 | |||
157 | int create_candidates(int x,int y, params* data) | ||
158 | { | ||
159 | int address,i,j,k,n = 0; | ||
160 | for(i=0;i<=data->localy/2;i++) | ||
161 | { | ||
162 | for(j=-data->localx/2;j<=data->localx/2;j++) | ||
163 | { | ||
164 | if(i==0 && j>=0) | ||
165 | continue; | ||
166 | address = aa( arrayref(xloopout,x+j), arrayref(yloopout,y-i) ); | ||
167 | arrayref(candlistx,n) = arrayref(atlas,address) - j; | ||
168 | arrayref(candlisty,n) = arrayref(atlas,address+1) + i; | ||
169 | |||
170 | if( arrayref(candlistx,n) >= vrfinishx || arrayref(candlistx,n) < vrstartx) | ||
171 | { | ||
172 | arrayref(candlistx,n) = vrstartx + (int)(drand48()*(vrfinishx-vrstartx)); | ||
173 | arrayref(candlisty,n) = vrstarty + (int)(drand48()*(vrfinishy-vrstarty)); | ||
174 | n++; | ||
175 | continue; | ||
176 | } | ||
177 | |||
178 | if( arrayref(candlisty,n) >= vrfinishy ) | ||
179 | { | ||
180 | arrayref(candlisty,n) = vrstarty + (int)(drand48()*(vrfinishy-vrstarty)); | ||
181 | arrayref(candlistx,n) = vrstartx + (int)(drand48()*(vrfinishx-vrstartx)); | ||
182 | n++; | ||
183 | continue; | ||
184 | } | ||
185 | |||
186 | for(k=0;k<n;k++) | ||
187 | { | ||
188 | if( arrayref(candlistx,n) == arrayref(candlistx,k) && arrayref(candlisty,n) == arrayref(candlisty,k)) | ||
189 | { | ||
190 | n--; | ||
191 | break; | ||
192 | } | ||
193 | } | ||
194 | n++; | ||
195 | } | ||
196 | } | ||
197 | |||
198 | return n; | ||
199 | } | ||
200 | |||
201 | // Created a list of candidates using the complete square around the pixel | ||
202 | |||
203 | int create_all_candidates(int x,int y, params* data) | ||
204 | { | ||
205 | int address,i,j,k,n = 0; | ||
206 | for(i=-data->localy/2;i<=data->localy/2;i++) | ||
207 | { | ||
208 | for(j=-data->localx/2;j<=data->localx/2;j++) | ||
209 | { | ||
210 | if(i==0 && j>=0) | ||
211 | continue; | ||
212 | // printf("Entering = (%d,%d)\n", i,j); | ||
213 | address = aa( arrayref(xloopout,x+j), arrayref(yloopout,y-i) ); | ||
214 | arrayref(candlistx,n) = arrayref(atlas,address)-j; | ||
215 | arrayref(candlisty,n) = arrayref(atlas,address+1)+i; | ||
216 | |||
217 | if( arrayref(candlistx,n) >= vrfinishx || arrayref(candlistx,n) < vrstartx) | ||
218 | { | ||
219 | arrayref(candlistx,n) = vrstartx + (int)(drand48()*(vrfinishx-vrstartx)); | ||
220 | arrayref(candlisty,n) = vrstarty + (int)(drand48()*(vrfinishy-vrstarty)); | ||
221 | n++; | ||
222 | // printf("1: (%d,%d)\t%d\n", i,j,n); | ||
223 | continue; | ||
224 | } | ||
225 | |||
226 | if( arrayref(candlisty,n) >= vrfinishy || arrayref(candlisty,n) < vrstarty) | ||
227 | { | ||
228 | arrayref(candlisty,n) = vrstarty + (int)(drand48()*(vrfinishy-vrstarty)); | ||
229 | arrayref(candlistx,n) = vrstartx + (int)(drand48()*(vrfinishx-vrstartx)); | ||
230 | n++; | ||
231 | // printf("2: (%d,%d)\t%d\n", i,j,n); | ||
232 | continue; | ||
233 | } | ||
234 | |||
235 | for(k=0;k<n;k++) | ||
236 | { | ||
237 | if( arrayref(candlistx,n) == arrayref(candlistx,k) && arrayref(candlisty,n) == arrayref(candlisty,k) ) | ||
238 | { | ||
239 | n--; | ||
240 | // printf("3: (%d,%d)\t%d\n", i,j,n); | ||
241 | break; | ||
242 | } | ||
243 | } | ||
244 | n++; | ||
245 | // printf("4: (%d,%d)\t%d\n", i,j,n); | ||
246 | } | ||
247 | } | ||
248 | |||
249 | return n; | ||
250 | } | ||
251 | |||
252 | // Initializes the output image and atlases to a random collection of pixels | ||
253 | |||
254 | //void init(F2D *result, F2D *image, params* data) | ||
255 | void init(F2D *image, params* data) | ||
256 | { | ||
257 | int i,j,tmpx,tmpy; | ||
258 | vrstartx = data->localx/2; vrstarty = data->localy/2; | ||
259 | vrfinishx = data->widthin-data->localx/2; | ||
260 | vrfinishy = data->heightin-data->localy/2; | ||
261 | for(i=0;i<data->heightout;i++) | ||
262 | { | ||
263 | for(j=0;j<data->widthout;j++) | ||
264 | { | ||
265 | if( | ||
266 | asubsref(target,a(j,i,data->widthout)+R) == 1.0 | ||
267 | // && asubsref(target,a(j,i,data->widthout)+G) == 1.0 | ||
268 | // && asubsref(target,a(j,i,data->widthout)+B) == 1.0 | ||
269 | ) | ||
270 | { | ||
271 | tmpx = vrstartx + (int)(drand48()*(vrfinishx-vrstartx)); | ||
272 | tmpy = vrstarty + (int)(drand48()*(vrfinishy-vrstarty)); | ||
273 | if(!anotherpass) | ||
274 | { | ||
275 | arrayref(atlas,aa(j,i)) = tmpx; | ||
276 | arrayref(atlas,aa(j,i)+1) = tmpy; | ||
277 | asubsref(result,a(j,i,data->widthout)+R) = asubsref(image,a(tmpx,tmpy,data->widthin)+R); | ||
278 | // asubsref(result,a(j,i,data->widthout)+G) = asubsref(image,a(tmpx,tmpy,data->widthin)+G); | ||
279 | // asubsref(result,a(j,i,data->widthout)+B) = asubsref(image,a(tmpx,tmpy,data->widthin)+B); | ||
280 | } | ||
281 | } | ||
282 | } | ||
283 | } | ||
284 | |||
285 | return; | ||
286 | } | ||
287 | |||
288 | |||
289 | // Compares two square neighborhoods, returns L_2 difference | ||
290 | |||
291 | double compare_full_neighb(F2D *image,int x, int y, F2D *image1,int x1, int y1, params* data) | ||
292 | { | ||
293 | double tmp,res = 0; | ||
294 | int i,j,addr,addr1; | ||
295 | for(i=-(data->localy/2);i<=data->localy/2;i++) | ||
296 | { | ||
297 | for(j=-(data->localx/2);j<=data->localx/2;j++) | ||
298 | { | ||
299 | if( !( i > 0 && y1 > data->localy && y1+i < data->heightout) ) | ||
300 | { | ||
301 | addr = a(x+j,y+i,data->widthin); | ||
302 | addr1 = a( arrayref(xloopout,x1+j), arrayref(yloopout,y1+i), data->widthout); | ||
303 | |||
304 | tmp = asubsref(image,addr+R) - asubsref(image1,addr1+R); | ||
305 | res += tmp*tmp; | ||
306 | // tmp = asubsref(image,addr+G) - asubsref(image1,addr1+G); | ||
307 | // res += tmp*tmp; | ||
308 | // tmp = asubsref(image,addr+B) - asubsref(image1,addr1+B); | ||
309 | // res += tmp*tmp; | ||
310 | } | ||
311 | } | ||
312 | } | ||
313 | |||
314 | return res; | ||
315 | } | ||
316 | |||
317 | // Compares two L-shaped neighborhoods, returns L_2 difference | ||
318 | |||
319 | double compare_neighb(F2D *image,int x, int y, F2D *image1,int x1, int y1, params* data) | ||
320 | { | ||
321 | double tmp,res = 0; | ||
322 | int i,j,addr1,addr; | ||
323 | for(i=-(data->localy/2);i<0;i++) | ||
324 | { | ||
325 | for(j=-(data->localx/2);j<=data->localx/2;j++) | ||
326 | { | ||
327 | addr = a(x+j,y+i,data->widthin); | ||
328 | addr1 = a( arrayref(xloopout,x1+j), arrayref(yloopout,y1+i), data->widthout); | ||
329 | |||
330 | tmp = asubsref(image,addr+R) - asubsref(image1,addr1+R); | ||
331 | res += tmp*tmp; | ||
332 | // tmp = asubsref(image,addr+G) - asubsref(image1,addr1+G); | ||
333 | // res += tmp*tmp; | ||
334 | // tmp = asubsref(image,addr+B) - asubsref(image1,addr1+B); | ||
335 | // res += tmp*tmp; | ||
336 | } | ||
337 | } | ||
338 | |||
339 | for(j=-(data->localx/2);j<0;j++) | ||
340 | { | ||
341 | addr = a(x+j,y,data->widthin); | ||
342 | addr1 = a( arrayref(xloopout,x1+j), y1, data->widthout); | ||
343 | |||
344 | tmp = asubsref(image,addr+R) - asubsref(image1,addr1+R); | ||
345 | res += tmp*tmp; | ||
346 | // tmp = asubsref(image,addr+G) - asubsref(image1,addr1+G); | ||
347 | // res += tmp*tmp; | ||
348 | // tmp = asubsref(image,addr+B) - asubsref(image1,addr1+B); | ||
349 | // res += tmp*tmp; | ||
350 | } | ||
351 | |||
352 | return res; | ||
353 | } | ||
354 | |||
355 | double compare_rest(F2D *image,int x, int y, F2D *tar,int x1, int y1, params* data) | ||
356 | { | ||
357 | double tmp,res = 0; | ||
358 | int i,j,addr,addr1; | ||
359 | |||
360 | for(i=(data->localy/2);i>0;i--) | ||
361 | { | ||
362 | for(j=-(data->localx/2);j<=data->localx/2;j++) | ||
363 | { | ||
364 | addr = a(x+j,y+i,data->widthin); | ||
365 | addr1 = a( arrayref(xloopout,x1+j), arrayref(yloopout,y1+i), data->widthout); | ||
366 | |||
367 | if( asubsref(tar,addr1+R) != 1.0) //KVS? | ||
368 | { | ||
369 | tmp = asubsref(image,addr+R) - asubsref(tar,addr1+R); | ||
370 | res += tmp*tmp; | ||
371 | // tmp = asubsref(image,addr+G) - asubsref(tar,addr1+G); | ||
372 | // res += tmp*tmp; | ||
373 | // tmp = asubsref(image,addr+B) - asubsref(tar,addr1+B); | ||
374 | // res += tmp*tmp; | ||
375 | } | ||
376 | } | ||
377 | } | ||
378 | |||
379 | for(j=(data->localx/2);j>0;j--) | ||
380 | { | ||
381 | addr = a(x+j,y,data->widthin); | ||
382 | addr1 = a( arrayref(xloopout,x1+j), y1, data->widthout); | ||
383 | if( asubsref(tar,addr1+R) != 1.0) // KVS? | ||
384 | { | ||
385 | tmp = asubsref(image,addr+R) - asubsref(tar,addr1+R); | ||
386 | res += tmp*tmp; | ||
387 | // tmp = asubsref(image,addr+G) - asubsref(tar,addr1+G); | ||
388 | // res += tmp*tmp; | ||
389 | // tmp = asubsref(image,addr+B) - asubsref(tar,addr1+B); | ||
390 | // res += tmp*tmp; | ||
391 | } | ||
392 | } | ||
393 | |||
394 | return res; | ||
395 | } | ||
396 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/c/texture.h b/SD-VBS/benchmarks/texture_synthesis/src/c/texture.h new file mode 100644 index 0000000..9819c03 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/c/texture.h | |||
@@ -0,0 +1,48 @@ | |||
1 | /******************************** | ||
2 | Author: Sravanthi Kota Venkata | ||
3 | ********************************/ | ||
4 | |||
5 | #ifndef _TEXTURE_ | ||
6 | #define _TEXTURE_ | ||
7 | |||
8 | #include "sdvbs_common.h" | ||
9 | |||
10 | #define R 0 | ||
11 | #define G 1 | ||
12 | #define B 2 | ||
13 | #define a(x,y,W) (1*((y)*(W)+(x))) | ||
14 | #define aa(x,y) (2*((y)*data->widthout+(x))) | ||
15 | |||
16 | typedef float pixelvalue; | ||
17 | |||
18 | typedef struct | ||
19 | { | ||
20 | double sign, diff; | ||
21 | int x,y; | ||
22 | int secondx, secondy; | ||
23 | }signature; | ||
24 | |||
25 | typedef struct{ | ||
26 | int localx, localy, localz; | ||
27 | int widthin, widthout; | ||
28 | int heightin, heightout; | ||
29 | int nfin, nfout; | ||
30 | }params; | ||
31 | |||
32 | void *SIGNATURES; | ||
33 | |||
34 | //void create_texture(F2D *image, F2D *result, params *data); | ||
35 | void create_texture(F2D *image, params *data); | ||
36 | I2D* parse_flags(int argc, char ** argv); | ||
37 | void init_params(params *data); | ||
38 | //void init(F2D *result, F2D *image, params* data); | ||
39 | void init(F2D *image, params* data); | ||
40 | double compare_full_neighb(F2D *image,int x, int y, F2D *image1,int x1, int y1, params* data); | ||
41 | double compare_neighb(F2D *image,int x, int y, F2D *image1,int x1, int y1, params* data); | ||
42 | int create_candidates(int x,int y, params* data); | ||
43 | int create_all_candidates(int x,int y, params* data); | ||
44 | |||
45 | #endif | ||
46 | |||
47 | |||
48 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/ChangeLog b/SD-VBS/benchmarks/texture_synthesis/src/matlab/ChangeLog new file mode 100755 index 0000000..f20c499 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/ChangeLog | |||
@@ -0,0 +1,430 @@ | |||
1 | Log of changes made to matlabPyrTools code | ||
2 | (important changes marked with **) | ||
3 | ----------------------------------------------------------------------- | ||
4 | 2004-10-14 Eero Simoncelli <eero@sesto.cns.nyu.edu> | ||
5 | |||
6 | * Made new tarfile (version 1.3) | ||
7 | |||
8 | * Incorporated complex-valued steerable pyramid code (buildSCFpyr, | ||
9 | buildSCFpyrLevs,reconSCFpyr) written by Javier Portilla in 9/97, | ||
10 | and used in our work on texture representation/synthesis | ||
11 | (Portilla&Simoncelli, Int'l Journal of Computer Vision, | ||
12 | 40(1):49-71, Dec 2000). | ||
13 | |||
14 | * Incorporated imGradient.m from personal code. | ||
15 | |||
16 | * reagan.pgm out. feynam.pgm in | ||
17 | |||
18 | 2004-03-20 Eero Simoncelli <eero@sesto.cns.nyu.edu> | ||
19 | |||
20 | * blur.m added (just calls blurDn and then upBlur). | ||
21 | |||
22 | 2003-08-06 Eero Simoncelli <eero@sesto.cns.nyu.edu> | ||
23 | |||
24 | * blurDn.m (filt): Forced correct scaling of filters in 1D | ||
25 | |||
26 | 2003-05-28 Eero Simoncelli <eero@ferrando.cns.nyu.edu> | ||
27 | |||
28 | * incorporated setPyrBand.m from local code | ||
29 | |||
30 | 2002-10-01 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
31 | |||
32 | * incorporated clip.m from local code | ||
33 | |||
34 | 2002-09-18 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
35 | |||
36 | * pointOp.m: Added the new 'extrap' option for matlab's interp1 to | ||
37 | make this m-file version more compatible with the mex version. | ||
38 | |||
39 | Wed Aug 28 2002 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
40 | |||
41 | * var2.m: now returns zero (instead of error) for matrix of size 1. | ||
42 | * function VECTORIZE renamed to VECTIFY, since it was colliding | ||
43 | with a function introduced in standard matlab. | ||
44 | |||
45 | Dec 27 2001 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
46 | |||
47 | * Modified calls to upConv in reconSpyr.m and reconSpyrLevs.m so | ||
48 | that the returned result is bound. Previously, had relied on the | ||
49 | MEX version of upConv to destructively modify the result array, | ||
50 | users had been getting errors because they were using the m-file | ||
51 | version of upConv. | ||
52 | |||
53 | Wed Sep 19 2001 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
54 | |||
55 | * buildSFpyrLevs/reconSFpyrLevs: replace use of "i" with sqrt(-1), to | ||
56 | avoid problems if user rebinds it! | ||
57 | |||
58 | Wed Mar 28 10:22:01 2001 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
59 | |||
60 | * Moved innerProd.m and all associated MEX files from the | ||
61 | matlabLocal source tree into matlabPyrTools. | ||
62 | * Added innerProd to Contents.m | ||
63 | * Updated/clarified WARNINGS in all *.m files that have MEX versions. | ||
64 | |||
65 | Tue Mar 27 11:21:53 2001 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
66 | |||
67 | * Incorporated Windows MEX files (*.dll) into MEX subdirectory. | ||
68 | Windows users should either copy these into the main directory, | ||
69 | or put the MEX subdirectory in their matlab path. | ||
70 | |||
71 | Fri Mar 23 14:46:16 2001 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
72 | |||
73 | * buildSFpyrLevs.m, reconSFpyrLevs.m: shift the raised-cosine | ||
74 | lookup table (Xrcos) instead of incrementing the log-radial image | ||
75 | (log_rad). THis is more efficient... | ||
76 | |||
77 | Fri Oct 1 19:37:03 1999 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
78 | |||
79 | * upConv.m: Did not return correct size result when STOP argument | ||
80 | was passed. Thanks to hertzman@mrl.nyu.edu for pointing this out. | ||
81 | |||
82 | Fri Sep 17 15:53:26 1999 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
83 | |||
84 | * buildSFpyrLevs.m: Changed lutsize to 1024, giving a slight | ||
85 | increase in accuracy. | ||
86 | |||
87 | Thu Feb 25 18:10:38 1999 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
88 | |||
89 | * histo1.m: Modified histo.m to be more compatible (but still not | ||
90 | exactly the same) as the MEX file version. | ||
91 | |||
92 | Fri Jun 12 21:15:39 1998 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
93 | |||
94 | * TUTORIALS pyramids.m upgraded. | ||
95 | |||
96 | Tue Feb 17 13:22:28 1998 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
97 | |||
98 | * showIm.m: Dims are now printed followed by the zoom factor. | ||
99 | |||
100 | Mon Oct 13 14:49:51 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
101 | |||
102 | * mkSquare.m: Modified to do raised-cosine soft threshold | ||
103 | transitions. | ||
104 | |||
105 | Tue Oct 7 10:13:51 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> | ||
106 | |||
107 | * upConv.m: Argument order was wrong (this function is not used | ||
108 | anyway, unless you don't compile the MEX code). - Thanks to | ||
109 | farid@psyche.mit.edu for pointing this out. | ||
110 | |||
111 | Thu Sep 25 16:09:49 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
112 | |||
113 | * MEX/wrap.c: Changed #include <malloc.h> to <stdlib.h>, as | ||
114 | suggested by David Brainard. * Incorporated Mac-compiled mex | ||
115 | files, courtesy of David Brainard. | ||
116 | |||
117 | Sat Sep 6 16:10:25 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> | ||
118 | |||
119 | * MEX/convolve.h: abstracted out type of images with typedef image_type. | ||
120 | Added ansi declarations. | ||
121 | |||
122 | Fri Aug 29 13:49:16 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
123 | |||
124 | ** showIm.m: Modified to behave better under resizing (and printing): | ||
125 | resets axis units to "normalized". | ||
126 | |||
127 | Thu Aug 28 22:56:52 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
128 | |||
129 | ** MEX/edges.c: reflect1, reflect2, repeat, extend upgraded to work | ||
130 | properly for non-symmetric filters. reflect2 and extend were also | ||
131 | broken for upConv. Added qreflect2 to handle even-length QMF's | ||
132 | which broke under the reflect2 modification. | ||
133 | * Added example code to TUTORIALS/matlabPyrTools to illustrate the | ||
134 | boundary-handling behavior... | ||
135 | |||
136 | Thu Aug 21 13:34:17 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> | ||
137 | |||
138 | * var2, skew2, kurt2: modified to return complex values for complex images. | ||
139 | * imStats.m: now gives an error for complex args. | ||
140 | |||
141 | Thu Aug 14 15:24:29 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
142 | |||
143 | * Modified shift.m: negated the meaning of the offset parameter, | ||
144 | such that RES=shift(MTX,OFFSET) means RES(POS)=MTX(POS-OFFSET) | ||
145 | (this is more intuitive). | ||
146 | |||
147 | Thu Jul 10 17:06:52 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
148 | |||
149 | * Modified MEX/Makefile-* to be consistent with matlab5: | ||
150 | - call mex instead of cmex | ||
151 | - use -V4 flag (creating matlab v4 compatible binaries) | ||
152 | |||
153 | * showIm.m (xlbl_offset): Modified to use "points" units, so that | ||
154 | printed images look correct. Still slightly busted for arbitrary figure | ||
155 | window sizes and for printing. | ||
156 | |||
157 | * Modified upConv.c: does not return ANYTHING if you pass a result | ||
158 | argument (this had been causing occasional problems with matlab's | ||
159 | memory manager). | ||
160 | |||
161 | Mon Jun 30 12:09:30 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
162 | |||
163 | * reconSFpyr.m (res): now returns real part (oops). | ||
164 | |||
165 | * reconSpyrLevs.m (maxLev): got rid of superfluous nbands argument | ||
166 | (can be calculated from bfilts). | ||
167 | |||
168 | Mon May 26 12:29:54 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
169 | |||
170 | * showIm.m/pgmWrite.m: Modified 'auto3'-scaling to use a | ||
171 | histogram. This gives a significant speedup. | ||
172 | |||
173 | * fixed a few minor bugs in the TUTORIALS, having to do with | ||
174 | matching image sizes to the machine speed... | ||
175 | |||
176 | Sat May 10 17:27:25 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
177 | |||
178 | * pgmWrite.m: fixed auto-scaling bug. Added new scaling | ||
179 | calculations, parallel to those of imShow. | ||
180 | |||
181 | Fri May 9 09:02:56 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
182 | |||
183 | * buildSFpyr.m: Changed NBANDS argument to be ORDER, which is one | ||
184 | less than the number of orientation bands. This is consistent | ||
185 | with the derivative order, and the labels on the spNFilters files. | ||
186 | |||
187 | Tue May 6 19:08:18 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
188 | |||
189 | ** Added buildSFpyr, reconSFpyr: Steerable pyramids constructed | ||
190 | in the Fourier domain. Radial functions tile, with a | ||
191 | raised-cosine falloff. Angular functions are | ||
192 | cos(theta-k\pi/(K+1))^K, where K is the order (number of bands | ||
193 | minus 1). Compared to the convolution version: | ||
194 | + Reconstruction is exact (within floating point errors) | ||
195 | + Can produce any number of orientation bands. | ||
196 | - Typically slower. | ||
197 | - Boundary-handling must be circular. | ||
198 | Could be made much more efficient by taking advantage of symmetries in | ||
199 | the fft! | ||
200 | |||
201 | * Added example usage of Fourier steerable pyramid to TUTORIALS/pyramids.m | ||
202 | |||
203 | * steer.m: fixed for harmonic lists including zero. | ||
204 | |||
205 | Sun May 4 15:16:10 1997 Eero Simoncelli <eero@ferrando.cns.nyu.edu> | ||
206 | |||
207 | * MEX/Makefile-linux: created. | ||
208 | |||
209 | * spyrHt, spyrNumBands: Modified to return 0 for pyramids of height 0. | ||
210 | |||
211 | * reconWpyr.m: utilize desctructive addition in calls to upConv. | ||
212 | |||
213 | * reconSpyr.m: Added error check to ensure consistancy between | ||
214 | pyramid and filter file. Utilize destructive addition in upConv | ||
215 | call on highpass band. Modified to work properly with pyramids of | ||
216 | height 0. | ||
217 | |||
218 | Mon Apr 28 13:38:10 1997 Eero Simoncelli <eero@ferrando.cns.nyu.edu> | ||
219 | |||
220 | * lplot.m: modified to handle complex vectors, use standard MatLab | ||
221 | indices, and show minimal axes. Added xrange parameter to allow | ||
222 | adjustment of X axis labeling. | ||
223 | |||
224 | Sun Apr 27 20:20:41 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
225 | |||
226 | * var2, skew2, kurt2: enhanced to work on complex matrices. | ||
227 | |||
228 | Sat Apr 26 11:16:12 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
229 | |||
230 | * Changed parent directory (and distribution) name: | ||
231 | matlabImTools -> matlabPyrTools | ||
232 | |||
233 | * namedFilter.m: Added two more Daubechies filters, and modified | ||
234 | names to match the reference (e.g., daub2 is now a 4-tap filter). | ||
235 | |||
236 | * Added vectorize.m: trivial function to pack matrix into vector (i.e., | ||
237 | computes mtx(:)). | ||
238 | |||
239 | * Added upBlur.m: Upsample and blur (parallels blurDn). | ||
240 | |||
241 | Sun Apr 13 14:23:38 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> | ||
242 | |||
243 | * TUTORIALS/pyramids.m: Added plots of Fourier spectra for Wavelet bases. | ||
244 | |||
245 | * make-tar-file: switched from compress to gzip for the | ||
246 | distribution tarfile. | ||
247 | |||
248 | * namedFilter.m: Added a few even-length QMF's from Johnston80. | ||
249 | |||
250 | Fri Apr 11 19:16:21 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> | ||
251 | |||
252 | * buildWpyr.m, reconWpyr.m: Modified slightly, so that subsampling | ||
253 | lattice is better for even-length filters. | ||
254 | |||
255 | * TUTORIALS/pyramids.m: Substantially overhauled. | ||
256 | |||
257 | Thu Apr 10 15:20:23 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> | ||
258 | |||
259 | * blurDn.m: added this function to downsample an image by a factor | ||
260 | 2^L. | ||
261 | |||
262 | * Fixed minor bug in upConv.m: errors in image size checking. | ||
263 | |||
264 | Mon Apr 7 13:25:37 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
265 | |||
266 | * Changed TUTORIALS/matlabImTools.m to use histo.mex instead of | ||
267 | matlab's hist. | ||
268 | |||
269 | Wed Apr 2 13:20:55 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
270 | |||
271 | ** Incorporated Denis Pelli's ThinkC and MetroWorks projects for | ||
272 | Macintosh versions of the MEX code, along with MEX binaries. These | ||
273 | are included as an HQX'ed self-extracting archive | ||
274 | (Macintosh-MEX.sit.hqx), in the MEX subdirectory. | ||
275 | |||
276 | Tue Apr 1 15:35:31 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> | ||
277 | |||
278 | * edges.c: modified by Denis Pelli to support THINK C. * edges.c: | ||
279 | |||
280 | * histo.c, upConv.c, corrDn.c: minor changes in error message | ||
281 | printouts, to work around bugs in THINK C. | ||
282 | |||
283 | * Included Denis Pelli's MacReadMe file in the MEX subdirectory, | ||
284 | which gives instructions for MEX file compilation on a MacIntosh | ||
285 | (PPC or 68k). | ||
286 | |||
287 | * wrap.c, convolve.c, edges.c: added explicit int function | ||
288 | declarations, and return values. | ||
289 | |||
290 | * range2.m/range2.c: A MEX function for fast min/max computation. | ||
291 | Adjusted entropy2.m, histo.m, imStats.m, pgmWrite.m, showIm.m, | ||
292 | showLpyr.m, showSpyr.m, showWpyr.m to call it. | ||
293 | |||
294 | Thu Mar 27 17:23:05 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
295 | |||
296 | ** histo.m/histo.c: Added MEX function HISTO, a fast replacement | ||
297 | for matlab's HIST function. Modified histoMatch.m, entropy2.m to | ||
298 | call it. | ||
299 | |||
300 | * Changed main directory name to matlabImTools. | ||
301 | |||
302 | * Added TUTORIALS/README file. | ||
303 | |||
304 | Wed Mar 19 14:19:51 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
305 | |||
306 | * Changed directory name: MEX_SRC -> MEX | ||
307 | |||
308 | Wed Mar 12 17:00:03 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
309 | |||
310 | * mkGaussian.m: fixed another (X,Y) bug: both dimensions and | ||
311 | cov/mean are now specified in [y,x] order. | ||
312 | |||
313 | Tue Mar 11 19:08:17 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> | ||
314 | |||
315 | * showSpyr.m: Fixed a bug that was dropping display of one | ||
316 | orientation band when there were more than 2 of them! | ||
317 | |||
318 | Mon Mar 10 19:08:24 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> | ||
319 | |||
320 | * Added shift.m | ||
321 | |||
322 | * makeSteerMtx -> steerDir2HarmMtx | ||
323 | |||
324 | * Added TUTORIALS/matlab-EPS.m: examples using the code in this | ||
325 | distribution. | ||
326 | |||
327 | Sun Mar 9 17:49:18 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
328 | |||
329 | ** showIm.m: | ||
330 | - args: changed order so that NSHADES is last. | ||
331 | - TITLES: Can now pass a string for IM, which will be evaluated | ||
332 | in the global environment to get the matrix. The string is | ||
333 | used as a title. MATLAB v.5 ONLY!!! | ||
334 | - Added 'auto3' RANGE value, that scales based on percentiles. | ||
335 | THis is more robust to outliers than 'auto2' or 'auto1'. | ||
336 | |||
337 | * pixelAxes.m: Made a more serious attempt to reverse-engineer | ||
338 | Mathworks' image pixelization. It is improved, but still makes | ||
339 | occasional errors. | ||
340 | |||
341 | * Added skew2.m. | ||
342 | |||
343 | Fri Mar 7 10:11:07 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
344 | |||
345 | * pixelAxes.m: Modified to take an optional | ||
346 | ZOOM argument. Fixed dimension ordering bug | ||
347 | (positions are reported (x,y), but mtx dims are (y,x)!) | ||
348 | |||
349 | * showIm.m: Added an optional ZOOM argument. | ||
350 | |||
351 | Thu Mar 6 14:17:19 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
352 | |||
353 | * Added showLpyr, showWpyr, showSpyr. Modified | ||
354 | TUTORIALS/pyramids.m to use them. | ||
355 | |||
356 | * added pixelAxes.m: Adjusts size (in pixels) of currently | ||
357 | displayed image to be a multiple of the matrix dimensions, | ||
358 | thus eliminating display aliasing artifacts. | ||
359 | This is now called by all the "show" commands. | ||
360 | |||
361 | Mon Mar 3 17:33:25 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
362 | |||
363 | * Fixed bug in pgmWrite (dimensions were written in reverse order). | ||
364 | |||
365 | * Fixed bug in showIm (X and Y coords were swapped on label display). | ||
366 | |||
367 | * Fixed bug in reconLpyr (swapped X and Y coords on int_sz) | ||
368 | |||
369 | * Changed calls to "reshape" to pass dimensions individually -- | ||
370 | older version of matlab do not accept the reshape(mtx,[y x]) form. | ||
371 | |||
372 | * Fixed bug in mkDisc: sz a scalar. | ||
373 | |||
374 | * Added ifftshift.m | ||
375 | |||
376 | Fri Feb 28 11:07:20 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
377 | |||
378 | * Re-worked TUTORIALS/pyramids.m | ||
379 | |||
380 | * buildGpyr and buildLpyr now use 1+maxPyrHt for default height. | ||
381 | |||
382 | * Fixed buildGpyr to work on 1D signals. | ||
383 | |||
384 | ** Gaussian/Laplacian/Wavelet pyramid build and recon functions: | ||
385 | - work properly with new corrDn/upConv. | ||
386 | - use separable convolutions | ||
387 | - use destructive modification ability of upConv (less memory | ||
388 | allocation) | ||
389 | |||
390 | * modulateFlipShift -> modulateFlip. | ||
391 | |||
392 | * added lpyrHt, wpyrHt, spyrHt to return number of levels in a pyramid. | ||
393 | |||
394 | Thu Feb 27 15:39:53 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
395 | |||
396 | * Changed angular coordinate systems to CLOCKWISE in mkRamp, | ||
397 | mkTheta, mkSine, mkSquare. This is unnatural for screen viewing, | ||
398 | but consistent with an origin in the upper left corner of the | ||
399 | image, which is the way one addresses the underlying matrix. | ||
400 | |||
401 | * mkSine and mkSquare can now take a frequency vector or the | ||
402 | period and direction args | ||
403 | |||
404 | Tue Feb 25 11:58:33 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
405 | |||
406 | ** Rewrote corrDn/upConv C routines: | ||
407 | - more efficient | ||
408 | - changed START parameters to have [1 1] origin, consistent with | ||
409 | matlab | ||
410 | - added STOP parameters | ||
411 | - upConv allows destructive modification of a result arg | ||
412 | - changed order of other params (sorry) | ||
413 | - wrote test file conv_test.m | ||
414 | * wrote zconv2.m | ||
415 | |||
416 | Wed Aug 19 20:39:15 1996 Eero Simoncelli (eero@tarpon.cis.upenn.edu) | ||
417 | |||
418 | ** Added "pointOp" function (MUCH faster than interp1). | ||
419 | ** Added "histoMatch" function. | ||
420 | |||
421 | Fri Aug 2 00:56:31 1996 Eero Simoncelli (eero@tarpon.cis.upenn.edu) | ||
422 | |||
423 | * Changed all function/file-names to be of the form "fooBar". * | ||
424 | Fixed entropy2.m (busted due to typo). | ||
425 | |||
426 | Original convolution code was written in Spring 1986, and comes from | ||
427 | OBVIUS (Object-Based Vision and Image Understanding System), an | ||
428 | interactive image-processing system written in Common Lisp (with calls | ||
429 | to C code). | ||
430 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/Contents.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/Contents.m new file mode 100755 index 0000000..d19f067 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/Contents.m | |||
@@ -0,0 +1,107 @@ | |||
1 | % Image and Multi-scale Pyramid Tools | ||
2 | % Version 1.3, October 2004. | ||
3 | % Created: Early Spring, 1996. Eero Simoncelli, eero.simoncelli@nyu.edu | ||
4 | % | ||
5 | % See README file for brief description. | ||
6 | % See ChangeLog file for latest modifications. | ||
7 | % See TUTORIALS subdirectory for demonstrations. | ||
8 | % Type "help <command-name>" for documentation on individual commands. | ||
9 | % ----------------------------------------------------------------- | ||
10 | % Synthetic Images (matrices): | ||
11 | % mkImpulse - Make an image containing an impulse. | ||
12 | % mkRamp - Make an image containing a ramp function. | ||
13 | % mkR - Make an image containing distance from the origin. | ||
14 | % mkAngle - Make an image containing angle about origin. | ||
15 | % mkDisc - Make an image containing a disk image. | ||
16 | % mkGaussian - Make an image containing a Gaussian function. | ||
17 | % mkZonePlate - Make an image containing a zone plate (cos(r^2)). | ||
18 | % mkAngularSine - Make an image containing an angular sine wave (pinwheel). | ||
19 | % mkSine - Make an image containing a sine grating. | ||
20 | % mkSquare - Make an image containing a square grating. | ||
21 | % mkFract - Make an image containing fractal (1/f) noise. | ||
22 | % | ||
23 | % Point Operations: | ||
24 | % clip - clip values to a range. | ||
25 | % pointOp - Lookup table (much faster than interp1) [MEX file] | ||
26 | % histo - Efficient histogram computation [MEX file] | ||
27 | % histoMatch - Modify matrix elements to match specified histogram stats. | ||
28 | % | ||
29 | % Convolution (first two are significantly faster): | ||
30 | % corrDn - Correlate & downsample with boundary-handling [MEX file] | ||
31 | % upConv - Upsample & convolve with boundary-handling [MEX file] | ||
32 | % blurDn - Blur and subsample a signal/image. | ||
33 | % upBlur - Upsample and blur a signal/image. | ||
34 | % blur - Multi-scale blurring, calls blurDn and then upBlur. | ||
35 | % cconv2 - Circular convolution. | ||
36 | % rconv2 - Convolution with reflected boundaries. | ||
37 | % zconv2 - Convolution assuming zeros beyond image boundaries. | ||
38 | % | ||
39 | % General pyramids: | ||
40 | % pyrLow - Access lowpass subband from (any type of) pyramid | ||
41 | % pyrBand - Access a subband from (any type of) pyramid | ||
42 | % setPyrBand - Insert an image into (any type of) pyramid as a subband | ||
43 | % pyrBandIndices - Returns indices for given band in a pyramid vector | ||
44 | % maxPyrHt - compute maximum number of scales in a pyramid | ||
45 | % | ||
46 | % Gaussian/Laplacian Pyramids: | ||
47 | % buildGpyr - Build a Gaussian pyramid of an input signal/image. | ||
48 | % buildLpyr - Build a Laplacian pyramid of an input signal/image. | ||
49 | % reconLpyr - Reconstruct (invert) the Laplacian pyramid transform. | ||
50 | % | ||
51 | % Separable orthonormal QMF/wavelet Pyramids: | ||
52 | % buildWpyr - Build a separable wavelet representation of an input signal/image. | ||
53 | % reconWpyr - Reconstruct (invert) the wavelet transform. | ||
54 | % wpyrBand - Extract a single band of the wavelet representation. | ||
55 | % wpyrLev - Extract (packed) subbands at a particular level | ||
56 | % wpyrHt - Number of levels (height) of a wavelet pyramid. | ||
57 | % | ||
58 | % Steerable Pyramids: | ||
59 | % buildSpyr - Build a steerable pyramid representation of an input image. | ||
60 | % reconSpyr - Reconstruct (invert) the steerable pyramid transform. | ||
61 | % buildSFpyr - Build a steerable pyramid representation in the Fourier domain. | ||
62 | % reconSFpyr - Reconstruct (invert) the (Fourier domain) steerable pyramid transform. | ||
63 | % spyrBand - Extract a single band from a steerable pyramid. | ||
64 | % spyrHigh - Highpass residual band. | ||
65 | % spyrLev - A whole level (i.e., all images at a given scale) of a steerable pyramid. | ||
66 | % spyrHt - Number of levels (height) of a steerable pyramid. | ||
67 | % spyrNumBands - Number of orientation bands in a steerable pyramid. | ||
68 | % | ||
69 | % Steerable filters / derivatives: | ||
70 | % imGradient - Compute gradient of image using directionally accurete filters. | ||
71 | % steer - Steer filters (or responses). | ||
72 | % steer2HarmMtx - Construct a matrix mapping direcional basis to angular harmonics. | ||
73 | % | ||
74 | % Filters: | ||
75 | % binomialFilter - returns a filter of binomial coefficients. | ||
76 | % namedFilter - some typical Laplacian/Wavelet pyramid filters | ||
77 | % spNFilters - Set of Nth order steerable pyramid filters. | ||
78 | % derivNFiltersS - Matched set of S-tap 1D derivatives, orders 0 to N. | ||
79 | % | ||
80 | % Display: | ||
81 | % showIm - Display a matrix (real or complex) as grayscale image(s). | ||
82 | % Displays dimensions, subsampling, and range of pixel values. | ||
83 | % showLpyr - Display a Laplacian pyramid. | ||
84 | % showWpyr - Display a separable wavelet pyramid. | ||
85 | % showSpyr - Display a steerable pyramid. | ||
86 | % lplot - "lollipop" plot. | ||
87 | % nextFig - Make next figure window current. | ||
88 | % pixelAxes - Make image display use an integer number of pixels | ||
89 | % per sample to avoid resampling artifacts. | ||
90 | % | ||
91 | % Statistics (for 2D Matrices): | ||
92 | % range2 - Min and max of image (matrix) [MEX file] | ||
93 | % mean2 - Sample mean of an image (matrix). | ||
94 | % var2 - Sample variance of an image (matrix). | ||
95 | % skew2 - Sample skew (3rd moment / variance^1.5) of an image (matrix). | ||
96 | % kurt2 - Sample kurtosis (4th moment / variance^2) of an image (matrix). | ||
97 | % entropy2 - Sample entropy of an image (matrix). | ||
98 | % imStats - Report sample statistics of an image, or pair of images. | ||
99 | % | ||
100 | % Miscellaneous: | ||
101 | % pgmRead - Load a "pgm" image into a MatLab matrix [try einstein.pgm,feynman.pgm] | ||
102 | % pgmWrite - Write a MatLab matrix to a "pgm" image file. | ||
103 | % shift - circular shift a 2D matrix by an arbitrary amount. | ||
104 | % vectify - pack matrix into column vector (i.e., function to compute mtx(:)). | ||
105 | % ifftshift - inverse of MatLab's FFTSHIFT (differs for odd-length dimensions) | ||
106 | % rcosFn - return a lookup table of a raised-cosine threshold fn. | ||
107 | % innerProd - Compute M'*M efficiently (i.e., do not copy) [MEX file] | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/-MacReadMe b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/-MacReadMe new file mode 100755 index 0000000..898dc0c --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/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/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/.AppleDouble/.Parent b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/.AppleDouble/.Parent new file mode 100755 index 0000000..f242a99 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/.AppleDouble/.Parent | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/.FBCIndex b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/.FBCIndex new file mode 100755 index 0000000..848736b --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/.FBCIndex | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/.FBCLockFolder/.FBCSemaphoreFile b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/.FBCLockFolder/.FBCSemaphoreFile new file mode 100755 index 0000000..ab2c684 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/.FBCLockFolder/.FBCSemaphoreFile | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/Makefile-linux b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/Makefile-linux new file mode 100755 index 0000000..726dd31 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/Makefile-linux | |||
@@ -0,0 +1,39 @@ | |||
1 | MLAB = /usr/local/matlab5.1 | ||
2 | |||
3 | MXSFX = mexlx | ||
4 | MEX = ${MLAB}/bin/mex | ||
5 | |||
6 | MFLAGS = -V4 | ||
7 | INC = -I ${MLAB}/extern/include | ||
8 | LIB = -L ${MLAB}/extern/lib | ||
9 | |||
10 | CC = gcc -Wall -pedantic | ||
11 | C_OPTIMIZE_SWITCH = -O2 ## For GCC | ||
12 | CFLAGS = ${C_OPTIMIZE_SWITCH} ${INC} ${LIB} | ||
13 | |||
14 | all: corrDn.${MXSFX} upConv.${MXSFX} pointOp.${MXSFX} \ | ||
15 | histo.${MXSFX} range2.${MXSFX} | ||
16 | |||
17 | clean: | ||
18 | /bin/rm *.o | ||
19 | |||
20 | corrDn.${MXSFX}: corrDn.o wrap.o convolve.o edges.o | ||
21 | ${MEX} ${MFLAGS} corrDn.o wrap.o convolve.o edges.o | ||
22 | |||
23 | upConv.${MXSFX}: upConv.o wrap.o convolve.o edges.o | ||
24 | ${MEX} ${MFLAGS} upConv.o wrap.o convolve.o edges.o | ||
25 | |||
26 | pointOp.${MXSFX}: pointOp.o | ||
27 | ${MEX} ${MFLAGS} pointOp.o | ||
28 | |||
29 | histo.${MXSFX}: histo.o | ||
30 | ${MEX} ${MFLAGS} histo.o | ||
31 | |||
32 | range2.${MXSFX}: range2.o | ||
33 | ${MEX} ${MFLAGS} range2.o | ||
34 | |||
35 | convolve.o wrap.o edges.o: convolve.h | ||
36 | |||
37 | %.o : %.c | ||
38 | ${CC} -c ${CFLAGS} $< | ||
39 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/Makefile-ml6-linux b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/Makefile-ml6-linux new file mode 100755 index 0000000..f596ad7 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/Makefile-ml6-linux | |||
@@ -0,0 +1,39 @@ | |||
1 | MLAB = /usr/local/matlab6.0 | ||
2 | |||
3 | MXSFX = mexglx | ||
4 | MEX = ${MLAB}/bin/mex | ||
5 | |||
6 | MFLAGS = -V4 | ||
7 | INC = -I ${MLAB}/extern/include | ||
8 | LIB = -L ${MLAB}/extern/lib | ||
9 | |||
10 | CC = gcc -Wall -pedantic | ||
11 | C_OPTIMIZE_SWITCH = -O2 ## For GCC | ||
12 | CFLAGS = ${C_OPTIMIZE_SWITCH} ${INC} ${LIB} | ||
13 | |||
14 | all: corrDn.${MXSFX} upConv.${MXSFX} pointOp.${MXSFX} \ | ||
15 | histo.${MXSFX} range2.${MXSFX} | ||
16 | |||
17 | clean: | ||
18 | /bin/rm *.o | ||
19 | |||
20 | corrDn.${MXSFX}: corrDn.o wrap.o convolve.o edges.o | ||
21 | ${MEX} ${MFLAGS} corrDn.o wrap.o convolve.o edges.o | ||
22 | |||
23 | upConv.${MXSFX}: upConv.o wrap.o convolve.o edges.o | ||
24 | ${MEX} ${MFLAGS} upConv.o wrap.o convolve.o edges.o | ||
25 | |||
26 | pointOp.${MXSFX}: pointOp.o | ||
27 | ${MEX} ${MFLAGS} pointOp.o | ||
28 | |||
29 | histo.${MXSFX}: histo.o | ||
30 | ${MEX} ${MFLAGS} histo.o | ||
31 | |||
32 | range2.${MXSFX}: range2.o | ||
33 | ${MEX} ${MFLAGS} range2.o | ||
34 | |||
35 | convolve.o wrap.o edges.o: convolve.h | ||
36 | |||
37 | %.o : %.c | ||
38 | ${CC} -c ${CFLAGS} $< | ||
39 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/Makefile-osx b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/Makefile-osx new file mode 100755 index 0000000..352d15b --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/Makefile-osx | |||
@@ -0,0 +1,39 @@ | |||
1 | MLAB = /share/wotan/matlab13 | ||
2 | |||
3 | MXSFX = mexosx | ||
4 | MEX = ${MLAB}/bin/mex | ||
5 | |||
6 | MFLAGS = | ||
7 | INC = -I ${MLAB}/extern/include | ||
8 | LIB = -L ${MLAB}/extern/lib | ||
9 | |||
10 | CC = cc -Wall -pedantic -no-cpp-precomp | ||
11 | C_OPTIMIZE_SWITCH = -O2 ## For GCC | ||
12 | CFLAGS = ${C_OPTIMIZE_SWITCH} ${INC} ${LIB} | ||
13 | |||
14 | all: corrDn.${MXSFX} upConv.${MXSFX} pointOp.${MXSFX} \ | ||
15 | histo.${MXSFX} range2.${MXSFX} | ||
16 | |||
17 | clean: | ||
18 | /bin/rm *.o | ||
19 | |||
20 | corrDn.${MXSFX}: corrDn.o wrap.o convolve.o edges.o | ||
21 | ${MEX} ${MFLAGS} corrDn.o wrap.o convolve.o edges.o | ||
22 | |||
23 | upConv.${MXSFX}: upConv.o wrap.o convolve.o edges.o | ||
24 | ${MEX} ${MFLAGS} upConv.o wrap.o convolve.o edges.o | ||
25 | |||
26 | pointOp.${MXSFX}: pointOp.o | ||
27 | ${MEX} ${MFLAGS} pointOp.o | ||
28 | |||
29 | histo.${MXSFX}: histo.o | ||
30 | ${MEX} ${MFLAGS} histo.o | ||
31 | |||
32 | range2.${MXSFX}: range2.o | ||
33 | ${MEX} ${MFLAGS} range2.o | ||
34 | |||
35 | convolve.o wrap.o edges.o: convolve.h | ||
36 | |||
37 | %.o : %.c | ||
38 | ${CC} -c ${CFLAGS} $< | ||
39 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/Makefile-solaris b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/Makefile-solaris new file mode 100755 index 0000000..2be2bdb --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/Makefile-solaris | |||
@@ -0,0 +1,38 @@ | |||
1 | MLAB = /export/home/Solaris2/matlab5.1 | ||
2 | |||
3 | MXSFX = mexsol | ||
4 | MEX = ${MLAB}/bin/mex | ||
5 | |||
6 | MFLAGS = -V4 | ||
7 | INC = -I ${MLAB}/extern/include | ||
8 | LIB = -L ${MLAB}/extern/lib | ||
9 | |||
10 | CC = gcc -Wall -pedantic | ||
11 | C_OPTIMIZE_SWITCH = -O2 ## For GCC | ||
12 | CFLAGS = ${C_OPTIMIZE_SWITCH} ${INC} ${LIB} | ||
13 | |||
14 | all: corrDn.${MXSFX} upConv.${MXSFX} pointOp.${MXSFX} \ | ||
15 | histo.${MXSFX} range2.${MXSFX} | ||
16 | |||
17 | clean: | ||
18 | /bin/rm *.o | ||
19 | |||
20 | corrDn.${MXSFX}: corrDn.o wrap.o convolve.o edges.o | ||
21 | ${MEX} ${MFLAGS} corrDn.o wrap.o convolve.o edges.o | ||
22 | |||
23 | upConv.${MXSFX}: upConv.o wrap.o convolve.o edges.o | ||
24 | ${MEX} ${MFLAGS} upConv.o wrap.o convolve.o edges.o | ||
25 | |||
26 | pointOp.${MXSFX}: pointOp.o | ||
27 | ${MEX} ${MFLAGS} pointOp.o | ||
28 | |||
29 | histo.${MXSFX}: histo.o | ||
30 | ${MEX} ${MFLAGS} histo.o | ||
31 | |||
32 | range2.${MXSFX}: range2.o | ||
33 | ${MEX} ${MFLAGS} range2.o | ||
34 | |||
35 | convolve.o wrap.o edges.o: convolve.h | ||
36 | |||
37 | %.o : %.c | ||
38 | ${CC} -c ${CFLAGS} $< | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/Makefile-sun4 b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/Makefile-sun4 new file mode 100755 index 0000000..432b181 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/Makefile-sun4 | |||
@@ -0,0 +1,39 @@ | |||
1 | MLAB = /home/alberich/matlab4 | ||
2 | |||
3 | MXSFX = mex4 | ||
4 | MEX = ${MLAB}/bin/cmex | ||
5 | |||
6 | MFLAGS = | ||
7 | INC = -I ${MLAB}/extern/include | ||
8 | LIB = -L ${MLAB}/extern/lib/sun4 | ||
9 | |||
10 | CC = gcc | ||
11 | C_OPTIMIZE_SWITCH = -O2 ## For GCC | ||
12 | CFLAGS = ${C_OPTIMIZE_SWITCH} ${INC} ${LIB} | ||
13 | |||
14 | all: corrDn.${MXSFX} upConv.${MXSFX} pointOp.${MXSFX} \ | ||
15 | histo.${MXSFX} range2.${MXSFX} | ||
16 | |||
17 | clean: | ||
18 | /bin/rm *.o | ||
19 | |||
20 | corrDn.${MXSFX}: corrDn.o wrap.o convolve.o edges.o | ||
21 | ${MEX} ${MFLAGS} corrDn.o wrap.o convolve.o edges.o | ||
22 | |||
23 | upConv.${MXSFX}: upConv.o wrap.o convolve.o edges.o | ||
24 | ${MEX} ${MFLAGS} upConv.o wrap.o convolve.o edges.o | ||
25 | |||
26 | pointOp.${MXSFX}: pointOp.o | ||
27 | ${MEX} ${MFLAGS} pointOp.o | ||
28 | |||
29 | histo.${MXSFX}: histo.o | ||
30 | ${MEX} ${MFLAGS} histo.o | ||
31 | |||
32 | range2.${MXSFX}: range2.o | ||
33 | ${MEX} ${MFLAGS} range2.o | ||
34 | |||
35 | convolve.o wrap.o edges.o: convolve.h | ||
36 | |||
37 | %.o : %.c | ||
38 | ${CC} -c ${CFLAGS} $< | ||
39 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/convolve.c b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/convolve.c new file mode 100755 index 0000000..60a11a4 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/convolve.c | |||
@@ -0,0 +1,325 @@ | |||
1 | /* | ||
2 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
3 | ;;; File: convolve.c | ||
4 | ;;; Author: Eero Simoncelli | ||
5 | ;;; Description: General convolution code for 2D images | ||
6 | ;;; Creation Date: Spring, 1987. | ||
7 | ;;; MODIFICATIONS: | ||
8 | ;;; 10/89: approximately optimized the choice of register vars on SPARCS. | ||
9 | ;;; 6/96: Switched array types to double float. | ||
10 | ;;; 2/97: made more robust and readable. Added STOP arguments. | ||
11 | ;;; 8/97: Bug: when calling internal_reduce with edges in {reflect1,repeat, | ||
12 | ;;; extend} and an even filter dimension. Solution: embed the filter | ||
13 | ;;; in the upper-left corner of a filter with odd Y and X dimensions. | ||
14 | ;;; ---------------------------------------------------------------- | ||
15 | ;;; Object-Based Vision and Image Understanding System (OBVIUS), | ||
16 | ;;; Copyright 1988, Vision Science Group, Media Laboratory, | ||
17 | ;;; Massachusetts Institute of Technology. | ||
18 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
19 | */ | ||
20 | |||
21 | #include <stdio.h> | ||
22 | #include <math.h> | ||
23 | #include "convolve.h" | ||
24 | |||
25 | /* | ||
26 | -------------------------------------------------------------------- | ||
27 | Correlate FILT with IMAGE, subsampling according to START, STEP, and | ||
28 | STOP parameters, with values placed into RESULT array. RESULT | ||
29 | dimensions should be ceil((stop-start)/step). TEMP should be a | ||
30 | pointer to a temporary double array the size of the filter. | ||
31 | EDGES is a string specifying how to handle boundaries -- see edges.c. | ||
32 | The convolution is done in 9 sections, where the border sections use | ||
33 | specially computed edge-handling filters (see edges.c). The origin | ||
34 | of the filter is assumed to be (floor(x_fdim/2), floor(y_fdim/2)). | ||
35 | ------------------------------------------------------------------------ */ | ||
36 | |||
37 | /* abstract out the inner product computation */ | ||
38 | #define INPROD(XCNR,YCNR) \ | ||
39 | { \ | ||
40 | sum=0.0; \ | ||
41 | for (im_pos=YCNR*x_dim+XCNR, filt_pos=0, x_filt_stop=x_fdim; \ | ||
42 | x_filt_stop<=filt_size; \ | ||
43 | im_pos+=(x_dim-x_fdim), x_filt_stop+=x_fdim) \ | ||
44 | for (; \ | ||
45 | filt_pos<x_filt_stop; \ | ||
46 | filt_pos++, im_pos++) \ | ||
47 | sum+= image[im_pos]*temp[filt_pos]; \ | ||
48 | result[res_pos] = sum; \ | ||
49 | } | ||
50 | |||
51 | int internal_reduce(image, x_dim, y_dim, filt, temp, x_fdim, y_fdim, | ||
52 | x_start, x_step, x_stop, y_start, y_step, y_stop, | ||
53 | result, edges) | ||
54 | register image_type *image, *temp; | ||
55 | register int x_fdim, x_dim; | ||
56 | register image_type *result; | ||
57 | register int x_step, y_step; | ||
58 | int x_start, y_start; | ||
59 | int x_stop, y_stop; | ||
60 | image_type *filt; | ||
61 | int y_dim, y_fdim; | ||
62 | char *edges; | ||
63 | { | ||
64 | register double sum; | ||
65 | register int filt_pos, im_pos, x_filt_stop; | ||
66 | register int x_pos, filt_size = x_fdim*y_fdim; | ||
67 | register int y_pos, res_pos; | ||
68 | register int y_ctr_stop = y_dim - ((y_fdim==1)?0:y_fdim); | ||
69 | register int x_ctr_stop = x_dim - ((x_fdim==1)?0:x_fdim); | ||
70 | register int x_res_dim = (x_stop-x_start+x_step-1)/x_step; | ||
71 | int x_ctr_start = ((x_fdim==1)?0:1); | ||
72 | int y_ctr_start = ((y_fdim==1)?0:1); | ||
73 | int x_fmid = x_fdim/2; | ||
74 | int y_fmid = y_fdim/2; | ||
75 | int base_res_pos; | ||
76 | fptr reflect = edge_function(edges); /* look up edge-handling function */ | ||
77 | |||
78 | if (!reflect) return(-1); | ||
79 | |||
80 | /* shift start/stop coords to filter upper left hand corner */ | ||
81 | x_start -= x_fmid; y_start -= y_fmid; | ||
82 | x_stop -= x_fmid; y_stop -= y_fmid; | ||
83 | |||
84 | if (x_stop < x_ctr_stop) x_ctr_stop = x_stop; | ||
85 | if (y_stop < y_ctr_stop) y_ctr_stop = y_stop; | ||
86 | |||
87 | for (res_pos=0, y_pos=y_start; /* TOP ROWS */ | ||
88 | y_pos<y_ctr_start; | ||
89 | y_pos+=y_step) | ||
90 | { | ||
91 | for (x_pos=x_start; /* TOP-LEFT CORNER */ | ||
92 | x_pos<x_ctr_start; | ||
93 | x_pos+=x_step, res_pos++) | ||
94 | { | ||
95 | (*reflect)(filt,x_fdim,y_fdim,x_pos-1,y_pos-1,temp,REDUCE); | ||
96 | INPROD(0,0) | ||
97 | } | ||
98 | |||
99 | (*reflect)(filt,x_fdim,y_fdim,0,y_pos-1,temp,REDUCE); | ||
100 | for (; /* TOP EDGE */ | ||
101 | x_pos<x_ctr_stop; | ||
102 | x_pos+=x_step, res_pos++) | ||
103 | INPROD(x_pos,0) | ||
104 | |||
105 | for (; /* TOP-RIGHT CORNER */ | ||
106 | x_pos<x_stop; | ||
107 | x_pos+=x_step, res_pos++) | ||
108 | { | ||
109 | (*reflect)(filt,x_fdim,y_fdim,x_pos-x_ctr_stop+1,y_pos-1,temp,REDUCE); | ||
110 | INPROD(x_ctr_stop,0) | ||
111 | } | ||
112 | } /* end TOP ROWS */ | ||
113 | |||
114 | y_ctr_start = y_pos; /* hold location of top */ | ||
115 | for (base_res_pos=res_pos, x_pos=x_start; /* LEFT EDGE */ | ||
116 | x_pos<x_ctr_start; | ||
117 | x_pos+=x_step, base_res_pos++) | ||
118 | { | ||
119 | (*reflect)(filt,x_fdim,y_fdim,x_pos-1,0,temp,REDUCE); | ||
120 | for (y_pos=y_ctr_start, res_pos=base_res_pos; | ||
121 | y_pos<y_ctr_stop; | ||
122 | y_pos+=y_step, res_pos+=x_res_dim) | ||
123 | INPROD(0,y_pos) | ||
124 | } | ||
125 | |||
126 | (*reflect)(filt,x_fdim,y_fdim,0,0,temp,REDUCE); | ||
127 | for (; /* CENTER */ | ||
128 | x_pos<x_ctr_stop; | ||
129 | x_pos+=x_step, base_res_pos++) | ||
130 | for (y_pos=y_ctr_start, res_pos=base_res_pos; | ||
131 | y_pos<y_ctr_stop; | ||
132 | y_pos+=y_step, res_pos+=x_res_dim) | ||
133 | INPROD(x_pos,y_pos) | ||
134 | |||
135 | for (; /* RIGHT EDGE */ | ||
136 | x_pos<x_stop; | ||
137 | x_pos+=x_step, base_res_pos++) | ||
138 | { | ||
139 | (*reflect)(filt,x_fdim,y_fdim,x_pos-x_ctr_stop+1,0,temp,REDUCE); | ||
140 | for (y_pos=y_ctr_start, res_pos=base_res_pos; | ||
141 | y_pos<y_ctr_stop; | ||
142 | y_pos+=y_step, res_pos+=x_res_dim) | ||
143 | INPROD(x_ctr_stop,y_pos) | ||
144 | } | ||
145 | |||
146 | for (res_pos-=(x_res_dim-1); | ||
147 | y_pos<y_stop; /* BOTTOM ROWS */ | ||
148 | y_pos+=y_step) | ||
149 | { | ||
150 | for (x_pos=x_start; /* BOTTOM-LEFT CORNER */ | ||
151 | x_pos<x_ctr_start; | ||
152 | x_pos+=x_step, res_pos++) | ||
153 | { | ||
154 | (*reflect)(filt,x_fdim,y_fdim,x_pos-1,y_pos-y_ctr_stop+1,temp,REDUCE); | ||
155 | INPROD(0,y_ctr_stop) | ||
156 | } | ||
157 | |||
158 | (*reflect)(filt,x_fdim,y_fdim,0,y_pos-y_ctr_stop+1,temp,REDUCE); | ||
159 | for (; /* BOTTOM EDGE */ | ||
160 | x_pos<x_ctr_stop; | ||
161 | x_pos+=x_step, res_pos++) | ||
162 | INPROD(x_pos,y_ctr_stop) | ||
163 | |||
164 | for (; /* BOTTOM-RIGHT CORNER */ | ||
165 | x_pos<x_stop; | ||
166 | x_pos+=x_step, res_pos++) | ||
167 | { | ||
168 | (*reflect)(filt,x_fdim,y_fdim,x_pos-x_ctr_stop+1,y_pos-y_ctr_stop+1,temp,REDUCE); | ||
169 | INPROD(x_ctr_stop,y_ctr_stop) | ||
170 | } | ||
171 | } /* end BOTTOM */ | ||
172 | return(0); | ||
173 | } /* end of internal_reduce */ | ||
174 | |||
175 | |||
176 | /* | ||
177 | -------------------------------------------------------------------- | ||
178 | Upsample IMAGE according to START,STEP, and STOP parameters and then | ||
179 | convolve with FILT, adding values into RESULT array. IMAGE | ||
180 | dimensions should be ceil((stop-start)/step). See | ||
181 | description of internal_reduce (above). | ||
182 | |||
183 | WARNING: this subroutine destructively modifies the RESULT array! | ||
184 | ------------------------------------------------------------------------ */ | ||
185 | |||
186 | /* abstract out the inner product computation */ | ||
187 | #define INPROD2(XCNR,YCNR) \ | ||
188 | { \ | ||
189 | val = image[im_pos]; \ | ||
190 | for (res_pos=YCNR*x_dim+XCNR, filt_pos=0, x_filt_stop=x_fdim; \ | ||
191 | x_filt_stop<=filt_size; \ | ||
192 | res_pos+=(x_dim-x_fdim), x_filt_stop+=x_fdim) \ | ||
193 | for (; \ | ||
194 | filt_pos<x_filt_stop; \ | ||
195 | filt_pos++, res_pos++) \ | ||
196 | result[res_pos] += val*temp[filt_pos]; \ | ||
197 | } | ||
198 | |||
199 | int internal_expand(image,filt,temp,x_fdim,y_fdim, | ||
200 | x_start,x_step,x_stop,y_start,y_step,y_stop, | ||
201 | result,x_dim,y_dim,edges) | ||
202 | register image_type *result, *temp; | ||
203 | register int x_fdim, x_dim; | ||
204 | register int x_step, y_step; | ||
205 | register image_type *image; | ||
206 | int x_start, y_start; | ||
207 | image_type *filt; | ||
208 | int y_fdim, y_dim; | ||
209 | char *edges; | ||
210 | { | ||
211 | register double val; | ||
212 | register int filt_pos, res_pos, x_filt_stop; | ||
213 | register int x_pos, filt_size = x_fdim*y_fdim; | ||
214 | register int y_pos, im_pos; | ||
215 | register int x_ctr_stop = x_dim - ((x_fdim==1)?0:x_fdim); | ||
216 | int y_ctr_stop = (y_dim - ((y_fdim==1)?0:y_fdim)); | ||
217 | int x_ctr_start = ((x_fdim==1)?0:1); | ||
218 | int y_ctr_start = ((y_fdim==1)?0:1); | ||
219 | int x_fmid = x_fdim/2; | ||
220 | int y_fmid = y_fdim/2; | ||
221 | int base_im_pos, x_im_dim = (x_stop-x_start+x_step-1)/x_step; | ||
222 | fptr reflect = edge_function(edges); /* look up edge-handling function */ | ||
223 | |||
224 | if (!reflect) return(-1); | ||
225 | |||
226 | /* shift start/stop coords to filter upper left hand corner */ | ||
227 | x_start -= x_fmid; y_start -= y_fmid; | ||
228 | x_stop -= x_fmid; y_stop -= y_fmid; | ||
229 | |||
230 | if (x_stop < x_ctr_stop) x_ctr_stop = x_stop; | ||
231 | if (y_stop < y_ctr_stop) y_ctr_stop = y_stop; | ||
232 | |||
233 | for (im_pos=0, y_pos=y_start; /* TOP ROWS */ | ||
234 | y_pos<y_ctr_start; | ||
235 | y_pos+=y_step) | ||
236 | { | ||
237 | for (x_pos=x_start; /* TOP-LEFT CORNER */ | ||
238 | x_pos<x_ctr_start; | ||
239 | x_pos+=x_step, im_pos++) | ||
240 | { | ||
241 | (*reflect)(filt,x_fdim,y_fdim,x_pos-1,y_pos-1,temp,EXPAND); | ||
242 | INPROD2(0,0) | ||
243 | } | ||
244 | |||
245 | (*reflect)(filt,x_fdim,y_fdim,0,y_pos-1,temp,EXPAND); | ||
246 | for (; /* TOP EDGE */ | ||
247 | x_pos<x_ctr_stop; | ||
248 | x_pos+=x_step, im_pos++) | ||
249 | INPROD2(x_pos,0) | ||
250 | |||
251 | for (; /* TOP-RIGHT CORNER */ | ||
252 | x_pos<x_stop; | ||
253 | x_pos+=x_step, im_pos++) | ||
254 | { | ||
255 | (*reflect)(filt,x_fdim,y_fdim,x_pos-x_ctr_stop+1,y_pos-1,temp,EXPAND); | ||
256 | INPROD2(x_ctr_stop,0) | ||
257 | } | ||
258 | } /* end TOP ROWS */ | ||
259 | |||
260 | y_ctr_start = y_pos; /* hold location of top */ | ||
261 | for (base_im_pos=im_pos, x_pos=x_start; /* LEFT EDGE */ | ||
262 | x_pos<x_ctr_start; | ||
263 | x_pos+=x_step, base_im_pos++) | ||
264 | { | ||
265 | (*reflect)(filt,x_fdim,y_fdim,x_pos-1,0,temp,EXPAND); | ||
266 | for (y_pos=y_ctr_start, im_pos=base_im_pos; | ||
267 | y_pos<y_ctr_stop; | ||
268 | y_pos+=y_step, im_pos+=x_im_dim) | ||
269 | INPROD2(0,y_pos) | ||
270 | } | ||
271 | |||
272 | (*reflect)(filt,x_fdim,y_fdim,0,0,temp,EXPAND); | ||
273 | for (; /* CENTER */ | ||
274 | x_pos<x_ctr_stop; | ||
275 | x_pos+=x_step, base_im_pos++) | ||
276 | for (y_pos=y_ctr_start, im_pos=base_im_pos; | ||
277 | y_pos<y_ctr_stop; | ||
278 | y_pos+=y_step, im_pos+=x_im_dim) | ||
279 | INPROD2(x_pos,y_pos) | ||
280 | |||
281 | for (; /* RIGHT EDGE */ | ||
282 | x_pos<x_stop; | ||
283 | x_pos+=x_step, base_im_pos++) | ||
284 | { | ||
285 | (*reflect)(filt,x_fdim,y_fdim,x_pos-x_ctr_stop+1,0,temp,EXPAND); | ||
286 | for (y_pos=y_ctr_start, im_pos=base_im_pos; | ||
287 | y_pos<y_ctr_stop; | ||
288 | y_pos+=y_step, im_pos+=x_im_dim) | ||
289 | INPROD2(x_ctr_stop,y_pos) | ||
290 | } | ||
291 | |||
292 | for (im_pos-=(x_im_dim-1); | ||
293 | y_pos<y_stop; /* BOTTOM ROWS */ | ||
294 | y_pos+=y_step) | ||
295 | { | ||
296 | for (x_pos=x_start; /* BOTTOM-LEFT CORNER */ | ||
297 | x_pos<x_ctr_start; | ||
298 | x_pos+=x_step, im_pos++) | ||
299 | { | ||
300 | (*reflect)(filt,x_fdim,y_fdim,x_pos-1,y_pos-y_ctr_stop+1,temp,EXPAND); | ||
301 | INPROD2(0,y_ctr_stop) | ||
302 | } | ||
303 | |||
304 | (*reflect)(filt,x_fdim,y_fdim,0,y_pos-y_ctr_stop+1,temp,EXPAND); | ||
305 | for (; /* BOTTOM EDGE */ | ||
306 | x_pos<x_ctr_stop; | ||
307 | x_pos+=x_step, im_pos++) | ||
308 | INPROD2(x_pos,y_ctr_stop) | ||
309 | |||
310 | for (; /* BOTTOM-RIGHT CORNER */ | ||
311 | x_pos<x_stop; | ||
312 | x_pos+=x_step, im_pos++) | ||
313 | { | ||
314 | (*reflect)(filt,x_fdim,y_fdim,x_pos-x_ctr_stop+1,y_pos-y_ctr_stop+1,temp,EXPAND); | ||
315 | INPROD2(x_ctr_stop,y_ctr_stop) | ||
316 | } | ||
317 | } /* end BOTTOM */ | ||
318 | return(0); | ||
319 | } /* end of internal_expand */ | ||
320 | |||
321 | |||
322 | /* Local Variables: */ | ||
323 | /* buffer-read-only: t */ | ||
324 | /* End: */ | ||
325 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/convolve.h b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/convolve.h new file mode 100755 index 0000000..48d55f7 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/convolve.h | |||
@@ -0,0 +1,55 @@ | |||
1 | /* | ||
2 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
3 | ;;; File: convolve.h | ||
4 | ;;; Author: Simoncelli | ||
5 | ;;; Description: Header file for convolve.c | ||
6 | ;;; Creation Date: | ||
7 | ;;; ---------------------------------------------------------------- | ||
8 | ;;; Object-Based Vision and Image Understanding System (OBVIUS), | ||
9 | ;;; Copyright 1988, Vision Science Group, Media Laboratory, | ||
10 | ;;; Massachusetts Institute of Technology. | ||
11 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
12 | */ | ||
13 | |||
14 | #include <stdio.h> | ||
15 | #include <stdlib.h> | ||
16 | |||
17 | #define ABS(x) (((x)>=0) ? (x) : (-(x))) | ||
18 | #define ROOT2 1.4142135623730951 | ||
19 | #define REDUCE 0 | ||
20 | #define EXPAND 1 | ||
21 | #define IS == | ||
22 | #define ISNT != | ||
23 | #define AND && | ||
24 | #define OR || | ||
25 | |||
26 | typedef int (*fptr)(); | ||
27 | |||
28 | typedef struct | ||
29 | { | ||
30 | char *name; | ||
31 | fptr func; | ||
32 | } EDGE_HANDLER; | ||
33 | |||
34 | typedef double image_type; | ||
35 | |||
36 | fptr edge_function(char *edges); | ||
37 | int internal_reduce(image_type *image, int x_idim, int y_idim, | ||
38 | image_type *filt, image_type *temp, int x_fdim, int y_fdim, | ||
39 | int x_start, int x_step, int x_stop, | ||
40 | int y_start, int y_step, int y_stop, | ||
41 | image_type *result, char *edges); | ||
42 | int internal_expand(image_type *image, | ||
43 | image_type *filt, image_type *temp, int x_fdim, int y_fdim, | ||
44 | int x_start, int x_step, int x_stop, | ||
45 | int y_start, int y_step, int y_stop, | ||
46 | image_type *result, int x_rdim, int y_rdim, char *edges); | ||
47 | int internal_wrap_reduce(image_type *image, int x_idim, int y_idim, | ||
48 | image_type *filt, int x_fdim, int y_fdim, | ||
49 | int x_start, int x_step, int x_stop, | ||
50 | int y_start, int y_step, int y_stop, | ||
51 | image_type *result); | ||
52 | int internal_wrap_expand(image_type *image, image_type *filt, int x_fdim, int y_fdim, | ||
53 | int x_start, int x_step, int x_stop, | ||
54 | int y_start, int y_step, int y_stop, | ||
55 | image_type *result, int x_rdim, int y_rdim); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/convolve.mexglx b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/convolve.mexglx new file mode 100755 index 0000000..2dea157 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/convolve.mexglx | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/corrDn.c b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/corrDn.c new file mode 100755 index 0000000..c74df1f --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/corrDn.c | |||
@@ -0,0 +1,145 @@ | |||
1 | /* | ||
2 | RES = corrDn(IM, FILT, EDGES, STEP, START, STOP); | ||
3 | >>> See corrDn.m for documentation <<< | ||
4 | This is a matlab interface to the internal_reduce function. | ||
5 | EPS, 7/96. | ||
6 | */ | ||
7 | |||
8 | #define V4_COMPAT | ||
9 | #include <matrix.h> /* Matlab matrices */ | ||
10 | #include <mex.h> | ||
11 | |||
12 | #include "convolve.h" | ||
13 | |||
14 | #define notDblMtx(it) (!mxIsNumeric(it) || !mxIsDouble(it) || mxIsSparse(it) || mxIsComplex(it)) | ||
15 | |||
16 | void mexFunction(int nlhs, /* Num return vals on lhs */ | ||
17 | mxArray *plhs[], /* Matrices on lhs */ | ||
18 | int nrhs, /* Num args on rhs */ | ||
19 | const mxArray *prhs[] /* Matrices on rhs */ | ||
20 | ) | ||
21 | { | ||
22 | double *image,*filt, *temp, *result; | ||
23 | int x_fdim, y_fdim, x_idim, y_idim; | ||
24 | int x_rdim, y_rdim; | ||
25 | int x_start = 1; | ||
26 | int x_step = 1; | ||
27 | int y_start = 1; | ||
28 | int y_step = 1; | ||
29 | int x_stop, y_stop; | ||
30 | mxArray *arg; | ||
31 | double *mxMat; | ||
32 | char edges[15] = "reflect1"; | ||
33 | |||
34 | if (nrhs<2) mexErrMsgTxt("requres at least 2 args."); | ||
35 | |||
36 | /* ARG 1: IMAGE */ | ||
37 | arg = prhs[0]; | ||
38 | if notDblMtx(arg) mexErrMsgTxt("IMAGE arg must be a non-sparse double float matrix."); | ||
39 | image = mxGetPr(arg); | ||
40 | x_idim = (int) mxGetM(arg); /* X is inner index! */ | ||
41 | y_idim = (int) mxGetN(arg); | ||
42 | |||
43 | /* ARG 2: FILTER */ | ||
44 | arg = prhs[1]; | ||
45 | if notDblMtx(arg) mexErrMsgTxt("FILTER arg must be non-sparse double float matrix."); | ||
46 | filt = mxGetPr(arg); | ||
47 | x_fdim = (int) mxGetM(arg); | ||
48 | y_fdim = (int) mxGetN(arg); | ||
49 | |||
50 | if ((x_fdim > x_idim) || (y_fdim > y_idim)) | ||
51 | { | ||
52 | mexPrintf("Filter: [%d %d], Image: [%d %d]\n",x_fdim,y_fdim,x_idim,y_idim); | ||
53 | mexErrMsgTxt("FILTER dimensions larger than IMAGE dimensions."); | ||
54 | } | ||
55 | |||
56 | /* ARG 3 (optional): EDGES */ | ||
57 | if (nrhs>2) | ||
58 | { | ||
59 | if (!mxIsChar(prhs[2])) | ||
60 | mexErrMsgTxt("EDGES arg must be a string."); | ||
61 | mxGetString(prhs[2],edges,15); | ||
62 | } | ||
63 | |||
64 | /* ARG 4 (optional): STEP */ | ||
65 | if (nrhs>3) | ||
66 | { | ||
67 | arg = prhs[3]; | ||
68 | if notDblMtx(arg) mexErrMsgTxt("STEP arg must be a double float matrix."); | ||
69 | if (mxGetM(arg) * mxGetN(arg) != 2) | ||
70 | mexErrMsgTxt("STEP arg must contain two elements."); | ||
71 | mxMat = mxGetPr(arg); | ||
72 | x_step = (int) mxMat[0]; | ||
73 | y_step = (int) mxMat[1]; | ||
74 | if ((x_step<1) || (y_step<1)) | ||
75 | mexErrMsgTxt("STEP values must be greater than zero."); | ||
76 | } | ||
77 | |||
78 | /* ARG 5 (optional): START */ | ||
79 | if (nrhs>4) | ||
80 | { | ||
81 | arg = prhs[4]; | ||
82 | if notDblMtx(arg) mexErrMsgTxt("START arg must be a double float matrix."); | ||
83 | if (mxGetM(arg) * mxGetN(arg) != 2) | ||
84 | mexErrMsgTxt("START arg must contain two elements."); | ||
85 | mxMat = mxGetPr(arg); | ||
86 | x_start = (int) mxMat[0]; | ||
87 | y_start = (int) mxMat[1]; | ||
88 | if ((x_start<1) || (x_start>x_idim) || | ||
89 | (y_start<1) || (y_start>y_idim)) | ||
90 | mexErrMsgTxt("START values must lie between 1 and the image dimensions."); | ||
91 | } | ||
92 | x_start--; /* convert from Matlab to standard C indexes */ | ||
93 | y_start--; | ||
94 | |||
95 | /* ARG 6 (optional): STOP */ | ||
96 | if (nrhs>5) | ||
97 | { | ||
98 | if notDblMtx(prhs[5]) mexErrMsgTxt("STOP arg must be double float matrix."); | ||
99 | if (mxGetM(prhs[5]) * mxGetN(prhs[5]) != 2) | ||
100 | mexErrMsgTxt("STOP arg must contain two elements."); | ||
101 | mxMat = mxGetPr(prhs[5]); | ||
102 | x_stop = (int) mxMat[0]; | ||
103 | y_stop = (int) mxMat[1]; | ||
104 | if ((x_stop<x_start) || (x_stop>x_idim) || | ||
105 | (y_stop<y_start) || (y_stop>y_idim)) | ||
106 | mexErrMsgTxt("STOP values must lie between START and the image dimensions."); | ||
107 | } | ||
108 | else | ||
109 | { | ||
110 | x_stop = x_idim; | ||
111 | y_stop = y_idim; | ||
112 | } | ||
113 | |||
114 | x_rdim = (x_stop-x_start+x_step-1) / x_step; | ||
115 | y_rdim = (y_stop-y_start+y_step-1) / y_step; | ||
116 | |||
117 | /* mxFreeMatrix(plhs[0]); */ | ||
118 | plhs[0] = (mxArray *) mxCreateDoubleMatrix(x_rdim,y_rdim,mxREAL); | ||
119 | if (plhs[0] == NULL) mexErrMsgTxt("Cannot allocate result matrix"); | ||
120 | result = mxGetPr(plhs[0]); | ||
121 | |||
122 | temp = mxCalloc(x_fdim*y_fdim, sizeof(double)); | ||
123 | if (temp == NULL) | ||
124 | mexErrMsgTxt("Cannot allocate necessary temporary space"); | ||
125 | |||
126 | /* | ||
127 | printf("i(%d, %d), f(%d, %d), r(%d, %d), X(%d, %d, %d), Y(%d, %d, %d), %s\n", | ||
128 | x_idim,y_idim,x_fdim,y_fdim,x_rdim,y_rdim, | ||
129 | x_start,x_step,x_stop,y_start,y_step,y_stop,edges); | ||
130 | */ | ||
131 | |||
132 | if (strcmp(edges,"circular") == 0) | ||
133 | internal_wrap_reduce(image, x_idim, y_idim, filt, x_fdim, y_fdim, | ||
134 | x_start, x_step, x_stop, y_start, y_step, y_stop, | ||
135 | result); | ||
136 | else internal_reduce(image, x_idim, y_idim, filt, temp, x_fdim, y_fdim, | ||
137 | x_start, x_step, x_stop, y_start, y_step, y_stop, | ||
138 | result, edges); | ||
139 | |||
140 | mxFree((char *) temp); | ||
141 | return; | ||
142 | } | ||
143 | |||
144 | |||
145 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/edges.c b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/edges.c new file mode 100755 index 0000000..98b377d --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/edges.c | |||
@@ -0,0 +1,647 @@ | |||
1 | /* | ||
2 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
3 | ;;; File: edges.c | ||
4 | ;;; Author: Eero Simoncelli | ||
5 | ;;; Description: Boundary handling routines for use with convolve.c | ||
6 | ;;; Creation Date: Spring 1987. | ||
7 | ;;; MODIFIED, 6/96, to operate on double float arrays. | ||
8 | ;;; MODIFIED by dgp, 4/1/97, to support THINK C. | ||
9 | ;;; MODIFIED, 8/97: reflect1, reflect2, repeat, extend upgraded to | ||
10 | ;;; work properly for non-symmetric filters. Added qreflect2 to handle | ||
11 | ;;; even-length QMF's which broke under the reflect2 modification. | ||
12 | ;;; ---------------------------------------------------------------- | ||
13 | ;;; Object-Based Vision and Image Understanding System (OBVIUS), | ||
14 | ;;; Copyright 1988, Vision Science Group, Media Laboratory, | ||
15 | ;;; Massachusetts Institute of Technology. | ||
16 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
17 | */ | ||
18 | |||
19 | /* This file contains functions which determine how edges are to be | ||
20 | handled when performing convolutions of images with linear filters. | ||
21 | Any edge handling function which is local and linear may be defined, | ||
22 | except (unfortunately) constants cannot be added. So to treat the | ||
23 | edges as if the image is surrounded by a gray field, you must paste it | ||
24 | into a gray image, convolve, and crop it out... The main convolution | ||
25 | functions are called internal_reduce and internal_expand and are | ||
26 | defined in the file convolve.c. The idea is that the convolution | ||
27 | function calls the edge handling function which computes a new filter | ||
28 | based on the old filter and the distance to the edge of the image. | ||
29 | For example, reflection is done by reflecting the filter through the | ||
30 | appropriate axis and summing. Currently defined functions are listed | ||
31 | below. | ||
32 | */ | ||
33 | |||
34 | |||
35 | #include <stdio.h> | ||
36 | #include <math.h> | ||
37 | #include <string.h> | ||
38 | #include "convolve.h" | ||
39 | |||
40 | #define sgn(a) ( ((a)>0)?1:(((a)<0)?-1:0) ) | ||
41 | #define clip(a,mn,mx) ( ((a)<(mn))?(mn):(((a)>=(mx))?(mx-1):(a)) ) | ||
42 | |||
43 | int reflect1(), reflect2(), qreflect2(), repeat(), zero(), Extend(), nocompute(); | ||
44 | int ereflect(), predict(); | ||
45 | |||
46 | /* Lookup table matching a descriptive string to the edge-handling function */ | ||
47 | #if !THINK_C | ||
48 | static EDGE_HANDLER edge_foos[] = | ||
49 | { | ||
50 | { "dont-compute", nocompute }, /* zero output for filter touching edge */ | ||
51 | { "zero", zero }, /* zero outside of image */ | ||
52 | { "repeat", repeat }, /* repeat edge pixel */ | ||
53 | { "reflect1", reflect1 }, /* reflect about edge pixels */ | ||
54 | { "reflect2", reflect2 }, /* reflect image, including edge pixels */ | ||
55 | { "qreflect2", qreflect2 }, /* reflect image, including edge pixels | ||
56 | for even-length QMF decompositions */ | ||
57 | { "extend", Extend }, /* extend (reflect & invert) */ | ||
58 | { "ereflect", ereflect }, /* orthogonal QMF reflection */ | ||
59 | }; | ||
60 | #else | ||
61 | /* | ||
62 | This is really stupid, but THINK C won't allow initialization of static variables in | ||
63 | a code resource with string addresses. So we do it this way. | ||
64 | The 68K code for a MATLAB 4 MEX file can only be created by THINK C. | ||
65 | However, for MATLAB 5, we'll be able to use Metrowerks CodeWarrior for both 68K and PPC, so this | ||
66 | cludge can be dropped when we drop support for MATLAB 4. | ||
67 | Denis Pelli, 4/1/97. | ||
68 | */ | ||
69 | static EDGE_HANDLER edge_foos[8]; | ||
70 | |||
71 | void InitializeTable(EDGE_HANDLER edge_foos[]) | ||
72 | { | ||
73 | static int i=0; | ||
74 | |||
75 | if(i>0) return; | ||
76 | edge_foos[i].name="dont-compute"; | ||
77 | edge_foos[i++].func=nocompute; | ||
78 | edge_foos[i].name="zero"; | ||
79 | edge_foos[i++].func=zero; | ||
80 | edge_foos[i].name="repeat"; | ||
81 | edge_foos[i++].func=repeat; | ||
82 | edge_foos[i].name="reflect1"; | ||
83 | edge_foos[i++].func=reflect1; | ||
84 | edge_foos[i].name="reflect2"; | ||
85 | edge_foos[i++].func=reflect2; | ||
86 | edge_foos[i].name="qreflect2"; | ||
87 | edge_foos[i++].func=qreflect2; | ||
88 | edge_foos[i].name="extend"; | ||
89 | edge_foos[i++].func=Extend; | ||
90 | edge_foos[i].name="ereflect"; | ||
91 | edge_foos[i++].func=ereflect; | ||
92 | } | ||
93 | #endif | ||
94 | |||
95 | /* | ||
96 | Function looks up an edge handler id string in the structure above, and | ||
97 | returns the associated function | ||
98 | */ | ||
99 | fptr edge_function(char *edges) | ||
100 | { | ||
101 | int i; | ||
102 | |||
103 | #if THINK_C | ||
104 | InitializeTable(edge_foos); | ||
105 | #endif | ||
106 | for (i = 0; i<sizeof(edge_foos)/sizeof(EDGE_HANDLER); i++) | ||
107 | if (strcmp(edges,edge_foos[i].name) IS 0) | ||
108 | return(edge_foos[i].func); | ||
109 | printf("Error: '%s' is not the name of a valid edge-handler!\n",edges); | ||
110 | for (i=0; i<sizeof(edge_foos)/sizeof(EDGE_HANDLER); i++) | ||
111 | { | ||
112 | if (i IS 0) printf(" Options are: "); | ||
113 | else printf(", "); | ||
114 | printf("%s",edge_foos[i].name); | ||
115 | } | ||
116 | printf("\n"); | ||
117 | return(0); | ||
118 | } | ||
119 | |||
120 | /* | ||
121 | ---------------- EDGE HANDLER ARGUMENTS ------------------------ | ||
122 | filt - array of filter taps. | ||
123 | x_dim, y_dim - x and y dimensions of filt. | ||
124 | x_pos - position of filter relative to the horizontal image edges. Negative | ||
125 | values indicate left edge, positive indicate right edge. Zero | ||
126 | indicates that the filter is not touching either edge. An absolute | ||
127 | value of 1 indicates that the edge tap of the filter is over the | ||
128 | edge pixel of the image. | ||
129 | y_pos - analogous to x_pos. | ||
130 | result - array where the resulting filter will go. The edge | ||
131 | of this filter will be aligned with the image for application... | ||
132 | r_or_e - equal to one of the two constants EXPAND or REDUCE. | ||
133 | -------------------------------------------------------------------- | ||
134 | */ | ||
135 | |||
136 | |||
137 | /* -------------------------------------------------------------------- | ||
138 | nocompute() - Return zero for values where filter hangs over the edge. | ||
139 | */ | ||
140 | |||
141 | int nocompute(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) | ||
142 | register double *filt, *result; | ||
143 | register int x_dim; | ||
144 | int y_dim, x_pos, y_pos, r_or_e; | ||
145 | { | ||
146 | register int i; | ||
147 | register int size = x_dim*y_dim; | ||
148 | |||
149 | if ( (x_pos>1) OR (x_pos<-1) OR (y_pos>1) OR (y_pos<-1) ) | ||
150 | for (i=0; i<size; i++) result[i] = 0.0; | ||
151 | else | ||
152 | for (i=0; i<size; i++) result[i] = filt[i]; | ||
153 | |||
154 | return(0); | ||
155 | } | ||
156 | |||
157 | /* -------------------------------------------------------------------- | ||
158 | zero() - Zero outside of image. Discontinuous, but adds zero energy. */ | ||
159 | |||
160 | int zero(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) | ||
161 | register double *filt, *result; | ||
162 | register int x_dim; | ||
163 | int y_dim, x_pos, y_pos, r_or_e; | ||
164 | { | ||
165 | register int y_filt,x_filt, y_res,x_res; | ||
166 | int filt_sz = x_dim*y_dim; | ||
167 | int x_start = ((x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0)); | ||
168 | int y_start = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); | ||
169 | int i; | ||
170 | |||
171 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
172 | |||
173 | for (y_filt=0, y_res=y_start; | ||
174 | y_filt<filt_sz; | ||
175 | y_filt+=x_dim, y_res+=x_dim) | ||
176 | if ((y_res >= 0) AND (y_res < filt_sz)) | ||
177 | for (x_filt=y_filt, x_res=x_start; | ||
178 | x_filt<y_filt+x_dim; | ||
179 | x_filt++, x_res++) | ||
180 | if ((x_res >= 0) AND (x_res < x_dim)) | ||
181 | result[y_res+x_res] = filt[x_filt]; | ||
182 | return(0); | ||
183 | } | ||
184 | |||
185 | |||
186 | /* -------------------------------------------------------------------- | ||
187 | reflect1() - Reflection through the edge pixels. Continuous, but | ||
188 | discontinuous first derivative. This is the right thing to do if you | ||
189 | are subsampling by 2, since it maintains parity (even pixels positions | ||
190 | remain even, odd ones remain odd). | ||
191 | */ | ||
192 | |||
193 | int reflect1(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) | ||
194 | register double *filt, *result; | ||
195 | register int x_dim; | ||
196 | int y_dim, x_pos, y_pos, r_or_e; | ||
197 | { | ||
198 | int filt_sz = x_dim*y_dim; | ||
199 | register int y_filt,x_filt, y_res, x_res; | ||
200 | register int x_base = (x_pos>0)?(x_dim-1):0; | ||
201 | register int y_base = x_dim * ((y_pos>0)?(y_dim-1):0); | ||
202 | int x_overhang = (x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0); | ||
203 | int y_overhang = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); | ||
204 | int i; | ||
205 | int mx_pos = (x_pos<0)?(x_dim/2):((x_dim-1)/2); | ||
206 | int my_pos = x_dim * ((y_pos<0)?(y_dim/2):((y_dim-1)/2)); | ||
207 | |||
208 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
209 | |||
210 | if (r_or_e IS REDUCE) | ||
211 | for (y_filt=0, y_res=y_overhang-y_base; | ||
212 | y_filt<filt_sz; | ||
213 | y_filt+=x_dim, y_res+=x_dim) | ||
214 | for (x_filt=y_filt, x_res=x_overhang-x_base; | ||
215 | x_filt<y_filt+x_dim; | ||
216 | x_filt++, x_res++) | ||
217 | result[ABS(y_base-ABS(y_res)) + ABS(x_base-ABS(x_res))] | ||
218 | += filt[x_filt]; | ||
219 | else { | ||
220 | y_overhang = ABS(y_overhang); | ||
221 | x_overhang = ABS(x_overhang); | ||
222 | for (y_res=y_base, y_filt = y_base-y_overhang; | ||
223 | y_filt > y_base-filt_sz; | ||
224 | y_filt-=x_dim, y_res-=x_dim) | ||
225 | { | ||
226 | for (x_res=x_base, x_filt=x_base-x_overhang; | ||
227 | x_filt > x_base-x_dim; | ||
228 | x_res--, x_filt--) | ||
229 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; | ||
230 | if ((x_overhang ISNT mx_pos) AND (x_pos ISNT 0)) | ||
231 | for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang; | ||
232 | x_filt > x_base-x_dim; | ||
233 | x_res--, x_filt--) | ||
234 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; | ||
235 | } | ||
236 | if ((y_overhang ISNT my_pos) AND (y_pos ISNT 0)) | ||
237 | for (y_res=y_base, y_filt = y_base-2*my_pos+y_overhang; | ||
238 | y_filt > y_base-filt_sz; | ||
239 | y_filt-=x_dim, y_res-=x_dim) | ||
240 | { | ||
241 | for (x_res=x_base, x_filt=x_base-x_overhang; | ||
242 | x_filt > x_base-x_dim; | ||
243 | x_res--, x_filt--) | ||
244 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; | ||
245 | if ((x_overhang ISNT mx_pos) AND (x_pos ISNT 0)) | ||
246 | for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang; | ||
247 | x_filt > x_base-x_dim; | ||
248 | x_res--, x_filt--) | ||
249 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; | ||
250 | } | ||
251 | } | ||
252 | |||
253 | return(0); | ||
254 | } | ||
255 | |||
256 | /* -------------------------------------------------------------------- | ||
257 | reflect2() - Reflect image at boundary. The edge pixel is repeated, | ||
258 | then the next pixel, etc. Continuous, but discontinuous first | ||
259 | derivative. | ||
260 | */ | ||
261 | |||
262 | int reflect2(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) | ||
263 | register double *filt, *result; | ||
264 | register int x_dim; | ||
265 | int y_dim, x_pos, y_pos, r_or_e; | ||
266 | { | ||
267 | int filt_sz = x_dim*y_dim; | ||
268 | register int y_filt,x_filt, y_res, x_res; | ||
269 | register int x_base = (x_pos>0)?(x_dim-1):0; | ||
270 | register int y_base = x_dim * ((y_pos>0)?(y_dim-1):0); | ||
271 | int x_overhang = (x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0); | ||
272 | int y_overhang = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); | ||
273 | int i; | ||
274 | int mx_pos = (x_pos<0)?(x_dim/2):((x_dim-1)/2); | ||
275 | int my_pos = x_dim * ((y_pos<0)?(y_dim/2):((y_dim-1)/2)); | ||
276 | |||
277 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
278 | |||
279 | if (r_or_e IS REDUCE) | ||
280 | for (y_filt=0, y_res = (y_overhang-y_base) - ((y_pos>0)?x_dim:0); | ||
281 | y_filt<filt_sz; | ||
282 | y_filt+=x_dim, y_res+=x_dim) | ||
283 | { | ||
284 | if (y_res IS 0) y_res+=x_dim; | ||
285 | for (x_filt=y_filt, x_res = (x_overhang-x_base) - ((x_pos>0)?1:0); | ||
286 | x_filt<y_filt+x_dim; | ||
287 | x_filt++, x_res++) | ||
288 | { | ||
289 | if (x_res IS 0) x_res++; | ||
290 | result[ABS(y_base-ABS(y_res)+x_dim) + ABS(x_base-ABS(x_res)+1)] | ||
291 | += filt[x_filt]; | ||
292 | } | ||
293 | } | ||
294 | else { | ||
295 | y_overhang = ABS(y_overhang); | ||
296 | x_overhang = ABS(x_overhang); | ||
297 | for (y_res=y_base, y_filt = y_base-y_overhang; | ||
298 | y_filt > y_base-filt_sz; | ||
299 | y_filt-=x_dim, y_res-=x_dim) | ||
300 | { | ||
301 | for (x_res=x_base, x_filt=x_base-x_overhang; | ||
302 | x_filt > x_base-x_dim; | ||
303 | x_res--, x_filt--) | ||
304 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; | ||
305 | if (x_pos ISNT 0) | ||
306 | for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang-1; | ||
307 | x_filt > x_base-x_dim; | ||
308 | x_res--, x_filt--) | ||
309 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; | ||
310 | } | ||
311 | if (y_pos ISNT 0) | ||
312 | for (y_res=y_base, y_filt = y_base-2*my_pos+y_overhang-x_dim; | ||
313 | y_filt > y_base-filt_sz; | ||
314 | y_filt-=x_dim, y_res-=x_dim) | ||
315 | { | ||
316 | for (x_res=x_base, x_filt=x_base-x_overhang; | ||
317 | x_filt > x_base-x_dim; | ||
318 | x_res--, x_filt--) | ||
319 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; | ||
320 | if (x_pos ISNT 0) | ||
321 | for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang-1; | ||
322 | x_filt > x_base-x_dim; | ||
323 | x_res--, x_filt--) | ||
324 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; | ||
325 | } | ||
326 | } | ||
327 | |||
328 | return(0); | ||
329 | } | ||
330 | |||
331 | |||
332 | /* -------------------------------------------------------------------- | ||
333 | qreflect2() - Modified version of reflect2 that works properly for | ||
334 | even-length QMF filters. | ||
335 | */ | ||
336 | |||
337 | int qreflect2(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) | ||
338 | double *filt, *result; | ||
339 | int x_dim, y_dim, x_pos, y_pos, r_or_e; | ||
340 | { | ||
341 | reflect2(filt,x_dim,y_dim,x_pos,y_pos,result,0); | ||
342 | return(0); | ||
343 | } | ||
344 | |||
345 | /* -------------------------------------------------------------------- | ||
346 | repeat() - repeat edge pixel. Continuous, with discontinuous first | ||
347 | derivative. | ||
348 | */ | ||
349 | |||
350 | int repeat(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) | ||
351 | register double *filt, *result; | ||
352 | register int x_dim; | ||
353 | int y_dim, x_pos, y_pos, r_or_e; | ||
354 | { | ||
355 | register int y_filt,x_filt, y_res,x_res, y_tmp, x_tmp; | ||
356 | register int x_base = (x_pos>0)?(x_dim-1):0; | ||
357 | register int y_base = x_dim * ((y_pos>0)?(y_dim-1):0); | ||
358 | int x_overhang = ((x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0)); | ||
359 | int y_overhang = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); | ||
360 | int filt_sz = x_dim*y_dim; | ||
361 | int mx_pos = (x_dim/2); | ||
362 | int my_pos = x_dim * (y_dim/2); | ||
363 | int i; | ||
364 | |||
365 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
366 | |||
367 | if (r_or_e IS REDUCE) | ||
368 | for (y_filt=0, y_res=y_overhang; | ||
369 | y_filt<filt_sz; | ||
370 | y_filt+=x_dim, y_res+=x_dim) | ||
371 | for (x_filt=y_filt, x_res=x_overhang; | ||
372 | x_filt<y_filt+x_dim; | ||
373 | x_filt++, x_res++) | ||
374 | /* Clip the index: */ | ||
375 | result[((y_res>=0)?((y_res<filt_sz)?y_res:(filt_sz-x_dim)):0) | ||
376 | + ((x_res>=0)?((x_res<x_dim)?x_res:(x_dim-1)):0)] | ||
377 | += filt[x_filt]; | ||
378 | else { | ||
379 | if ((y_base-y_overhang) ISNT my_pos) | ||
380 | for (y_res=y_base, y_filt=y_base-ABS(y_overhang); | ||
381 | y_filt > y_base-filt_sz; | ||
382 | y_filt-=x_dim, y_res-=x_dim) | ||
383 | if ((x_base-x_overhang) ISNT mx_pos) | ||
384 | for (x_res=x_base, x_filt=x_base-ABS(x_overhang); | ||
385 | x_filt > x_base-x_dim; | ||
386 | x_res--, x_filt--) | ||
387 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; | ||
388 | else /* ((x_base-x_overhang) IS mx_pos) */ | ||
389 | for (x_res=x_base, x_filt=x_base-ABS(x_overhang); | ||
390 | x_filt > x_base-x_dim; | ||
391 | x_filt--, x_res--) | ||
392 | for(x_tmp=x_filt; x_tmp > x_base-x_dim; x_tmp--) | ||
393 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_tmp)]; | ||
394 | else /* ((y_base-y_overhang) IS my_pos) */ | ||
395 | for (y_res=y_base, y_filt=y_base-ABS(y_overhang); | ||
396 | y_filt > y_base-filt_sz; | ||
397 | y_filt-=x_dim, y_res-=x_dim) | ||
398 | for (y_tmp=y_filt; y_tmp > y_base-filt_sz; y_tmp-=x_dim) | ||
399 | if ((x_base-x_overhang) ISNT mx_pos) | ||
400 | for (x_res=x_base, x_filt=x_base-ABS(x_overhang); | ||
401 | x_filt > x_base-x_dim; | ||
402 | x_filt--, x_res--) | ||
403 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_tmp)+ABS(x_filt)]; | ||
404 | else /* ((x_base-x_overhang) IS mx_pos) */ | ||
405 | for (x_res=x_base, x_filt=x_base-ABS(x_overhang); | ||
406 | x_filt > x_base-x_dim; | ||
407 | x_filt--, x_res--) | ||
408 | for (x_tmp=x_filt; x_tmp > x_base-x_dim; x_tmp--) | ||
409 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_tmp)+ABS(x_tmp)]; | ||
410 | } /* End, if r_or_e IS EXPAND */ | ||
411 | |||
412 | return(0); | ||
413 | } | ||
414 | |||
415 | /* -------------------------------------------------------------------- | ||
416 | extend() - Extend image by reflecting and inverting about edge pixel | ||
417 | value. Maintains continuity in intensity AND first derivative (but | ||
418 | not higher derivs). | ||
419 | */ | ||
420 | |||
421 | int Extend(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) | ||
422 | register double *filt, *result; | ||
423 | register int x_dim; | ||
424 | int y_dim, x_pos, y_pos, r_or_e; | ||
425 | { | ||
426 | int filt_sz = x_dim*y_dim; | ||
427 | register int y_filt,x_filt, y_res,x_res, y_tmp, x_tmp; | ||
428 | register int x_base = (x_pos>0)?(x_dim-1):0; | ||
429 | register int y_base = x_dim * ((y_pos>0)?(y_dim-1):0); | ||
430 | int x_overhang = (x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0); | ||
431 | int y_overhang = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); | ||
432 | int mx_pos = (x_pos<0)?(x_dim/2):((x_dim-1)/2); | ||
433 | int my_pos = x_dim * ((y_pos<0)?(y_dim/2):((y_dim-1)/2)); | ||
434 | int i; | ||
435 | |||
436 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
437 | |||
438 | /* Modeled on reflect1() */ | ||
439 | if (r_or_e IS REDUCE) | ||
440 | for (y_filt=0, y_res=y_overhang; | ||
441 | y_filt<filt_sz; | ||
442 | y_filt+=x_dim, y_res+=x_dim) | ||
443 | if ((y_res>=0) AND (y_res<filt_sz)) | ||
444 | for (x_filt=y_filt, x_res=x_overhang; | ||
445 | x_filt<y_filt+x_dim; | ||
446 | x_filt++, x_res++) | ||
447 | if ((x_res>=0) AND (x_res<x_dim)) | ||
448 | result[y_res+x_res] += filt[x_filt]; | ||
449 | else | ||
450 | { | ||
451 | result[y_res+ABS(x_base-ABS(x_res-x_base))] -= filt[x_filt]; | ||
452 | result[y_res+x_base] += 2*filt[x_filt]; | ||
453 | } | ||
454 | else | ||
455 | for (x_filt=y_filt, x_res=x_overhang; | ||
456 | x_filt<y_filt+x_dim; | ||
457 | x_filt++, x_res++) | ||
458 | if ((x_res>=0) AND (x_res<x_dim)) | ||
459 | { | ||
460 | result[ABS(y_base-ABS(y_res-y_base))+x_res] -= filt[x_filt]; | ||
461 | result[y_base+x_res] += 2*filt[x_filt]; | ||
462 | } | ||
463 | else | ||
464 | { | ||
465 | result[ABS(y_base-ABS(y_res-y_base))+ABS(x_base-ABS(x_res-x_base))] | ||
466 | -= filt[x_filt]; | ||
467 | result[y_base+x_base] += 2*filt[x_filt]; | ||
468 | } | ||
469 | else { /* r_or_e ISNT REDUCE */ | ||
470 | y_overhang = ABS(y_overhang); | ||
471 | x_overhang = ABS(x_overhang); | ||
472 | for (y_res=y_base, y_filt = y_base-y_overhang; | ||
473 | y_filt > y_base-filt_sz; | ||
474 | y_filt-=x_dim, y_res-=x_dim) | ||
475 | { | ||
476 | for (x_res=x_base, x_filt=x_base-x_overhang; | ||
477 | x_filt > x_base-x_dim; | ||
478 | x_res--, x_filt--) | ||
479 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; | ||
480 | if (x_pos ISNT 0) | ||
481 | if (x_overhang ISNT mx_pos) | ||
482 | for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang; | ||
483 | x_filt > x_base-x_dim; | ||
484 | x_res--, x_filt--) | ||
485 | result[ABS(y_res)+ABS(x_res)] -= filt[ABS(y_filt)+ABS(x_filt)]; | ||
486 | else /* x_overhang IS mx_pos */ | ||
487 | for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang-1; | ||
488 | x_filt > x_base-x_dim; | ||
489 | x_res--, x_filt--) | ||
490 | for (x_tmp=x_filt; x_tmp > x_base-x_dim; x_tmp--) | ||
491 | result[ABS(y_res)+ABS(x_res)] += 2*filt[ABS(y_filt)+ABS(x_tmp)]; | ||
492 | } | ||
493 | if (y_pos ISNT 0) | ||
494 | if (y_overhang ISNT my_pos) | ||
495 | for (y_res=y_base, y_filt = y_base-2*my_pos+y_overhang; | ||
496 | y_filt > y_base-filt_sz; | ||
497 | y_filt-=x_dim, y_res-=x_dim) | ||
498 | { | ||
499 | for (x_res=x_base, x_filt=x_base-x_overhang; | ||
500 | x_filt > x_base-x_dim; | ||
501 | x_res--, x_filt--) | ||
502 | result[ABS(y_res)+ABS(x_res)] -= filt[ABS(y_filt)+ABS(x_filt)]; | ||
503 | if ((x_pos ISNT 0) AND (x_overhang ISNT mx_pos)) | ||
504 | for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang; | ||
505 | x_filt > x_base-x_dim; | ||
506 | x_res--, x_filt--) | ||
507 | result[ABS(y_res)+ABS(x_res)] -= filt[ABS(y_filt)+ABS(x_filt)]; | ||
508 | } | ||
509 | else /* y_overhang IS my_pos */ | ||
510 | for (y_res=y_base, y_filt = y_base-2*my_pos+y_overhang-x_dim; | ||
511 | y_filt > y_base-filt_sz; | ||
512 | y_res-=x_dim, y_filt-=x_dim) | ||
513 | for (y_tmp=y_filt; y_tmp > y_base-filt_sz; y_tmp-=x_dim) | ||
514 | { | ||
515 | for (x_res=x_base, x_filt=x_base-x_overhang; | ||
516 | x_filt > x_base-x_dim; | ||
517 | x_res--, x_filt--) | ||
518 | result[ABS(y_res)+ABS(x_res)] += 2*filt[ABS(y_tmp)+ABS(x_filt)]; | ||
519 | if ((x_pos ISNT 0) AND (x_overhang IS mx_pos)) | ||
520 | for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang-1; | ||
521 | x_filt > x_base-x_dim; | ||
522 | x_res--, x_filt--) | ||
523 | for (x_tmp=x_filt; x_tmp > x_base-x_dim; x_tmp--) | ||
524 | result[ABS(y_res)+ABS(x_res)] += 2*filt[ABS(y_tmp)+ABS(x_tmp)]; | ||
525 | } | ||
526 | } /* r_or_e ISNT REDUCE */ | ||
527 | |||
528 | return(0); | ||
529 | } | ||
530 | |||
531 | /* -------------------------------------------------------------------- | ||
532 | predict() - Simple prediction. Like zero, but multiplies the result | ||
533 | by the reciprocal of the percentage of filter being used. (i.e. if | ||
534 | 50% of the filter is hanging over the edge of the image, multiply the | ||
535 | taps being used by 2). */ | ||
536 | |||
537 | int predict(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) | ||
538 | register double *filt, *result; | ||
539 | register int x_dim; | ||
540 | int y_dim, x_pos, y_pos, r_or_e; | ||
541 | { | ||
542 | register int y_filt,x_filt, y_res,x_res; | ||
543 | register double taps_used = 0.0; /* int *** */ | ||
544 | register double fraction = 0.0; | ||
545 | int filt_sz = x_dim*y_dim; | ||
546 | int x_start = ((x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0)); | ||
547 | int y_start = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); | ||
548 | int i; | ||
549 | |||
550 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
551 | |||
552 | for (y_filt=0, y_res=y_start; | ||
553 | y_filt<filt_sz; | ||
554 | y_filt+=x_dim, y_res+=x_dim) | ||
555 | if ((y_res >= 0) AND (y_res < filt_sz)) | ||
556 | for (x_filt=y_filt, x_res=x_start; | ||
557 | x_filt<y_filt+x_dim; | ||
558 | x_filt++, x_res++) | ||
559 | if ((x_res >= 0) AND (x_res < x_dim)) | ||
560 | { | ||
561 | result[y_res+x_res] = filt[x_filt]; | ||
562 | taps_used += ABS(filt[x_filt]); | ||
563 | } | ||
564 | |||
565 | if (r_or_e IS REDUCE) | ||
566 | { | ||
567 | /* fraction = ( (double) filt_sz ) / ( (double) taps_used ); */ | ||
568 | for (i=0; i<filt_sz; i++) fraction += ABS(filt[i]); | ||
569 | fraction = ( fraction / taps_used ); | ||
570 | for (i=0; i<filt_sz; i++) result[i] *= fraction; | ||
571 | } | ||
572 | return(0); | ||
573 | } | ||
574 | |||
575 | |||
576 | /* -------------------------------------------------------------------- | ||
577 | Reflect, multiplying tap of filter which is at the edge of the image | ||
578 | by root 2. This maintains orthogonality of odd-length linear-phase | ||
579 | QMF filters, but it is not useful for most applications, since it | ||
580 | alters the DC level. */ | ||
581 | |||
582 | int ereflect(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) | ||
583 | register double *filt, *result; | ||
584 | register int x_dim; | ||
585 | int y_dim, x_pos, y_pos, r_or_e; | ||
586 | { | ||
587 | register int y_filt,x_filt, y_res,x_res; | ||
588 | register int x_base = (x_pos>0)?(x_dim-1):0; | ||
589 | register int y_base = x_dim * ((y_pos>0)?(y_dim-1):0); | ||
590 | int filt_sz = x_dim*y_dim; | ||
591 | int x_overhang = (x_pos>1)?(x_pos-x_dim):((x_pos<-1)?(x_pos+1):0); | ||
592 | int y_overhang = x_dim * ( (y_pos>1)?(y_pos-y_dim):((y_pos<-1)?(y_pos+1):0) ); | ||
593 | int i; | ||
594 | double norm,onorm; | ||
595 | |||
596 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
597 | |||
598 | /* reflect at boundary */ | ||
599 | for (y_filt=0, y_res=y_overhang; | ||
600 | y_filt<filt_sz; | ||
601 | y_filt+=x_dim, y_res+=x_dim) | ||
602 | for (x_filt=y_filt, x_res=x_overhang; | ||
603 | x_filt<y_filt+x_dim; | ||
604 | x_filt++, x_res++) | ||
605 | result[ABS(y_base-ABS(y_res)) + ABS(x_base-ABS(x_res))] | ||
606 | += filt[x_filt]; | ||
607 | |||
608 | /* now multiply edge by root 2 */ | ||
609 | if (x_pos ISNT 0) | ||
610 | for (y_filt=x_base; y_filt<filt_sz; y_filt+=x_dim) | ||
611 | result[y_filt] *= ROOT2; | ||
612 | if (y_pos ISNT 0) | ||
613 | for (x_filt=y_base; x_filt<y_base+x_dim; x_filt++) | ||
614 | result[x_filt] *= ROOT2; | ||
615 | |||
616 | /* now normalize to norm of original filter */ | ||
617 | for (norm=0.0,i=0; i<filt_sz; i++) | ||
618 | norm += (result[i]*result[i]); | ||
619 | norm=sqrt(norm); | ||
620 | |||
621 | for (onorm=0.0,i=0; i<filt_sz; i++) | ||
622 | onorm += (filt[i]*filt[i]); | ||
623 | onorm = sqrt(onorm); | ||
624 | |||
625 | norm = norm/onorm; | ||
626 | for (i=0; i<filt_sz; i++) | ||
627 | result[i] /= norm; | ||
628 | return(0); | ||
629 | } | ||
630 | |||
631 | |||
632 | /* ------- printout stuff for testing ------------------------------ | ||
633 | printf("Xpos: %d, Ypos: %d", x_pos, y_pos); | ||
634 | for (y_filt=0; y_filt<y_dim; y_filt++) | ||
635 | { | ||
636 | printf("\n"); | ||
637 | for (x_filt=0; x_filt<x_dim; x_filt++) | ||
638 | printf("%6.1f", result[y_filt*x_dim+x_filt]); | ||
639 | } | ||
640 | printf("\n"); | ||
641 | */ | ||
642 | |||
643 | |||
644 | |||
645 | /* Local Variables: */ | ||
646 | /* buffer-read-only: t */ | ||
647 | /* End: */ | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/edges.mexa64 b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/edges.mexa64 new file mode 100755 index 0000000..4839d1e --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/edges.mexa64 | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/histo.c b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/histo.c new file mode 100755 index 0000000..43a99c7 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/histo.c | |||
@@ -0,0 +1,140 @@ | |||
1 | /* | ||
2 | [N, X] = histo(MTX, NBINS_OR_BINSIZE, BIN_CENTER) | ||
3 | >>> See histo.m for documentation <<< | ||
4 | EPS, ported from OBVIUS, 3/97. | ||
5 | */ | ||
6 | |||
7 | #define V4_COMPAT | ||
8 | #include <matrix.h> /* Matlab matrices */ | ||
9 | #include <mex.h> | ||
10 | |||
11 | #include <stddef.h> /* NULL */ | ||
12 | #include <math.h> /* ceil */ | ||
13 | |||
14 | #define notDblMtx(it) (!mxIsNumeric(it) || !mxIsDouble(it) || mxIsSparse(it) || mxIsComplex(it)) | ||
15 | |||
16 | #define PAD 0.49999 /* A hair below 1/2, to avoid roundoff errors */ | ||
17 | #define MAXBINS 20000 | ||
18 | |||
19 | void mexFunction(int nlhs, /* Num return vals on lhs */ | ||
20 | mxArray *plhs[], /* Matrices on lhs */ | ||
21 | int nrhs, /* Num args on rhs */ | ||
22 | const mxArray *prhs[] /* Matrices on rhs */ | ||
23 | ) | ||
24 | { | ||
25 | register double temp; | ||
26 | register int binnum, i, size; | ||
27 | register double *im, binsize; | ||
28 | register double origin, *hist, mn, mx, mean; | ||
29 | register int nbins; | ||
30 | double *bincenters; | ||
31 | mxArray *arg; | ||
32 | double *mxMat; | ||
33 | |||
34 | if (nrhs < 1 ) mexErrMsgTxt("requires at least 1 argument."); | ||
35 | |||
36 | /* ARG 1: MATRIX */ | ||
37 | arg = prhs[0]; | ||
38 | if notDblMtx(arg) mexErrMsgTxt("MTX arg must be a real non-sparse matrix."); | ||
39 | im = mxGetPr(arg); | ||
40 | size = (int) mxGetM(arg) * mxGetN(arg); | ||
41 | |||
42 | /* FIND min, max, mean values of MTX */ | ||
43 | mn = *im; mx = *im; binsize = 0; | ||
44 | for (i=1; i<size; i++) | ||
45 | { | ||
46 | temp = im[i]; | ||
47 | if (temp < mn) | ||
48 | mn = temp; | ||
49 | else if (temp > mx) | ||
50 | mx = temp; | ||
51 | binsize += temp; | ||
52 | } | ||
53 | mean = binsize / size; | ||
54 | |||
55 | /* ARG 3: BIN_CENTER */ | ||
56 | if (nrhs > 2) | ||
57 | { | ||
58 | arg = prhs[2]; | ||
59 | if notDblMtx(arg) mexErrMsgTxt("BIN_CENTER arg must be a real scalar."); | ||
60 | if (mxGetM(arg) * mxGetN(arg) != 1) | ||
61 | mexErrMsgTxt("BIN_CENTER must be a real scalar."); | ||
62 | mxMat= mxGetPr(arg); | ||
63 | origin = *mxMat; | ||
64 | } | ||
65 | else | ||
66 | origin = mean; | ||
67 | |||
68 | /* ARG 2: If positive, NBINS. If negative, -BINSIZE. */ | ||
69 | if (nrhs > 1) | ||
70 | { | ||
71 | arg = prhs[1]; | ||
72 | if notDblMtx(arg) mexErrMsgTxt("NBINS_OR_BINSIZE arg must be a real scalar."); | ||
73 | if (mxGetM(arg) * mxGetN(arg) != 1) | ||
74 | mexErrMsgTxt("NBINS_OR_BINSIZE must be a real scalar."); | ||
75 | mxMat= mxGetPr(arg); | ||
76 | binsize = *mxMat; | ||
77 | } | ||
78 | else | ||
79 | { | ||
80 | binsize = 101; /* DEFAULT: 101 bins */ | ||
81 | } | ||
82 | |||
83 | /* -------------------------------------------------- | ||
84 | Adjust origin, binsize, nbins such that | ||
85 | mx <= origin + (nbins-1)*binsize + PAD*binsize | ||
86 | mn >= origin - PAD*binsize | ||
87 | -------------------------------------------------- */ | ||
88 | if (binsize < 0) /* user specified BINSIZE */ | ||
89 | { | ||
90 | binsize = -binsize; | ||
91 | origin -= binsize * ceil((origin-mn-PAD*binsize)/binsize); | ||
92 | nbins = (int) ceil((mx-origin-PAD*binsize)/binsize) + 1; | ||
93 | } | ||
94 | else /* user specified NBINS */ | ||
95 | { | ||
96 | nbins = (int) (binsize + 0.5); /* round to int */ | ||
97 | if (nbins == 0) | ||
98 | mexErrMsgTxt("NBINS must be greater than zero."); | ||
99 | binsize = (mx-mn)/(nbins-1+2*PAD); /* start with lower bound */ | ||
100 | i = ceil((origin-mn-binsize/2)/binsize); | ||
101 | if ( mn < (origin-i*binsize-PAD*binsize) ) | ||
102 | binsize = (origin-mn)/(i+PAD); | ||
103 | else if ( mx > (origin+(nbins-1-i)*binsize+PAD*binsize) ) | ||
104 | binsize = (mx-origin)/((nbins-1-i)+PAD); | ||
105 | origin -= binsize * ceil((origin-mn-PAD*binsize)/binsize); | ||
106 | } | ||
107 | |||
108 | if (nbins > MAXBINS) | ||
109 | { | ||
110 | mexPrintf("nbins: %d, MAXBINS: %d\n",nbins,MAXBINS); | ||
111 | mexErrMsgTxt("Number of histo bins has exceeded maximum"); | ||
112 | } | ||
113 | |||
114 | /* Allocate hist and xvals */ | ||
115 | plhs[0] = (mxArray *) mxCreateDoubleMatrix(1,nbins,mxREAL); | ||
116 | if (plhs[0] == NULL) mexErrMsgTxt("Error allocating result matrix"); | ||
117 | hist = mxGetPr(plhs[0]); | ||
118 | |||
119 | if (nlhs > 1) | ||
120 | { | ||
121 | plhs[1] = (mxArray *) mxCreateDoubleMatrix(1,nbins,mxREAL); | ||
122 | if (plhs[1] == NULL) mexErrMsgTxt("Error allocating result matrix"); | ||
123 | bincenters = mxGetPr(plhs[1]); | ||
124 | for (i=0, temp=origin; i<nbins; i++, temp+=binsize) | ||
125 | bincenters[i] = temp; | ||
126 | } | ||
127 | |||
128 | for (i=0; i<size; i++) | ||
129 | { | ||
130 | binnum = (int) ((im[i] - origin)/binsize + 0.5); | ||
131 | if ((binnum < nbins) && (binnum >= 0)) | ||
132 | (hist[binnum]) += 1.0; | ||
133 | else | ||
134 | printf("HISTO warning: value %f outside of range [%f,%f]\n", | ||
135 | im[i], origin-0.5*binsize, origin+(nbins-0.5)*binsize); | ||
136 | } | ||
137 | |||
138 | return; | ||
139 | } | ||
140 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/innerProd.c b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/innerProd.c new file mode 100755 index 0000000..8fa1224 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/innerProd.c | |||
@@ -0,0 +1,52 @@ | |||
1 | /* | ||
2 | RES = innerProd(MAT); | ||
3 | Computes mat'*mat | ||
4 | Odelia Schwartz, 8/97. | ||
5 | */ | ||
6 | |||
7 | #define V4_COMPAT | ||
8 | #include <matrix.h> | ||
9 | |||
10 | #include <stdio.h> | ||
11 | #include <ctype.h> | ||
12 | #include <math.h> | ||
13 | #include <strings.h> | ||
14 | #include <stdlib.h> | ||
15 | |||
16 | void mexFunction(int nlhs, /* Num return vals on lhs */ | ||
17 | mxArray *plhs[], /* Matrices on lhs */ | ||
18 | int nrhs, /* Num args on rhs */ | ||
19 | const mxArray *prhs[] /* Matrices on rhs */ | ||
20 | ) | ||
21 | { | ||
22 | register double *res, *mat, tmp; | ||
23 | register int len, wid, i, k, j, jlen, ilen, imat, jmat; | ||
24 | mxArray *arg; | ||
25 | |||
26 | /* get matrix input argument */ | ||
27 | /* should be matrix in which num rows >= num columns */ | ||
28 | arg=prhs[0]; | ||
29 | mat= mxGetPr(arg); | ||
30 | len = (int) mxGetM(arg); | ||
31 | wid = (int) mxGetN(arg); | ||
32 | if ( wid > len ) | ||
33 | printf("innerProd: Warning: width %d is greater than length %d.\n",wid,len); | ||
34 | plhs[0] = (mxArray *) mxCreateDoubleMatrix(wid,wid,mxREAL); | ||
35 | if (plhs[0] == NULL) | ||
36 | mexErrMsgTxt(sprintf("Error allocating %dx%d result matrix",wid,wid)); | ||
37 | res = mxGetPr(plhs[0]); | ||
38 | |||
39 | for(i=0, ilen=0; i<wid; i++, ilen+=len) | ||
40 | { | ||
41 | for(j=i, jlen=ilen; j<wid; j++, jlen+=len) | ||
42 | { | ||
43 | tmp = 0.0; | ||
44 | for(k=0, imat=ilen, jmat=jlen; k<len; k++, imat++, jmat++) | ||
45 | tmp += mat[imat]*mat[jmat]; | ||
46 | res[i*wid+j] = tmp; | ||
47 | res[j*wid+i] = tmp; | ||
48 | } | ||
49 | } | ||
50 | return; | ||
51 | |||
52 | } | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/innerProd.dll b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/innerProd.dll new file mode 100755 index 0000000..40ac896 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/innerProd.dll | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/innerProd.mexa64 b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/innerProd.mexa64 new file mode 100755 index 0000000..e31a97e --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/innerProd.mexa64 | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/innerProd.mexglx b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/innerProd.mexglx new file mode 100755 index 0000000..749a5b5 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/innerProd.mexglx | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/innerProd.mexlx b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/innerProd.mexlx new file mode 100755 index 0000000..151b08f --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/innerProd.mexlx | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/innerProd.mexmac b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/innerProd.mexmac new file mode 100755 index 0000000..6e11fcd --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/innerProd.mexmac | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/innerProd.mexsol b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/innerProd.mexsol new file mode 100755 index 0000000..d761ed8 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/innerProd.mexsol | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/pointOp.c b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/pointOp.c new file mode 100755 index 0000000..6ffcb45 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/pointOp.c | |||
@@ -0,0 +1,126 @@ | |||
1 | /* | ||
2 | RES = pointOp(IM, LUT, ORIGIN, INCREMENT, WARNINGS) | ||
3 | >>> See pointOp.m for documentation <<< | ||
4 | EPS, ported from OBVIUS, 7/96. | ||
5 | */ | ||
6 | |||
7 | #define V4_COMPAT | ||
8 | #include <matrix.h> /* Matlab matrices */ | ||
9 | #include <mex.h> | ||
10 | |||
11 | #include <stddef.h> /* NULL */ | ||
12 | |||
13 | #define notDblMtx(it) (!mxIsNumeric(it) || !mxIsDouble(it) || mxIsSparse(it) || mxIsComplex(it)) | ||
14 | |||
15 | void internal_pointop(); | ||
16 | |||
17 | void mexFunction(int nlhs, /* Num return vals on lhs */ | ||
18 | mxArray *plhs[], /* Matrices on lhs */ | ||
19 | int nrhs, /* Num args on rhs */ | ||
20 | const mxArray *prhs[] /* Matrices on rhs */ | ||
21 | ) | ||
22 | { | ||
23 | double *image, *lut, *res; | ||
24 | double origin, increment; | ||
25 | int x_dim, y_dim, lx_dim, ly_dim; | ||
26 | int warnings = 1; | ||
27 | mxArray *arg; | ||
28 | double *mxMat; | ||
29 | |||
30 | if (nrhs < 4 ) mexErrMsgTxt("requres at least 4 args."); | ||
31 | |||
32 | /* ARG 1: IMAGE */ | ||
33 | arg = prhs[0]; | ||
34 | if notDblMtx(arg) mexErrMsgTxt("IMAGE arg must be a real non-sparse matrix."); | ||
35 | image = mxGetPr(arg); | ||
36 | x_dim = (int) mxGetM(arg); /* X is inner index! */ | ||
37 | y_dim = (int) mxGetN(arg); | ||
38 | |||
39 | /* ARG 2: Lookup table */ | ||
40 | arg = prhs[1]; | ||
41 | if notDblMtx(arg) mexErrMsgTxt("LUT arg must be a real non-sparse matrix."); | ||
42 | lut = mxGetPr(arg); | ||
43 | lx_dim = (int) mxGetM(arg); /* X is inner index! */ | ||
44 | ly_dim = (int) mxGetN(arg); | ||
45 | if ( (lx_dim != 1) && (ly_dim != 1) ) | ||
46 | mexErrMsgTxt("Lookup table must be a row or column vector."); | ||
47 | |||
48 | /* ARG 3: ORIGIN */ | ||
49 | arg = prhs[2]; | ||
50 | if notDblMtx(arg) mexErrMsgTxt("ORIGIN arg must be a real scalar."); | ||
51 | if (mxGetM(arg) * mxGetN(arg) != 1) | ||
52 | mexErrMsgTxt("ORIGIN arg must be a real scalar."); | ||
53 | mxMat = mxGetPr(arg); | ||
54 | origin = *mxMat; | ||
55 | |||
56 | /* ARG 4: INCREMENT */ | ||
57 | arg = prhs[3]; | ||
58 | if notDblMtx(arg) mexErrMsgTxt("INCREMENT arg must be a real scalar."); | ||
59 | if (mxGetM(arg) * mxGetN(arg) != 1) | ||
60 | mexErrMsgTxt("INCREMENT arg must be a real scalar."); | ||
61 | mxMat = mxGetPr(arg); | ||
62 | increment = *mxMat; | ||
63 | |||
64 | /* ARG 5: WARNINGS */ | ||
65 | if (nrhs>4) | ||
66 | { | ||
67 | arg = prhs[4]; | ||
68 | if notDblMtx(arg) mexErrMsgTxt("WARINGS arg must be a real scalar."); | ||
69 | if (mxGetM(arg) * mxGetN(arg) != 1) | ||
70 | mexErrMsgTxt("WARNINGS arg must be a real scalar."); | ||
71 | mxMat = mxGetPr(arg); | ||
72 | warnings = (int) *mxMat; | ||
73 | } | ||
74 | |||
75 | plhs[0] = (mxArray *) mxCreateDoubleMatrix(x_dim,y_dim,mxREAL); | ||
76 | if (plhs[0] == NULL) mexErrMsgTxt("Cannot allocate result matrix"); | ||
77 | res = mxGetPr(plhs[0]); | ||
78 | |||
79 | internal_pointop(image, res, x_dim*y_dim, lut, lx_dim*ly_dim, | ||
80 | origin, increment, warnings); | ||
81 | return; | ||
82 | } | ||
83 | |||
84 | |||
85 | /* Use linear interpolation on a lookup table. | ||
86 | Taken from OBVIUS. EPS, Spring, 1987. | ||
87 | */ | ||
88 | void internal_pointop (im, res, size, lut, lutsize, origin, increment, warnings) | ||
89 | register double *im, *res, *lut; | ||
90 | register double origin, increment; | ||
91 | register int size, lutsize, warnings; | ||
92 | { | ||
93 | register int i, index; | ||
94 | register double pos; | ||
95 | register int l_unwarned = warnings; | ||
96 | register int r_unwarned = warnings; | ||
97 | |||
98 | lutsize = lutsize - 2; /* Maximum index value */ | ||
99 | if (increment > 0) | ||
100 | for (i=0; i<size; i++) | ||
101 | { | ||
102 | pos = (im[i] - origin) / increment; | ||
103 | index = (int) pos; /* Floor */ | ||
104 | if (index < 0) | ||
105 | { | ||
106 | index = 0; | ||
107 | if (l_unwarned) | ||
108 | { | ||
109 | mexPrintf("Warning: Extrapolating to left of lookup table...\n"); | ||
110 | l_unwarned = 0; | ||
111 | } | ||
112 | } | ||
113 | else if (index > lutsize) | ||
114 | { | ||
115 | index = lutsize; | ||
116 | if (r_unwarned) | ||
117 | { | ||
118 | mexPrintf("Warning: Extrapolating to right of lookup table...\n"); | ||
119 | r_unwarned = 0; | ||
120 | } | ||
121 | } | ||
122 | res[i] = lut[index] + (lut[index+1] - lut[index]) * (pos - index); | ||
123 | } | ||
124 | else | ||
125 | for (i=0; i<size; i++) res[i] = *lut; | ||
126 | } | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/range2.c b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/range2.c new file mode 100755 index 0000000..b84f4e1 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/range2.c | |||
@@ -0,0 +1,56 @@ | |||
1 | /* | ||
2 | [MIN, MAX] = range2(MTX) | ||
3 | >>> See range2.m for documentation <<< | ||
4 | EPS, 3/97. | ||
5 | */ | ||
6 | |||
7 | #define V4_COMPAT | ||
8 | #include <matrix.h> /* Matlab matrices */ | ||
9 | #include <mex.h> | ||
10 | |||
11 | #include <stddef.h> /* NULL */ | ||
12 | |||
13 | #define notDblMtx(it) (!mxIsNumeric(it) || !mxIsDouble(it) || mxIsSparse(it) || mxIsComplex(it)) | ||
14 | |||
15 | void mexFunction(int nlhs, /* Num return vals on lhs */ | ||
16 | mxArray *plhs[], /* Matrices on lhs */ | ||
17 | int nrhs, /* Num args on rhs */ | ||
18 | const mxArray *prhs[] /* Matrices on rhs */ | ||
19 | ) | ||
20 | { | ||
21 | register double temp, mn, mx; | ||
22 | register double *mtx; | ||
23 | register int i, size; | ||
24 | mxArray *arg; | ||
25 | |||
26 | if (nrhs != 1) mexErrMsgTxt("requires 1 argument."); | ||
27 | |||
28 | /* ARG 1: MATRIX */ | ||
29 | arg = prhs[0]; | ||
30 | if notDblMtx(arg) mexErrMsgTxt("MTX arg must be a real non-sparse matrix."); | ||
31 | mtx = mxGetPr(arg); | ||
32 | size = (int) mxGetM(arg) * mxGetN(arg); | ||
33 | |||
34 | /* FIND min, max values of MTX */ | ||
35 | mn = *mtx; mx = *mtx; | ||
36 | for (i=1; i<size; i++) | ||
37 | { | ||
38 | temp = mtx[i]; | ||
39 | if (temp < mn) | ||
40 | mn = temp; | ||
41 | else if (temp > mx) | ||
42 | mx = temp; | ||
43 | } | ||
44 | |||
45 | plhs[0] = (mxArray *) mxCreateDoubleMatrix(1,1,mxREAL); | ||
46 | if (plhs[0] == NULL) mexErrMsgTxt("Error allocating result matrix"); | ||
47 | plhs[1] = (mxArray *) mxCreateDoubleMatrix(1,1,mxREAL); | ||
48 | if (plhs[1] == NULL) mexErrMsgTxt("Error allocating result matrix"); | ||
49 | mtx = mxGetPr(plhs[0]); | ||
50 | mtx[0] = mn; | ||
51 | mtx = mxGetPr(plhs[1]); | ||
52 | mtx[0] = mx; | ||
53 | |||
54 | return; | ||
55 | } | ||
56 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/upConv.c b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/upConv.c new file mode 100755 index 0000000..3708f8a --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/upConv.c | |||
@@ -0,0 +1,195 @@ | |||
1 | /* | ||
2 | RES = upConv(IM, FILT, EDGES, STEP, START, STOP, RES); | ||
3 | >>> See upConv.m for documentation <<< | ||
4 | This is a matlab interface to the internal_expand function. | ||
5 | EPS, 7/96. | ||
6 | */ | ||
7 | |||
8 | #define V4_COMPAT | ||
9 | #include <matrix.h> /* Matlab matrices */ | ||
10 | #include <mex.h> | ||
11 | |||
12 | #include "convolve.h" | ||
13 | |||
14 | #define notDblMtx(it) (!mxIsNumeric(it) || !mxIsDouble(it) || mxIsSparse(it) || mxIsComplex(it)) | ||
15 | |||
16 | void mexFunction(int nlhs, /* Num return vals on lhs */ | ||
17 | mxArray *plhs[], /* Matrices on lhs */ | ||
18 | int nrhs, /* Num args on rhs */ | ||
19 | const mxArray *prhs[] /* Matrices on rhs */ | ||
20 | ) | ||
21 | { | ||
22 | double *image,*filt, *temp, *result, *orig_filt; | ||
23 | int x_fdim, y_fdim, x_idim, y_idim; | ||
24 | int orig_x = 0, orig_y, x, y; | ||
25 | int x_rdim, y_rdim; | ||
26 | int x_start = 1; | ||
27 | int x_step = 1; | ||
28 | int y_start = 1; | ||
29 | int y_step = 1; | ||
30 | int x_stop, y_stop; | ||
31 | mxArray *arg; | ||
32 | double *mxMat; | ||
33 | char edges[15] = "reflect1"; | ||
34 | |||
35 | if (nrhs<2) mexErrMsgTxt("requres at least 2 args."); | ||
36 | |||
37 | /* ARG 1: IMAGE */ | ||
38 | arg = prhs[0]; | ||
39 | if notDblMtx(arg) mexErrMsgTxt("IMAGE arg must be a non-sparse double float matrix."); | ||
40 | image = mxGetPr(arg); | ||
41 | x_idim = (int) mxGetM(arg); /* X is inner index! */ | ||
42 | y_idim = (int) mxGetN(arg); | ||
43 | |||
44 | /* ARG 2: FILTER */ | ||
45 | arg = prhs[1]; | ||
46 | if notDblMtx(arg) mexErrMsgTxt("FILTER arg must be non-sparse double float matrix."); filt = mxGetPr(arg); | ||
47 | x_fdim = (int) mxGetM(arg); | ||
48 | y_fdim = (int) mxGetN(arg); | ||
49 | |||
50 | /* ARG 3 (optional): EDGES */ | ||
51 | if (nrhs>2) | ||
52 | { | ||
53 | if (!mxIsChar(prhs[2])) | ||
54 | mexErrMsgTxt("EDGES arg must be a string."); | ||
55 | mxGetString(prhs[2],edges,15); | ||
56 | } | ||
57 | |||
58 | /* ARG 4 (optional): STEP */ | ||
59 | if (nrhs>3) | ||
60 | { | ||
61 | arg = prhs[3]; | ||
62 | if notDblMtx(arg) mexErrMsgTxt("STEP arg must be double float matrix."); | ||
63 | if (mxGetM(arg) * mxGetN(arg) != 2) | ||
64 | mexErrMsgTxt("STEP arg must contain two elements."); | ||
65 | mxMat = mxGetPr(arg); | ||
66 | x_step = (int) mxMat[0]; | ||
67 | y_step = (int) mxMat[1]; | ||
68 | if ((x_step<1) || (y_step<1)) | ||
69 | mexErrMsgTxt("STEP values must be greater than zero."); | ||
70 | } | ||
71 | |||
72 | /* ARG 5 (optional): START */ | ||
73 | if (nrhs>4) | ||
74 | { | ||
75 | arg = prhs[4]; | ||
76 | if notDblMtx(arg) mexErrMsgTxt("START arg must be double float matrix."); | ||
77 | if (mxGetM(arg) * mxGetN(arg) != 2) | ||
78 | mexErrMsgTxt("START arg must contain two elements."); | ||
79 | mxMat = mxGetPr(arg); | ||
80 | x_start = (int) mxMat[0]; | ||
81 | y_start = (int) mxMat[1]; | ||
82 | if ((x_start<1) || (y_start<1)) | ||
83 | mexErrMsgTxt("START values must be greater than zero."); | ||
84 | } | ||
85 | x_start--; /* convert to standard C indexes */ | ||
86 | y_start--; | ||
87 | |||
88 | /* ARG 6 (optional): STOP */ | ||
89 | if (nrhs>5) | ||
90 | { | ||
91 | if notDblMtx(prhs[5]) mexErrMsgTxt("STOP arg must be double float matrix."); | ||
92 | if (mxGetM(prhs[5]) * mxGetN(prhs[5]) != 2) | ||
93 | mexErrMsgTxt("STOP arg must contain two elements."); | ||
94 | mxMat = mxGetPr(prhs[5]); | ||
95 | x_stop = (int) mxMat[0]; | ||
96 | y_stop = (int) mxMat[1]; | ||
97 | if ((x_stop<x_start) || (y_stop<y_start)) | ||
98 | mexErrMsgTxt("STOP values must be greater than START values."); | ||
99 | } | ||
100 | else | ||
101 | { /* default: make res dims a multiple of STEP size */ | ||
102 | x_stop = x_step * ((x_start/x_step) + x_idim); | ||
103 | y_stop = y_step * ((y_start/y_step) + y_idim); | ||
104 | } | ||
105 | |||
106 | /* ARG 6 (optional): RESULT image */ | ||
107 | if (nrhs>6) | ||
108 | { | ||
109 | arg = prhs[6]; | ||
110 | if notDblMtx(arg) mexErrMsgTxt("RES arg must be double float matrix."); | ||
111 | |||
112 | /* 7/10/97: Returning one of the args causes problems with Matlab's memory | ||
113 | manager, so we don't return anything if the result image is passed */ | ||
114 | /* plhs[0] = arg; */ | ||
115 | result = mxGetPr(arg); | ||
116 | x_rdim = (int) mxGetM(arg); /* X is inner index! */ | ||
117 | y_rdim = (int) mxGetN(arg); | ||
118 | if ((x_stop>x_rdim) || (y_stop>y_rdim)) | ||
119 | mexErrMsgTxt("STOP values must within image dimensions."); | ||
120 | } | ||
121 | else | ||
122 | { | ||
123 | x_rdim = x_stop; | ||
124 | y_rdim = y_stop; | ||
125 | /* x_rdim = x_step * ((x_stop+x_step-1)/x_step); | ||
126 | y_rdim = y_step * ((y_stop+y_step-1)/y_step); */ | ||
127 | |||
128 | plhs[0] = (mxArray *) mxCreateDoubleMatrix(x_rdim,y_rdim,mxREAL); | ||
129 | if (plhs[0] == NULL) mexErrMsgTxt("Cannot allocate result matrix"); | ||
130 | result = mxGetPr(plhs[0]); | ||
131 | } | ||
132 | |||
133 | if ( (((x_stop-x_start+x_step-1) / x_step) != x_idim) || | ||
134 | (((y_stop-y_start+y_step-1) / y_step) != y_idim) ) | ||
135 | { | ||
136 | mexPrintf("Im dims: [%d %d]\n",x_idim,y_idim); | ||
137 | mexPrintf("Start: [%d %d]\n",x_start,y_start); | ||
138 | mexPrintf("Step: [%d %d]\n",x_step,y_step); | ||
139 | mexPrintf("Stop: [%d %d]\n",x_stop,y_stop); | ||
140 | mexPrintf("Res dims: [%d %d]\n",x_rdim,y_rdim); | ||
141 | mexErrMsgTxt("Image sizes and upsampling args are incompatible!"); | ||
142 | } | ||
143 | |||
144 | /* upConv has a bug for even-length kernels when using the | ||
145 | reflect1, extend, or repeat edge-handlers */ | ||
146 | if ((!strcmp(edges,"reflect1") || !strcmp(edges,"extend") || !strcmp(edges,"repeat")) | ||
147 | && | ||
148 | ((x_fdim%2 == 0) || (y_fdim%2 == 0))) | ||
149 | { | ||
150 | orig_filt = filt; | ||
151 | orig_x = x_fdim; | ||
152 | orig_y = y_fdim; | ||
153 | x_fdim = 2*(orig_x/2)+1; | ||
154 | y_fdim = 2*(orig_y/2)+1; | ||
155 | filt = mxCalloc(x_fdim*y_fdim, sizeof(double)); | ||
156 | if (filt == NULL) | ||
157 | mexErrMsgTxt("Cannot allocate necessary temporary space"); | ||
158 | for (y=0; y<orig_y; y++) | ||
159 | for (x=0; x<orig_x; x++) | ||
160 | filt[y*x_fdim + x] = orig_filt[y*orig_x + x]; | ||
161 | } | ||
162 | |||
163 | if ((x_fdim > x_rdim) || (y_fdim > y_rdim)) | ||
164 | { | ||
165 | mexPrintf("Filter: [%d %d], ",x_fdim,y_fdim); | ||
166 | mexPrintf("Result: [%d %d]\n",x_rdim,y_rdim); | ||
167 | mexErrMsgTxt("FILTER dimensions larger than RESULT dimensions."); | ||
168 | } | ||
169 | |||
170 | temp = mxCalloc(x_fdim*y_fdim, sizeof(double)); | ||
171 | if (temp == NULL) | ||
172 | mexErrMsgTxt("Cannot allocate necessary temporary space"); | ||
173 | |||
174 | /* | ||
175 | printf("(%d, %d), (%d, %d), (%d, %d), (%d, %d), (%d, %d), %s\n", | ||
176 | x_idim,y_idim,x_fdim,y_fdim,x_rdim,y_rdim, | ||
177 | x_start,x_step,y_start,y_step,edges); | ||
178 | */ | ||
179 | |||
180 | if (strcmp(edges,"circular") == 0) | ||
181 | internal_wrap_expand(image, filt, x_fdim, y_fdim, | ||
182 | x_start, x_step, x_stop, y_start, y_step, y_stop, | ||
183 | result, x_rdim, y_rdim); | ||
184 | else internal_expand(image, filt, temp, x_fdim, y_fdim, | ||
185 | x_start, x_step, x_stop, y_start, y_step, y_stop, | ||
186 | result, x_rdim, y_rdim, edges); | ||
187 | |||
188 | if (orig_x) mxFree((char *) filt); | ||
189 | mxFree((char *) temp); | ||
190 | |||
191 | return; | ||
192 | } | ||
193 | |||
194 | |||
195 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/wrap.c b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/wrap.c new file mode 100755 index 0000000..a081123 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/MEX/wrap.c | |||
@@ -0,0 +1,281 @@ | |||
1 | /* | ||
2 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
3 | ;;; File: wrap.c | ||
4 | ;;; Author: Eero Simoncelli | ||
5 | ;;; Description: Circular convolution on 2D images. | ||
6 | ;;; Creation Date: Spring, 1987. | ||
7 | ;;; MODIFICATIONS: | ||
8 | ;;; 6/96: Switched array types to double float. | ||
9 | ;;; 2/97: made more robust and readable. Added STOP arguments. | ||
10 | ;;; ---------------------------------------------------------------- | ||
11 | ;;; Object-Based Vision and Image Understanding System (OBVIUS), | ||
12 | ;;; Copyright 1988, Vision Science Group, Media Laboratory, | ||
13 | ;;; Massachusetts Institute of Technology. | ||
14 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
15 | */ | ||
16 | |||
17 | #include <stdlib.h> | ||
18 | |||
19 | #include "convolve.h" | ||
20 | |||
21 | /* | ||
22 | -------------------------------------------------------------------- | ||
23 | Performs correlation (i.e., convolution with filt(-x,-y)) of FILT | ||
24 | with IMAGE followed by subsampling (a.k.a. REDUCE in Burt&Adelson81). | ||
25 | The operations are combined to avoid unnecessary computation of the | ||
26 | convolution samples that are to be discarded in the subsampling | ||
27 | operation. The convolution is done in 9 sections so that mod | ||
28 | operations are not performed unnecessarily. The subsampling lattice | ||
29 | is specified by the START, STEP and STOP parameters. | ||
30 | -------------------------------------------------------------------- */ | ||
31 | |||
32 | /* abstract out the inner product computation */ | ||
33 | #define INPROD(YSTART,YIND,XSTART,XIND) \ | ||
34 | { \ | ||
35 | sum=0.0; \ | ||
36 | for (y_im=YSTART, filt_pos=0, x_filt_stop=x_fdim; \ | ||
37 | x_filt_stop<=filt_size; \ | ||
38 | y_im++, x_filt_stop+=x_fdim) \ | ||
39 | for (x_im=XSTART ; \ | ||
40 | filt_pos<x_filt_stop; \ | ||
41 | filt_pos++, x_im++) \ | ||
42 | sum += imval[YIND][XIND] * filt[filt_pos]; \ | ||
43 | result[res_pos] = sum; \ | ||
44 | } | ||
45 | |||
46 | int internal_wrap_reduce(image, x_dim, y_dim, filt, x_fdim, y_fdim, | ||
47 | x_start, x_step, x_stop, y_start, y_step, y_stop, | ||
48 | result) | ||
49 | register image_type *filt, *result; | ||
50 | register int x_dim, y_dim, x_fdim, y_fdim; | ||
51 | image_type *image; | ||
52 | int x_start, x_step, x_stop, y_start, y_step, y_stop; | ||
53 | { | ||
54 | register double sum; | ||
55 | register int filt_size = x_fdim*y_fdim; | ||
56 | image_type **imval; | ||
57 | register int filt_pos, x_im, y_im, x_filt_stop; | ||
58 | register int x_pos, y_pos, res_pos; | ||
59 | int x_ctr_stop = x_dim - x_fdim + 1; | ||
60 | int y_ctr_stop = y_dim - y_fdim + 1; | ||
61 | int x_ctr_start = 0; | ||
62 | int y_ctr_start = 0; | ||
63 | int x_fmid = x_fdim/2; | ||
64 | int y_fmid = y_fdim/2; | ||
65 | |||
66 | /* shift start/stop coords to filter upper left hand corner */ | ||
67 | x_start -= x_fmid; y_start -= y_fmid; | ||
68 | x_stop -= x_fmid; y_stop -= y_fmid; | ||
69 | |||
70 | if (x_stop < x_ctr_stop) x_ctr_stop = x_stop; | ||
71 | if (y_stop < y_ctr_stop) y_ctr_stop = y_stop; | ||
72 | |||
73 | /* Set up pointer array for rows */ | ||
74 | imval = (image_type **) malloc(y_dim*sizeof(image_type *)); | ||
75 | if (imval IS NULL) | ||
76 | { | ||
77 | printf("INTERNAL_WRAP: Failed to allocate temp array!"); | ||
78 | return(-1); | ||
79 | } | ||
80 | for (y_pos=y_im=0;y_pos<y_dim;y_pos++,y_im+=x_dim) | ||
81 | imval[y_pos] = (image+y_im); | ||
82 | |||
83 | for (res_pos=0, y_pos=y_start; /* TOP ROWS */ | ||
84 | y_pos<y_ctr_start; | ||
85 | y_pos+=y_step) | ||
86 | { | ||
87 | for (x_pos=x_start; | ||
88 | x_pos<x_ctr_start; | ||
89 | x_pos+=x_step, res_pos++) | ||
90 | INPROD(y_pos+y_dim, y_im%y_dim, x_pos+x_dim, x_im%x_dim) | ||
91 | |||
92 | for (; | ||
93 | x_pos<x_ctr_stop; | ||
94 | x_pos+=x_step, res_pos++) | ||
95 | INPROD(y_pos+y_dim, y_im%y_dim, x_pos, x_im) | ||
96 | |||
97 | for (; | ||
98 | x_pos<x_stop; | ||
99 | x_pos+=x_step, res_pos++) | ||
100 | INPROD(y_pos+y_dim, y_im%y_dim, x_pos, x_im%x_dim) | ||
101 | } /* end TOP ROWS */ | ||
102 | |||
103 | for (; /* MID ROWS */ | ||
104 | y_pos<y_ctr_stop; | ||
105 | y_pos+=y_step) | ||
106 | { | ||
107 | for (x_pos=x_start; | ||
108 | x_pos<x_ctr_start; | ||
109 | x_pos+=x_step, res_pos++) | ||
110 | INPROD(y_pos, y_im, x_pos+x_dim, x_im%x_dim) | ||
111 | |||
112 | for (; /* CENTER SECTION */ | ||
113 | x_pos<x_ctr_stop; | ||
114 | x_pos+=x_step, res_pos++) | ||
115 | INPROD(y_pos, y_im, x_pos, x_im) | ||
116 | |||
117 | for (; | ||
118 | x_pos<x_stop; | ||
119 | x_pos+=x_step, res_pos++) | ||
120 | INPROD(y_pos, y_im, x_pos, x_im%x_dim) | ||
121 | } /* end MID ROWS */ | ||
122 | |||
123 | for (; /* BOTTOM ROWS */ | ||
124 | y_pos<y_stop; | ||
125 | y_pos+=y_step) | ||
126 | { | ||
127 | for (x_pos=x_start; | ||
128 | x_pos<x_ctr_start; | ||
129 | x_pos+=x_step, res_pos++) | ||
130 | INPROD(y_pos, y_im%y_dim, x_pos+x_dim, x_im%x_dim) | ||
131 | |||
132 | for (; | ||
133 | x_pos<x_ctr_stop; | ||
134 | x_pos+=x_step, res_pos++) | ||
135 | INPROD(y_pos, y_im%y_dim, x_pos, x_im) | ||
136 | |||
137 | for (; | ||
138 | x_pos<x_stop; | ||
139 | x_pos+=x_step, res_pos++) | ||
140 | INPROD(y_pos, y_im%y_dim, x_pos, x_im%x_dim) | ||
141 | } /* end BOTTOM ROWS */ | ||
142 | |||
143 | free ((image_type **) imval); | ||
144 | |||
145 | return(0); | ||
146 | } /* end of internal_wrap_reduce */ | ||
147 | |||
148 | |||
149 | |||
150 | /* | ||
151 | -------------------------------------------------------------------- | ||
152 | Performs upsampling (padding with zeros) followed by convolution of | ||
153 | FILT with IMAGE (a.k.a. EXPAND in Burt&Adelson81). The operations | ||
154 | are combined to avoid unnecessary multiplication of filter samples | ||
155 | with zeros in the upsampled image. The convolution is done in 9 | ||
156 | sections so that mod operation is not performed unnecessarily. | ||
157 | Arguments are described in the comment above internal_wrap_reduce. | ||
158 | |||
159 | WARNING: this subroutine destructively modifes the RESULT image, so | ||
160 | the user must zero the result before invocation! | ||
161 | -------------------------------------------------------------------- */ | ||
162 | |||
163 | /* abstract out the inner product computation */ | ||
164 | #define INPROD2(YSTART,YIND,XSTART,XIND) \ | ||
165 | { \ | ||
166 | val = image[im_pos]; \ | ||
167 | for (y_res=YSTART, filt_pos=0, x_filt_stop=x_fdim; \ | ||
168 | x_filt_stop<=filt_size; \ | ||
169 | y_res++, x_filt_stop+=x_fdim) \ | ||
170 | for (x_res=XSTART; \ | ||
171 | filt_pos<x_filt_stop; \ | ||
172 | filt_pos++, x_res++) \ | ||
173 | imval[YIND][XIND] += val * filt[filt_pos]; \ | ||
174 | } | ||
175 | |||
176 | int internal_wrap_expand(image, filt, x_fdim, y_fdim, | ||
177 | x_start, x_step, x_stop, y_start, y_step, y_stop, | ||
178 | result, x_dim, y_dim) | ||
179 | register image_type *filt, *result; | ||
180 | register int x_fdim, y_fdim, x_dim, y_dim; | ||
181 | image_type *image; | ||
182 | int x_start, x_step, x_stop, y_start, y_step, y_stop; | ||
183 | { | ||
184 | register double val; | ||
185 | register int filt_size = x_fdim*y_fdim; | ||
186 | image_type **imval; | ||
187 | register int filt_pos, x_res, y_res, x_filt_stop; | ||
188 | register int x_pos, y_pos, im_pos; | ||
189 | int x_ctr_stop = x_dim - x_fdim + 1; | ||
190 | int y_ctr_stop = y_dim - y_fdim + 1; | ||
191 | int x_ctr_start = 0; | ||
192 | int y_ctr_start = 0; | ||
193 | int x_fmid = x_fdim/2; | ||
194 | int y_fmid = y_fdim/2; | ||
195 | |||
196 | /* shift start/stop coords to filter upper left hand corner */ | ||
197 | x_start -= x_fmid; y_start -= y_fmid; | ||
198 | x_stop -= x_fmid; y_stop -= y_fmid; | ||
199 | |||
200 | if (x_stop < x_ctr_stop) x_ctr_stop = x_stop; | ||
201 | if (y_stop < y_ctr_stop) y_ctr_stop = y_stop; | ||
202 | |||
203 | /* Set up pointer array for rows */ | ||
204 | imval = (image_type **) malloc(y_dim*sizeof(image_type *)); | ||
205 | if (imval IS NULL) | ||
206 | { | ||
207 | printf("INTERNAL_WRAP: Failed to allocate temp array!"); | ||
208 | return(-1); | ||
209 | } | ||
210 | for (y_pos=y_res=0;y_pos<y_dim;y_pos++,y_res+=x_dim) | ||
211 | imval[y_pos] = (result+y_res); | ||
212 | |||
213 | for (im_pos=0, y_pos=y_start; /* TOP ROWS */ | ||
214 | y_pos<y_ctr_start; | ||
215 | y_pos+=y_step) | ||
216 | { | ||
217 | for (x_pos=x_start; | ||
218 | x_pos<x_ctr_start; | ||
219 | x_pos+=x_step, im_pos++) | ||
220 | INPROD2(y_pos+y_dim, y_res%y_dim, x_pos+x_dim, x_res%x_dim) | ||
221 | |||
222 | for (; | ||
223 | x_pos<x_ctr_stop; | ||
224 | x_pos+=x_step, im_pos++) | ||
225 | INPROD2(y_pos+y_dim, y_res%y_dim, x_pos, x_res) | ||
226 | |||
227 | for (; | ||
228 | x_pos<x_stop; | ||
229 | x_pos+=x_step, im_pos++) | ||
230 | INPROD2(y_pos+y_dim, y_res%y_dim, x_pos, x_res%x_dim) | ||
231 | } /* end TOP ROWS */ | ||
232 | |||
233 | for (; /* MID ROWS */ | ||
234 | y_pos<y_ctr_stop; | ||
235 | y_pos+=y_step) | ||
236 | { | ||
237 | for (x_pos=x_start; | ||
238 | x_pos<x_ctr_start; | ||
239 | x_pos+=x_step, im_pos++) | ||
240 | INPROD2(y_pos, y_res, x_pos+x_dim, x_res%x_dim) | ||
241 | |||
242 | for (; /* CENTER SECTION */ | ||
243 | x_pos<x_ctr_stop; | ||
244 | x_pos+=x_step, im_pos++) | ||
245 | INPROD2(y_pos, y_res, x_pos, x_res) | ||
246 | |||
247 | for (; | ||
248 | x_pos<x_stop; | ||
249 | x_pos+=x_step, im_pos++) | ||
250 | INPROD2(y_pos, y_res, x_pos, x_res%x_dim) | ||
251 | } /* end MID ROWS */ | ||
252 | |||
253 | for (; /* BOTTOM ROWS */ | ||
254 | y_pos<y_stop; | ||
255 | y_pos+=y_step) | ||
256 | { | ||
257 | for (x_pos=x_start; | ||
258 | x_pos<x_ctr_start; | ||
259 | x_pos+=x_step, im_pos++) | ||
260 | INPROD2(y_pos, y_res%y_dim, x_pos+x_dim, x_res%x_dim) | ||
261 | |||
262 | for (; | ||
263 | x_pos<x_ctr_stop; | ||
264 | x_pos+=x_step, im_pos++) | ||
265 | INPROD2(y_pos, y_res%y_dim, x_pos, x_res) | ||
266 | |||
267 | for (; | ||
268 | x_pos<x_stop; | ||
269 | x_pos+=x_step, im_pos++) | ||
270 | INPROD2(y_pos, y_res%y_dim, x_pos, x_res%x_dim) | ||
271 | } /* end BOTTOM ROWS */ | ||
272 | |||
273 | free ((image_type **) imval); | ||
274 | return(0); | ||
275 | } /* end of internal_wrap_expand */ | ||
276 | |||
277 | |||
278 | |||
279 | /* Local Variables: */ | ||
280 | /* buffer-read-only: t */ | ||
281 | /* End: */ | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/README b/SD-VBS/benchmarks/texture_synthesis/src/matlab/README new file mode 100755 index 0000000..8f339f3 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/README | |||
@@ -0,0 +1,55 @@ | |||
1 | This package contains some MatLab tools for multi-scale image | ||
2 | processing. Briefly, the tools include: | ||
3 | - Recursive multi-scale image decompositions (pyramids), including | ||
4 | Laplacian pyramids, QMFs, Wavelets, and steerable pyramids. These | ||
5 | operate on 1D or 2D signals of arbitrary dimension. Data | ||
6 | structures are compatible with the MatLab wavelet toolbox. | ||
7 | - Fast 2D convolution routines, with subsampling and boundary-handling. | ||
8 | - Fast point-operations, histograms, histogram-matching. | ||
9 | - Fast synthetic image generation: sine gratings, zone plates, fractals, etc. | ||
10 | - Display routines for images and pyramids. These include several | ||
11 | auto-scaling options, rounding to integer zoom factors to avoid | ||
12 | resampling artifacts, and useful labeling (dimensions and gray-range). | ||
13 | |||
14 | The package is available as a gnu-zipped UNIX "tar" file, | ||
15 | accessible from the web page: | ||
16 | http://www.cns.nyu.edu/~lcv/software.html | ||
17 | |||
18 | The code works in Matlab versions 4.2 and higher, and has been fully tested | ||
19 | on Linux and Macintosh OSX platforms (it should, however, port easily to | ||
20 | others). To use the code (these lines are for UNIX): | ||
21 | 1) gunzip matlabPyrTools.tar.gz # unpack g'zipped file | ||
22 | 2) tar tvf matlabPyrTools.tar # view contents | ||
23 | 3) tar xvf matlabPyrTools.tar # extract contents | ||
24 | 4) rm matlabPyrTools.tar # delete tarfile | ||
25 | 5) Run matlab, and execute: | ||
26 | path(<pathname-of-matlabPyrTools>, path); | ||
27 | help matlabPyrTools | ||
28 | |||
29 | A few functions are actually MEX interfaces to C code. These are | ||
30 | contained in the subdirectory called MEX. The MEX files have been | ||
31 | tested on Sun (Solaris), LinuX on a Pentium platform, and Macintosh | ||
32 | OSX on a PowerPC, but should not be difficult to compile on most other | ||
33 | platforms. Source code is included in the MEX directory, as well as | ||
34 | Make files. I've included pre-compiled versions for a number of | ||
35 | platforms (Solaris,Linux,Mac,Windows). To make sure these are in your | ||
36 | matlab path, you can do *one* of the following: | ||
37 | 1) Create a symbolic link (or macintosh "alias") for the relavent files | ||
38 | in the main matlabPyrTools directory, or | ||
39 | 2) Copy the relavent files into the main matlabPyrTools directory, or | ||
40 | 3) Put the MEX subdirectory in your matlab path. | ||
41 | |||
42 | Some example script files showing usage of the code are in the | ||
43 | directory <dir>/TUTORIALS. There is a README file in that directory | ||
44 | describing the contents. | ||
45 | |||
46 | Incremental changes to the code are documented in the ChangeLog file. | ||
47 | |||
48 | Comments/Suggestions/Bugs to: | ||
49 | Eero P. Simoncelli | ||
50 | Associate Professor, | ||
51 | Center for Neural Science, and | ||
52 | Courant Institute for Mathematical Sciences | ||
53 | New York University | ||
54 | eero.simoncelli@nyu.edu | ||
55 | http://www.cns.nyu.edu/~eero/ | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/adjustCorr1s.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/adjustCorr1s.m new file mode 100755 index 0000000..81f428d --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/adjustCorr1s.m | |||
@@ -0,0 +1,63 @@ | |||
1 | % [newX, snr1, M] = adjustCorr1s(X, Cx, MODE, p) | ||
2 | % | ||
3 | % Linearly adjust variables in X to have correlation Cx. | ||
4 | % Rows of X and newX are samples of a (random) row-vector, such that: | ||
5 | % 1: newX = X * M | ||
6 | % 2: newX' * newX = Cx | ||
7 | % | ||
8 | % MODE is optional: | ||
9 | % 0 => choose randomly from the space of linear solutions | ||
10 | % 1 => simplest soln | ||
11 | % 2 => minimize angle change (DEFAULT) | ||
12 | % 3 => SVD minimal vector change soln | ||
13 | % | ||
14 | % p is optional: | ||
15 | % Imposes an intermediate value of correlation between the current one | ||
16 | % C and Cx: | ||
17 | % Cx' = (1-p)*C + p*Cx; | ||
18 | % DEFAULT is p=1. | ||
19 | |||
20 | % EPS, 11/23/97. | ||
21 | |||
22 | function [newX, snr1, M] = adjustCorr1s(X,Co,mode,p) | ||
23 | |||
24 | if (exist('mode') ~= 1) | ||
25 | mode = 2; | ||
26 | end | ||
27 | |||
28 | if (exist('p') ~= 1) | ||
29 | p = 1; | ||
30 | end | ||
31 | |||
32 | C = innerProd(X) / size(X,1); | ||
33 | [E, D] = eig(C); | ||
34 | D = diag(D); | ||
35 | [junk,Ind] = sort(D); | ||
36 | D = diag(sqrt(D(Ind(size(Ind,1):-1:1)))); | ||
37 | E = E(:,Ind(size(Ind,1):-1:1)); | ||
38 | |||
39 | Co0 = Co; | ||
40 | Co = (1-p)*C + p*Co; | ||
41 | |||
42 | [Eo,Do] = eig(Co); | ||
43 | Do = diag(Do); | ||
44 | [junk,Ind] = sort(Do); | ||
45 | Do = diag(sqrt(Do(Ind(size(Ind,1):-1:1)))); | ||
46 | Eo = Eo(:,Ind(size(Ind,1):-1:1)); | ||
47 | |||
48 | if (mode == 0) | ||
49 | Orth = orth(rand(size(C))); | ||
50 | elseif (mode == 1) % eye | ||
51 | Orth = eye(size(C)); | ||
52 | elseif (mode == 2) % simple | ||
53 | Orth = E' * Eo; | ||
54 | else % SVD | ||
55 | [U,S,V] = svd(D * E' * Eo * inv(Do)); | ||
56 | Orth = U * V'; | ||
57 | end | ||
58 | |||
59 | M = E * inv(D) * Orth * Do * Eo'; | ||
60 | |||
61 | newX = X * M; | ||
62 | |||
63 | snr1=10*log10(sum(sum(Co0.^2))/sum(sum((Co0-C).^2))); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/adjustCorr2s.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/adjustCorr2s.m new file mode 100755 index 0000000..3bd0c2e --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/adjustCorr2s.m | |||
@@ -0,0 +1,99 @@ | |||
1 | % [newX, snr1, snr2, Mx, My] = adjustCorr2s(X, Cx, Y, Cxy, MODE, p) | ||
2 | % | ||
3 | % Linearly adjust variables in X to have correlation Cx, and cross-correlation Cxy. | ||
4 | % Rows of X, Y, and newX are samples of (random) row-vectors, such that: | ||
5 | % 1: newX = X * Mx + Y * My | ||
6 | % 2: newX' * newX = Cx | ||
7 | % 3: newX' * Y = Cxy | ||
8 | % | ||
9 | % MODE is optional: | ||
10 | % 0 => choose randomly from the space of linear solutions | ||
11 | % 1 => simplest soln | ||
12 | % 2 => minimize angle change | ||
13 | % 3 => Simple rotational (DEFAULT) | ||
14 | % 4 => SVD minimal vector change soln | ||
15 | % | ||
16 | % p is optional: | ||
17 | % Imposes an intermediate value of correlation between the current ones | ||
18 | % Bx and Bxy and the specified Cx and Cxy: | ||
19 | % Cx' = (1-p)*Bx + p*Cx; | ||
20 | % Cxy' = (1-p)*Bxy + p*Cxy; | ||
21 | % DEFAULT is p=1. | ||
22 | |||
23 | |||
24 | % EPS, 11/25/97 | ||
25 | |||
26 | function [newX,snr1,snr2,Mx,My] = adjustCorr2s(X, Cx, Y, Cxy, mode, p) | ||
27 | |||
28 | Warn = 0; % Set to 1 if you want to display warning messages | ||
29 | if (exist('mode') ~= 1) | ||
30 | mode = 3; | ||
31 | end | ||
32 | if (exist('p') ~= 1) | ||
33 | p = 1; | ||
34 | end | ||
35 | |||
36 | Bx = innerProd(X) / size(X,1); | ||
37 | Bxy = (X' * Y) / size(X,1); | ||
38 | By = innerProd(Y) / size(X,1); | ||
39 | iBy = inv(By); | ||
40 | |||
41 | Current = Bx - (Bxy * iBy * Bxy'); | ||
42 | Cx0 = Cx; | ||
43 | Cx = (1-p)*Bx + p*Cx; | ||
44 | Cxy0 = Cxy; | ||
45 | Cxy = (1-p)*Bxy + p*Cxy; | ||
46 | Desired = Cx - (Cxy * iBy * Cxy'); | ||
47 | |||
48 | [E, D] = eig(Current); | ||
49 | D = diag(D); | ||
50 | if any(D < 0) & Warn | ||
51 | ind = find(D<0); | ||
52 | fprintf(1,'Warning: negative current eigenvalues: %d\n',D(ind)'); | ||
53 | end | ||
54 | [junk,Ind] = sort(D); | ||
55 | D = diag(sqrt(D(Ind(size(Ind,1):-1:1)))); | ||
56 | E = E(:,Ind(size(Ind,1):-1:1)); | ||
57 | |||
58 | [Eo,Do] = eig(Desired); | ||
59 | Do = diag(Do); | ||
60 | if any(Do < 0) & Warn | ||
61 | ind = find(Do<0); | ||
62 | fprintf(1,'Warning: negative desired eigenvalues: %d\n',Do(ind)'); | ||
63 | end | ||
64 | [junk,Ind] = sort(Do); | ||
65 | Do = diag(sqrt(Do(Ind(size(Ind,1):-1:1)))); | ||
66 | Eo = Eo(:,Ind(size(Ind,1):-1:1)); | ||
67 | |||
68 | if (mode == 0) | ||
69 | Orth = orth(rand(size(D))); | ||
70 | elseif (mode == 1) % eye | ||
71 | Orth = eye(size(D)); | ||
72 | elseif (mode == 2) % simple | ||
73 | A = [ eye(size(Cx)); -iBy*Bxy' ]; | ||
74 | Ao = [ eye(size(Cx)); -iBy*Cxy' ]; | ||
75 | [U,S,V] = svd(E' * pinv(A) * Ao * Eo); | ||
76 | Orth = U * V'; | ||
77 | elseif (mode == 3) | ||
78 | Orth = E' * Eo; | ||
79 | else % SVD | ||
80 | A = [ eye(size(Cx)); -iBy*Bxy' ]; | ||
81 | Ao = [ eye(size(Cx)); -iBy*Cxy' ]; | ||
82 | [U,S,V] = svd(D * E' * pinv(A) * Ao * Eo * inv(Do)); | ||
83 | Orth = U * V'; | ||
84 | end | ||
85 | |||
86 | Mx = E * inv(D) * Orth * Do * Eo'; | ||
87 | My = iBy * (Cxy' - Bxy' * Mx); | ||
88 | newX = X * Mx + Y * My; | ||
89 | |||
90 | if Cx0~=Bx, | ||
91 | snr1=10*log10(sum(sum(Cx0.^2))/sum(sum((Cx0-Bx).^2))); | ||
92 | else | ||
93 | snr1 = Inf; | ||
94 | end | ||
95 | if Cxy0~=Bxy, | ||
96 | snr2=10*log10(sum(sum(Cxy0.^2))/sum(sum((Cxy0-Bxy).^2))); | ||
97 | else | ||
98 | snr2 = Inf; | ||
99 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/binomialFilter.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/binomialFilter.m new file mode 100755 index 0000000..e5670c7 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/binomialFilter.m | |||
@@ -0,0 +1,18 @@ | |||
1 | % KERNEL = binomialFilter(size) | ||
2 | % | ||
3 | % Returns a vector of binomial coefficients of order (size-1) . | ||
4 | |||
5 | % Eero Simoncelli, 2/97. | ||
6 | |||
7 | function [kernel] = binomialFilter(sz) | ||
8 | |||
9 | if (sz < 2) | ||
10 | error('size argument must be larger than 1'); | ||
11 | end | ||
12 | |||
13 | kernel = [0.5 0.5]'; | ||
14 | |||
15 | for n=1:sz-2 | ||
16 | kernel = conv([0.5 0.5]', kernel); | ||
17 | end | ||
18 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/blur.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/blur.m new file mode 100755 index 0000000..f993d09 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/blur.m | |||
@@ -0,0 +1,28 @@ | |||
1 | % RES = blur(IM, LEVELS, FILT) | ||
2 | % | ||
3 | % Blur an image, by filtering and downsampling LEVELS times | ||
4 | % (default=1), followed by upsampling and filtering LEVELS times. The | ||
5 | % blurring is done with filter kernel specified by FILT (default = | ||
6 | % 'binom5'), which can be a string (to be passed to namedFilter), a | ||
7 | % vector (applied separably as a 1D convolution kernel in X and Y), or | ||
8 | % a matrix (applied as a 2D convolution kernel). The downsampling is | ||
9 | % always by 2 in each direction. | ||
10 | |||
11 | % Eero Simoncelli, 3/04. | ||
12 | |||
13 | function res = blur(im, nlevs, filt) | ||
14 | |||
15 | %------------------------------------------------------------ | ||
16 | %% OPTIONAL ARGS: | ||
17 | |||
18 | if (exist('nlevs') ~= 1) | ||
19 | nlevs = 1; | ||
20 | end | ||
21 | |||
22 | if (exist('filt') ~= 1) | ||
23 | filt = 'binom5'; | ||
24 | end | ||
25 | |||
26 | %------------------------------------------------------------ | ||
27 | |||
28 | res = upBlur(blurDn(im,nlevs,filt)); \ No newline at end of file | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/blurDn.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/blurDn.m new file mode 100755 index 0000000..8120c04 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/blurDn.m | |||
@@ -0,0 +1,59 @@ | |||
1 | % RES = blurDn(IM, LEVELS, FILT) | ||
2 | % | ||
3 | % Blur and downsample an image. The blurring is done with filter | ||
4 | % kernel specified by FILT (default = 'binom5'), which can be a string | ||
5 | % (to be passed to namedFilter), a vector (applied separably as a 1D | ||
6 | % convolution kernel in X and Y), or a matrix (applied as a 2D | ||
7 | % convolution kernel). The downsampling is always by 2 in each | ||
8 | % direction. | ||
9 | % | ||
10 | % The procedure is applied recursively LEVELS times (default=1). | ||
11 | |||
12 | % Eero Simoncelli, 3/97. | ||
13 | |||
14 | function res = blurDn(im, nlevs, filt) | ||
15 | |||
16 | %------------------------------------------------------------ | ||
17 | %% OPTIONAL ARGS: | ||
18 | |||
19 | if (exist('nlevs') ~= 1) | ||
20 | nlevs = 1; | ||
21 | end | ||
22 | |||
23 | if (exist('filt') ~= 1) | ||
24 | filt = 'binom5'; | ||
25 | end | ||
26 | |||
27 | %------------------------------------------------------------ | ||
28 | |||
29 | if isstr(filt) | ||
30 | filt = namedFilter(filt); | ||
31 | end | ||
32 | |||
33 | filt = filt/sum(filt(:)); | ||
34 | |||
35 | if nlevs > 1 | ||
36 | im = blurDn(im,nlevs-1,filt); | ||
37 | end | ||
38 | |||
39 | if (nlevs >= 1) | ||
40 | if (any(size(im)==1)) | ||
41 | if (~any(size(filt)==1)) | ||
42 | error('Cant apply 2D filter to 1D signal'); | ||
43 | end | ||
44 | if (size(im,2)==1) | ||
45 | filt = filt(:); | ||
46 | else | ||
47 | filt = filt(:)'; | ||
48 | end | ||
49 | res = corrDn(im,filt,'reflect1',(size(im)~=1)+1); | ||
50 | elseif (any(size(filt)==1)) | ||
51 | filt = filt(:); | ||
52 | res = corrDn(im,filt,'reflect1',[2 1]); | ||
53 | res = corrDn(res,filt','reflect1',[1 2]); | ||
54 | else | ||
55 | res = corrDn(im,filt,'reflect1',[2 2]); | ||
56 | end | ||
57 | else | ||
58 | res = im; | ||
59 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildGpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildGpyr.m new file mode 100755 index 0000000..3f3d07b --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildGpyr.m | |||
@@ -0,0 +1,82 @@ | |||
1 | % [PYR, INDICES] = buildGpyr(IM, HEIGHT, FILT, EDGES) | ||
2 | % | ||
3 | % Construct a Gaussian pyramid on matrix IM. | ||
4 | % | ||
5 | % HEIGHT (optional) specifies the number of pyramid levels to build. Default | ||
6 | % is 1+maxPyrHt(size(IM),size(FILT)). | ||
7 | % You can also specify 'auto' to use this value. | ||
8 | % | ||
9 | % FILT (optional) can be a string naming a standard filter (see | ||
10 | % namedFilter), or a vector which will be used for (separable) | ||
11 | % convolution. Default = 'binom5'. EDGES specifies edge-handling, and | ||
12 | % defaults to 'reflect1' (see corrDn). | ||
13 | % | ||
14 | % PYR is a vector containing the N pyramid subbands, ordered from fine | ||
15 | % to coarse. INDICES is an Nx2 matrix containing the sizes of | ||
16 | % each subband. This is compatible with the MatLab Wavelet toolbox. | ||
17 | |||
18 | % Eero Simoncelli, 6/96. | ||
19 | |||
20 | function [pyr,pind] = buildGpyr(im, ht, filt, edges) | ||
21 | |||
22 | if (nargin < 1) | ||
23 | error('First argument (IM) is required'); | ||
24 | end | ||
25 | |||
26 | im_sz = size(im); | ||
27 | |||
28 | %------------------------------------------------------------ | ||
29 | %% OPTIONAL ARGS: | ||
30 | |||
31 | if (exist('filt') ~= 1) | ||
32 | filt = 'binom5'; | ||
33 | end | ||
34 | |||
35 | if isstr(filt) | ||
36 | filt = namedFilter(filt); | ||
37 | end | ||
38 | |||
39 | if ( (size(filt,1) > 1) & (size(filt,2) > 1) ) | ||
40 | error('FILT should be a 1D filter (i.e., a vector)'); | ||
41 | else | ||
42 | filt = filt(:); | ||
43 | end | ||
44 | |||
45 | max_ht = 1 + maxPyrHt(im_sz, size(filt,1)); | ||
46 | if ( (exist('ht') ~= 1) | (ht == 'auto') ) | ||
47 | ht = max_ht; | ||
48 | else | ||
49 | if (ht > max_ht) | ||
50 | error(sprintf('Cannot build pyramid higher than %d levels.',max_ht)); | ||
51 | end | ||
52 | end | ||
53 | |||
54 | if (exist('edges') ~= 1) | ||
55 | edges= 'reflect1'; | ||
56 | end | ||
57 | |||
58 | %------------------------------------------------------------ | ||
59 | |||
60 | if (ht <= 1) | ||
61 | |||
62 | pyr = im(:); | ||
63 | pind = im_sz; | ||
64 | |||
65 | else | ||
66 | |||
67 | if (im_sz(2) == 1) | ||
68 | lo2 = corrDn(im, filt, edges, [2 1], [1 1]); | ||
69 | elseif (im_sz(1) == 1) | ||
70 | lo2 = corrDn(im, filt', edges, [1 2], [1 1]); | ||
71 | else | ||
72 | lo = corrDn(im, filt', edges, [1 2], [1 1]); | ||
73 | lo2 = corrDn(lo, filt, edges, [2 1], [1 1]); | ||
74 | end | ||
75 | |||
76 | [npyr,nind] = buildGpyr(lo2, ht-1, filt, edges); | ||
77 | |||
78 | pyr = [im(:); npyr]; | ||
79 | pind = [im_sz; nind]; | ||
80 | |||
81 | end | ||
82 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildLpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildLpyr.m new file mode 100755 index 0000000..facb0f3 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildLpyr.m | |||
@@ -0,0 +1,109 @@ | |||
1 | % [PYR, INDICES] = buildLpyr(IM, HEIGHT, FILT1, FILT2, EDGES) | ||
2 | % | ||
3 | % Construct a Laplacian pyramid on matrix (or vector) IM. | ||
4 | % | ||
5 | % HEIGHT (optional) specifies the number of pyramid levels to build. Default | ||
6 | % is 1+maxPyrHt(size(IM),size(FILT)). You can also specify 'auto' to | ||
7 | % use this value. | ||
8 | % | ||
9 | % FILT1 (optional) can be a string naming a standard filter (see | ||
10 | % namedFilter), or a vector which will be used for (separable) | ||
11 | % convolution. Default = 'binom5'. FILT2 specifies the "expansion" | ||
12 | % filter (default = filt1). EDGES specifies edge-handling, and | ||
13 | % defaults to 'reflect1' (see corrDn). | ||
14 | % | ||
15 | % PYR is a vector containing the N pyramid subbands, ordered from fine | ||
16 | % to coarse. INDICES is an Nx2 matrix containing the sizes of | ||
17 | % each subband. This is compatible with the MatLab Wavelet toolbox. | ||
18 | |||
19 | % Eero Simoncelli, 6/96. | ||
20 | |||
21 | function [pyr,pind] = buildLpyr(im, ht, filt1, filt2, edges) | ||
22 | |||
23 | if (nargin < 1) | ||
24 | error('First argument (IM) is required'); | ||
25 | end | ||
26 | |||
27 | im_sz = size(im); | ||
28 | |||
29 | %------------------------------------------------------------ | ||
30 | %% OPTIONAL ARGS: | ||
31 | |||
32 | if (exist('filt1') ~= 1) | ||
33 | filt1 = 'binom5'; | ||
34 | end | ||
35 | |||
36 | if isstr(filt1) | ||
37 | filt1 = namedFilter(filt1); | ||
38 | end | ||
39 | |||
40 | if ( (size(filt1,1) > 1) & (size(filt1,2) > 1) ) | ||
41 | error('FILT1 should be a 1D filter (i.e., a vector)'); | ||
42 | else | ||
43 | filt1 = filt1(:); | ||
44 | end | ||
45 | |||
46 | if (exist('filt2') ~= 1) | ||
47 | filt2 = filt1; | ||
48 | end | ||
49 | |||
50 | if isstr(filt2) | ||
51 | filt2 = namedFilter(filt2); | ||
52 | end | ||
53 | |||
54 | if ( (size(filt2,1) > 1) & (size(filt2,2) > 1) ) | ||
55 | error('FILT2 should be a 1D filter (i.e., a vector)'); | ||
56 | else | ||
57 | filt2 = filt2(:); | ||
58 | end | ||
59 | |||
60 | max_ht = 1 + maxPyrHt(im_sz, max(size(filt1,1), size(filt2,1))); | ||
61 | if ( (exist('ht') ~= 1) | (ht == 'auto') ) | ||
62 | ht = max_ht; | ||
63 | else | ||
64 | if (ht > max_ht) | ||
65 | error(sprintf('Cannot build pyramid higher than %d levels.',max_ht)); | ||
66 | end | ||
67 | end | ||
68 | |||
69 | if (exist('edges') ~= 1) | ||
70 | edges= 'reflect1'; | ||
71 | end | ||
72 | |||
73 | %------------------------------------------------------------ | ||
74 | |||
75 | if (ht <= 1) | ||
76 | |||
77 | pyr = im(:); | ||
78 | pind = im_sz; | ||
79 | |||
80 | else | ||
81 | |||
82 | if (im_sz(2) == 1) | ||
83 | lo2 = corrDn(im, filt1, edges, [2 1], [1 1]); | ||
84 | elseif (im_sz(1) == 1) | ||
85 | lo2 = corrDn(im, filt1', edges, [1 2], [1 1]); | ||
86 | else | ||
87 | lo = corrDn(im, filt1', edges, [1 2], [1 1]); | ||
88 | int_sz = size(lo); | ||
89 | lo2 = corrDn(lo, filt1, edges, [2 1], [1 1]); | ||
90 | end | ||
91 | |||
92 | [npyr,nind] = buildLpyr(lo2, ht-1, filt1, filt2, edges); | ||
93 | |||
94 | if (im_sz(1) == 1) | ||
95 | hi2 = upConv(lo2, filt2', edges, [1 2], [1 1], im_sz); | ||
96 | elseif (im_sz(2) == 1) | ||
97 | hi2 = upConv(lo2, filt2, edges, [2 1], [1 1], im_sz); | ||
98 | else | ||
99 | hi = upConv(lo2, filt2, edges, [2 1], [1 1], int_sz); | ||
100 | hi2 = upConv(hi, filt2', edges, [1 2], [1 1], im_sz); | ||
101 | end | ||
102 | |||
103 | hi2 = im - hi2; | ||
104 | |||
105 | pyr = [hi2(:); npyr]; | ||
106 | pind = [im_sz; nind]; | ||
107 | |||
108 | end | ||
109 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildSCFpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildSCFpyr.m new file mode 100755 index 0000000..101b6d2 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildSCFpyr.m | |||
@@ -0,0 +1,90 @@ | |||
1 | % [PYR, INDICES, STEERMTX, HARMONICS] = buildSCFpyr(IM, HEIGHT, ORDER, TWIDTH) | ||
2 | % | ||
3 | % This is a modified version of buildSFpyr, that constructs a | ||
4 | % complex-valued steerable pyramid using Hilbert-transform pairs | ||
5 | % of filters. Note that the imaginary parts will *not* be steerable. | ||
6 | % | ||
7 | % To reconstruct from this representation, either call reconSFpyr | ||
8 | % on the real part of the pyramid, *or* call reconSCFpyr which will | ||
9 | % use both real and imaginary parts (forcing analyticity). | ||
10 | % | ||
11 | % Description of this transform appears in: Portilla & Simoncelli, | ||
12 | % Int'l Journal of Computer Vision, 40(1):49-71, Oct 2000. | ||
13 | % Further information: http://www.cns.nyu.edu/~eero/STEERPYR/ | ||
14 | |||
15 | % Original code: Eero Simoncelli, 5/97. | ||
16 | % Modified by Javier Portilla to return complex (quadrature pair) channels, | ||
17 | % 9/97. | ||
18 | |||
19 | function [pyr,pind,steermtx,harmonics] = buildSCFpyr(im, ht, order, twidth) | ||
20 | |||
21 | %----------------------------------------------------------------- | ||
22 | %% DEFAULTS: | ||
23 | |||
24 | max_ht = floor(log2(min(size(im)))) - 2; | ||
25 | |||
26 | if (exist('ht') ~= 1) | ||
27 | ht = max_ht; | ||
28 | else | ||
29 | if (ht > max_ht) | ||
30 | error(sprintf('Cannot build pyramid higher than %d levels.',max_ht)); | ||
31 | end | ||
32 | end | ||
33 | |||
34 | if (exist('order') ~= 1) | ||
35 | order = 3; | ||
36 | elseif ((order > 15) | (order < 0)) | ||
37 | fprintf(1,'Warning: ORDER must be an integer in the range [0,15]. Truncating.\n'); | ||
38 | order = min(max(order,0),15); | ||
39 | else | ||
40 | order = round(order); | ||
41 | end | ||
42 | nbands = order+1; | ||
43 | |||
44 | if (exist('twidth') ~= 1) | ||
45 | twidth = 1; | ||
46 | elseif (twidth <= 0) | ||
47 | fprintf(1,'Warning: TWIDTH must be positive. Setting to 1.\n'); | ||
48 | twidth = 1; | ||
49 | end | ||
50 | |||
51 | %----------------------------------------------------------------- | ||
52 | %% Steering stuff: | ||
53 | |||
54 | if (mod((nbands),2) == 0) | ||
55 | harmonics = [0:(nbands/2)-1]'*2 + 1; | ||
56 | else | ||
57 | harmonics = [0:(nbands-1)/2]'*2; | ||
58 | end | ||
59 | |||
60 | steermtx = steer2HarmMtx(harmonics, pi*[0:nbands-1]/nbands, 'even'); | ||
61 | |||
62 | %----------------------------------------------------------------- | ||
63 | |||
64 | dims = size(im); | ||
65 | ctr = ceil((dims+0.5)/2); | ||
66 | |||
67 | [xramp,yramp] = meshgrid( ([1:dims(2)]-ctr(2))./(dims(2)/2), ... | ||
68 | ([1:dims(1)]-ctr(1))./(dims(1)/2) ); | ||
69 | angle = atan2(yramp,xramp); | ||
70 | log_rad = sqrt(xramp.^2 + yramp.^2); | ||
71 | log_rad(ctr(1),ctr(2)) = log_rad(ctr(1),ctr(2)-1); | ||
72 | log_rad = log2(log_rad); | ||
73 | |||
74 | %% Radial transition function (a raised cosine in log-frequency): | ||
75 | [Xrcos,Yrcos] = rcosFn(twidth,(-twidth/2),[0 1]); | ||
76 | Yrcos = sqrt(Yrcos); | ||
77 | |||
78 | YIrcos = sqrt(1.0 - Yrcos.^2); | ||
79 | lo0mask = pointOp(log_rad, YIrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); | ||
80 | imdft = fftshift(fft2(im)); | ||
81 | lo0dft = imdft .* lo0mask; | ||
82 | |||
83 | [pyr,pind] = buildSCFpyrLevs(lo0dft, log_rad, Xrcos, Yrcos, angle, ht, nbands); | ||
84 | |||
85 | hi0mask = pointOp(log_rad, Yrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); | ||
86 | hi0dft = imdft .* hi0mask; | ||
87 | hi0 = ifft2(ifftshift(hi0dft)); | ||
88 | |||
89 | pyr = [real(hi0(:)) ; pyr]; | ||
90 | pind = [size(hi0); pind]; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildSCFpyrLevs.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildSCFpyrLevs.m new file mode 100755 index 0000000..bd75695 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildSCFpyrLevs.m | |||
@@ -0,0 +1,73 @@ | |||
1 | % [PYR, INDICES] = buildSCFpyrLevs(LODFT, LOGRAD, XRCOS, YRCOS, ANGLE, HEIGHT, NBANDS) | ||
2 | % | ||
3 | % Recursive function for constructing levels of a steerable pyramid. This | ||
4 | % is called by buildSCFpyr, and is not usually called directly. | ||
5 | |||
6 | % Original code: Eero Simoncelli, 5/97. | ||
7 | % Modified by Javier Portilla to generate complex bands in 9/97. | ||
8 | |||
9 | function [pyr,pind] = buildSCFpyrLevs(lodft,log_rad,Xrcos,Yrcos,angle,ht,nbands); | ||
10 | |||
11 | if (ht <= 0) | ||
12 | |||
13 | lo0 = ifft2(ifftshift(lodft)); | ||
14 | pyr = real(lo0(:)); | ||
15 | pind = size(lo0); | ||
16 | |||
17 | else | ||
18 | |||
19 | bands = zeros(prod(size(lodft)), nbands); | ||
20 | bind = zeros(nbands,2); | ||
21 | |||
22 | % log_rad = log_rad + 1; | ||
23 | Xrcos = Xrcos - log2(2); % shift origin of lut by 1 octave. | ||
24 | |||
25 | lutsize = 1024; | ||
26 | Xcosn = pi*[-(2*lutsize+1):(lutsize+1)]/lutsize; % [-2*pi:pi] | ||
27 | order = nbands-1; | ||
28 | %% divide by sqrt(sum_(n=0)^(N-1) cos(pi*n/N)^(2(N-1)) ) | ||
29 | %% Thanks to Patrick Teo for writing this out :) | ||
30 | const = (2^(2*order))*(factorial(order)^2)/(nbands*factorial(2*order)); | ||
31 | |||
32 | % | ||
33 | % Ycosn = sqrt(const) * (cos(Xcosn)).^order; | ||
34 | % | ||
35 | % analityc version: only take one lobe | ||
36 | alfa= mod(pi+Xcosn,2*pi)-pi; | ||
37 | Ycosn = 2*sqrt(const) * (cos(Xcosn).^order) .* (abs(alfa)<pi/2); | ||
38 | |||
39 | himask = pointOp(log_rad, Yrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); | ||
40 | |||
41 | for b = 1:nbands | ||
42 | anglemask = pointOp(angle, Ycosn, Xcosn(1)+pi*(b-1)/nbands, Xcosn(2)-Xcosn(1)); | ||
43 | banddft = ((-i)^(nbands-1)) .* lodft .* anglemask .* himask; | ||
44 | band = ifft2(ifftshift(banddft)); | ||
45 | |||
46 | % bands(:,b) = real(band(:)); | ||
47 | % analytic version: full complex value | ||
48 | bands(:,b)=band(:); | ||
49 | bind(b,:) = size(band); | ||
50 | end | ||
51 | |||
52 | dims = size(lodft); | ||
53 | ctr = ceil((dims+0.5)/2); | ||
54 | lodims = ceil((dims-0.5)/2); | ||
55 | loctr = ceil((lodims+0.5)/2); | ||
56 | lostart = ctr-loctr+1; | ||
57 | loend = lostart+lodims-1; | ||
58 | |||
59 | log_rad = log_rad(lostart(1):loend(1),lostart(2):loend(2)); | ||
60 | angle = angle(lostart(1):loend(1),lostart(2):loend(2)); | ||
61 | lodft = lodft(lostart(1):loend(1),lostart(2):loend(2)); | ||
62 | YIrcos = abs(sqrt(1.0 - Yrcos.^2)); | ||
63 | lomask = pointOp(log_rad, YIrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); | ||
64 | |||
65 | lodft = lomask .* lodft; | ||
66 | |||
67 | [npyr,nind] = buildSCFpyrLevs(lodft, log_rad, Xrcos, Yrcos, angle, ht-1, nbands); | ||
68 | |||
69 | pyr = [bands(:); npyr]; | ||
70 | pind = [bind; nind]; | ||
71 | |||
72 | end | ||
73 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildSFpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildSFpyr.m new file mode 100755 index 0000000..ae67206 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildSFpyr.m | |||
@@ -0,0 +1,102 @@ | |||
1 | % [PYR, INDICES, STEERMTX, HARMONICS] = buildSFpyr(IM, HEIGHT, ORDER, TWIDTH) | ||
2 | % | ||
3 | % Construct a steerable pyramid on matrix IM, in the Fourier domain. | ||
4 | % This is similar to buildSpyr, except that: | ||
5 | % | ||
6 | % + Reconstruction is exact (within floating point errors) | ||
7 | % + It can produce any number of orientation bands. | ||
8 | % - Typically slower, especially for non-power-of-two sizes. | ||
9 | % - Boundary-handling is circular. | ||
10 | % | ||
11 | % HEIGHT (optional) specifies the number of pyramid levels to build. Default | ||
12 | % is maxPyrHt(size(IM),size(FILT)); | ||
13 | % | ||
14 | % The squared radial functions tile the Fourier plane, with a raised-cosine | ||
15 | % falloff. Angular functions are cos(theta-k\pi/(K+1))^K, where K is | ||
16 | % the ORDER (one less than the number of orientation bands, default= 3). | ||
17 | % | ||
18 | % TWIDTH is the width of the transition region of the radial lowpass | ||
19 | % function, in octaves (default = 1, which gives a raised cosine for | ||
20 | % the bandpass filters). | ||
21 | % | ||
22 | % PYR is a vector containing the N pyramid subbands, ordered from fine | ||
23 | % to coarse. INDICES is an Nx2 matrix containing the sizes of | ||
24 | % each subband. This is compatible with the MatLab Wavelet toolbox. | ||
25 | % See the function STEER for a description of STEERMTX and HARMONICS. | ||
26 | |||
27 | % Eero Simoncelli, 5/97. | ||
28 | % See http://www.cns.nyu.edu/~eero/STEERPYR/ for more | ||
29 | % information about the Steerable Pyramid image decomposition. | ||
30 | |||
31 | function [pyr,pind,steermtx,harmonics] = buildSFpyr(im, ht, order, twidth) | ||
32 | |||
33 | %----------------------------------------------------------------- | ||
34 | %% DEFAULTS: | ||
35 | |||
36 | max_ht = floor(log2(min(size(im)))) - 2; | ||
37 | |||
38 | if (exist('ht') ~= 1) | ||
39 | ht = max_ht; | ||
40 | else | ||
41 | if (ht > max_ht) | ||
42 | error(sprintf('Cannot build pyramid higher than %d levels.',max_ht)); | ||
43 | end | ||
44 | end | ||
45 | |||
46 | if (exist('order') ~= 1) | ||
47 | order = 3; | ||
48 | elseif ((order > 15) | (order < 0)) | ||
49 | fprintf(1,'Warning: ORDER must be an integer in the range [0,15]. Truncating.\n'); | ||
50 | order = min(max(order,0),15); | ||
51 | else | ||
52 | order = round(order); | ||
53 | end | ||
54 | nbands = order+1; | ||
55 | |||
56 | if (exist('twidth') ~= 1) | ||
57 | twidth = 1; | ||
58 | elseif (twidth <= 0) | ||
59 | fprintf(1,'Warning: TWIDTH must be positive. Setting to 1.\n'); | ||
60 | twidth = 1; | ||
61 | end | ||
62 | |||
63 | %----------------------------------------------------------------- | ||
64 | %% Steering stuff: | ||
65 | |||
66 | if (mod((nbands),2) == 0) | ||
67 | harmonics = [0:(nbands/2)-1]'*2 + 1; | ||
68 | else | ||
69 | harmonics = [0:(nbands-1)/2]'*2; | ||
70 | end | ||
71 | |||
72 | steermtx = steer2HarmMtx(harmonics, pi*[0:nbands-1]/nbands, 'even'); | ||
73 | |||
74 | %----------------------------------------------------------------- | ||
75 | |||
76 | dims = size(im); | ||
77 | ctr = ceil((dims+0.5)/2); | ||
78 | |||
79 | [xramp,yramp] = meshgrid( ([1:dims(2)]-ctr(2))./(dims(2)/2), ... | ||
80 | ([1:dims(1)]-ctr(1))./(dims(1)/2) ); | ||
81 | angle = atan2(yramp,xramp); | ||
82 | log_rad = sqrt(xramp.^2 + yramp.^2); | ||
83 | log_rad(ctr(1),ctr(2)) = log_rad(ctr(1),ctr(2)-1); | ||
84 | log_rad = log2(log_rad); | ||
85 | |||
86 | %% Radial transition function (a raised cosine in log-frequency): | ||
87 | [Xrcos,Yrcos] = rcosFn(twidth,(-twidth/2),[0 1]); | ||
88 | Yrcos = sqrt(Yrcos); | ||
89 | |||
90 | YIrcos = sqrt(1.0 - Yrcos.^2); | ||
91 | lo0mask = pointOp(log_rad, YIrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); | ||
92 | imdft = fftshift(fft2(im)); | ||
93 | lo0dft = imdft .* lo0mask; | ||
94 | |||
95 | [pyr,pind] = buildSFpyrLevs(lo0dft, log_rad, Xrcos, Yrcos, angle, ht, nbands); | ||
96 | |||
97 | hi0mask = pointOp(log_rad, Yrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); | ||
98 | hi0dft = imdft .* hi0mask; | ||
99 | hi0 = ifft2(ifftshift(hi0dft)); | ||
100 | |||
101 | pyr = [real(hi0(:)) ; pyr]; | ||
102 | pind = [size(hi0); pind]; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildSFpyrLevs.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildSFpyrLevs.m new file mode 100755 index 0000000..472d861 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildSFpyrLevs.m | |||
@@ -0,0 +1,63 @@ | |||
1 | % [PYR, INDICES] = buildSFpyrLevs(LODFT, LOGRAD, XRCOS, YRCOS, ANGLE, HEIGHT, NBANDS) | ||
2 | % | ||
3 | % Recursive function for constructing levels of a steerable pyramid. This | ||
4 | % is called by buildSFpyr, and is not usually called directly. | ||
5 | |||
6 | % Eero Simoncelli, 5/97. | ||
7 | |||
8 | function [pyr,pind] = buildSFpyrLevs(lodft,log_rad,Xrcos,Yrcos,angle,ht,nbands); | ||
9 | |||
10 | if (ht <= 0) | ||
11 | |||
12 | lo0 = ifft2(ifftshift(lodft)); | ||
13 | pyr = real(lo0(:)); | ||
14 | pind = size(lo0); | ||
15 | |||
16 | else | ||
17 | |||
18 | bands = zeros(prod(size(lodft)), nbands); | ||
19 | bind = zeros(nbands,2); | ||
20 | |||
21 | % log_rad = log_rad + 1; | ||
22 | Xrcos = Xrcos - log2(2); % shift origin of lut by 1 octave. | ||
23 | |||
24 | lutsize = 1024; | ||
25 | Xcosn = pi*[-(2*lutsize+1):(lutsize+1)]/lutsize; % [-2*pi:pi] | ||
26 | order = nbands-1; | ||
27 | %% divide by sqrt(sum_(n=0)^(N-1) cos(pi*n/N)^(2(N-1)) ) | ||
28 | %% Thanks to Patrick Teo for writing this out :) | ||
29 | const = (2^(2*order))*(factorial(order)^2)/(nbands*factorial(2*order)); | ||
30 | Ycosn = sqrt(const) * (cos(Xcosn)).^order; | ||
31 | himask = pointOp(log_rad, Yrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); | ||
32 | |||
33 | for b = 1:nbands | ||
34 | anglemask = pointOp(angle, Ycosn, Xcosn(1)+pi*(b-1)/nbands, Xcosn(2)-Xcosn(1)); | ||
35 | banddft = ((-sqrt(-1))^(nbands-1)) .* lodft .* anglemask .* himask; | ||
36 | band = ifft2(ifftshift(banddft)); | ||
37 | |||
38 | bands(:,b) = real(band(:)); | ||
39 | bind(b,:) = size(band); | ||
40 | end | ||
41 | |||
42 | dims = size(lodft); | ||
43 | ctr = ceil((dims+0.5)/2); | ||
44 | lodims = ceil((dims-0.5)/2); | ||
45 | loctr = ceil((lodims+0.5)/2); | ||
46 | lostart = ctr-loctr+1; | ||
47 | loend = lostart+lodims-1; | ||
48 | |||
49 | log_rad = log_rad(lostart(1):loend(1),lostart(2):loend(2)); | ||
50 | angle = angle(lostart(1):loend(1),lostart(2):loend(2)); | ||
51 | lodft = lodft(lostart(1):loend(1),lostart(2):loend(2)); | ||
52 | YIrcos = abs(sqrt(1.0 - Yrcos.^2)); | ||
53 | lomask = pointOp(log_rad, YIrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); | ||
54 | |||
55 | lodft = lomask .* lodft; | ||
56 | |||
57 | [npyr,nind] = buildSFpyrLevs(lodft, log_rad, Xrcos, Yrcos, angle, ht-1, nbands); | ||
58 | |||
59 | pyr = [bands(:); npyr]; | ||
60 | pind = [bind; nind]; | ||
61 | |||
62 | end | ||
63 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildSpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildSpyr.m new file mode 100755 index 0000000..b2bead6 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildSpyr.m | |||
@@ -0,0 +1,61 @@ | |||
1 | % [PYR, INDICES, STEERMTX, HARMONICS] = buildSpyr(IM, HEIGHT, FILTFILE, EDGES) | ||
2 | % | ||
3 | % Construct a steerable pyramid on matrix IM. | ||
4 | % | ||
5 | % HEIGHT (optional) specifies the number of pyramid levels to build. Default | ||
6 | % is maxPyrHt(size(IM),size(FILT)). | ||
7 | % You can also specify 'auto' to use this value. | ||
8 | % | ||
9 | % FILTFILE (optional) should be a string referring to an m-file that | ||
10 | % returns the rfilters. (examples: 'sp0Filters', 'sp1Filters', | ||
11 | % 'sp3Filters','sp5Filters'. default = 'sp1Filters'). EDGES specifies | ||
12 | % edge-handling, and defaults to 'reflect1' (see corrDn). | ||
13 | % | ||
14 | % PYR is a vector containing the N pyramid subbands, ordered from fine | ||
15 | % to coarse. INDICES is an Nx2 matrix containing the sizes of | ||
16 | % each subband. This is compatible with the MatLab Wavelet toolbox. | ||
17 | % See the function STEER for a description of STEERMTX and HARMONICS. | ||
18 | |||
19 | % Eero Simoncelli, 6/96. | ||
20 | % See http://www.cis.upenn.edu/~eero/steerpyr.html for more | ||
21 | % information about the Steerable Pyramid image decomposition. | ||
22 | |||
23 | function [pyr,pind,steermtx,harmonics] = buildSpyr(im, ht, filtfile, edges) | ||
24 | |||
25 | %----------------------------------------------------------------- | ||
26 | %% DEFAULTS: | ||
27 | |||
28 | if (exist('filtfile') ~= 1) | ||
29 | filtfile = 'sp1Filters'; | ||
30 | end | ||
31 | |||
32 | if (exist('edges') ~= 1) | ||
33 | edges= 'reflect1'; | ||
34 | end | ||
35 | |||
36 | if (isstr(filtfile) & (exist(filtfile) == 2)) | ||
37 | [lo0filt,hi0filt,lofilt,bfilts,steermtx,harmonics] = eval(filtfile); | ||
38 | else | ||
39 | fprintf(1,'\nUse buildSFpyr for pyramids with arbitrary numbers of orientation bands.\n'); | ||
40 | error('FILTFILE argument must be the name of an M-file containing SPYR filters.'); | ||
41 | end | ||
42 | |||
43 | max_ht = maxPyrHt(size(im), size(lofilt,1)); | ||
44 | if ( (exist('ht') ~= 1) | (ht == 'auto') ) | ||
45 | ht = max_ht; | ||
46 | else | ||
47 | if (ht > max_ht) | ||
48 | error(sprintf('Cannot build pyramid higher than %d levels.',max_ht)); | ||
49 | end | ||
50 | end | ||
51 | |||
52 | %----------------------------------------------------------------- | ||
53 | |||
54 | hi0 = corrDn(im, hi0filt, edges); | ||
55 | lo0 = corrDn(im, lo0filt, edges); | ||
56 | |||
57 | [pyr,pind] = buildSpyrLevs(lo0, ht, lofilt, bfilts, edges); | ||
58 | |||
59 | pyr = [hi0(:) ; pyr]; | ||
60 | pind = [size(hi0); pind]; | ||
61 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildSpyrLevs.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildSpyrLevs.m new file mode 100755 index 0000000..4c00077 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildSpyrLevs.m | |||
@@ -0,0 +1,37 @@ | |||
1 | % [PYR, INDICES] = buildSpyrLevs(LOIM, HEIGHT, LOFILT, BFILTS, EDGES) | ||
2 | % | ||
3 | % Recursive function for constructing levels of a steerable pyramid. This | ||
4 | % is called by buildSpyr, and is not usually called directly. | ||
5 | |||
6 | % Eero Simoncelli, 6/96. | ||
7 | |||
8 | function [pyr,pind] = buildSpyrLevs(lo0,ht,lofilt,bfilts,edges); | ||
9 | |||
10 | if (ht <= 0) | ||
11 | |||
12 | pyr = lo0(:); | ||
13 | pind = size(lo0); | ||
14 | |||
15 | else | ||
16 | |||
17 | % Assume square filters: | ||
18 | bfiltsz = round(sqrt(size(bfilts,1))); | ||
19 | |||
20 | bands = zeros(prod(size(lo0)),size(bfilts,2)); | ||
21 | bind = zeros(size(bfilts,2),2); | ||
22 | |||
23 | for b = 1:size(bfilts,2) | ||
24 | filt = reshape(bfilts(:,b),bfiltsz,bfiltsz); | ||
25 | band = corrDn(lo0, filt, edges); | ||
26 | bands(:,b) = band(:); | ||
27 | bind(b,:) = size(band); | ||
28 | end | ||
29 | |||
30 | lo = corrDn(lo0, lofilt, edges, [2 2], [1 1]); | ||
31 | |||
32 | [npyr,nind] = buildSpyrLevs(lo, ht-1, lofilt, bfilts, edges); | ||
33 | |||
34 | pyr = [bands(:); npyr]; | ||
35 | pind = [bind; nind]; | ||
36 | |||
37 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildWpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildWpyr.m new file mode 100755 index 0000000..22ae32f --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/buildWpyr.m | |||
@@ -0,0 +1,100 @@ | |||
1 | % [PYR, INDICES] = buildWpyr(IM, HEIGHT, FILT, EDGES) | ||
2 | % | ||
3 | % Construct a separable orthonormal QMF/wavelet pyramid on matrix (or vector) IM. | ||
4 | % | ||
5 | % HEIGHT (optional) specifies the number of pyramid levels to build. Default | ||
6 | % is maxPyrHt(IM,FILT). You can also specify 'auto' to use this value. | ||
7 | % | ||
8 | % FILT (optional) can be a string naming a standard filter (see | ||
9 | % namedFilter), or a vector which will be used for (separable) | ||
10 | % convolution. Filter can be of even or odd length, but should be symmetric. | ||
11 | % Default = 'qmf9'. EDGES specifies edge-handling, and | ||
12 | % defaults to 'reflect1' (see corrDn). | ||
13 | % | ||
14 | % PYR is a vector containing the N pyramid subbands, ordered from fine | ||
15 | % to coarse. INDICES is an Nx2 matrix containing the sizes of | ||
16 | % each subband. This is compatible with the MatLab Wavelet toolbox. | ||
17 | |||
18 | % Eero Simoncelli, 6/96. | ||
19 | |||
20 | function [pyr,pind] = buildWpyr(im, ht, filt, edges) | ||
21 | |||
22 | if (nargin < 1) | ||
23 | error('First argument (IM) is required'); | ||
24 | end | ||
25 | |||
26 | %------------------------------------------------------------ | ||
27 | %% OPTIONAL ARGS: | ||
28 | |||
29 | if (exist('filt') ~= 1) | ||
30 | filt = 'qmf9'; | ||
31 | end | ||
32 | |||
33 | if (exist('edges') ~= 1) | ||
34 | edges= 'reflect1'; | ||
35 | end | ||
36 | |||
37 | if isstr(filt) | ||
38 | filt = namedFilter(filt); | ||
39 | end | ||
40 | |||
41 | if ( (size(filt,1) > 1) & (size(filt,2) > 1) ) | ||
42 | error('FILT should be a 1D filter (i.e., a vector)'); | ||
43 | else | ||
44 | filt = filt(:); | ||
45 | end | ||
46 | |||
47 | hfilt = modulateFlip(filt); | ||
48 | |||
49 | % Stagger sampling if filter is odd-length: | ||
50 | if (mod(size(filt,1),2) == 0) | ||
51 | stag = 2; | ||
52 | else | ||
53 | stag = 1; | ||
54 | end | ||
55 | |||
56 | im_sz = size(im); | ||
57 | |||
58 | max_ht = maxPyrHt(im_sz, size(filt,1)); | ||
59 | if ( (exist('ht') ~= 1) | (ht == 'auto') ) | ||
60 | ht = max_ht; | ||
61 | else | ||
62 | if (ht > max_ht) | ||
63 | error(sprintf('Cannot build pyramid higher than %d levels.',max_ht)); | ||
64 | end | ||
65 | end | ||
66 | |||
67 | if (ht <= 0) | ||
68 | |||
69 | pyr = im(:); | ||
70 | pind = im_sz; | ||
71 | |||
72 | else | ||
73 | |||
74 | if (im_sz(2) == 1) | ||
75 | lolo = corrDn(im, filt, edges, [2 1], [stag 1]); | ||
76 | hihi = corrDn(im, hfilt, edges, [2 1], [2 1]); | ||
77 | elseif (im_sz(1) == 1) | ||
78 | lolo = corrDn(im, filt', edges, [1 2], [1 stag]); | ||
79 | hihi = corrDn(im, hfilt', edges, [1 2], [1 2]); | ||
80 | else | ||
81 | lo = corrDn(im, filt, edges, [2 1], [stag 1]); | ||
82 | hi = corrDn(im, hfilt, edges, [2 1], [2 1]); | ||
83 | lolo = corrDn(lo, filt', edges, [1 2], [1 stag]); | ||
84 | lohi = corrDn(hi, filt', edges, [1 2], [1 stag]); % horizontal | ||
85 | hilo = corrDn(lo, hfilt', edges, [1 2], [1 2]); % vertical | ||
86 | hihi = corrDn(hi, hfilt', edges, [1 2], [1 2]); % diagonal | ||
87 | end | ||
88 | |||
89 | [npyr,nind] = buildWpyr(lolo, ht-1, filt, edges); | ||
90 | |||
91 | if ((im_sz(1) == 1) | (im_sz(2) == 1)) | ||
92 | pyr = [hihi(:); npyr]; | ||
93 | pind = [size(hihi); nind]; | ||
94 | else | ||
95 | pyr = [lohi(:); hilo(:); hihi(:); npyr]; | ||
96 | pind = [size(lohi); size(hilo); size(hihi); nind]; | ||
97 | end | ||
98 | |||
99 | end | ||
100 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/cconv2.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/cconv2.m new file mode 100755 index 0000000..efba438 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/cconv2.m | |||
@@ -0,0 +1,50 @@ | |||
1 | % RES = CCONV2(MTX1, MTX2, CTR) | ||
2 | % | ||
3 | % Circular convolution of two matrices. Result will be of size of | ||
4 | % LARGER vector. | ||
5 | % | ||
6 | % The origin of the smaller matrix is assumed to be its center. | ||
7 | % For even dimensions, the origin is determined by the CTR (optional) | ||
8 | % argument: | ||
9 | % CTR origin | ||
10 | % 0 DIM/2 (default) | ||
11 | % 1 (DIM/2)+1 | ||
12 | |||
13 | % Eero Simoncelli, 6/96. Modified 2/97. | ||
14 | |||
15 | function c = cconv2(a,b,ctr) | ||
16 | |||
17 | if (exist('ctr') ~= 1) | ||
18 | ctr = 0; | ||
19 | end | ||
20 | |||
21 | if (( size(a,1) >= size(b,1) ) & ( size(a,2) >= size(b,2) )) | ||
22 | large = a; small = b; | ||
23 | elseif (( size(a,1) <= size(b,1) ) & ( size(a,2) <= size(b,2) )) | ||
24 | large = b; small = a; | ||
25 | else | ||
26 | error('one arg must be larger than the other in both dimensions!'); | ||
27 | end | ||
28 | |||
29 | ly = size(large,1); | ||
30 | lx = size(large,2); | ||
31 | sy = size(small,1); | ||
32 | sx = size(small,2); | ||
33 | |||
34 | %% These values are the index of the small mtx that falls on the | ||
35 | %% border pixel of the large matrix when computing the first | ||
36 | %% convolution response sample: | ||
37 | sy2 = floor((sy+ctr+1)/2); | ||
38 | sx2 = floor((sx+ctr+1)/2); | ||
39 | |||
40 | % pad: | ||
41 | clarge = [ ... | ||
42 | large(ly-sy+sy2+1:ly,lx-sx+sx2+1:lx), large(ly-sy+sy2+1:ly,:), ... | ||
43 | large(ly-sy+sy2+1:ly,1:sx2-1); ... | ||
44 | large(:,lx-sx+sx2+1:lx), large, large(:,1:sx2-1); ... | ||
45 | large(1:sy2-1,lx-sx+sx2+1:lx), ... | ||
46 | large(1:sy2-1,:), ... | ||
47 | large(1:sy2-1,1:sx2-1) ]; | ||
48 | |||
49 | c = conv2(clarge,small,'valid'); | ||
50 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/clip.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/clip.m new file mode 100755 index 0000000..28804f3 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/clip.m | |||
@@ -0,0 +1,32 @@ | |||
1 | % [RES] = clip(IM, MINVALorRANGE, MAXVAL) | ||
2 | % | ||
3 | % Clip values of matrix IM to lie between minVal and maxVal: | ||
4 | % RES = max(min(IM,MAXVAL),MINVAL) | ||
5 | % The first argument can also specify both min and max, as a 2-vector. | ||
6 | % If only one argument is passed, the range defaults to [0,1]. | ||
7 | |||
8 | function res = clip(im, minValOrRange, maxVal) | ||
9 | |||
10 | if (exist('minValOrRange') ~= 1) | ||
11 | minVal = 0; | ||
12 | maxVal = 1; | ||
13 | elseif (length(minValOrRange) == 2) | ||
14 | minVal = minValOrRange(1); | ||
15 | maxVal = minValOrRange(2); | ||
16 | elseif (length(minValOrRange) == 1) | ||
17 | minVal = minValOrRange; | ||
18 | if (exist('maxVal') ~= 1) | ||
19 | maxVal=minVal+1; | ||
20 | end | ||
21 | else | ||
22 | error('MINVAL must be a scalar or a 2-vector'); | ||
23 | end | ||
24 | |||
25 | if ( maxVal < minVal ) | ||
26 | error('MAXVAL should be less than MINVAL'); | ||
27 | end | ||
28 | |||
29 | res = im; | ||
30 | res(find(im < minVal)) = minVal; | ||
31 | res(find(im > maxVal)) = maxVal; | ||
32 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/corrDn.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/corrDn.m new file mode 100755 index 0000000..7e07abf --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/corrDn.m | |||
@@ -0,0 +1,63 @@ | |||
1 | % RES = corrDn(IM, FILT, EDGES, STEP, START, STOP) | ||
2 | % | ||
3 | % Compute correlation of matrices IM with FILT, followed by | ||
4 | % downsampling. These arguments should be 1D or 2D matrices, and IM | ||
5 | % must be larger (in both dimensions) than FILT. The origin of filt | ||
6 | % is assumed to be floor(size(filt)/2)+1. | ||
7 | % | ||
8 | % EDGES is a string determining boundary handling: | ||
9 | % 'circular' - Circular convolution | ||
10 | % 'reflect1' - Reflect about the edge pixels | ||
11 | % 'reflect2' - Reflect, doubling the edge pixels | ||
12 | % 'repeat' - Repeat the edge pixels | ||
13 | % 'zero' - Assume values of zero outside image boundary | ||
14 | % 'extend' - Reflect and invert | ||
15 | % 'dont-compute' - Zero output when filter overhangs input boundaries | ||
16 | % | ||
17 | % Downsampling factors are determined by STEP (optional, default=[1 1]), | ||
18 | % which should be a 2-vector [y,x]. | ||
19 | % | ||
20 | % The window over which the convolution occurs is specfied by START | ||
21 | % (optional, default=[1,1], and STOP (optional, default=size(IM)). | ||
22 | % | ||
23 | % NOTE: this operation corresponds to multiplication of a signal | ||
24 | % vector by a matrix whose rows contain copies of the FILT shifted by | ||
25 | % multiples of STEP. See upConv.m for the operation corresponding to | ||
26 | % the transpose of this matrix. | ||
27 | |||
28 | % Eero Simoncelli, 6/96, revised 2/97. | ||
29 | |||
30 | function res = corrDn(im, filt, edges, step, start, stop) | ||
31 | |||
32 | %% NOTE: THIS CODE IS NOT ACTUALLY USED! (MEX FILE IS CALLED INSTEAD) | ||
33 | |||
34 | %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'); | ||
35 | |||
36 | %------------------------------------------------------------ | ||
37 | %% OPTIONAL ARGS: | ||
38 | |||
39 | if (exist('edges') == 1) | ||
40 | if (strcmp(edges,'reflect1') ~= 1) | ||
41 | warning('Using REFLECT1 edge-handling (use MEX code for other options).'); | ||
42 | end | ||
43 | end | ||
44 | |||
45 | if (exist('step') ~= 1) | ||
46 | step = [1,1]; | ||
47 | end | ||
48 | |||
49 | if (exist('start') ~= 1) | ||
50 | start = [1,1]; | ||
51 | end | ||
52 | |||
53 | if (exist('stop') ~= 1) | ||
54 | stop = size(im); | ||
55 | end | ||
56 | |||
57 | %------------------------------------------------------------ | ||
58 | |||
59 | % Reverse order of taps in filt, to do correlation instead of convolution | ||
60 | filt = filt(size(filt,1):-1:1,size(filt,2):-1:1); | ||
61 | |||
62 | tmp = rconv2(im,filt); | ||
63 | res = tmp(start(1):step(1):stop(1),start(2):step(2):stop(2)); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/edges-orig.c b/SD-VBS/benchmarks/texture_synthesis/src/matlab/edges-orig.c new file mode 100755 index 0000000..1f6a98b --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/edges-orig.c | |||
@@ -0,0 +1,494 @@ | |||
1 | /* | ||
2 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
3 | ;;; File: edges.c | ||
4 | ;;; Author: Eero Simoncelli | ||
5 | ;;; Description: Boundary handling routines for use with convolve.c | ||
6 | ;;; Creation Date: Spring 1987. | ||
7 | ;;; MODIFIED, 6/96, to operate on double float arrays. | ||
8 | ;;; MODIFIED by dgp, 4/1/97, to support THINK C. | ||
9 | ;;; ---------------------------------------------------------------- | ||
10 | ;;; Object-Based Vision and Image Understanding System (OBVIUS), | ||
11 | ;;; Copyright 1988, Vision Science Group, Media Laboratory, | ||
12 | ;;; Massachusetts Institute of Technology. | ||
13 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
14 | */ | ||
15 | |||
16 | /* | ||
17 | This file contains functions which determine how edges are to be | ||
18 | handled when performing convolutions of images with linear filters. | ||
19 | Any edge handling function which is local and linear may be defined, | ||
20 | except (unfortunately) constants cannot be added. So to treat the | ||
21 | edges as if the image is surrounded by a gray field, you must paste it | ||
22 | into a gray image, convolve, and crop it out... | ||
23 | The main convolution function is called internal_filter and is defined | ||
24 | in the file convolve.c. The idea is that the convolution function | ||
25 | calls the edge handling function which computes a new filter based on | ||
26 | the old filter and the distance to the edge of the image. For | ||
27 | example, reflection is done by reflecting the filter through the | ||
28 | appropriate axis and summing. Currently defined functions are listed | ||
29 | below. | ||
30 | */ | ||
31 | |||
32 | /* | ||
33 | #define DEBUG | ||
34 | */ | ||
35 | |||
36 | #include <stdio.h> | ||
37 | #include <math.h> | ||
38 | #include <string.h> | ||
39 | #include "convolve.h" | ||
40 | |||
41 | #define sgn(a) ( ((a)>0)?1:(((a)<0)?-1:0) ) | ||
42 | #define clip(a,mn,mx) ( ((a)<(mn))?(mn):(((a)>=(mx))?(mx-1):(a)) ) | ||
43 | |||
44 | int reflect1(), reflect2(), repeat(), zero(), Extend(), nocompute(); | ||
45 | int ereflect(), predict(); | ||
46 | |||
47 | /* Lookup table matching a descriptive string to the edge-handling function */ | ||
48 | #if !THINK_C | ||
49 | static EDGE_HANDLER edge_foos[] = | ||
50 | { | ||
51 | { "dont-compute", nocompute }, /* zero output for filter touching edge */ | ||
52 | { "zero", zero }, /* zero outside of image */ | ||
53 | { "repeat", repeat }, /* repeat edge pixel */ | ||
54 | { "reflect1", reflect1 }, /* reflect about edge pixels */ | ||
55 | { "reflect2", reflect2 }, /* reflect image, including edge pixels */ | ||
56 | { "extend", Extend }, /* extend (reflect & invert) */ | ||
57 | { "predict", predict }, /* predict based on portion covered by filt */ | ||
58 | { "ereflect", ereflect }, /* orthogonal QMF reflection */ | ||
59 | }; | ||
60 | #else | ||
61 | /* | ||
62 | This is really stupid, but THINK C won't allow initialization of static variables in | ||
63 | a code resource with string addresses. So we do it this way. | ||
64 | The 68K code for a MATLAB 4 MEX file can only be created by THINK C. | ||
65 | However, for MATLAB 5, we'll be able to use Metrowerks CodeWarrior for both 68K and PPC, so this | ||
66 | cludge can be dropped when we drop support for MATLAB 4. | ||
67 | Denis Pelli, 4/1/97. | ||
68 | */ | ||
69 | static EDGE_HANDLER edge_foos[8]; | ||
70 | |||
71 | void InitializeTable(EDGE_HANDLER edge_foos[]) | ||
72 | { | ||
73 | static int i=0; | ||
74 | |||
75 | if(i>0) return; | ||
76 | edge_foos[i].name="dont-compute"; | ||
77 | edge_foos[i++].func=nocompute; | ||
78 | edge_foos[i].name="zero"; | ||
79 | edge_foos[i++].func=zero; | ||
80 | edge_foos[i].name="repeat"; | ||
81 | edge_foos[i++].func=repeat; | ||
82 | edge_foos[i].name="reflect1"; | ||
83 | edge_foos[i++].func=reflect1; | ||
84 | edge_foos[i].name="reflect2"; | ||
85 | edge_foos[i++].func=reflect2; | ||
86 | edge_foos[i].name="extend"; | ||
87 | edge_foos[i++].func=Extend; | ||
88 | edge_foos[i].name="predict"; | ||
89 | edge_foos[i++].func=predict; | ||
90 | edge_foos[i].name="ereflect"; | ||
91 | edge_foos[i++].func=ereflect; | ||
92 | } | ||
93 | #endif | ||
94 | |||
95 | /* | ||
96 | Function looks up an edge handler id string in the structure above, and | ||
97 | returns the associated function | ||
98 | */ | ||
99 | fptr edge_function(char *edges) | ||
100 | { | ||
101 | int i; | ||
102 | |||
103 | #if THINK_C | ||
104 | InitializeTable(edge_foos); | ||
105 | #endif | ||
106 | for (i = 0; i<sizeof(edge_foos)/sizeof(EDGE_HANDLER); i++) | ||
107 | if (strcmp(edges,edge_foos[i].name) == 0) | ||
108 | return(edge_foos[i].func); | ||
109 | printf("Error: '%s' is not the name of a valid edge-handler!\n",edges); | ||
110 | for (i=0; i<sizeof(edge_foos)/sizeof(EDGE_HANDLER); i++) | ||
111 | { | ||
112 | if (i==0) printf(" Options are: "); | ||
113 | else printf(", "); | ||
114 | printf("%s",edge_foos[i].name); | ||
115 | } | ||
116 | printf("\n"); | ||
117 | return(0); | ||
118 | } | ||
119 | |||
120 | /* | ||
121 | ---------------- EDGE HANDLER ARGUMENTS ------------------------ | ||
122 | filt - array of filter taps. | ||
123 | x_dim, y_dim - x and y dimensions of filt. | ||
124 | x_pos - position of filter relative to the horizontal image edges. Negative | ||
125 | values indicate left edge, positive indicate right edge. Zero | ||
126 | indicates that the filter is not touching either edge. An absolute | ||
127 | value of 1 indicates that the edge tap of the filter is over the | ||
128 | edge pixel of the image. | ||
129 | y_pos - analogous to x_pos. | ||
130 | result - array where the resulting filter will go. The edge | ||
131 | of this filter will be aligned with the image for application... | ||
132 | f_or_e - equal to one of the two constants EXPAND or FILTER. | ||
133 | -------------------------------------------------------------------- | ||
134 | */ | ||
135 | |||
136 | |||
137 | /* -------------------------------------------------------------------- | ||
138 | nocompute() - Return zero for values where filter hangs over the edge. | ||
139 | */ | ||
140 | |||
141 | int nocompute(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) | ||
142 | register double *filt, *result; | ||
143 | register int x_dim; | ||
144 | int y_dim, x_pos, y_pos, f_or_e; | ||
145 | { | ||
146 | register int i; | ||
147 | register int size = x_dim*y_dim; | ||
148 | |||
149 | if ( (x_pos>1) OR (x_pos<-1) OR (y_pos>1) OR (y_pos<-1) ) | ||
150 | for (i=0; i<size; i++) result[i] = 0.0; | ||
151 | else | ||
152 | for (i=0; i<size; i++) result[i] = filt[i]; | ||
153 | return(0); | ||
154 | } | ||
155 | |||
156 | /* -------------------------------------------------------------------- | ||
157 | zero() - Zero outside of image. Discontinuous, but adds zero energy. */ | ||
158 | |||
159 | int zero(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) | ||
160 | register double *filt, *result; | ||
161 | register int x_dim; | ||
162 | int y_dim, x_pos, y_pos, f_or_e; | ||
163 | { | ||
164 | register int y_filt,x_filt, y_res,x_res; | ||
165 | int filt_sz = x_dim*y_dim; | ||
166 | int x_start = ((x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0)); | ||
167 | int y_start = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); | ||
168 | int i; | ||
169 | |||
170 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
171 | |||
172 | for (y_filt=0, y_res=y_start; | ||
173 | y_filt<filt_sz; | ||
174 | y_filt+=x_dim, y_res+=x_dim) | ||
175 | if ((y_res >= 0) AND (y_res < filt_sz)) | ||
176 | for (x_filt=y_filt, x_res=x_start; | ||
177 | x_filt<y_filt+x_dim; | ||
178 | x_filt++, x_res++) | ||
179 | if ((x_res >= 0) AND (x_res < x_dim)) | ||
180 | result[y_res+x_res] = filt[x_filt]; | ||
181 | return(0); | ||
182 | } | ||
183 | |||
184 | /* -------------------------------------------------------------------- | ||
185 | repeat() - repeat edge pixel. Continuous, but content is usually | ||
186 | different from image. | ||
187 | */ | ||
188 | |||
189 | int repeat(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) | ||
190 | register double *filt, *result; | ||
191 | register int x_dim; | ||
192 | int y_dim, x_pos, y_pos, f_or_e; | ||
193 | { | ||
194 | register int y_filt,x_filt, y_res,x_res; | ||
195 | int filt_sz = x_dim*y_dim; | ||
196 | int x_start = ((x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0)); | ||
197 | int y_start = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); | ||
198 | int i; | ||
199 | |||
200 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
201 | |||
202 | for (y_filt=0, y_res=y_start; | ||
203 | y_filt<filt_sz; | ||
204 | y_filt+=x_dim, y_res+=x_dim) | ||
205 | for (x_filt=y_filt, x_res=x_start; | ||
206 | x_filt<y_filt+x_dim; | ||
207 | x_filt++, x_res++) | ||
208 | result[((y_res>=0)?((y_res<filt_sz)?y_res:(filt_sz-x_dim)):0) | ||
209 | + ((x_res>=0)?((x_res<x_dim)?x_res:(x_dim-1)):0)] | ||
210 | += filt[x_filt]; | ||
211 | return(0); | ||
212 | } | ||
213 | |||
214 | /* -------------------------------------------------------------------- | ||
215 | reflect2() - "Normal" image reflection. The edge pixel is repeated, | ||
216 | then the next pixel, etc. Continuous, attempting to maintain | ||
217 | "similar" content, but discontinuous first derivative. | ||
218 | */ | ||
219 | |||
220 | int reflect2(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) | ||
221 | register double *filt, *result; | ||
222 | register int x_dim; | ||
223 | int y_dim, x_pos, y_pos, f_or_e; | ||
224 | { | ||
225 | register int y_filt,x_filt, y_edge,x_edge; | ||
226 | register int x_base = (x_pos>0)?(x_dim-1):0; | ||
227 | register int y_base = (y_pos>0)?(x_dim*(y_dim-1)):0; | ||
228 | int filt_sz = x_dim*y_dim; | ||
229 | int x_edge_dist = (x_pos>0)?(x_pos-x_dim-1):(x_pos+1); | ||
230 | int y_edge_dist = x_dim * ((y_pos>0)?(y_pos-y_dim-1):(y_pos+1)); | ||
231 | int i; | ||
232 | |||
233 | #ifdef DEBUG | ||
234 | printf("(%d,%d) ",y_pos,x_pos); | ||
235 | if (x_pos==0) printf("\n"); | ||
236 | #endif | ||
237 | |||
238 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
239 | |||
240 | for (y_filt=0, y_edge=y_edge_dist; | ||
241 | y_filt<filt_sz; | ||
242 | y_filt+=x_dim, y_edge+=x_dim) | ||
243 | { | ||
244 | if (y_edge IS 0) y_edge+=x_dim; | ||
245 | for (x_filt=y_filt, x_edge=x_edge_dist; | ||
246 | x_filt<y_filt+x_dim; | ||
247 | x_filt++, x_edge++) | ||
248 | { | ||
249 | if (x_edge IS 0) x_edge++; | ||
250 | result[ABS(y_base-ABS(y_edge)+x_dim) + ABS(x_base-ABS(x_edge)+1)] | ||
251 | += filt[x_filt]; | ||
252 | } | ||
253 | } | ||
254 | return(0); | ||
255 | } | ||
256 | |||
257 | /* -------------------------------------------------------------------- | ||
258 | reflect1() - Reflection through the edge pixels. This is the right thing | ||
259 | to do if you are subsampling by 2, since it maintains parity (even | ||
260 | pixels positions remain even, odd ones remain odd). (note: procedure differs | ||
261 | depending on f_or_e parameter). */ | ||
262 | |||
263 | int reflect1(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) | ||
264 | register double *filt, *result; | ||
265 | register int x_dim; | ||
266 | int y_dim, x_pos, y_pos, f_or_e; | ||
267 | { | ||
268 | int filt_sz = x_dim*y_dim; | ||
269 | register int x_start = 0, y_start = 0, x_stop = x_dim, y_stop = filt_sz; | ||
270 | register int y_filt,x_filt, y_edge,x_edge; | ||
271 | register int x_base = (x_pos>0)?(x_dim-1):0; | ||
272 | register int y_base = (y_pos>0)?(x_dim*(y_dim-1)):0; | ||
273 | int x_edge_dist = (x_pos>0)?(x_pos-x_dim):((x_pos<0)?(x_pos+1):0); | ||
274 | int y_edge_dist = x_dim * ((y_pos>0)?(y_pos-y_dim):((y_pos<0)?(y_pos+1):0)); | ||
275 | int i; | ||
276 | int mx_pos = (x_dim/2)+1; | ||
277 | int my_pos = (y_dim/2)+1; | ||
278 | |||
279 | #ifdef DEBUG | ||
280 | printf("(%d,%d) ",y_pos,x_pos); | ||
281 | if (x_pos==0) printf("\n"); | ||
282 | #endif | ||
283 | |||
284 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
285 | |||
286 | /* if EXPAND and filter is centered on image edge, do not reflect */ | ||
287 | if (f_or_e IS EXPAND) | ||
288 | { | ||
289 | if (x_pos IS mx_pos) x_stop = (x_dim+1)/2; | ||
290 | else if (x_pos IS -mx_pos) { x_start = x_dim/2; x_edge_dist = 0; } | ||
291 | |||
292 | if (y_pos IS my_pos) y_stop = x_dim*((y_dim+1)/2); | ||
293 | else if (y_pos IS -my_pos) { y_start = x_dim*(y_dim/2); y_edge_dist = 0;} | ||
294 | } | ||
295 | |||
296 | /* reflect at boundary of image */ | ||
297 | for (y_filt=y_start, y_edge=y_edge_dist; | ||
298 | y_filt<y_stop; | ||
299 | y_filt+=x_dim, y_edge+=x_dim) | ||
300 | for (x_filt=y_filt+x_start, x_edge=x_edge_dist; | ||
301 | x_filt<y_filt+x_stop; | ||
302 | x_filt++, x_edge++) | ||
303 | result[ABS(y_base-ABS(y_edge)) + ABS(x_base-ABS(x_edge))] | ||
304 | += filt[x_filt]; | ||
305 | |||
306 | /* if EXPAND and filter is not centered on image edge, mult edge by 2 */ | ||
307 | if (f_or_e IS EXPAND) | ||
308 | { | ||
309 | if ( (ABS(x_pos) ISNT mx_pos) AND (x_pos ISNT 0) ) | ||
310 | for (y_filt=x_base; y_filt<filt_sz; y_filt+=x_dim) | ||
311 | result[y_filt] += result[y_filt]; | ||
312 | if ( (ABS(y_pos) ISNT my_pos) AND (y_pos ISNT 0) ) | ||
313 | for (x_filt=y_base; x_filt<y_base+x_dim; x_filt++) | ||
314 | result[x_filt] += result[x_filt]; | ||
315 | } | ||
316 | return(0); | ||
317 | } | ||
318 | |||
319 | /* -------------------------------------------------------------------- | ||
320 | Extend() - Extend image by reflecting and inverting about edge pixel | ||
321 | value. Maintains continuity in intensity AND first derivative (but | ||
322 | not higher derivs). | ||
323 | */ | ||
324 | |||
325 | int Extend(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) | ||
326 | register double *filt, *result; | ||
327 | register int x_dim; | ||
328 | int y_dim, x_pos, y_pos, f_or_e; | ||
329 | { | ||
330 | int filt_sz = x_dim*y_dim; | ||
331 | register int x_start = 0, y_start = 0, x_stop = x_dim, y_stop = filt_sz; | ||
332 | register int y_filt,x_filt, y_edge,x_edge; | ||
333 | register int x_base = (x_pos>0)?(x_dim-1):0; | ||
334 | register int y_base = (y_pos>0)?(x_dim*(y_dim-1)):0; | ||
335 | int x_edge_dist = (x_pos>0)?(x_pos-x_dim):((x_pos<-1)?(x_pos+1):0); | ||
336 | int y_edge_dist = x_dim * ((y_pos>0)?(y_pos-y_dim):((y_pos<-1)?(y_pos+1):0)); | ||
337 | int i; | ||
338 | int mx_pos = (x_dim/2)+1; | ||
339 | int my_pos = (y_dim/2)+1; | ||
340 | |||
341 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
342 | |||
343 | /* if EXPAND and filter is centered on image edge, do not reflect */ | ||
344 | if (f_or_e IS EXPAND) | ||
345 | { | ||
346 | if (x_pos IS mx_pos) x_stop = (x_dim+1)/2; | ||
347 | else if (x_pos IS -mx_pos) { x_start = x_dim/2; x_edge_dist = 0; } | ||
348 | |||
349 | if (y_pos IS my_pos) y_stop = x_dim*((y_dim+1)/2); | ||
350 | else if (y_pos IS -my_pos) { y_start = x_dim*(y_dim/2); y_edge_dist = 0;} | ||
351 | } | ||
352 | |||
353 | /* reflect at boundary of image */ | ||
354 | for (y_filt=y_start, y_edge=y_edge_dist; | ||
355 | y_filt<y_stop; | ||
356 | y_filt+=x_dim, y_edge+=x_dim) | ||
357 | for (x_filt=y_filt+x_start, x_edge=x_edge_dist; | ||
358 | x_filt<y_filt+x_stop; | ||
359 | x_filt++, x_edge++) | ||
360 | if (((!y_base AND (sgn(y_edge) IS -1)) /* y overhanging */ | ||
361 | OR | ||
362 | (y_base AND (sgn(y_edge) IS 1))) | ||
363 | ISNT /* XOR */ | ||
364 | ((!x_base AND (sgn(x_edge) IS -1)) /* x overhanging */ | ||
365 | OR | ||
366 | (x_base AND (sgn(x_edge) IS 1)))) | ||
367 | { | ||
368 | result[ABS(y_base-ABS(y_edge)) + ABS(x_base-ABS(x_edge))] | ||
369 | -= filt[x_filt]; | ||
370 | result[clip(y_base+y_edge,0,y_dim) + clip(x_base+x_edge,0,x_dim)] | ||
371 | += filt[x_filt] + filt[x_filt]; | ||
372 | } | ||
373 | else result[ABS(y_base-ABS(y_edge)) + ABS(x_base-ABS(x_edge))] | ||
374 | += filt[x_filt]; | ||
375 | return(0); | ||
376 | } | ||
377 | |||
378 | /* -------------------------------------------------------------------- | ||
379 | predict() - Simple prediction. Like zero, but multiplies the result | ||
380 | by the reciprocal of the percentage of filter being used. (i.e. if | ||
381 | 50% of the filter is hanging over the edge of the image, multiply the | ||
382 | taps being used by 2). */ | ||
383 | |||
384 | int predict(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) | ||
385 | register double *filt, *result; | ||
386 | register int x_dim; | ||
387 | int y_dim, x_pos, y_pos, f_or_e; | ||
388 | { | ||
389 | register int y_filt,x_filt, y_res,x_res; | ||
390 | register double taps_used = 0.0; /* int *** */ | ||
391 | register double fraction = 0.0; | ||
392 | int filt_sz = x_dim*y_dim; | ||
393 | int x_start = ((x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0)); | ||
394 | int y_start = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); | ||
395 | int i; | ||
396 | |||
397 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
398 | |||
399 | for (y_filt=0, y_res=y_start; | ||
400 | y_filt<filt_sz; | ||
401 | y_filt+=x_dim, y_res+=x_dim) | ||
402 | if ((y_res >= 0) AND (y_res < filt_sz)) | ||
403 | for (x_filt=y_filt, x_res=x_start; | ||
404 | x_filt<y_filt+x_dim; | ||
405 | x_filt++, x_res++) | ||
406 | if ((x_res >= 0) AND (x_res < x_dim)) | ||
407 | { | ||
408 | result[y_res+x_res] = filt[x_filt]; | ||
409 | taps_used += ABS(filt[x_filt]); | ||
410 | } | ||
411 | printf("TU: %f\n",taps_used); | ||
412 | if (f_or_e IS FILTER) | ||
413 | { | ||
414 | /* fraction = ( (double) filt_sz ) / ( (double) taps_used ); */ | ||
415 | for (i=0; i<filt_sz; i++) fraction += ABS(filt[i]); | ||
416 | fraction = ( fraction / taps_used ); | ||
417 | for (i=0; i<filt_sz; i++) result[i] *= fraction; | ||
418 | } | ||
419 | return(0); | ||
420 | } | ||
421 | |||
422 | |||
423 | /* -------------------------------------------------------------------- | ||
424 | Reflect, multiplying tap of filter which is at the edge of the image | ||
425 | by root 2. This maintains orthogonality of odd-length linear-phase | ||
426 | QMF filters, but it is not useful for most applications, since it | ||
427 | alters the DC level. */ | ||
428 | |||
429 | int ereflect(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) | ||
430 | register double *filt, *result; | ||
431 | register int x_dim; | ||
432 | int y_dim, x_pos, y_pos, f_or_e; | ||
433 | { | ||
434 | register int y_filt,x_filt, y_edge,x_edge; | ||
435 | register int x_base = (x_pos>0)?(x_dim-1):0; | ||
436 | register int y_base = x_dim * ( (y_pos>0)?(y_dim-1):0 ); | ||
437 | int filt_sz = x_dim*y_dim; | ||
438 | int x_edge_dist = (x_pos>1)?(x_pos-x_dim):((x_pos<-1)?(x_pos+1):0); | ||
439 | int y_edge_dist = x_dim * ( (y_pos>1)?(y_pos-y_dim):((y_pos<-1)?(y_pos+1):0) ); | ||
440 | int i; | ||
441 | double norm,onorm; | ||
442 | |||
443 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
444 | |||
445 | /* reflect at boundary */ | ||
446 | for (y_filt=0, y_edge=y_edge_dist; | ||
447 | y_filt<filt_sz; | ||
448 | y_filt+=x_dim, y_edge+=x_dim) | ||
449 | for (x_filt=y_filt, x_edge=x_edge_dist; | ||
450 | x_filt<y_filt+x_dim; | ||
451 | x_filt++, x_edge++) | ||
452 | result[ABS(y_base-ABS(y_edge)) + ABS(x_base-ABS(x_edge))] | ||
453 | += filt[x_filt]; | ||
454 | |||
455 | /* now multiply edge by root 2 */ | ||
456 | if (x_pos ISNT 0) | ||
457 | for (y_filt=x_base; y_filt<filt_sz; y_filt+=x_dim) | ||
458 | result[y_filt] *= ROOT2; | ||
459 | if (y_pos ISNT 0) | ||
460 | for (x_filt=y_base; x_filt<y_base+x_dim; x_filt++) | ||
461 | result[x_filt] *= ROOT2; | ||
462 | |||
463 | /* now normalize to norm of original filter */ | ||
464 | for (norm=0.0,i=0; i<filt_sz; i++) | ||
465 | norm += (result[i]*result[i]); | ||
466 | norm=sqrt(norm); | ||
467 | |||
468 | for (onorm=0.0,i=0; i<filt_sz; i++) | ||
469 | onorm += (filt[i]*filt[i]); | ||
470 | onorm = sqrt(onorm); | ||
471 | |||
472 | norm = norm/onorm; | ||
473 | for (i=0; i<filt_sz; i++) | ||
474 | result[i] /= norm; | ||
475 | return(0); | ||
476 | } | ||
477 | |||
478 | |||
479 | /* ------- printout stuff for testing ------------------------------ | ||
480 | printf("Xpos: %d, Ypos: %d", x_pos, y_pos); | ||
481 | for (y_filt=0; y_filt<y_dim; y_filt++) | ||
482 | { | ||
483 | printf("\n"); | ||
484 | for (x_filt=0; x_filt<x_dim; x_filt++) | ||
485 | printf("%6.1f", result[y_filt*x_dim+x_filt]); | ||
486 | } | ||
487 | printf("\n"); | ||
488 | */ | ||
489 | |||
490 | |||
491 | |||
492 | /* Local Variables: */ | ||
493 | /* buffer-read-only: t */ | ||
494 | /* End: */ | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/einstein.pgm b/SD-VBS/benchmarks/texture_synthesis/src/matlab/einstein.pgm new file mode 100755 index 0000000..99b974c --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/einstein.pgm | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/entropy2.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/entropy2.m new file mode 100755 index 0000000..68a2a9f --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/entropy2.m | |||
@@ -0,0 +1,31 @@ | |||
1 | % E = ENTROPY2(MTX,BINSIZE) | ||
2 | % | ||
3 | % Compute the first-order sample entropy of MTX. Samples of VEC are | ||
4 | % first discretized. Optional argument BINSIZE controls the | ||
5 | % discretization, and defaults to 256/(max(VEC)-min(VEC)). | ||
6 | % | ||
7 | % NOTE: This is a heavily biased estimate of entropy when you | ||
8 | % don't have much data. | ||
9 | |||
10 | % Eero Simoncelli, 6/96. | ||
11 | |||
12 | function res = entropy2(mtx,binsize) | ||
13 | |||
14 | %% Ensure it's a vector, not a matrix. | ||
15 | vec = mtx(:); | ||
16 | [mn,mx] = range2(vec); | ||
17 | |||
18 | if (exist('binsize') == 1) | ||
19 | nbins = max((mx-mn)/binsize, 1); | ||
20 | else | ||
21 | nbins = 256; | ||
22 | end | ||
23 | |||
24 | [bincount,bins] = histo(vec,nbins); | ||
25 | |||
26 | %% Collect non-zero bins: | ||
27 | H = bincount(find(bincount)); | ||
28 | H = H/sum(H); | ||
29 | |||
30 | res = -sum(H .* log2(H)); | ||
31 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/expand.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/expand.m new file mode 100755 index 0000000..5f6e4d9 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/expand.m | |||
@@ -0,0 +1,34 @@ | |||
1 | function te = expand(t,f) | ||
2 | |||
3 | % Expand spatially an image t in a factor f | ||
4 | % in X and in Y. | ||
5 | % t may be complex. | ||
6 | % It fills in with zeros in the Fourier domain. | ||
7 | % te = expand(t, f) | ||
8 | % See also: shrink.m | ||
9 | % JPM, May 95, Instituto de Optica, CSIC, Madrid. | ||
10 | |||
11 | [my mx]=size(t); | ||
12 | my=f*my; | ||
13 | mx=f*mx; | ||
14 | Te=zeros(my,mx); | ||
15 | T=f^2*fftshift(fft2(t)); | ||
16 | y1=my/2+2-my/(2*f); | ||
17 | y2=my/2+my/(2*f); | ||
18 | x1=mx/2+2-mx/(2*f); | ||
19 | x2=mx/2+mx/(2*f); | ||
20 | Te(y1:y2,x1:x2)=T(2:my/f,2:mx/f); | ||
21 | Te(y1-1,x1:x2)=T(1,2:mx/f)/2; | ||
22 | Te(y2+1,x1:x2)=((T(1,mx/f:-1:2)/2)').'; | ||
23 | Te(y1:y2,x1-1)=T(2:my/f,1)/2; | ||
24 | Te(y1:y2,x2+1)=((T(my/f:-1:2,1)/2)').'; | ||
25 | esq=T(1,1)/4; | ||
26 | Te(y1-1,x1-1)=esq; | ||
27 | Te(y1-1,x2+1)=esq; | ||
28 | Te(y2+1,x1-1)=esq; | ||
29 | Te(y2+1,x2+1)=esq; | ||
30 | Te=fftshift(Te); | ||
31 | te=ifft2(Te); | ||
32 | if all(imag(t)==0), | ||
33 | te = real(te); | ||
34 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/factorial.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/factorial.m new file mode 100755 index 0000000..9255f43 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/factorial.m | |||
@@ -0,0 +1,16 @@ | |||
1 | %% RES = factorial(NUM) | ||
2 | % | ||
3 | % Factorial function that works on matrices (matlab's does not). | ||
4 | |||
5 | % EPS, 11/02 | ||
6 | |||
7 | function res = factorial(num) | ||
8 | |||
9 | res = ones(size(num)); | ||
10 | |||
11 | ind = find(num > 0); | ||
12 | if ( ~isempty(ind) ) | ||
13 | subNum = num(ind); | ||
14 | res(ind) = subNum .* factorial(subNum-1); | ||
15 | end | ||
16 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/feynman.pgm b/SD-VBS/benchmarks/texture_synthesis/src/matlab/feynman.pgm new file mode 100755 index 0000000..7d14101 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/feynman.pgm | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/histo.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/histo.m new file mode 100755 index 0000000..8da36e5 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/histo.m | |||
@@ -0,0 +1,58 @@ | |||
1 | % [N,X] = histo(MTX, nbinsOrBinsize, binCenter); | ||
2 | % | ||
3 | % Compute a histogram of (all) elements of MTX. N contains the histogram | ||
4 | % counts, X is a vector containg the centers of the histogram bins. | ||
5 | % | ||
6 | % nbinsOrBinsize (optional, default = 101) specifies either | ||
7 | % the number of histogram bins, or the negative of the binsize. | ||
8 | % | ||
9 | % binCenter (optional, default = mean2(MTX)) specifies a center position | ||
10 | % for (any one of) the histogram bins. | ||
11 | % | ||
12 | % How does this differ from MatLab's HIST function? This function: | ||
13 | % - allows uniformly spaced bins only. | ||
14 | % +/- operates on all elements of MTX, instead of columnwise. | ||
15 | % + is much faster (approximately a factor of 80 on my machine). | ||
16 | % + allows specification of number of bins OR binsize. Default=101 bins. | ||
17 | % + allows (optional) specification of binCenter. | ||
18 | |||
19 | % Eero Simoncelli, 3/97. | ||
20 | |||
21 | function [N, X] = histo(mtx, nbins, binCtr) | ||
22 | |||
23 | %% NOTE: THIS CODE IS NOT ACTUALLY USED! (MEX FILE IS CALLED INSTEAD) | ||
24 | |||
25 | %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'); | ||
26 | |||
27 | mtx = mtx(:); | ||
28 | |||
29 | %------------------------------------------------------------ | ||
30 | %% OPTIONAL ARGS: | ||
31 | |||
32 | [mn,mx] = range2(mtx); | ||
33 | |||
34 | if (exist('binCtr') ~= 1) | ||
35 | binCtr = mean(mtx); | ||
36 | end | ||
37 | |||
38 | if (exist('nbins') == 1) | ||
39 | if (nbins < 0) | ||
40 | binSize = -nbins; | ||
41 | else | ||
42 | binSize = ((mx-mn)/nbins); | ||
43 | tmpNbins = round((mx-binCtr)/binSize) - round((mn-binCtr)/binSize); | ||
44 | if (tmpNbins ~= nbins) | ||
45 | warning('Using %d bins instead of requested number (%d)',tmpNbins,nbins); | ||
46 | end | ||
47 | end | ||
48 | else | ||
49 | binSize = ((mx-mn)/101); | ||
50 | end | ||
51 | |||
52 | firstBin = binCtr + binSize*round( (mn-binCtr)/binSize ); | ||
53 | |||
54 | tmpNbins = round((mx-binCtr)/binSize) - round((mn-binCtr)/binSize); | ||
55 | |||
56 | bins = firstBin + binSize*[0:tmpNbins]; | ||
57 | |||
58 | [N, X] = hist(mtx, bins); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/histoMatch.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/histoMatch.m new file mode 100755 index 0000000..ab82782 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/histoMatch.m | |||
@@ -0,0 +1,35 @@ | |||
1 | % RES = histoMatch(MTX, N, X) | ||
2 | % | ||
3 | % Modify elements of MTX so that normalized histogram matches that | ||
4 | % specified by vectors X and N, where N contains the histogram counts | ||
5 | % and X the histogram bin positions (see histo). | ||
6 | |||
7 | % Eero Simoncelli, 7/96. | ||
8 | |||
9 | function res = histoMatch(mtx, N, X) | ||
10 | |||
11 | if ( exist('histo') == 3 ) | ||
12 | [oN, oX] = histo(mtx(:), size(X(:),1)); | ||
13 | else | ||
14 | [oN, oX] = hist(mtx(:), size(X(:),1)); | ||
15 | end | ||
16 | |||
17 | oStep = oX(2) - oX(1); | ||
18 | oC = [0, cumsum(oN)]/sum(oN); | ||
19 | oX = [oX(1)-oStep/2, oX+oStep/2]; | ||
20 | |||
21 | N = N(:)'; | ||
22 | X = X(:)'; | ||
23 | N = N + mean(N)/(1e8); %% HACK: no empty bins ensures nC strictly monotonic | ||
24 | |||
25 | nStep = X(2) - X(1); | ||
26 | nC = [0, cumsum(N)]/sum(N); | ||
27 | nX = [X(1)-nStep/2, X+nStep/2]; | ||
28 | |||
29 | nnX = interp1(nC, nX, oC, 'linear'); | ||
30 | |||
31 | if ( exist('pointOp') == 3 ) | ||
32 | res = pointOp(mtx, nnX, oX(1), oStep); | ||
33 | else | ||
34 | res = reshape(interp1(oX, nnX, mtx(:)),size(mtx,1),size(mtx,2)); | ||
35 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/ifftshift.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/ifftshift.m new file mode 100755 index 0000000..2ade297 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/ifftshift.m | |||
@@ -0,0 +1,15 @@ | |||
1 | % [RES] = ifftshift (MTX) | ||
2 | % | ||
3 | % Inverse of MatLab's FFTSHIFT. That is, | ||
4 | % ifftshift(fftshift(MTX)) = MTX | ||
5 | % for any size MTX. | ||
6 | |||
7 | % Eero Simoncelli, 2/97. | ||
8 | |||
9 | function [res] = ifftshift(mtx) | ||
10 | |||
11 | sz = size(mtx); | ||
12 | DC = ceil((sz+1)./2); % location of DC term in a matlab fft. | ||
13 | |||
14 | res = [mtx(DC(1):sz(1), DC(2):sz(2)) , mtx(DC(1):sz(1), 1:DC(2)-1); ... | ||
15 | mtx(1:DC(1)-1, DC(2):sz(2)) , mtx(1:DC(1)-1, 1:DC(2)-1)]; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/imGradient.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/imGradient.m new file mode 100755 index 0000000..23187e3 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/imGradient.m | |||
@@ -0,0 +1,48 @@ | |||
1 | % [dx, dy] = imGradient(im, edges) | ||
2 | % | ||
3 | % Compute the gradient of the image using smooth derivative filters | ||
4 | % optimized for accurate direction estimation. Coordinate system | ||
5 | % corresponds to standard pixel indexing: X axis points rightward. Y | ||
6 | % axis points downward. EDGES specify boundary handling (see corrDn | ||
7 | % for options). | ||
8 | |||
9 | % EPS, 1997. | ||
10 | % original filters from Int'l Conf Image Processing, 1994. | ||
11 | % updated filters 10/2003. | ||
12 | % Added to matlabPyrTools 10/2004. | ||
13 | |||
14 | function [dx, dy] = imGradient(im, edges) | ||
15 | |||
16 | %% 1D smoothing and differentiation kernels. | ||
17 | %% See Farid & Simoncelli, IEEE Trans Image Processing, 13(4):496-508, April 2004. | ||
18 | |||
19 | if (exist('edges') ~= 1) | ||
20 | edges = 'dont-compute'; | ||
21 | end | ||
22 | |||
23 | gp = [0.037659 0.249153 0.426375 0.249153 0.037659]'; | ||
24 | gd = [-0.109604 -0.276691 0.000000 0.276691 0.109604]'; | ||
25 | |||
26 | dx = corrDn(corrDn(im, gp, edges), gd', edges); | ||
27 | dy = corrDn(corrDn(im, gd, edges), gp', edges); | ||
28 | |||
29 | return | ||
30 | |||
31 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
32 | %%% TEST: | ||
33 | |||
34 | %%Make a ramp with random slope and direction | ||
35 | dir = 2*pi*rand - pi; | ||
36 | slope = 10*rand; | ||
37 | |||
38 | sz = 32 | ||
39 | im = mkRamp(sz, dir, slope); | ||
40 | [dx,dy] = imGradient(im); | ||
41 | showIm(dx + sqrt(-1)*dy); | ||
42 | |||
43 | ctr = (sz*sz/2)+sz/2; | ||
44 | slopeEst = sqrt(dx(ctr).^2 + dy(ctr).^2); | ||
45 | dirEst = atan2(dy(ctr), dx(ctr)); | ||
46 | |||
47 | [slope, slopeEst] | ||
48 | [dir, dirEst] | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/imStats.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/imStats.m new file mode 100755 index 0000000..3d79b4c --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/imStats.m | |||
@@ -0,0 +1,41 @@ | |||
1 | % imStats(IM1,IM2) | ||
2 | % | ||
3 | % Report image (matrix) statistics. | ||
4 | % When called on a single image IM1, report min, max, mean, stdev, | ||
5 | % and kurtosis. | ||
6 | % When called on two images (IM1 and IM2), report min, max, mean, | ||
7 | % stdev of the difference, and also SNR (relative to IM1). | ||
8 | |||
9 | % Eero Simoncelli, 6/96. | ||
10 | |||
11 | function [] = imStats(im1,im2) | ||
12 | |||
13 | if (~isreal(im1)) | ||
14 | error('Args must be real-valued matrices'); | ||
15 | end | ||
16 | |||
17 | if (exist('im2') == 1) | ||
18 | difference = im1 - im2; | ||
19 | [mn,mx] = range2(difference); | ||
20 | mean = mean2(difference); | ||
21 | v = var2(difference,mean); | ||
22 | if (v < realmin) | ||
23 | snr = Inf; | ||
24 | else | ||
25 | snr = 10 * log10(var2(im1)/v); | ||
26 | end | ||
27 | fprintf(1, 'Difference statistics:\n'); | ||
28 | fprintf(1, ' Range: [%c, %c]\n',mn,mx); | ||
29 | fprintf(1, ' Mean: %f, Stdev (rmse): %f, SNR (dB): %f\n',... | ||
30 | mean,sqrt(v),snr); | ||
31 | else | ||
32 | [mn,mx] = range2(im1); | ||
33 | mean = mean2(im1); | ||
34 | var = var2(im1); | ||
35 | stdev = sqrt(real(var))+sqrt(imag(var)); | ||
36 | kurt = kurt2(im1, mean, stdev^2); | ||
37 | fprintf(1, 'Image statistics:\n'); | ||
38 | fprintf(1, ' Range: [%f, %f]\n',mn,mx); | ||
39 | fprintf(1, ' Mean: %f, Stdev: %f, Kurtosis: %f\n',mean,stdev,kurt); | ||
40 | end | ||
41 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/innerProd.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/innerProd.m new file mode 100755 index 0000000..9252c70 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/innerProd.m | |||
@@ -0,0 +1,12 @@ | |||
1 | % RES = innerProd(MTX) | ||
2 | % | ||
3 | % Compute (MTX' * MTX) efficiently (i.e., without copying the matrix) | ||
4 | |||
5 | function res = innerProd(mtx) | ||
6 | |||
7 | %fprintf(1,['WARNING: You should compile the MEX version of' ... | ||
8 | % ' "innerProd.c",\n found in the MEX subdirectory' ... | ||
9 | % ' of matlabPyrTools, and put it in your matlab path.' ... | ||
10 | % ' It is MUCH faster and requires less memory.\n']); | ||
11 | |||
12 | res = mtx' * mtx; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/kurt2.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/kurt2.m new file mode 100755 index 0000000..8351eb4 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/kurt2.m | |||
@@ -0,0 +1,24 @@ | |||
1 | % K = KURT2(MTX,MEAN,VAR) | ||
2 | % | ||
3 | % Sample kurtosis (fourth moment divided by squared variance) | ||
4 | % of a matrix. Kurtosis of a Gaussian distribution is 3. | ||
5 | % MEAN (optional) and VAR (optional) make the computation faster. | ||
6 | |||
7 | % Eero Simoncelli, 6/96. | ||
8 | |||
9 | function res = kurt2(mtx, mn, v) | ||
10 | |||
11 | if (exist('mn') ~= 1) | ||
12 | mn = mean(mean(mtx)); | ||
13 | end | ||
14 | |||
15 | if (exist('v') ~= 1) | ||
16 | v = var2(mtx,mn); | ||
17 | end | ||
18 | |||
19 | if (isreal(mtx)) | ||
20 | res = mean(mean(abs(mtx-mn).^4)) / (v^2); | ||
21 | else | ||
22 | res = mean(mean(real(mtx-mn).^4)) / (real(v)^2) + ... | ||
23 | i*mean(mean(imag(mtx-mn).^4)) / (imag(v)^2); | ||
24 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/lplot.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/lplot.m new file mode 100755 index 0000000..3c67d8b --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/lplot.m | |||
@@ -0,0 +1,43 @@ | |||
1 | % lplot(VEC, XRANGE) | ||
2 | % | ||
3 | % Plot VEC, a vector, in "lollipop" format. | ||
4 | % XRANGE (optional, default = [1,length(VEC)]), should be a 2-vector | ||
5 | % specifying the X positions (for labeling purposes) of the first and | ||
6 | % last sample of VEC. | ||
7 | |||
8 | % Mark Liberman, Linguistics Dept, UPenn, 1994. | ||
9 | |||
10 | function lplot(x,xrange) | ||
11 | |||
12 | if (exist('xrange') ~= 1) | ||
13 | xrange = [1,length(x)]; | ||
14 | end | ||
15 | |||
16 | msize = size(x); | ||
17 | if ( msize(2) == 1) | ||
18 | x = x'; | ||
19 | elseif (msize(1) ~= 1) | ||
20 | error('First arg must be a vector'); | ||
21 | end | ||
22 | |||
23 | if (~isreal(x)) | ||
24 | fprintf(1,'Warning: Imaginary part of signal ignored\n'); | ||
25 | x = abs(x); | ||
26 | end | ||
27 | |||
28 | N = length(x); | ||
29 | index = xrange(1) + (xrange(2)-xrange(1))*[0:(N-1)]/(N-1) | ||
30 | xinc = index(2)-index(1); | ||
31 | |||
32 | xx = [zeros(1,N);x;zeros(1,N)]; | ||
33 | indexis = [index;index;index]; | ||
34 | xdiscrete = [0 xx(:)' 0]; | ||
35 | idiscrete = [index(1)-xinc indexis(:)' index(N)+xinc]; | ||
36 | |||
37 | [mn,mx] = range2(xdiscrete); | ||
38 | ypad = (mx-mn)/12; % MAGIC NUMBER: graph padding | ||
39 | |||
40 | plot(idiscrete, xdiscrete, index, x, 'o'); | ||
41 | axis([index(1)-xinc, index(N)+xinc, mn-ypad, mx+ypad]); | ||
42 | |||
43 | return | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/lpyrHt.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/lpyrHt.m new file mode 100755 index 0000000..d6834d7 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/lpyrHt.m | |||
@@ -0,0 +1,11 @@ | |||
1 | % [HEIGHT] = lpyrHt(INDICES) | ||
2 | % | ||
3 | % Compute height of Laplacian pyramid with given its INDICES matrix. | ||
4 | % See buildLpyr.m | ||
5 | |||
6 | % Eero Simoncelli, 6/96. | ||
7 | |||
8 | function [ht] = lpyrHt(pind) | ||
9 | |||
10 | % Don't count lowpass residual band | ||
11 | ht = size(pind,1)-1; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/maxPyrHt.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/maxPyrHt.m new file mode 100755 index 0000000..84bcf29 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/maxPyrHt.m | |||
@@ -0,0 +1,25 @@ | |||
1 | % HEIGHT = maxPyrHt(IMSIZE, FILTSIZE) | ||
2 | % | ||
3 | % Compute maximum pyramid height for given image and filter sizes. | ||
4 | % Specifically: the number of corrDn operations that can be sequentially | ||
5 | % performed when subsampling by a factor of 2. | ||
6 | |||
7 | % Eero Simoncelli, 6/96. | ||
8 | |||
9 | function height = maxPyrHt(imsz, filtsz) | ||
10 | |||
11 | imsz = imsz(:); | ||
12 | filtsz = filtsz(:); | ||
13 | |||
14 | if any(imsz == 1) % 1D image | ||
15 | imsz = prod(imsz); | ||
16 | filtsz = prod(filtsz); | ||
17 | elseif any(filtsz == 1) % 2D image, 1D filter | ||
18 | filtsz = [filtsz(1); filtsz(1)]; | ||
19 | end | ||
20 | |||
21 | if any(imsz < filtsz) | ||
22 | height = 0; | ||
23 | else | ||
24 | height = 1 + maxPyrHt( floor(imsz/2), filtsz ); | ||
25 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/mccExcludedFiles.log b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mccExcludedFiles.log new file mode 100755 index 0000000..2c5359b --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mccExcludedFiles.log | |||
@@ -0,0 +1,11 @@ | |||
1 | This file contains the list of various toolbox functions that are not | ||
2 | included in the CTF file. An error will be thrown if any of these functions | ||
3 | are called at run-time. Some of these functions may be from toolboxes | ||
4 | that you are not using in your application. The reason for this is that | ||
5 | these toolboxes have overloaded some methods that are called by your code. | ||
6 | If you know which toolboxes are being used by your code, you can use the -p | ||
7 | flag with the -N flag to list these toolboxes explicitly. This will | ||
8 | cause MATLAB Compiler to only look for functions in the specified toolbox | ||
9 | directories in addition to the MATLAB directories. Refer to the MCC | ||
10 | documentation for more information on this. | ||
11 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/mean2.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mean2.m new file mode 100755 index 0000000..177f7ac --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mean2.m | |||
@@ -0,0 +1,7 @@ | |||
1 | % M = MEAN2(MTX) | ||
2 | % | ||
3 | % Sample mean of a matrix. | ||
4 | |||
5 | function res = mean2(mtx) | ||
6 | |||
7 | res = mean(mean(mtx)); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkAngle.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkAngle.m new file mode 100755 index 0000000..bd54f8d --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkAngle.m | |||
@@ -0,0 +1,32 @@ | |||
1 | % IM = mkAngle(SIZE, PHASE, ORIGIN) | ||
2 | % | ||
3 | % Compute a matrix of dimension SIZE (a [Y X] 2-vector, or a scalar) | ||
4 | % containing samples of the polar angle (in radians, CW from the | ||
5 | % X-axis, ranging from -pi to pi), relative to angle PHASE (default = | ||
6 | % 0), about ORIGIN pixel (default = (size+1)/2). | ||
7 | |||
8 | % Eero Simoncelli, 6/96. | ||
9 | |||
10 | function [res] = mkAngle(sz, phase, origin) | ||
11 | |||
12 | sz = sz(:); | ||
13 | if (size(sz,1) == 1) | ||
14 | sz = [sz,sz]; | ||
15 | end | ||
16 | |||
17 | % ----------------------------------------------------------------- | ||
18 | % OPTIONAL args: | ||
19 | |||
20 | if (exist('origin') ~= 1) | ||
21 | origin = (sz+1)/2; | ||
22 | end | ||
23 | |||
24 | % ----------------------------------------------------------------- | ||
25 | |||
26 | [xramp,yramp] = meshgrid( [1:sz(2)]-origin(2), [1:sz(1)]-origin(1) ); | ||
27 | |||
28 | res = atan2(yramp,xramp); | ||
29 | |||
30 | if (exist('phase') == 1) | ||
31 | res = mod(res+(pi-phase),2*pi)-pi; | ||
32 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkAngularSine.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkAngularSine.m new file mode 100755 index 0000000..f5238cc --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkAngularSine.m | |||
@@ -0,0 +1,42 @@ | |||
1 | % IM = mkAngularSine(SIZE, HARMONIC, AMPL, PHASE, ORIGIN) | ||
2 | % | ||
3 | % Make an angular sinusoidal image: | ||
4 | % AMPL * sin( HARMONIC*theta + PHASE), | ||
5 | % where theta is the angle about the origin. | ||
6 | % SIZE specifies the matrix size, as for zeros(). | ||
7 | % AMPL (default = 1) and PHASE (default = 0) are optional. | ||
8 | |||
9 | % Eero Simoncelli, 2/97. | ||
10 | |||
11 | function [res] = mkAngularSine(sz, harmonic, ampl, ph, origin) | ||
12 | |||
13 | sz = sz(:); | ||
14 | if (size(sz,1) == 1) | ||
15 | sz = [sz,sz]; | ||
16 | end | ||
17 | |||
18 | mxsz = max(sz(1),sz(2)); | ||
19 | |||
20 | %------------------------------------------------------------ | ||
21 | %% OPTIONAL ARGS: | ||
22 | |||
23 | if (exist('harmonic') ~= 1) | ||
24 | harmonic = 1; | ||
25 | end | ||
26 | |||
27 | if (exist('ampl') ~= 1) | ||
28 | ampl = 1; | ||
29 | end | ||
30 | |||
31 | if (exist('ph') ~= 1) | ||
32 | ph = 0; | ||
33 | end | ||
34 | |||
35 | if (exist('origin') ~= 1) | ||
36 | origin = (sz+1)/2; | ||
37 | end | ||
38 | |||
39 | %------------------------------------------------------------ | ||
40 | |||
41 | res = ampl * sin(harmonic*mkAngle(sz,ph,origin) + ph); | ||
42 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkDisc.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkDisc.m new file mode 100755 index 0000000..33e7d6d --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkDisc.m | |||
@@ -0,0 +1,61 @@ | |||
1 | % IM = mkDisc(SIZE, RADIUS, ORIGIN, TWIDTH, VALS) | ||
2 | % | ||
3 | % Make a "disk" image. SIZE specifies the matrix size, as for | ||
4 | % zeros(). RADIUS (default = min(size)/4) specifies the radius of | ||
5 | % the disk. ORIGIN (default = (size+1)/2) specifies the | ||
6 | % location of the disk center. TWIDTH (in pixels, default = 2) | ||
7 | % specifies the width over which a soft threshold transition is made. | ||
8 | % VALS (default = [0,1]) should be a 2-vector containing the | ||
9 | % intensity value inside and outside the disk. | ||
10 | |||
11 | % Eero Simoncelli, 6/96. | ||
12 | |||
13 | function [res] = mkDisc(sz, rad, origin, twidth, vals) | ||
14 | |||
15 | if (nargin < 1) | ||
16 | error('Must pass at least a size argument'); | ||
17 | end | ||
18 | |||
19 | sz = sz(:); | ||
20 | if (size(sz,1) == 1) | ||
21 | sz = [sz sz]; | ||
22 | end | ||
23 | |||
24 | %------------------------------------------------------------ | ||
25 | % OPTIONAL ARGS: | ||
26 | |||
27 | if (exist('rad') ~= 1) | ||
28 | rad = min(sz(1),sz(2))/4; | ||
29 | end | ||
30 | |||
31 | if (exist('origin') ~= 1) | ||
32 | origin = (sz+1)./2; | ||
33 | end | ||
34 | |||
35 | if (exist('twidth') ~= 1) | ||
36 | twidth = 2; | ||
37 | end | ||
38 | |||
39 | if (exist('vals') ~= 1) | ||
40 | vals = [1,0]; | ||
41 | end | ||
42 | |||
43 | %------------------------------------------------------------ | ||
44 | |||
45 | res = mkR(sz,1,origin); | ||
46 | |||
47 | if (abs(twidth) < realmin) | ||
48 | res = vals(2) + (vals(1) - vals(2)) * (res <= rad); | ||
49 | else | ||
50 | [Xtbl,Ytbl] = rcosFn(twidth, rad, [vals(1), vals(2)]); | ||
51 | res = pointOp(res, Ytbl, Xtbl(1), Xtbl(2)-Xtbl(1), 0); | ||
52 | % | ||
53 | % OLD interp1 VERSION: | ||
54 | % res = res(:); | ||
55 | % Xtbl(1) = min(res); | ||
56 | % Xtbl(size(Xtbl,2)) = max(res); | ||
57 | % res = reshape(interp1(Xtbl,Ytbl,res), sz(1), sz(2)); | ||
58 | % | ||
59 | end | ||
60 | |||
61 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkFract.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkFract.m new file mode 100755 index 0000000..af95cd5 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkFract.m | |||
@@ -0,0 +1,36 @@ | |||
1 | % IM = mkFract(SIZE, FRACT_DIM) | ||
2 | % | ||
3 | % Make a matrix of dimensions SIZE (a [Y X] 2-vector, or a scalar) | ||
4 | % containing fractal (pink) noise with power spectral density of the | ||
5 | % form: 1/f^(5-2*FRACT_DIM). Image variance is normalized to 1.0. | ||
6 | % FRACT_DIM defaults to 1.0 | ||
7 | |||
8 | % Eero Simoncelli, 6/96. | ||
9 | |||
10 | %% TODO: Verify that this matches Mandelbrot defn of fractal dimension. | ||
11 | %% Make this more efficient! | ||
12 | |||
13 | function res = mkFract(dims, fract_dim) | ||
14 | |||
15 | if (exist('fract_dim') ~= 1) | ||
16 | fract_dim = 1.0; | ||
17 | end | ||
18 | |||
19 | res = randn(dims); | ||
20 | fres = fft2(res); | ||
21 | |||
22 | sz = size(res); | ||
23 | ctr = ceil((sz+1)./2); | ||
24 | |||
25 | shape = ifftshift(mkR(sz, -(2.5-fract_dim), ctr)); | ||
26 | shape(1,1) = 1; %%DC term | ||
27 | |||
28 | fres = shape .* fres; | ||
29 | fres = ifft2(fres); | ||
30 | |||
31 | if (max(max(abs(imag(fres)))) > 1e-10) | ||
32 | error('Symmetry error in creating fractal'); | ||
33 | else | ||
34 | res = real(fres); | ||
35 | res = res / sqrt(var2(res)); | ||
36 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkGaussian.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkGaussian.m new file mode 100755 index 0000000..fa8a554 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkGaussian.m | |||
@@ -0,0 +1,58 @@ | |||
1 | % IM = mkGaussian(SIZE, COVARIANCE, MEAN, AMPLITUDE) | ||
2 | % | ||
3 | % Compute a matrix with dimensions SIZE (a [Y X] 2-vector, or a | ||
4 | % scalar) containing a Gaussian function, centered at pixel position | ||
5 | % specified by MEAN (default = (size+1)/2), with given COVARIANCE (can | ||
6 | % be a scalar, 2-vector, or 2x2 matrix. Default = (min(size)/6)^2), | ||
7 | % and AMPLITUDE. AMPLITUDE='norm' (default) will produce a | ||
8 | % probability-normalized function. All but the first argument are | ||
9 | % optional. | ||
10 | |||
11 | % Eero Simoncelli, 6/96. | ||
12 | |||
13 | function [res] = mkGaussian(sz, cov, mn, ampl) | ||
14 | |||
15 | sz = sz(:); | ||
16 | if (size(sz,1) == 1) | ||
17 | sz = [sz,sz]; | ||
18 | end | ||
19 | |||
20 | %------------------------------------------------------------ | ||
21 | %% OPTIONAL ARGS: | ||
22 | |||
23 | if (exist('cov') ~= 1) | ||
24 | cov = (min(sz(1),sz(2))/6)^2; | ||
25 | end | ||
26 | |||
27 | if (exist('mn') ~= 1) | ||
28 | mn = (sz+1)/2; | ||
29 | end | ||
30 | |||
31 | if (exist('ampl') ~= 1) | ||
32 | ampl = 'norm'; | ||
33 | end | ||
34 | |||
35 | %------------------------------------------------------------ | ||
36 | |||
37 | [xramp,yramp] = meshgrid([1:sz(2)]-mn(2),[1:sz(1)]-mn(1)); | ||
38 | |||
39 | if (sum(size(cov)) == 2) % scalar | ||
40 | if (strcmp(ampl,'norm')) | ||
41 | ampl = 1/(2*pi*cov(1)); | ||
42 | end | ||
43 | e = (xramp.^2 + yramp.^2)/(-2 * cov); | ||
44 | elseif (sum(size(cov)) == 3) % a 2-vector | ||
45 | if (strcmp(ampl,'norm')) | ||
46 | ampl = 1/(2*pi*sqrt(cov(1)*cov(2))); | ||
47 | end | ||
48 | e = xramp.^2/(-2 * cov(2)) + yramp.^2/(-2 * cov(1)); | ||
49 | else | ||
50 | if (strcmp(ampl,'norm')) | ||
51 | ampl = 1/(2*pi*sqrt(det(cov))); | ||
52 | end | ||
53 | cov = -inv(cov)/2; | ||
54 | e = cov(2,2)*xramp.^2 + (cov(1,2)+cov(2,1))*(xramp.*yramp) ... | ||
55 | + cov(1,1)*yramp.^2; | ||
56 | end | ||
57 | |||
58 | res = ampl .* exp(e); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkImpulse.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkImpulse.m new file mode 100755 index 0000000..9844ee8 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkImpulse.m | |||
@@ -0,0 +1,25 @@ | |||
1 | % IM = mkImpulse(SIZE, ORIGIN, AMPLITUDE) | ||
2 | % | ||
3 | % Compute a matrix of dimension SIZE (a [Y X] 2-vector, or a scalar) | ||
4 | % containing a single non-zero entry, at position ORIGIN (defaults to | ||
5 | % ceil(size/2)), of value AMPLITUDE (defaults to 1). | ||
6 | |||
7 | % Eero Simoncelli, 6/96. | ||
8 | |||
9 | function [res] = mkImpulse(sz, origin, amplitude) | ||
10 | |||
11 | sz = sz(:)'; | ||
12 | if (size(sz,2) == 1) | ||
13 | sz = [sz sz]; | ||
14 | end | ||
15 | |||
16 | if (exist('origin') ~= 1) | ||
17 | origin = ceil(sz/2); | ||
18 | end | ||
19 | |||
20 | if (exist('amplitude') ~= 1) | ||
21 | amplitude = 1; | ||
22 | end | ||
23 | |||
24 | res = zeros(sz); | ||
25 | res(origin(1),origin(2)) = amplitude; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkR.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkR.m new file mode 100755 index 0000000..a1e8448 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkR.m | |||
@@ -0,0 +1,32 @@ | |||
1 | % IM = mkR(SIZE, EXPT, ORIGIN) | ||
2 | % | ||
3 | % Compute a matrix of dimension SIZE (a [Y X] 2-vector, or a scalar) | ||
4 | % containing samples of a radial ramp function, raised to power EXPT | ||
5 | % (default = 1), with given ORIGIN (default = (size+1)/2, [1 1] = | ||
6 | % upper left). All but the first argument are optional. | ||
7 | |||
8 | % Eero Simoncelli, 6/96. | ||
9 | |||
10 | function [res] = mkR(sz, expt, origin) | ||
11 | |||
12 | sz = sz(:); | ||
13 | if (size(sz,1) == 1) | ||
14 | sz = [sz,sz]; | ||
15 | end | ||
16 | |||
17 | % ----------------------------------------------------------------- | ||
18 | % OPTIONAL args: | ||
19 | |||
20 | if (exist('expt') ~= 1) | ||
21 | expt = 1; | ||
22 | end | ||
23 | |||
24 | if (exist('origin') ~= 1) | ||
25 | origin = (sz+1)/2; | ||
26 | end | ||
27 | |||
28 | % ----------------------------------------------------------------- | ||
29 | |||
30 | [xramp,yramp] = meshgrid( [1:sz(2)]-origin(2), [1:sz(1)]-origin(1) ); | ||
31 | |||
32 | res = (xramp.^2 + yramp.^2).^(expt/2); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkRamp.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkRamp.m new file mode 100755 index 0000000..dd37164 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkRamp.m | |||
@@ -0,0 +1,47 @@ | |||
1 | % IM = mkRamp(SIZE, DIRECTION, SLOPE, INTERCEPT, ORIGIN) | ||
2 | % | ||
3 | % Compute a matrix of dimension SIZE (a [Y X] 2-vector, or a scalar) | ||
4 | % containing samples of a ramp function, with given gradient DIRECTION | ||
5 | % (radians, CW from X-axis, default = 0), SLOPE (per pixel, default = | ||
6 | % 1), and a value of INTERCEPT (default = 0) at the ORIGIN (default = | ||
7 | % (size+1)/2, [1 1] = upper left). All but the first argument are | ||
8 | % optional. | ||
9 | |||
10 | % Eero Simoncelli, 6/96. 2/97: adjusted coordinate system. | ||
11 | |||
12 | function [res] = mkRamp(sz, dir, slope, intercept, origin) | ||
13 | |||
14 | sz = sz(:); | ||
15 | if (size(sz,1) == 1) | ||
16 | sz = [sz,sz]; | ||
17 | end | ||
18 | |||
19 | % ----------------------------------------------------------------- | ||
20 | % OPTIONAL args: | ||
21 | |||
22 | if (exist('dir') ~= 1) | ||
23 | dir = 0; | ||
24 | end | ||
25 | |||
26 | if (exist('slope') ~= 1) | ||
27 | slope = 1; | ||
28 | end | ||
29 | |||
30 | if (exist('intercept') ~= 1) | ||
31 | intercept = 0; | ||
32 | end | ||
33 | |||
34 | if (exist('origin') ~= 1) | ||
35 | origin = (sz+1)/2; | ||
36 | end | ||
37 | |||
38 | % ----------------------------------------------------------------- | ||
39 | |||
40 | xinc = slope*cos(dir); | ||
41 | yinc = slope*sin(dir); | ||
42 | |||
43 | [xramp,yramp] = meshgrid( xinc*([1:sz(2)]-origin(2)), ... | ||
44 | yinc*([1:sz(1)]-origin(1)) ); | ||
45 | |||
46 | res = intercept + xramp + yramp; | ||
47 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkSine.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkSine.m new file mode 100755 index 0000000..147eb01 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkSine.m | |||
@@ -0,0 +1,67 @@ | |||
1 | % IM = mkSine(SIZE, PERIOD, DIRECTION, AMPLITUDE, PHASE, ORIGIN) | ||
2 | % or | ||
3 | % IM = mkSine(SIZE, FREQ, AMPLITUDE, PHASE, ORIGIN) | ||
4 | % | ||
5 | % Compute a matrix of dimension SIZE (a [Y X] 2-vector, or a scalar) | ||
6 | % containing samples of a 2D sinusoid, with given PERIOD (in pixels), | ||
7 | % DIRECTION (radians, CW from X-axis, default = 0), AMPLITUDE (default | ||
8 | % = 1), and PHASE (radians, relative to ORIGIN, default = 0). ORIGIN | ||
9 | % defaults to the center of the image. | ||
10 | % | ||
11 | % In the second form, FREQ is a 2-vector of frequencies (radians/pixel). | ||
12 | |||
13 | % Eero Simoncelli, 6/96. | ||
14 | |||
15 | function [res] = mkSine(sz, per_freq, dir_amp, amp_phase, phase_orig, orig) | ||
16 | |||
17 | %------------------------------------------------------------ | ||
18 | %% OPTIONAL ARGS: | ||
19 | |||
20 | if (prod(size(per_freq)) == 2) | ||
21 | frequency = norm(per_freq); | ||
22 | direction = atan2(per_freq(1),per_freq(2)); | ||
23 | if (exist('dir_amp') == 1) | ||
24 | amplitude = dir_amp; | ||
25 | else | ||
26 | amplitude = 1; | ||
27 | end | ||
28 | if (exist('amp_phase') == 1) | ||
29 | phase = amp_phase; | ||
30 | else | ||
31 | phase = 0; | ||
32 | end | ||
33 | if (exist('phase_orig') == 1) | ||
34 | origin = phase_orig; | ||
35 | end | ||
36 | if (exist('orig') == 1) | ||
37 | error('Too many arguments for (second form) of mkSine'); | ||
38 | end | ||
39 | else | ||
40 | frequency = 2*pi/per_freq; | ||
41 | if (exist('dir_amp') == 1) | ||
42 | direction = dir_amp; | ||
43 | else | ||
44 | direction = 0; | ||
45 | end | ||
46 | if (exist('amp_phase') == 1) | ||
47 | amplitude = amp_phase; | ||
48 | else | ||
49 | amplitude = 1; | ||
50 | end | ||
51 | if (exist('phase_orig') == 1) | ||
52 | phase = phase_orig; | ||
53 | else | ||
54 | phase = 0; | ||
55 | end | ||
56 | if (exist('orig') == 1) | ||
57 | origin = orig; | ||
58 | end | ||
59 | end | ||
60 | |||
61 | %------------------------------------------------------------ | ||
62 | |||
63 | if (exist('origin') == 1) | ||
64 | res = amplitude*sin(mkRamp(sz, direction, frequency, phase, origin)); | ||
65 | else | ||
66 | res = amplitude*sin(mkRamp(sz, direction, frequency, phase)); | ||
67 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkSquare.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkSquare.m new file mode 100755 index 0000000..84ef466 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkSquare.m | |||
@@ -0,0 +1,89 @@ | |||
1 | % IM = mkSquare(SIZE, PERIOD, DIRECTION, AMPLITUDE, PHASE, ORIGIN, TWIDTH) | ||
2 | % or | ||
3 | % IM = mkSine(SIZE, FREQ, AMPLITUDE, PHASE, ORIGIN, TWIDTH) | ||
4 | % | ||
5 | % Compute a matrix of dimension SIZE (a [Y X] 2-vector, or a scalar) | ||
6 | % containing samples of a 2D square wave, with given PERIOD (in | ||
7 | % pixels), DIRECTION (radians, CW from X-axis, default = 0), AMPLITUDE | ||
8 | % (default = 1), and PHASE (radians, relative to ORIGIN, default = 0). | ||
9 | % ORIGIN defaults to the center of the image. TWIDTH specifies width | ||
10 | % of raised-cosine edges on the bars of the grating (default = | ||
11 | % min(2,period/3)). | ||
12 | % | ||
13 | % In the second form, FREQ is a 2-vector of frequencies (radians/pixel). | ||
14 | |||
15 | % Eero Simoncelli, 6/96. | ||
16 | |||
17 | % TODO: Add duty cycle. | ||
18 | |||
19 | function [res] = mkSquare(sz, per_freq, dir_amp, amp_phase, phase_orig, orig_twidth, twidth) | ||
20 | |||
21 | %------------------------------------------------------------ | ||
22 | %% OPTIONAL ARGS: | ||
23 | |||
24 | if (prod(size(per_freq)) == 2) | ||
25 | frequency = norm(per_freq); | ||
26 | direction = atan2(per_freq(1),per_freq(2)); | ||
27 | if (exist('dir_amp') == 1) | ||
28 | amplitude = dir_amp; | ||
29 | else | ||
30 | amplitude = 1; | ||
31 | end | ||
32 | if (exist('amp_phase') == 1) | ||
33 | phase = amp_phase; | ||
34 | else | ||
35 | phase = 0; | ||
36 | end | ||
37 | if (exist('phase_orig') == 1) | ||
38 | origin = phase_orig; | ||
39 | end | ||
40 | if (exist('orig_twidth') == 1) | ||
41 | transition = orig_twidth; | ||
42 | else | ||
43 | transition = min(2,2*pi/(3*frequency)); | ||
44 | end | ||
45 | if (exist('twidth') == 1) | ||
46 | error('Too many arguments for (second form) of mkSine'); | ||
47 | end | ||
48 | else | ||
49 | frequency = 2*pi/per_freq; | ||
50 | if (exist('dir_amp') == 1) | ||
51 | direction = dir_amp; | ||
52 | else | ||
53 | direction = 0; | ||
54 | end | ||
55 | if (exist('amp_phase') == 1) | ||
56 | amplitude = amp_phase; | ||
57 | else | ||
58 | amplitude = 1; | ||
59 | end | ||
60 | if (exist('phase_orig') == 1) | ||
61 | phase = phase_orig; | ||
62 | else | ||
63 | phase = 0; | ||
64 | end | ||
65 | if (exist('orig_twidth') == 1) | ||
66 | origin = orig_twidth; | ||
67 | end | ||
68 | if (exist('twidth') == 1) | ||
69 | transition = twidth; | ||
70 | else | ||
71 | transition = min(2,2*pi/(3*frequency)); | ||
72 | end | ||
73 | |||
74 | end | ||
75 | |||
76 | %------------------------------------------------------------ | ||
77 | |||
78 | if (exist('origin') == 1) | ||
79 | res = mkRamp(sz, direction, frequency, phase, origin) - pi/2; | ||
80 | else | ||
81 | res = mkRamp(sz, direction, frequency, phase) - pi/2; | ||
82 | end | ||
83 | |||
84 | [Xtbl,Ytbl] = rcosFn(transition*frequency,pi/2,[-amplitude amplitude]); | ||
85 | |||
86 | res = pointOp(abs(mod(res+pi, 2*pi)-pi),Ytbl,Xtbl(1),Xtbl(2)-Xtbl(1),0); | ||
87 | |||
88 | % OLD threshold version: | ||
89 | %res = amplitude * (mod(res,2*pi) < pi); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkZonePlate.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkZonePlate.m new file mode 100755 index 0000000..2b6a4a5 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mkZonePlate.m | |||
@@ -0,0 +1,33 @@ | |||
1 | % IM = mkZonePlate(SIZE, AMPL, PHASE) | ||
2 | % | ||
3 | % Make a "zone plate" image: | ||
4 | % AMPL * cos( r^2 + PHASE) | ||
5 | % SIZE specifies the matrix size, as for zeros(). | ||
6 | % AMPL (default = 1) and PHASE (default = 0) are optional. | ||
7 | |||
8 | % Eero Simoncelli, 6/96. | ||
9 | |||
10 | function [res] = mkZonePlate(sz, ampl, ph) | ||
11 | |||
12 | sz = sz(:); | ||
13 | if (size(sz,1) == 1) | ||
14 | sz = [sz,sz]; | ||
15 | end | ||
16 | |||
17 | mxsz = max(sz(1),sz(2)); | ||
18 | |||
19 | %------------------------------------------------------------ | ||
20 | %% OPTIONAL ARGS: | ||
21 | |||
22 | if (exist('ampl') ~= 1) | ||
23 | ampl = 1; | ||
24 | end | ||
25 | |||
26 | if (exist('ph') ~= 1) | ||
27 | ph = 0; | ||
28 | end | ||
29 | |||
30 | %------------------------------------------------------------ | ||
31 | |||
32 | res = ampl * cos( (pi/mxsz) * mkR(sz,2) + ph ); | ||
33 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/mod.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mod.m new file mode 100755 index 0000000..21167e5 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/mod.m | |||
@@ -0,0 +1,14 @@ | |||
1 | % M = mod(A,B) | ||
2 | % | ||
3 | % Modulus operator: returns A mod B. | ||
4 | % Works on matrics, vectors or scalars. | ||
5 | % | ||
6 | % NOTE: This function is a Matlab-5 builtin, but was missing from Matlab-4. | ||
7 | |||
8 | % Eero Simoncelli, 7/96. | ||
9 | |||
10 | function m = mod(a,n) | ||
11 | |||
12 | m = a - n .* floor(a./n); | ||
13 | return; | ||
14 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/modacor22.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/modacor22.m new file mode 100755 index 0000000..89c8d52 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/modacor22.m | |||
@@ -0,0 +1,127 @@ | |||
1 | function [Y,snrV,Chf]=modacor22(X,Cy,p); | ||
2 | |||
3 | % It imposes the desired autocorrelation in the given (central) samples (Cy) to | ||
4 | % an image X, convolving it with an even filter of size(Cy), in such a way | ||
5 | % that the image containts change as less as possible, in a LSE sense. | ||
6 | % [Y,snr,Chf]=modacor22(X,Cy,p); | ||
7 | % Chf: Fourier transform of the filter that forces the autocorrelation | ||
8 | % p [OPTIONAL]: mixing proportion between Cx and Cy | ||
9 | % it imposes (1-p)*Cx + p*Cy, | ||
10 | % being Cx the actual autocorrelation. | ||
11 | % DEFAULT: p = 1; | ||
12 | |||
13 | % JPM, 10/97, working with EPS, NYU | ||
14 | |||
15 | Warn = 0; % Set to 1 if you want to see warning messages | ||
16 | if (exist('p') ~= 1) | ||
17 | p = 1; | ||
18 | end | ||
19 | |||
20 | % Compute the autocorrelation function of the original image | ||
21 | |||
22 | [Ny,Nx]=size(X); | ||
23 | Nc=size(Cy,1); % Normally Nc<<Nx, only the low indices of the autocorrelation | ||
24 | if (2*Nc-1 > Nx) & Warn | ||
25 | warning('Autocorrelation neighborhood too large for image: reducing'); | ||
26 | Nc = 2*floor(Nx/4)-1; | ||
27 | first = (size(Cy,1)-Nc)/2; | ||
28 | Cy = Cy(first+1:first+Nc, first+1:first+Nc); | ||
29 | end | ||
30 | |||
31 | Xf=fft2(X); | ||
32 | Xf2=abs(Xf).^2; | ||
33 | Cx=fftshift(real(ifft2(Xf2)))/(2-isreal(X)); | ||
34 | Cy=Cy*prod(size(X)); % Unnormalize the previously normalized correlation | ||
35 | |||
36 | cy=Ny/2+1; | ||
37 | cx=Nx/2+1; | ||
38 | Lc=(Nc-1)/2; | ||
39 | Cy0 = Cy; | ||
40 | Cy = p*Cy + (1-p)*Cx(cy-Lc:cy+Lc,cx-Lc:cx+Lc); | ||
41 | |||
42 | % Compare the actual correlation with the desired one | ||
43 | %imStats(Cx(cy-Lc:cy+Lc,cx-Lc:cx+Lc),Cy) | ||
44 | snrV=10*log10(sum(sum(Cy0.^2))/sum(sum((Cy0-Cx(cy-Lc:cy+Lc,cx-Lc:cx+Lc)).^2))); | ||
45 | |||
46 | % Take just the part that has influence on the samples of Cy (Cy=conv(Cx,Ch)) | ||
47 | Cx=Cx(cy-2*Lc:cy+2*Lc,cx-2*Lc:cx+2*Lc); | ||
48 | |||
49 | % Build the matrix that performs the convolution Cy1=Tcx*Ch1 | ||
50 | |||
51 | Ncx=4*Lc+1; | ||
52 | M=(Nc^2+1)/2; | ||
53 | Tcx=zeros(M); | ||
54 | |||
55 | for i=Lc+1:2*Lc, | ||
56 | for j=Lc+1:3*Lc+1, | ||
57 | nm=(i-Lc-1)*(2*Lc+1)+j-Lc; | ||
58 | ccx=Cx(i-Lc:i+Lc,j-Lc:j+Lc); | ||
59 | ccxi=ccx(2*Lc+1:-1:1,2*Lc+1:-1:1); | ||
60 | ccx=ccx+ccxi; | ||
61 | ccx(Lc+1,Lc+1)=ccx(Lc+1,Lc+1)/2; | ||
62 | ccx=vector(ccx'); | ||
63 | Tcx(nm,:)=ccx(1:M)'; | ||
64 | end | ||
65 | end | ||
66 | i=2*Lc+1; | ||
67 | for j=Lc+1:2*Lc+1, | ||
68 | nm=(i-Lc-1)*(2*Lc+1)+j-Lc; | ||
69 | ccx=Cx(i-Lc:i+Lc,j-Lc:j+Lc); | ||
70 | ccxi=ccx(2*Lc+1:-1:1,2*Lc+1:-1:1); | ||
71 | ccx=ccx+ccxi; | ||
72 | ccx(Lc+1,Lc+1)=ccx(Lc+1,Lc+1)/2; | ||
73 | ccx=vector(ccx'); | ||
74 | Tcx(nm,:)=ccx(1:M)'; | ||
75 | end | ||
76 | |||
77 | % Rearrange Cy indices and solve the equation | ||
78 | |||
79 | Cy1=vector(Cy'); | ||
80 | Cy1=Cy1(1:M); | ||
81 | |||
82 | Ch1=inv(Tcx)*Cy1; | ||
83 | |||
84 | % Rearrange Ch1 | ||
85 | |||
86 | Ch1=[Ch1;Ch1(length(Cy1)-1:-1:1)]; | ||
87 | Ch=reshape(Ch1,Nc,Nc)'; | ||
88 | |||
89 | % Compute H from Ch (H is zero-phase) through the DFT | ||
90 | |||
91 | %s=2^(ceil(log(Nc)/log(2))+1); | ||
92 | %H=sqrt(abs(fft2(Ch,s,s))); | ||
93 | %h=fftshift(real(ifft2(H))); | ||
94 | %h=h(s/2+1-Lc:s/2+1+Lc,s/2+1-Lc:s/2+1+Lc); | ||
95 | %%plot(Ch);drawnow | ||
96 | %h=recphase(Ch); | ||
97 | |||
98 | % Compute Y as conv(X,H) in the Fourier domain | ||
99 | |||
100 | %%Y=real(ifft2(Xf.*H)); | ||
101 | %Y=real(ifft2(Xf.*sqrt(abs(fft2(Ch,Ny,Nx))))); | ||
102 | aux=zeros(Ny,Nx); | ||
103 | aux(cy-Lc:cy+Lc,cx-Lc:cx+Lc)=Ch; | ||
104 | Ch=fftshift(aux); | ||
105 | Chf=real(fft2(Ch)); | ||
106 | %Chf=fft2(Ch,Ny,Nx); | ||
107 | %figure(7);plot(Chf);drawnow; | ||
108 | Yf=Xf.*sqrt(abs(Chf)); | ||
109 | Y=ifft2(Yf); | ||
110 | %Y=cconv2(X,h); | ||
111 | |||
112 | % Checks the fidelity of the imposition | ||
113 | |||
114 | %Cy2=fftshift(real(ifft2(Xf2.*abs(Chf))))/(2-isreal(X)); | ||
115 | %Cy2=Cy2(cy-Lc:cy+Lc,cx-Lc:cx+Lc); | ||
116 | %imStats(Cy,Cy2) | ||
117 | %imStats(X,Y) | ||
118 | |||
119 | %Yf2=abs(Yf).^2; | ||
120 | %Cy3=fftshift(real(ifft2(Yf2)))/2; | ||
121 | |||
122 | %Cy3=Cy3(cy-Lc:cy+Lc,cx-Lc:cx+Lc); | ||
123 | %snr(Cy,Cy-Cy3) | ||
124 | %imStats(Cy,Cy3) | ||
125 | |||
126 | |||
127 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/modkurt.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/modkurt.m new file mode 100755 index 0000000..e144d32 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/modkurt.m | |||
@@ -0,0 +1,172 @@ | |||
1 | function [chm, snrk] = modkurt(ch,k,p); | ||
2 | |||
3 | % Modify the kurtosis in one step, by moving in gradient direction until | ||
4 | % reaching the desired kurtosis value. | ||
5 | % It does not affect the mean nor the variance, but it affects the skewness. | ||
6 | % This operation is not an orthogonal projection, but the projection angle is | ||
7 | % near pi/2 when k is close to the original kurtosis, which is a realistic assumption | ||
8 | % when doing iterative projections in a pyramid, for example (small corrections | ||
9 | % to the channels' statistics). | ||
10 | % | ||
11 | % [chm, snrk] = modkurt(ch,k,p); | ||
12 | % ch: channel | ||
13 | % k: desired kurtosis (k=M4/M2^2) | ||
14 | % p [OPTIONAL]: mixing proportion between k0 and k | ||
15 | % it imposes (1-p)*k0 + p*k, | ||
16 | % being k0 the current kurtosis. | ||
17 | % DEFAULT: p = 1; | ||
18 | |||
19 | |||
20 | % Javier Portilla, Oct.12/97, NYU | ||
21 | |||
22 | Warn = 0; % Set to 1 if you want to see warning messages | ||
23 | if ~exist('p'), | ||
24 | p = 1; | ||
25 | end | ||
26 | |||
27 | me=mean2(ch); | ||
28 | ch=ch-me; | ||
29 | |||
30 | % Compute the moments | ||
31 | |||
32 | m=zeros(12,1); | ||
33 | for n=2:12, | ||
34 | m(n)=mean2(ch.^n); | ||
35 | end | ||
36 | |||
37 | % The original kurtosis | ||
38 | |||
39 | k0=m(4)/m(2)^2; | ||
40 | snrk = snr(k, k-k0); | ||
41 | if snrk > 60, | ||
42 | chm = ch+me; | ||
43 | return | ||
44 | end | ||
45 | k = k0*(1-p) + k*p; | ||
46 | |||
47 | % Some auxiliar variables | ||
48 | |||
49 | a=m(4)/m(2); | ||
50 | |||
51 | % Coeficients of the numerator (A*lam^4+B*lam^3+C*lam^2+D*lam+E) | ||
52 | |||
53 | A=m(12)-4*a*m(10)-4*m(3)*m(9)+6*a^2*m(8)+12*a*m(3)*m(7)+6*m(3)^2*m(6)-... | ||
54 | 4*a^3*m(6)-12*a^2*m(3)*m(5)+a^4*m(4)-12*a*m(3)^2*m(4)+... | ||
55 | 4*a^3*m(3)^2+6*a^2*m(3)^2*m(2)-3*m(3)^4; | ||
56 | B=4*(m(10)-3*a*m(8)-3*m(3)*m(7)+3*a^2*m(6)+6*a*m(3)*m(5)+3*m(3)^2*m(4)-... | ||
57 | a^3*m(4)-3*a^2*m(3)^2-3*m(4)*m(3)^2); | ||
58 | C=6*(m(8)-2*a*m(6)-2*m(3)*m(5)+a^2*m(4)+2*a*m(3)^2+m(3)^2*m(2)); | ||
59 | D=4*(m(6)-a^2*m(2)-m(3)^2); | ||
60 | E=m(4); | ||
61 | |||
62 | % Define the coefficients of the denominator (F*lam^2+G)^2 | ||
63 | |||
64 | F=D/4; | ||
65 | G=m(2); | ||
66 | |||
67 | % test | ||
68 | test = 0; | ||
69 | |||
70 | if test, | ||
71 | |||
72 | grd = ch.^3 - a*ch - m(3); | ||
73 | lam = -0.001:0.00001:0.001; | ||
74 | k = (A*lam.^4+B*lam.^3+C*lam.^2+D*lam+E)./... | ||
75 | (F*lam.^2 + G).^2; | ||
76 | for lam = -0.001:0.00001:0.001, | ||
77 | n = lam*100000+101; | ||
78 | chp = ch + lam*grd; | ||
79 | k2(n) = mean2(chp.^4)/mean2(chp.^2)^2; | ||
80 | %k2(n) = mean2(chp.^4); | ||
81 | end | ||
82 | lam = -0.001:0.00001:0.001; | ||
83 | snr(k2, k-k2) | ||
84 | |||
85 | end % test | ||
86 | |||
87 | % Now I compute its derivative with respect to lambda | ||
88 | % (only the roots of derivative = 0 ) | ||
89 | |||
90 | d(1) = B*F; | ||
91 | d(2) = 2*C*F - 4*A*G; | ||
92 | d(3) = 4*F*D -3*B*G - D*F; | ||
93 | d(4) = 4*F*E - 2*C*G; | ||
94 | d(5) = -D*G; | ||
95 | |||
96 | mMlambda = roots(d); | ||
97 | |||
98 | tg = imag(mMlambda)./real(mMlambda); | ||
99 | mMlambda = mMlambda(find(abs(tg)<1e-6)); | ||
100 | lNeg = mMlambda(find(mMlambda<0)); | ||
101 | if length(lNeg)==0, | ||
102 | lNeg = -1/eps; | ||
103 | end | ||
104 | lPos = mMlambda(find(mMlambda>=0)); | ||
105 | if length(lPos)==0, | ||
106 | lPos = 1/eps; | ||
107 | end | ||
108 | lmi = max(lNeg); | ||
109 | lma = min(lPos); | ||
110 | |||
111 | lam = [lmi lma]; | ||
112 | mMnewKt = polyval([A B C D E],lam)./(polyval([F 0 G],lam)).^2; | ||
113 | kmin = min(mMnewKt); | ||
114 | kmax = max(mMnewKt); | ||
115 | |||
116 | % Given a desired kurtosis, solves for lambda | ||
117 | |||
118 | if k<=kmin & Warn, | ||
119 | lam = lmi; | ||
120 | warning('Saturating (down) kurtosis!'); | ||
121 | kmin | ||
122 | elseif k>=kmax & Warn, | ||
123 | lam = lma; | ||
124 | warning('Saturating (up) kurtosis!'); | ||
125 | kmax | ||
126 | else | ||
127 | |||
128 | % Coeficients of the algebraic equation | ||
129 | |||
130 | c0 = E - k*G^2; | ||
131 | c1 = D; | ||
132 | c2 = C - 2*k*F*G; | ||
133 | c3 = B; | ||
134 | c4 = A - k*F^2; | ||
135 | |||
136 | % Solves the equation | ||
137 | |||
138 | r=roots([c4 c3 c2 c1 c0]); | ||
139 | |||
140 | % Chose the real solution with minimum absolute value with the rigth sign | ||
141 | |||
142 | tg = imag(r)./real(r); | ||
143 | %lambda = real(r(find(abs(tg)<1e-6))); | ||
144 | lambda = real(r(find(abs(tg)==0))); | ||
145 | if length(lambda)>0, | ||
146 | lam = lambda(find(abs(lambda)==min(abs(lambda)))); | ||
147 | lam = lam(1); | ||
148 | else | ||
149 | lam = 0; | ||
150 | end | ||
151 | |||
152 | end % if ... else | ||
153 | |||
154 | |||
155 | % Modify the channel | ||
156 | |||
157 | chm=ch+lam*(ch.^3-a*ch-m(3)); % adjust the kurtosis | ||
158 | chm=chm*sqrt(m(2)/mean2(chm.^2)); % adjust the variance | ||
159 | chm=chm+me; % adjust the mean | ||
160 | |||
161 | % Check the result | ||
162 | %k2=mean2((chm-me).^4)/(mean2((chm-me).^2))^2; | ||
163 | %SNR=snr(k,k-k2) | ||
164 | |||
165 | |||
166 | |||
167 | |||
168 | |||
169 | |||
170 | |||
171 | |||
172 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/modskew.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/modskew.m new file mode 100755 index 0000000..3de0e3c --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/modskew.m | |||
@@ -0,0 +1,183 @@ | |||
1 | function [chm, snrk] = modskew(ch,sk,p); | ||
2 | |||
3 | % Adjust the sample skewness of a vector/matrix, using gradient projection, | ||
4 | % without affecting its sample mean and variance. | ||
5 | % | ||
6 | % This operation is not an orthogonal projection, but the projection angle is | ||
7 | % near pi/2 when sk is close to the original skewness, which is a realistic | ||
8 | % assumption when doing iterative projections in a pyramid, for example | ||
9 | % (small corrections to the channels' statistics). | ||
10 | % | ||
11 | % [xm, snrk] = modskew(x,sk,p); | ||
12 | % sk: new skweness | ||
13 | % p [OPTIONAL]: mixing proportion between sk0 and sk | ||
14 | % it imposes (1-p)*sk0 + p*sk, | ||
15 | % being sk0 the current skewness. | ||
16 | % DEFAULT: p = 1; | ||
17 | |||
18 | % | ||
19 | % JPM. 2/98, IODV, CSIC | ||
20 | % 4/00, CNS, NYU | ||
21 | |||
22 | Warn = 0; % Set to 1 if you want to see warning messages | ||
23 | if ~exist('p'), | ||
24 | p = 1; | ||
25 | end | ||
26 | |||
27 | N=prod(size(ch)); % number of samples | ||
28 | me=mean2(ch); | ||
29 | ch=ch-me; | ||
30 | |||
31 | for n=2:6, | ||
32 | m(n)=mean2(ch.^n); | ||
33 | end | ||
34 | |||
35 | sd=sqrt(m(2)); % standard deviation | ||
36 | s=m(3)/sd^3; % original skewness | ||
37 | snrk = snr(sk, sk-s); | ||
38 | sk = s*(1-p) + sk*p; | ||
39 | |||
40 | % Define the coefficients of the numerator (A*lam^3+B*lam^2+C*lam+D) | ||
41 | |||
42 | A=m(6)-3*sd*s*m(5)+3*sd^2*(s^2-1)*m(4)+sd^6*(2+3*s^2-s^4); | ||
43 | B=3*(m(5)-2*sd*s*m(4)+sd^5*s^3); | ||
44 | C=3*(m(4)-sd^4*(1+s^2)); | ||
45 | D=s*sd^3; | ||
46 | |||
47 | a(7)=A^2; | ||
48 | a(6)=2*A*B; | ||
49 | a(5)=B^2+2*A*C; | ||
50 | a(4)=2*(A*D+B*C); | ||
51 | a(3)=C^2+2*B*D; | ||
52 | a(2)=2*C*D; | ||
53 | a(1)=D^2; | ||
54 | |||
55 | % Define the coefficients of the denominator (A2+B2*lam^2) | ||
56 | |||
57 | A2=sd^2; | ||
58 | B2=m(4)-(1+s^2)*sd^4; | ||
59 | |||
60 | b=zeros(1,7); | ||
61 | b(7)=B2^3; | ||
62 | b(5)=3*A2*B2^2; | ||
63 | b(3)=3*A2^2*B2; | ||
64 | b(1)=A2^3; | ||
65 | |||
66 | |||
67 | if 0, % test | ||
68 | |||
69 | lam = -2:0.02:2; | ||
70 | S = (A*lam.^3+B*lam.^2+C*lam+D)./... | ||
71 | sqrt(b(7)*lam.^6 + b(5)*lam.^4 + b(3)*lam.^2 + b(1)); | ||
72 | % grd = ch.^2 - m(2) - sd * s * ch; | ||
73 | % for lam = -1:0.01:1, | ||
74 | % n = lam*100+101; | ||
75 | % chp = ch + lam*grd; | ||
76 | % S2(n) = mean2(chp.^3)/abs(mean2(chp.^2))^(1.5); | ||
77 | % end | ||
78 | lam = -2:0.02:2; | ||
79 | figure(1);plot(lam,S);grid;drawnow | ||
80 | % snr(S2, S-S2) | ||
81 | |||
82 | end % test | ||
83 | |||
84 | % Now I compute its derivative with respect to lambda | ||
85 | |||
86 | d(8) = B*b(7); | ||
87 | d(7) = 2*C*b(7) - A*b(5); | ||
88 | d(6) = 3*D*b(7); | ||
89 | d(5) = C*b(5) - 2*A*b(3); | ||
90 | d(4) = 2*D*b(5) - B*b(3); | ||
91 | d(3) = -3*A*b(1); | ||
92 | d(2) = D*b(3) - 2*B*b(1); | ||
93 | d(1) = -C*b(1); | ||
94 | |||
95 | d = d(8:-1:1); | ||
96 | mMlambda = roots(d); | ||
97 | |||
98 | tg = imag(mMlambda)./real(mMlambda); | ||
99 | mMlambda = real(mMlambda(find(abs(tg)<1e-6))); | ||
100 | lNeg = mMlambda(find(mMlambda<0)); | ||
101 | if length(lNeg)==0, | ||
102 | lNeg = -1/eps; | ||
103 | end | ||
104 | lPos = mMlambda(find(mMlambda>=0)); | ||
105 | if length(lPos)==0, | ||
106 | lPos = 1/eps; | ||
107 | end | ||
108 | lmi = max(lNeg); | ||
109 | lma = min(lPos); | ||
110 | |||
111 | lam = [lmi lma]; | ||
112 | mMnewSt = polyval([A B C D],lam)./(polyval(b(7:-1:1),lam)).^0.5; | ||
113 | skmin = min(mMnewSt); | ||
114 | skmax = max(mMnewSt); | ||
115 | |||
116 | |||
117 | % Given a desired skewness, solves for lambda | ||
118 | |||
119 | if sk<=skmin & Warn, | ||
120 | lam = lmi; | ||
121 | warning('Saturating (down) skewness!'); | ||
122 | skmin | ||
123 | elseif sk>=skmax & Warn, | ||
124 | lam = lma; | ||
125 | warning('Saturating (up) skewness!'); | ||
126 | skmax | ||
127 | else | ||
128 | |||
129 | |||
130 | % The equation is sum(c.*lam.^(0:6))=0 | ||
131 | |||
132 | c=a-b*sk^2; | ||
133 | |||
134 | c=c(7:-1:1); | ||
135 | |||
136 | r=roots(c); | ||
137 | |||
138 | % Chose the real solution with minimum absolute value with the rigth sign | ||
139 | lam=-Inf; | ||
140 | co=0; | ||
141 | for n=1:6, | ||
142 | tg = imag(r(n))/real(r(n)); | ||
143 | if (abs(tg)<1e-6)&(sign(real(r(n)))==sign(sk-s)), | ||
144 | co=co+1; | ||
145 | lam(co)=real(r(n)); | ||
146 | end | ||
147 | end | ||
148 | if min(abs(lam))==Inf & Warn, | ||
149 | display('Warning: Skew adjustment skipped!'); | ||
150 | lam=0; | ||
151 | end | ||
152 | |||
153 | p=[A B C D]; | ||
154 | |||
155 | if length(lam)>1, | ||
156 | foo=sign(polyval(p,lam)); | ||
157 | if any(foo==0), | ||
158 | lam = lam(find(foo==0)); | ||
159 | else | ||
160 | lam = lam(find(foo==sign(sk))); % rejects the symmetric solution | ||
161 | end | ||
162 | if length(lam)>0, | ||
163 | lam=lam(find(abs(lam)==min(abs(lam)))); % the smallest that fix the skew | ||
164 | lam=lam(1); | ||
165 | else | ||
166 | lam = 0; | ||
167 | end | ||
168 | end | ||
169 | end % if else | ||
170 | |||
171 | % Modify the channel | ||
172 | chm=ch+lam*(ch.^2-sd^2-sd*s*ch); % adjust the skewness | ||
173 | chm=chm*sqrt(m(2)/mean2(chm.^2)); % adjust the variance | ||
174 | chm=chm+me; % adjust the mean | ||
175 | % (These don't affect the skewness) | ||
176 | % Check the result | ||
177 | %mem=mean2(chm); | ||
178 | %sk2=mean2((chm-mem).^3)/mean2((chm-mem).^2).^(3/2); | ||
179 | %sk - sk2 | ||
180 | %SNR=snr(sk,sk-sk2) | ||
181 | |||
182 | |||
183 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/modulateFlip.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/modulateFlip.m new file mode 100755 index 0000000..eb27303 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/modulateFlip.m | |||
@@ -0,0 +1,19 @@ | |||
1 | % [HFILT] = modulateFlipShift(LFILT) | ||
2 | % | ||
3 | % QMF/Wavelet highpass filter construction: modulate by (-1)^n, | ||
4 | % reverse order (and shift by one, which is handled by the convolution | ||
5 | % routines). This is an extension of the original definition of QMF's | ||
6 | % (e.g., see Simoncelli90). | ||
7 | |||
8 | % Eero Simoncelli, 7/96. | ||
9 | |||
10 | function [hfilt] = modulateFlipShift(lfilt) | ||
11 | |||
12 | lfilt = lfilt(:); | ||
13 | |||
14 | sz = size(lfilt,1); | ||
15 | sz2 = ceil(sz/2); | ||
16 | |||
17 | ind = [sz:-1:1]'; | ||
18 | |||
19 | hfilt = lfilt(ind) .* (-1).^(ind-sz2); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/namedFilter.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/namedFilter.m new file mode 100755 index 0000000..0689dbc --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/namedFilter.m | |||
@@ -0,0 +1,71 @@ | |||
1 | % KERNEL = NAMED_FILTER(NAME) | ||
2 | % | ||
3 | % Some standard 1D filter kernels. These are scaled such that | ||
4 | % their L2-norm is 1.0. | ||
5 | % | ||
6 | % binomN - binomial coefficient filter of order N-1 | ||
7 | % haar: - Haar wavelet. | ||
8 | % qmf8, qmf12, qmf16 - Symmetric Quadrature Mirror Filters [Johnston80] | ||
9 | % daub2,daub3,daub4 - Daubechies wavelet [Daubechies88]. | ||
10 | % qmf5, qmf9, qmf13: - Symmetric Quadrature Mirror Filters [Simoncelli88,Simoncelli90] | ||
11 | % | ||
12 | % See bottom of file for full citations. | ||
13 | |||
14 | % Eero Simoncelli, 6/96. | ||
15 | |||
16 | function [kernel] = named_filter(name) | ||
17 | |||
18 | if strcmp(name(1:min(5,size(name,2))), 'binom') | ||
19 | kernel = sqrt(2) * binomialFilter(str2num(name(6:size(name,2)))); | ||
20 | elseif strcmp(name,'qmf5') | ||
21 | kernel = [-0.076103 0.3535534 0.8593118 0.3535534 -0.076103]'; | ||
22 | elseif strcmp(name,'qmf9') | ||
23 | kernel = [0.02807382 -0.060944743 -0.073386624 0.41472545 0.7973934 ... | ||
24 | 0.41472545 -0.073386624 -0.060944743 0.02807382]'; | ||
25 | elseif strcmp(name,'qmf13') | ||
26 | kernel = [-0.014556438 0.021651438 0.039045125 -0.09800052 ... | ||
27 | -0.057827797 0.42995453 0.7737113 0.42995453 -0.057827797 ... | ||
28 | -0.09800052 0.039045125 0.021651438 -0.014556438]'; | ||
29 | elseif strcmp(name,'qmf8') | ||
30 | kernel = sqrt(2) * [0.00938715 -0.07065183 0.06942827 0.4899808 ... | ||
31 | 0.4899808 0.06942827 -0.07065183 0.00938715 ]'; | ||
32 | elseif strcmp(name,'qmf12') | ||
33 | kernel = sqrt(2) * [-0.003809699 0.01885659 -0.002710326 -0.08469594 ... | ||
34 | 0.08846992 0.4843894 0.4843894 0.08846992 -0.08469594 -0.002710326 ... | ||
35 | 0.01885659 -0.003809699 ]'; | ||
36 | elseif strcmp(name,'qmf16') | ||
37 | kernel = sqrt(2) * [0.001050167 -0.005054526 -0.002589756 0.0276414 -0.009666376 ... | ||
38 | -0.09039223 0.09779817 0.4810284 0.4810284 0.09779817 -0.09039223 -0.009666376 ... | ||
39 | 0.0276414 -0.002589756 -0.005054526 0.001050167 ]'; | ||
40 | elseif strcmp(name,'haar') | ||
41 | kernel = [1 1]' / sqrt(2); | ||
42 | elseif strcmp(name,'daub2') | ||
43 | kernel = [0.482962913145 0.836516303738 0.224143868042 -0.129409522551]'; | ||
44 | elseif strcmp(name,'daub3') | ||
45 | kernel = [0.332670552950 0.806891509311 0.459877502118 -0.135011020010 ... | ||
46 | -0.085441273882 0.035226291882]'; | ||
47 | elseif strcmp(name,'daub4') | ||
48 | kernel = [0.230377813309 0.714846570553 0.630880767930 -0.027983769417 ... | ||
49 | -0.187034811719 0.030841381836 0.032883011667 -0.010597401785]'; | ||
50 | elseif strcmp(name,'gauss5') % for backward-compatibility | ||
51 | kernel = sqrt(2) * [0.0625 0.25 0.375 0.25 0.0625]'; | ||
52 | elseif strcmp(name,'gauss3') % for backward-compatibility | ||
53 | kernel = sqrt(2) * [0.25 0.5 0.25]'; | ||
54 | else | ||
55 | error(sprintf('Bad filter name: %s\n',name)); | ||
56 | end | ||
57 | |||
58 | % [Johnston80] - J D Johnston, "A filter family designed for use in quadrature | ||
59 | % mirror filter banks", Proc. ICASSP, pp 291-294, 1980. | ||
60 | % | ||
61 | % [Daubechies88] - I Daubechies, "Orthonormal bases of compactly supported wavelets", | ||
62 | % Commun. Pure Appl. Math, vol. 42, pp 909-996, 1988. | ||
63 | % | ||
64 | % [Simoncelli88] - E P Simoncelli, "Orthogonal sub-band image transforms", | ||
65 | % PhD Thesis, MIT Dept. of Elec. Eng. and Comp. Sci. May 1988. | ||
66 | % Also available as: MIT Media Laboratory Vision and Modeling Technical | ||
67 | % Report #100. | ||
68 | % | ||
69 | % [Simoncelli90] - E P Simoncelli and E H Adelson, "Subband image coding", | ||
70 | % Subband Transforms, chapter 4, ed. John W Woods, Kluwer Academic | ||
71 | % Publishers, Norwell, MA, 1990, pp 143--192. | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/nextFig.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/nextFig.m new file mode 100755 index 0000000..e0ac73f --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/nextFig.m | |||
@@ -0,0 +1,19 @@ | |||
1 | % nextFig (MAXFIGS, SKIP) | ||
2 | % | ||
3 | % Make figure number mod((GCF+SKIP), MAXFIGS) the current figure. | ||
4 | % MAXFIGS is optional, and defaults to 2. | ||
5 | % SKIP is optional, and defaults to 1. | ||
6 | |||
7 | % Eero Simoncelli, 2/97. | ||
8 | |||
9 | function nextFig(maxfigs, skip) | ||
10 | |||
11 | if (exist('maxfigs') ~= 1) | ||
12 | maxfigs = 2; | ||
13 | end | ||
14 | |||
15 | if (exist('skip') ~= 1) | ||
16 | skip = 1; | ||
17 | end | ||
18 | |||
19 | figure(1+mod(gcf-1+skip,maxfigs)); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/pgmRead.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/pgmRead.m new file mode 100755 index 0000000..86c3b62 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/pgmRead.m | |||
@@ -0,0 +1,59 @@ | |||
1 | % IM = pgmRead( FILENAME ) | ||
2 | % | ||
3 | % Load a pgm image into a MatLab matrix. | ||
4 | % This format is accessible from the XV image browsing utility. | ||
5 | % Only works for 8bit gray images (raw or ascii) | ||
6 | |||
7 | % Hany Farid, Spring '96. Modified by Eero Simoncelli, 6/96. | ||
8 | |||
9 | function im = pgmRead( fname ); | ||
10 | |||
11 | [fid,msg] = fopen( fname, 'r' ); | ||
12 | |||
13 | if (fid == -1) | ||
14 | error(msg); | ||
15 | end | ||
16 | |||
17 | %%% First line contains ID string: | ||
18 | %%% "P1" = ascii bitmap, "P2" = ascii greymap, | ||
19 | %%% "P3" = ascii pixmap, "P4" = raw bitmap, | ||
20 | %%% "P5" = raw greymap, "P6" = raw pixmap | ||
21 | TheLine = fgetl(fid); | ||
22 | format = TheLine; | ||
23 | |||
24 | if ~((format(1:2) == 'P2') | (format(1:2) == 'P5')) | ||
25 | error('PGM file must be of type P2 or P5'); | ||
26 | end | ||
27 | |||
28 | %%% Any number of comment lines | ||
29 | TheLine = fgetl(fid); | ||
30 | while TheLine(1) == '#' | ||
31 | TheLine = fgetl(fid); | ||
32 | end | ||
33 | |||
34 | %%% dimensions | ||
35 | sz = sscanf(TheLine,'%d',2); | ||
36 | xdim = sz(1); | ||
37 | ydim = sz(2); | ||
38 | sz = xdim * ydim; | ||
39 | |||
40 | %%% Maximum pixel value | ||
41 | TheLine = fgetl(fid); | ||
42 | maxval = sscanf(TheLine, '%d',1); | ||
43 | |||
44 | %%im = zeros(dim,1); | ||
45 | if (format(2) == '2') | ||
46 | [im,count] = fscanf(fid,'%d',sz); | ||
47 | else | ||
48 | [im,count] = fread(fid,sz,'uchar'); | ||
49 | end | ||
50 | |||
51 | fclose(fid); | ||
52 | |||
53 | if (count == sz) | ||
54 | im = reshape( im, xdim, ydim )'; | ||
55 | else | ||
56 | fprintf(1,'Warning: File ended early!'); | ||
57 | im = reshape( [im ; zeros(sz-count,1)], xdim, ydim)'; | ||
58 | end | ||
59 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/pgmWrite.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/pgmWrite.m new file mode 100755 index 0000000..09c14c9 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/pgmWrite.m | |||
@@ -0,0 +1,120 @@ | |||
1 | % RANGE = pgmWrite(MTX, FILENAME, RANGE, TYPE, COMMENT) | ||
2 | % | ||
3 | % Write a MatLab matrix to a pgm (graylevel image) file. | ||
4 | % This format is accessible from the XV image browsing utility. | ||
5 | % | ||
6 | % RANGE (optional) is a 2-vector specifying the values that map to | ||
7 | % black and white, respectively. Passing a value of 'auto' (default) | ||
8 | % sets RANGE=[min,max] (as in MatLab's imagesc). 'auto2' sets | ||
9 | % RANGE=[mean-2*stdev, mean+2*stdev]. 'auto3' sets | ||
10 | % RANGE=[p1-(p2-p1)/8, p2+(p2-p1)/8], where p1 is the 10th percentile | ||
11 | % value of the sorted MATRIX samples, and p2 is the 90th percentile | ||
12 | % value. | ||
13 | % | ||
14 | % TYPE (optional) should be 'raw' or 'ascii'. Defaults to 'raw'. | ||
15 | |||
16 | % Hany Farid, Spring '96. Modified by Eero Simoncelli, 6/96. | ||
17 | |||
18 | function range = pgmWrite(mtx, fname, range, type, comment ); | ||
19 | |||
20 | [fid,msg] = fopen( fname, 'w' ); | ||
21 | |||
22 | if (fid == -1) | ||
23 | error(msg); | ||
24 | end | ||
25 | |||
26 | %------------------------------------------------------------ | ||
27 | %% optional ARGS: | ||
28 | |||
29 | if (exist('range') ~= 1) | ||
30 | range = 'auto'; | ||
31 | end | ||
32 | |||
33 | if (exist('type') ~= 1) | ||
34 | type = 'raw'; | ||
35 | end | ||
36 | %------------------------------------------------------------ | ||
37 | |||
38 | %% Automatic range calculation: | ||
39 | if (strcmp(range,'auto1') | strcmp(range,'auto')) | ||
40 | [mn,mx] = range2(mtx); | ||
41 | range = [mn,mx]; | ||
42 | |||
43 | elseif strcmp(range,'auto2') | ||
44 | stdev = sqrt(var2(mtx)); | ||
45 | av = mean2(mtx); | ||
46 | range = [av-2*stdev,av+2*stdev]; % MAGIC NUMBER: 2 stdevs | ||
47 | |||
48 | elseif strcmp(range, 'auto3') | ||
49 | percentile = 0.1; % MAGIC NUMBER: 0<p<0.5 | ||
50 | [N,X] = histo(mtx); | ||
51 | binsz = X(2)-X(1); | ||
52 | N = N+1e-10; % Ensure cumsum will be monotonic for call to interp1 | ||
53 | cumN = [0, cumsum(N)]/sum(N); | ||
54 | cumX = [X(1)-binsz, X] + (binsz/2); | ||
55 | ctrRange = interp1(cumN,cumX, [percentile, 1-percentile]); | ||
56 | range = mean(ctrRange) + (ctrRange-mean(ctrRange))/(1-2*percentile); | ||
57 | |||
58 | elseif isstr(range) | ||
59 | error(sprintf('Bad RANGE argument: %s',range)) | ||
60 | |||
61 | end | ||
62 | |||
63 | if ((range(2) - range(1)) <= eps) | ||
64 | range(1) = range(1) - 0.5; | ||
65 | range(2) = range(2) + 0.5; | ||
66 | end | ||
67 | |||
68 | |||
69 | %%% First line contains ID string: | ||
70 | %%% "P1" = ascii bitmap, "P2" = ascii greymap, | ||
71 | %%% "P3" = ascii pixmap, "P4" = raw bitmap, | ||
72 | %%% "P5" = raw greymap, "P6" = raw pixmap | ||
73 | if strcmp(type,'raw') | ||
74 | fprintf(fid,'P5\n'); | ||
75 | format = 5; | ||
76 | elseif strcmp(type,'ascii') | ||
77 | fprintf(fid,'P2\n'); | ||
78 | format = 2; | ||
79 | else | ||
80 | error(sprintf('PGMWRITE: Bad type argument: %s',type)); | ||
81 | end | ||
82 | |||
83 | fprintf(fid,'# MatLab PGMWRITE file, saved %s\n',date); | ||
84 | |||
85 | if (exist('comment') == 1) | ||
86 | fprintf(fid,'# %s\n', comment); | ||
87 | end | ||
88 | |||
89 | %%% dimensions | ||
90 | fprintf(fid,'%d %d\n',size(mtx,2),size(mtx,1)); | ||
91 | |||
92 | %%% Maximum pixel value | ||
93 | fprintf(fid,'255\n'); | ||
94 | |||
95 | |||
96 | %% MatLab's "fprintf" floors when writing floats, so we compute | ||
97 | %% (mtx-r1)*255/(r2-r1)+0.5 | ||
98 | mult = (255 / (range(2)-range(1))); | ||
99 | mtx = (mult * mtx) + (0.5 - mult * range(1)); | ||
100 | |||
101 | mtx = max(-0.5+eps,min(255.5-eps,mtx)); | ||
102 | |||
103 | if (format == 2) | ||
104 | count = fprintf(fid,'%d ',mtx'); | ||
105 | elseif (format == 5) | ||
106 | count = fwrite(fid,mtx','uchar'); | ||
107 | end | ||
108 | |||
109 | fclose(fid); | ||
110 | |||
111 | if (count ~= size(mtx,1)*size(mtx,2)) | ||
112 | fprintf(1,'Warning: File output terminated early!'); | ||
113 | end | ||
114 | |||
115 | %%% TEST: | ||
116 | % foo = 257*rand(100)-1; | ||
117 | % pgmWrite(foo,'foo.pgm',[0 255]); | ||
118 | % foo2=pgmRead('foo.pgm'); | ||
119 | % size(find((foo2-round(foo))~=0)) | ||
120 | % foo(find((foo2-round(foo))~=0)) | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/pixelAxes.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/pixelAxes.m new file mode 100755 index 0000000..f88210d --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/pixelAxes.m | |||
@@ -0,0 +1,70 @@ | |||
1 | % [ZOOM] = pixelAxes(DIMS, ZOOM) | ||
2 | % | ||
3 | % Set the axes of the current plot to cover a multiple of DIMS pixels, | ||
4 | % thereby eliminating screen aliasing artifacts when displaying an | ||
5 | % image of size DIMS. | ||
6 | % | ||
7 | % ZOOM (optional, default='same') expresses the desired number of | ||
8 | % samples displayed per screen pixel. It should be a scalar, which | ||
9 | % will be rounded to the nearest integer, or 1 over an integer. It | ||
10 | % may also be the string 'same' or 'auto', in which case the value is chosen so | ||
11 | % as to produce an image closest in size to the currently displayed | ||
12 | % image. It may also be the string 'full', in which case the image is | ||
13 | % made as large as possible while still fitting in the window. | ||
14 | |||
15 | % Eero Simoncelli, 2/97. | ||
16 | |||
17 | function [zoom] = pixelAxes(dims, zoom) | ||
18 | |||
19 | %------------------------------------------------------------ | ||
20 | %% OPTIONAL ARGS: | ||
21 | |||
22 | if (exist('zoom') ~= 1) | ||
23 | zoom = 'same'; | ||
24 | end | ||
25 | |||
26 | %% Reverse dimension order, since Figure Positions reported as (x,y). | ||
27 | dims = dims(2:-1:1); | ||
28 | |||
29 | %% Use MatLab's axis function to force square pixels, etc: | ||
30 | axis('image'); | ||
31 | ax = gca; | ||
32 | |||
33 | oldunits = get(ax,'Units'); | ||
34 | |||
35 | if strcmp(zoom,'full'); | ||
36 | set(ax,'Units','normalized'); | ||
37 | set(ax,'Position',[0 0 1 1]); | ||
38 | zoom = 'same'; | ||
39 | end | ||
40 | |||
41 | set(ax,'Units','pixels'); | ||
42 | pos = get(ax,'Position'); | ||
43 | ctr = pos(1:2)+pos(3:4)/2; | ||
44 | |||
45 | if (strcmp(zoom,'same') | strcmp(zoom,'auto')) | ||
46 | %% HACK: enlarge slightly so that floor doesn't round down | ||
47 | zoom = min( pos(3:4) ./ (dims - 1) ); | ||
48 | elseif isstr(zoom) | ||
49 | error(sprintf('Bad ZOOM argument: %s',zoom)); | ||
50 | end | ||
51 | |||
52 | %% Force zoom value to be an integer, or inverse integer. | ||
53 | if (zoom < 0.75) | ||
54 | zoom = 1/ceil(1/zoom); | ||
55 | %% Round upward, subtracting 0.5 to avoid floating point errors. | ||
56 | newsz = ceil(zoom*(dims-0.5)); | ||
57 | else | ||
58 | zoom = floor(zoom + 0.001); % Avoid floating pt errors | ||
59 | if (zoom < 1.5) % zoom=1 | ||
60 | zoom = 1; | ||
61 | newsz = dims + 0.5; | ||
62 | else | ||
63 | newsz = zoom*(dims-1) + mod(zoom,2); | ||
64 | end | ||
65 | end | ||
66 | |||
67 | set(ax,'Position', [floor(ctr-newsz/2)+0.5, newsz] ) | ||
68 | |||
69 | % Restore units | ||
70 | set(ax,'Units',oldunits); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/pointOp.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/pointOp.m new file mode 100755 index 0000000..feb7750 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/pointOp.m | |||
@@ -0,0 +1,28 @@ | |||
1 | % RES = pointOp(IM, LUT, ORIGIN, INCREMENT, WARNINGS) | ||
2 | % | ||
3 | % Apply a point operation, specified by lookup table LUT, to image IM. | ||
4 | % LUT must be a row or column vector, and is assumed to contain | ||
5 | % (equi-spaced) samples of the function. ORIGIN specifies the | ||
6 | % abscissa associated with the first sample, and INCREMENT specifies the | ||
7 | % spacing between samples. Between-sample values are estimated via | ||
8 | % linear interpolation. If WARNINGS is non-zero, the function prints | ||
9 | % a warning whenever the lookup table is extrapolated. | ||
10 | % | ||
11 | % This function is much faster than MatLab's interp1, and allows | ||
12 | % extrapolation beyond the lookup table domain. The drawbacks are | ||
13 | % that the lookup table must be equi-spaced, and the interpolation is | ||
14 | % linear. | ||
15 | |||
16 | % Eero Simoncelli, 8/96. | ||
17 | |||
18 | function res = pointOp(im, lut, origin, increment, warnings) | ||
19 | |||
20 | %% NOTE: THIS CODE IS NOT ACTUALLY USED! (MEX FILE IS CALLED INSTEAD) | ||
21 | |||
22 | %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'); | ||
23 | |||
24 | X = origin + increment*[0:size(lut(:),1)-1]; | ||
25 | Y = lut(:); | ||
26 | |||
27 | res = reshape(interp1(X, Y, im(:), 'linear', 'extrap'),size(im)); | ||
28 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/pwd2path.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/pwd2path.m new file mode 100755 index 0000000..15aecf0 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/pwd2path.m | |||
@@ -0,0 +1,6 @@ | |||
1 | % PWD2PATH() | ||
2 | % | ||
3 | % add current working directory (pwd) to path. | ||
4 | |||
5 | P = path; | ||
6 | path(pwd,P); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/pyrBand.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/pyrBand.m new file mode 100755 index 0000000..1fb6461 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/pyrBand.m | |||
@@ -0,0 +1,11 @@ | |||
1 | % RES = pyrBand(PYR, INDICES, BAND_NUM) | ||
2 | % | ||
3 | % Access a subband from a pyramid (gaussian, laplacian, QMF/wavelet, | ||
4 | % or steerable). Subbands are numbered consecutively, from finest | ||
5 | % (highest spatial frequency) to coarsest (lowest spatial frequency). | ||
6 | |||
7 | % Eero Simoncelli, 6/96. | ||
8 | |||
9 | function res = pyrBand(pyr, pind, band) | ||
10 | |||
11 | res = reshape( pyr(pyrBandIndices(pind,band)), pind(band,1), pind(band,2) ); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/pyrBandIndices.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/pyrBandIndices.m new file mode 100755 index 0000000..f94c217 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/pyrBandIndices.m | |||
@@ -0,0 +1,24 @@ | |||
1 | % RES = pyrBandIndices(INDICES, BAND_NUM) | ||
2 | % | ||
3 | % Return indices for accessing a subband from a pyramid | ||
4 | % (gaussian, laplacian, QMF/wavelet, steerable). | ||
5 | |||
6 | % Eero Simoncelli, 6/96. | ||
7 | |||
8 | function indices = pyrBandIndices(pind,band) | ||
9 | |||
10 | if ((band > size(pind,1)) | (band < 1)) | ||
11 | error(sprintf('BAND_NUM must be between 1 and number of pyramid bands (%d).', ... | ||
12 | size(pind,1))); | ||
13 | end | ||
14 | |||
15 | if (size(pind,2) ~= 2) | ||
16 | error('INDICES must be an Nx2 matrix indicating the size of the pyramid subbands'); | ||
17 | end | ||
18 | |||
19 | ind = 1; | ||
20 | for l=1:band-1 | ||
21 | ind = ind + prod(pind(l,:)); | ||
22 | end | ||
23 | |||
24 | indices = ind:ind+prod(pind(band,:))-1; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/pyrLow.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/pyrLow.m new file mode 100755 index 0000000..290e806 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/pyrLow.m | |||
@@ -0,0 +1,12 @@ | |||
1 | % RES = pyrLow(PYR, INDICES) | ||
2 | % | ||
3 | % Access the lowpass subband from a pyramid | ||
4 | % (gaussian, laplacian, QMF/wavelet, steerable). | ||
5 | |||
6 | % Eero Simoncelli, 6/96. | ||
7 | |||
8 | function res = pyrLow(pyr,pind) | ||
9 | |||
10 | band = size(pind,1); | ||
11 | |||
12 | res = reshape( pyr(pyrBandIndices(pind,band)), pind(band,1), pind(band,2) ); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/range2.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/range2.m new file mode 100755 index 0000000..082bbe1 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/range2.m | |||
@@ -0,0 +1,18 @@ | |||
1 | % [MIN, MAX] = range2(MTX) | ||
2 | % | ||
3 | % Compute minimum and maximum values of MTX, returning them as a 2-vector. | ||
4 | |||
5 | % Eero Simoncelli, 3/97. | ||
6 | |||
7 | function [mn, mx] = range2(mtx) | ||
8 | |||
9 | %% NOTE: THIS CODE IS NOT ACTUALLY USED! (MEX FILE IS CALLED INSTEAD) | ||
10 | |||
11 | %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'); | ||
12 | |||
13 | if (~isreal(mtx)) | ||
14 | error('MTX must be real-valued'); | ||
15 | end | ||
16 | |||
17 | mn = min(min(mtx)); | ||
18 | mx = max(max(mtx)); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/rconv2.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/rconv2.m new file mode 100755 index 0000000..0c12490 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/rconv2.m | |||
@@ -0,0 +1,50 @@ | |||
1 | % RES = RCONV2(MTX1, MTX2, CTR) | ||
2 | % | ||
3 | % Convolution of two matrices, with boundaries handled via reflection | ||
4 | % about the edge pixels. Result will be of size of LARGER matrix. | ||
5 | % | ||
6 | % The origin of the smaller matrix is assumed to be its center. | ||
7 | % For even dimensions, the origin is determined by the CTR (optional) | ||
8 | % argument: | ||
9 | % CTR origin | ||
10 | % 0 DIM/2 (default) | ||
11 | % 1 (DIM/2)+1 | ||
12 | |||
13 | % Eero Simoncelli, 6/96. | ||
14 | |||
15 | function c = rconv2(a,b,ctr) | ||
16 | |||
17 | if (exist('ctr') ~= 1) | ||
18 | ctr = 0; | ||
19 | end | ||
20 | |||
21 | if (( size(a,1) >= size(b,1) ) & ( size(a,2) >= size(b,2) )) | ||
22 | large = a; small = b; | ||
23 | elseif (( size(a,1) <= size(b,1) ) & ( size(a,2) <= size(b,2) )) | ||
24 | large = b; small = a; | ||
25 | else | ||
26 | error('one arg must be larger than the other in both dimensions!'); | ||
27 | end | ||
28 | |||
29 | ly = size(large,1); | ||
30 | lx = size(large,2); | ||
31 | sy = size(small,1); | ||
32 | sx = size(small,2); | ||
33 | |||
34 | %% These values are one less than the index of the small mtx that falls on | ||
35 | %% the border pixel of the large matrix when computing the first | ||
36 | %% convolution response sample: | ||
37 | sy2 = floor((sy+ctr-1)/2); | ||
38 | sx2 = floor((sx+ctr-1)/2); | ||
39 | |||
40 | % pad with reflected copies | ||
41 | clarge = [ | ||
42 | large(sy-sy2:-1:2,sx-sx2:-1:2), large(sy-sy2:-1:2,:), ... | ||
43 | large(sy-sy2:-1:2,lx-1:-1:lx-sx2); ... | ||
44 | large(:,sx-sx2:-1:2), large, large(:,lx-1:-1:lx-sx2); ... | ||
45 | large(ly-1:-1:ly-sy2,sx-sx2:-1:2), ... | ||
46 | large(ly-1:-1:ly-sy2,:), ... | ||
47 | large(ly-1:-1:ly-sy2,lx-1:-1:lx-sx2) ]; | ||
48 | |||
49 | c = conv2(clarge,small,'valid'); | ||
50 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/rcosFn.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/rcosFn.m new file mode 100755 index 0000000..5dac344 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/rcosFn.m | |||
@@ -0,0 +1,45 @@ | |||
1 | % [X, Y] = rcosFn(WIDTH, POSITION, VALUES) | ||
2 | % | ||
3 | % Return a lookup table (suitable for use by INTERP1) | ||
4 | % containing a "raised cosine" soft threshold function: | ||
5 | % | ||
6 | % Y = VALUES(1) + (VALUES(2)-VALUES(1)) * | ||
7 | % cos^2( PI/2 * (X - POSITION + WIDTH)/WIDTH ) | ||
8 | % | ||
9 | % WIDTH is the width of the region over which the transition occurs | ||
10 | % (default = 1). POSITION is the location of the center of the | ||
11 | % threshold (default = 0). VALUES (default = [0,1]) specifies the | ||
12 | % values to the left and right of the transition. | ||
13 | |||
14 | % Eero Simoncelli, 7/96. | ||
15 | |||
16 | function [X, Y] = rcosFn(width,position,values) | ||
17 | |||
18 | %------------------------------------------------------------ | ||
19 | % OPTIONAL ARGS: | ||
20 | |||
21 | if (exist('width') ~= 1) | ||
22 | width = 1; | ||
23 | end | ||
24 | |||
25 | if (exist('position') ~= 1) | ||
26 | position = 0; | ||
27 | end | ||
28 | |||
29 | if (exist('values') ~= 1) | ||
30 | values = [0,1]; | ||
31 | end | ||
32 | |||
33 | %------------------------------------------------------------ | ||
34 | |||
35 | sz = 256; %% arbitrary! | ||
36 | |||
37 | X = pi * [-sz-1:1] / (2*sz); | ||
38 | |||
39 | Y = values(1) + (values(2)-values(1)) * cos(X).^2; | ||
40 | |||
41 | % Make sure end values are repeated, for extrapolation... | ||
42 | Y(1) = Y(2); | ||
43 | Y(sz+3) = Y(sz+2); | ||
44 | |||
45 | X = position + (2*width/pi) * (X + pi/4); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/reconLpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/reconLpyr.m new file mode 100755 index 0000000..cddcc12 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/reconLpyr.m | |||
@@ -0,0 +1,83 @@ | |||
1 | % RES = reconLpyr(PYR, INDICES, LEVS, FILT2, EDGES) | ||
2 | % | ||
3 | % Reconstruct image from Laplacian pyramid, as created by buildLpyr. | ||
4 | % | ||
5 | % PYR is a vector containing the N pyramid subbands, ordered from fine | ||
6 | % to coarse. INDICES is an Nx2 matrix containing the sizes of | ||
7 | % each subband. This is compatible with the MatLab Wavelet toolbox. | ||
8 | % | ||
9 | % LEVS (optional) should be a list of levels to include, or the string | ||
10 | % 'all' (default). The finest scale is number 1. The lowpass band | ||
11 | % corresponds to lpyrHt(INDICES)+1. | ||
12 | % | ||
13 | % FILT2 (optional) can be a string naming a standard filter (see | ||
14 | % namedFilter), or a vector which will be used for (separable) | ||
15 | % convolution. Default = 'binom5'. EDGES specifies edge-handling, | ||
16 | % and defaults to 'reflect1' (see corrDn). | ||
17 | |||
18 | % Eero Simoncelli, 6/96 | ||
19 | |||
20 | function res = reconLpyr(pyr, ind, levs, filt2, edges) | ||
21 | |||
22 | if (nargin < 2) | ||
23 | error('First two arguments (PYR, INDICES) are required'); | ||
24 | end | ||
25 | |||
26 | %%------------------------------------------------------------ | ||
27 | %% DEFAULTS: | ||
28 | |||
29 | if (exist('levs') ~= 1) | ||
30 | levs = 'all'; | ||
31 | end | ||
32 | |||
33 | if (exist('filt2') ~= 1) | ||
34 | filt2 = 'binom5'; | ||
35 | end | ||
36 | |||
37 | if (exist('edges') ~= 1) | ||
38 | edges= 'reflect1'; | ||
39 | end | ||
40 | %%------------------------------------------------------------ | ||
41 | |||
42 | maxLev = 1+lpyrHt(ind); | ||
43 | if strcmp(levs,'all') | ||
44 | levs = [1:maxLev]'; | ||
45 | else | ||
46 | if (any(levs > maxLev)) | ||
47 | error(sprintf('Level numbers must be in the range [1, %d].', maxLev)); | ||
48 | end | ||
49 | levs = levs(:); | ||
50 | end | ||
51 | |||
52 | if isstr(filt2) | ||
53 | filt2 = namedFilter(filt2); | ||
54 | end | ||
55 | |||
56 | filt2 = filt2(:); | ||
57 | res_sz = ind(1,:); | ||
58 | |||
59 | if any(levs > 1) | ||
60 | |||
61 | int_sz = [ind(1,1), ind(2,2)]; | ||
62 | |||
63 | nres = reconLpyr( pyr(prod(res_sz)+1:size(pyr,1)), ... | ||
64 | ind(2:size(ind,1),:), levs-1, filt2, edges); | ||
65 | |||
66 | if (res_sz(1) == 1) | ||
67 | res = upConv(nres, filt2', edges, [1 2], [1 1], res_sz); | ||
68 | elseif (res_sz(2) == 1) | ||
69 | res = upConv(nres, filt2, edges, [2 1], [1 1], res_sz); | ||
70 | else | ||
71 | hi = upConv(nres, filt2, edges, [2 1], [1 1], int_sz); | ||
72 | res = upConv(hi, filt2', edges, [1 2], [1 1], res_sz); | ||
73 | end | ||
74 | |||
75 | else | ||
76 | |||
77 | res = zeros(res_sz); | ||
78 | |||
79 | end | ||
80 | |||
81 | if any(levs == 1) | ||
82 | res = res + pyrBand(pyr,ind,1); | ||
83 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/reconSCFpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/reconSCFpyr.m new file mode 100755 index 0000000..a86f03d --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/reconSCFpyr.m | |||
@@ -0,0 +1,87 @@ | |||
1 | % RES = reconSCFpyr(PYR, INDICES, LEVS, BANDS, TWIDTH) | ||
2 | % | ||
3 | % The inverse of buildSCFpyr: Reconstruct image from its complex steerable pyramid representation, | ||
4 | % in the Fourier domain. | ||
5 | % | ||
6 | % The image is reconstructed by forcing the complex subbands to be analytic | ||
7 | % (zero on half of the 2D Fourier plane, as they are supossed to be unless | ||
8 | % they have being modified), and reconstructing from the real part of those | ||
9 | % analytic subbands. That is equivalent to compute the Hilbert transforms of | ||
10 | % the imaginary parts of the subbands, average them with their real | ||
11 | % counterparts, and then reconstructing from the resulting real subbands. | ||
12 | % | ||
13 | % PYR is a vector containing the N pyramid subbands, ordered from fine | ||
14 | % to coarse. INDICES is an Nx2 matrix containing the sizes of | ||
15 | % each subband. This is compatible with the MatLab Wavelet toolbox. | ||
16 | % | ||
17 | % LEVS (optional) should be a list of levels to include, or the string | ||
18 | % 'all' (default). 0 corresonds to the residual highpass subband. | ||
19 | % 1 corresponds to the finest oriented scale. The lowpass band | ||
20 | % corresponds to number spyrHt(INDICES)+1. | ||
21 | % | ||
22 | % BANDS (optional) should be a list of bands to include, or the string | ||
23 | % 'all' (default). 1 = vertical, rest proceeding anti-clockwise. | ||
24 | % | ||
25 | % TWIDTH is the width of the transition region of the radial lowpass | ||
26 | % function, in octaves (default = 1, which gives a raised cosine for | ||
27 | % the bandpass filters). | ||
28 | |||
29 | % Javier Portilla, 7/04, basing on Eero Simoncelli's Matlab Pyrtools code | ||
30 | % and our common code on texture synthesis (textureSynthesis.m). | ||
31 | |||
32 | function res = reconSCFpyr(pyr, indices, levs, bands, twidth) | ||
33 | |||
34 | %%------------------------------------------------------------ | ||
35 | %% DEFAULTS: | ||
36 | |||
37 | if ~exist('levs'), | ||
38 | levs = 'all'; | ||
39 | end | ||
40 | |||
41 | if ~exist('bands') | ||
42 | bands = 'all'; | ||
43 | end | ||
44 | |||
45 | if ~exist('twidth'), | ||
46 | twidth = 1; | ||
47 | elseif (twidth <= 0) | ||
48 | fprintf(1,'Warning: TWIDTH must be positive. Setting to 1.\n'); | ||
49 | twidth = 1; | ||
50 | end | ||
51 | |||
52 | %%------------------------------------------------------------ | ||
53 | |||
54 | |||
55 | pind = indices; | ||
56 | Nsc = log2(pind(1,1)/pind(end,1)); | ||
57 | Nor = (size(pind,1)-2)/Nsc; | ||
58 | |||
59 | for nsc = 1:Nsc, | ||
60 | firstBnum = (nsc-1)*Nor+2; | ||
61 | |||
62 | %% Re-create analytic subbands | ||
63 | dims = pind(firstBnum,:); | ||
64 | ctr = ceil((dims+0.5)/2); | ||
65 | ang = mkAngle(dims, 0, ctr); | ||
66 | ang(ctr(1),ctr(2)) = -pi/2; | ||
67 | for nor = 1:Nor, | ||
68 | nband = (nsc-1)*Nor+nor+1; | ||
69 | ind = pyrBandIndices(pind,nband); | ||
70 | ch = pyrBand(pyr, pind, nband); | ||
71 | ang0 = pi*(nor-1)/Nor; | ||
72 | xang = mod(ang-ang0+pi, 2*pi) - pi; | ||
73 | amask = 2*(abs(xang) < pi/2) + (abs(xang) == pi/2); | ||
74 | amask(ctr(1),ctr(2)) = 1; | ||
75 | amask(:,1) = 1; | ||
76 | amask(1,:) = 1; | ||
77 | amask = fftshift(amask); | ||
78 | ch = ifft2(amask.*fft2(ch)); % "Analytic" version | ||
79 | %f = 1.000008; % With this factor the reconstruction SNR goes up around 6 dB! | ||
80 | f = 1; | ||
81 | ch = f*0.5*real(ch); % real part | ||
82 | pyr(ind) = ch; | ||
83 | end % nor | ||
84 | end % nsc | ||
85 | |||
86 | res = reconSFpyr(pyr, indices, levs, bands, twidth); | ||
87 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/reconSFpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/reconSFpyr.m new file mode 100755 index 0000000..0e3109e --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/reconSFpyr.m | |||
@@ -0,0 +1,108 @@ | |||
1 | % RES = reconSFpyr(PYR, INDICES, LEVS, BANDS, TWIDTH) | ||
2 | % | ||
3 | % Reconstruct image from its steerable pyramid representation, in the Fourier | ||
4 | % domain, as created by buildSFpyr. | ||
5 | % | ||
6 | % PYR is a vector containing the N pyramid subbands, ordered from fine | ||
7 | % to coarse. INDICES is an Nx2 matrix containing the sizes of | ||
8 | % each subband. This is compatible with the MatLab Wavelet toolbox. | ||
9 | % | ||
10 | % LEVS (optional) should be a list of levels to include, or the string | ||
11 | % 'all' (default). 0 corresonds to the residual highpass subband. | ||
12 | % 1 corresponds to the finest oriented scale. The lowpass band | ||
13 | % corresponds to number spyrHt(INDICES)+1. | ||
14 | % | ||
15 | % BANDS (optional) should be a list of bands to include, or the string | ||
16 | % 'all' (default). 1 = vertical, rest proceeding anti-clockwise. | ||
17 | % | ||
18 | % TWIDTH is the width of the transition region of the radial lowpass | ||
19 | % function, in octaves (default = 1, which gives a raised cosine for | ||
20 | % the bandpass filters). | ||
21 | |||
22 | %%% MODIFIED VERSION, 7/04, uses different lookup table for radial frequency! | ||
23 | |||
24 | % Eero Simoncelli, 5/97. | ||
25 | |||
26 | function res = reconSFpyr(pyr, pind, levs, bands, twidth) | ||
27 | |||
28 | %%------------------------------------------------------------ | ||
29 | %% DEFAULTS: | ||
30 | |||
31 | if (exist('levs') ~= 1) | ||
32 | levs = 'all'; | ||
33 | end | ||
34 | |||
35 | if (exist('bands') ~= 1) | ||
36 | bands = 'all'; | ||
37 | end | ||
38 | |||
39 | if (exist('twidth') ~= 1) | ||
40 | twidth = 1; | ||
41 | elseif (twidth <= 0) | ||
42 | fprintf(1,'Warning: TWIDTH must be positive. Setting to 1.\n'); | ||
43 | twidth = 1; | ||
44 | end | ||
45 | |||
46 | %%------------------------------------------------------------ | ||
47 | |||
48 | nbands = spyrNumBands(pind); | ||
49 | |||
50 | maxLev = 1+spyrHt(pind); | ||
51 | if strcmp(levs,'all') | ||
52 | levs = [0:maxLev]'; | ||
53 | else | ||
54 | if (any(levs > maxLev) | any(levs < 0)) | ||
55 | error(sprintf('Level numbers must be in the range [0, %d].', maxLev)); | ||
56 | end | ||
57 | levs = levs(:); | ||
58 | end | ||
59 | |||
60 | if strcmp(bands,'all') | ||
61 | bands = [1:nbands]'; | ||
62 | else | ||
63 | if (any(bands < 1) | any(bands > nbands)) | ||
64 | error(sprintf('Band numbers must be in the range [1,3].', nbands)); | ||
65 | end | ||
66 | bands = bands(:); | ||
67 | end | ||
68 | |||
69 | %---------------------------------------------------------------------- | ||
70 | |||
71 | dims = pind(1,:); | ||
72 | ctr = ceil((dims+0.5)/2); | ||
73 | |||
74 | [xramp,yramp] = meshgrid( ([1:dims(2)]-ctr(2))./(dims(2)/2), ... | ||
75 | ([1:dims(1)]-ctr(1))./(dims(1)/2) ); | ||
76 | angle = atan2(yramp,xramp); | ||
77 | log_rad = sqrt(xramp.^2 + yramp.^2); | ||
78 | log_rad(ctr(1),ctr(2)) = log_rad(ctr(1),ctr(2)-1); | ||
79 | log_rad = log2(log_rad); | ||
80 | |||
81 | %% Radial transition function (a raised cosine in log-frequency): | ||
82 | [Xrcos,Yrcos] = rcosFn(twidth,(-twidth/2),[0 1]); | ||
83 | Yrcos = sqrt(Yrcos); | ||
84 | YIrcos = sqrt(abs(1.0 - Yrcos.^2)); | ||
85 | |||
86 | if (size(pind,1) == 2) | ||
87 | if (any(levs==1)) | ||
88 | resdft = fftshift(fft2(pyrBand(pyr,pind,2))); | ||
89 | else | ||
90 | resdft = zeros(pind(2,:)); | ||
91 | end | ||
92 | else | ||
93 | resdft = reconSFpyrLevs(pyr(1+prod(pind(1,:)):size(pyr,1)), ... | ||
94 | pind(2:size(pind,1),:), ... | ||
95 | log_rad, Xrcos, Yrcos, angle, nbands, levs, bands); | ||
96 | end | ||
97 | |||
98 | lo0mask = pointOp(log_rad, YIrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); | ||
99 | resdft = resdft .* lo0mask; | ||
100 | |||
101 | %% residual highpass subband | ||
102 | if any(levs == 0) | ||
103 | hi0mask = pointOp(log_rad, Yrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); | ||
104 | hidft = fftshift(fft2(subMtx(pyr, pind(1,:)))); | ||
105 | resdft = resdft + hidft .* hi0mask; | ||
106 | end | ||
107 | |||
108 | res = real(ifft2(ifftshift(resdft))); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/reconSFpyrLevs.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/reconSFpyrLevs.m new file mode 100755 index 0000000..420f278 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/reconSFpyrLevs.m | |||
@@ -0,0 +1,69 @@ | |||
1 | % RESDFT = reconSFpyrLevs(PYR,INDICES,LOGRAD,XRCOS,YRCOS,ANGLE,NBANDS,LEVS,BANDS) | ||
2 | % | ||
3 | % Recursive function for reconstructing levels of a steerable pyramid | ||
4 | % representation. This is called by reconSFpyr, and is not usually | ||
5 | % called directly. | ||
6 | |||
7 | % Eero Simoncelli, 5/97. | ||
8 | |||
9 | function resdft = reconSFpyrLevs(pyr,pind,log_rad,Xrcos,Yrcos,angle,nbands,levs,bands); | ||
10 | |||
11 | lo_ind = nbands+1; | ||
12 | dims = pind(1,:); | ||
13 | ctr = ceil((dims+0.5)/2); | ||
14 | |||
15 | % log_rad = log_rad + 1; | ||
16 | Xrcos = Xrcos - log2(2); % shift origin of lut by 1 octave. | ||
17 | |||
18 | if any(levs > 1) | ||
19 | |||
20 | lodims = ceil((dims-0.5)/2); | ||
21 | loctr = ceil((lodims+0.5)/2); | ||
22 | lostart = ctr-loctr+1; | ||
23 | loend = lostart+lodims-1; | ||
24 | nlog_rad = log_rad(lostart(1):loend(1),lostart(2):loend(2)); | ||
25 | nangle = angle(lostart(1):loend(1),lostart(2):loend(2)); | ||
26 | |||
27 | if (size(pind,1) > lo_ind) | ||
28 | nresdft = reconSFpyrLevs( pyr(1+sum(prod(pind(1:lo_ind-1,:)')):size(pyr,1)),... | ||
29 | pind(lo_ind:size(pind,1),:), ... | ||
30 | nlog_rad, Xrcos, Yrcos, nangle, nbands,levs-1, bands); | ||
31 | else | ||
32 | nresdft = fftshift(fft2(pyrBand(pyr,pind,lo_ind))); | ||
33 | end | ||
34 | |||
35 | YIrcos = sqrt(abs(1.0 - Yrcos.^2)); | ||
36 | lomask = pointOp(nlog_rad, YIrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); | ||
37 | |||
38 | resdft = zeros(dims); | ||
39 | resdft(lostart(1):loend(1),lostart(2):loend(2)) = nresdft .* lomask; | ||
40 | |||
41 | else | ||
42 | |||
43 | resdft = zeros(dims); | ||
44 | |||
45 | end | ||
46 | |||
47 | |||
48 | if any(levs == 1) | ||
49 | |||
50 | lutsize = 1024; | ||
51 | Xcosn = pi*[-(2*lutsize+1):(lutsize+1)]/lutsize; % [-2*pi:pi] | ||
52 | order = nbands-1; | ||
53 | %% divide by sqrt(sum_(n=0)^(N-1) cos(pi*n/N)^(2(N-1)) ) | ||
54 | const = (2^(2*order))*(factorial(order)^2)/(nbands*factorial(2*order)); | ||
55 | Ycosn = sqrt(const) * (cos(Xcosn)).^order; | ||
56 | himask = pointOp(log_rad, Yrcos, Xrcos(1), Xrcos(2)-Xrcos(1),0); | ||
57 | |||
58 | ind = 1; | ||
59 | for b = 1:nbands | ||
60 | if any(bands == b) | ||
61 | anglemask = pointOp(angle,Ycosn,Xcosn(1)+pi*(b-1)/nbands,Xcosn(2)-Xcosn(1)); | ||
62 | band = reshape(pyr(ind:ind+prod(dims)-1), dims(1), dims(2)); | ||
63 | banddft = fftshift(fft2(band)); | ||
64 | resdft = resdft + (sqrt(-1))^(nbands-1) * banddft.*anglemask.*himask; | ||
65 | end | ||
66 | ind = ind + prod(dims); | ||
67 | end | ||
68 | end | ||
69 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/reconSpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/reconSpyr.m new file mode 100755 index 0000000..270009d --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/reconSpyr.m | |||
@@ -0,0 +1,96 @@ | |||
1 | % RES = reconSpyr(PYR, INDICES, FILTFILE, EDGES, LEVS, BANDS) | ||
2 | % | ||
3 | % Reconstruct image from its steerable pyramid representation, as created | ||
4 | % by buildSpyr. | ||
5 | % | ||
6 | % PYR is a vector containing the N pyramid subbands, ordered from fine | ||
7 | % to coarse. INDICES is an Nx2 matrix containing the sizes of | ||
8 | % each subband. This is compatible with the MatLab Wavelet toolbox. | ||
9 | % | ||
10 | % FILTFILE (optional) should be a string referring to an m-file that returns | ||
11 | % the rfilters. examples: sp0Filters, sp1Filters, sp3Filters | ||
12 | % (default = 'sp1Filters'). | ||
13 | % EDGES specifies edge-handling, and defaults to 'reflect1' (see | ||
14 | % corrDn). | ||
15 | % | ||
16 | % LEVS (optional) should be a list of levels to include, or the string | ||
17 | % 'all' (default). 0 corresonds to the residual highpass subband. | ||
18 | % 1 corresponds to the finest oriented scale. The lowpass band | ||
19 | % corresponds to number spyrHt(INDICES)+1. | ||
20 | % | ||
21 | % BANDS (optional) should be a list of bands to include, or the string | ||
22 | % 'all' (default). 1 = vertical, rest proceeding anti-clockwise. | ||
23 | |||
24 | % Eero Simoncelli, 6/96. | ||
25 | |||
26 | function res = reconSpyr(pyr, pind, filtfile, edges, levs, bands) | ||
27 | |||
28 | %%------------------------------------------------------------ | ||
29 | %% DEFAULTS: | ||
30 | |||
31 | if (exist('filtfile') ~= 1) | ||
32 | filtfile = 'sp1Filters'; | ||
33 | end | ||
34 | |||
35 | if (exist('edges') ~= 1) | ||
36 | edges= 'reflect1'; | ||
37 | end | ||
38 | |||
39 | if (exist('levs') ~= 1) | ||
40 | levs = 'all'; | ||
41 | end | ||
42 | |||
43 | if (exist('bands') ~= 1) | ||
44 | bands = 'all'; | ||
45 | end | ||
46 | |||
47 | %%------------------------------------------------------------ | ||
48 | |||
49 | if (isstr(filtfile) & (exist(filtfile) == 2)) | ||
50 | [lo0filt,hi0filt,lofilt,bfilts,steermtx,harmonics] = eval(filtfile); | ||
51 | nbands = spyrNumBands(pind); | ||
52 | if ((nbands > 0) & (size(bfilts,2) ~= nbands)) | ||
53 | error('Number of pyramid bands is inconsistent with filter file'); | ||
54 | end | ||
55 | else | ||
56 | error('filtfile argument must be the name of an M-file containing SPYR filters.'); | ||
57 | end | ||
58 | |||
59 | maxLev = 1+spyrHt(pind); | ||
60 | if strcmp(levs,'all') | ||
61 | levs = [0:maxLev]'; | ||
62 | else | ||
63 | if (any(levs > maxLev) | any(levs < 0)) | ||
64 | error(sprintf('Level numbers must be in the range [0, %d].', maxLev)); | ||
65 | end | ||
66 | levs = levs(:); | ||
67 | end | ||
68 | |||
69 | if strcmp(bands,'all') | ||
70 | bands = [1:nbands]'; | ||
71 | else | ||
72 | if (any(bands < 1) | any(bands > nbands)) | ||
73 | error(sprintf('Band numbers must be in the range [1,3].', nbands)); | ||
74 | end | ||
75 | bands = bands(:); | ||
76 | end | ||
77 | |||
78 | if (spyrHt(pind) == 0) | ||
79 | if (any(levs==1)) | ||
80 | res1 = pyrBand(pyr,pind,2); | ||
81 | else | ||
82 | res1 = zeros(pind(2,:)); | ||
83 | end | ||
84 | else | ||
85 | res1 = reconSpyrLevs(pyr(1+prod(pind(1,:)):size(pyr,1)), ... | ||
86 | pind(2:size(pind,1),:), ... | ||
87 | lofilt, bfilts, edges, levs, bands); | ||
88 | end | ||
89 | |||
90 | res = upConv(res1, lo0filt, edges); | ||
91 | |||
92 | %% residual highpass subband | ||
93 | if any(levs == 0) | ||
94 | upConv( subMtx(pyr, pind(1,:)), hi0filt, edges, [1 1], [1 1], size(res), res); | ||
95 | end | ||
96 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/reconSpyrLevs.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/reconSpyrLevs.m new file mode 100755 index 0000000..f8e456c --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/reconSpyrLevs.m | |||
@@ -0,0 +1,46 @@ | |||
1 | % RES = reconSpyrLevs(PYR,INDICES,LOFILT,BFILTS,EDGES,LEVS,BANDS) | ||
2 | % | ||
3 | % Recursive function for reconstructing levels of a steerable pyramid | ||
4 | % representation. This is called by reconSpyr, and is not usually | ||
5 | % called directly. | ||
6 | |||
7 | % Eero Simoncelli, 6/96. | ||
8 | |||
9 | function res = reconSpyrLevs(pyr,pind,lofilt,bfilts,edges,levs,bands); | ||
10 | |||
11 | nbands = size(bfilts,2); | ||
12 | lo_ind = nbands+1; | ||
13 | res_sz = pind(1,:); | ||
14 | |||
15 | % Assume square filters: | ||
16 | bfiltsz = round(sqrt(size(bfilts,1))); | ||
17 | |||
18 | if any(levs > 1) | ||
19 | |||
20 | if (size(pind,1) > lo_ind) | ||
21 | nres = reconSpyrLevs( pyr(1+sum(prod(pind(1:lo_ind-1,:)')):size(pyr,1)), ... | ||
22 | pind(lo_ind:size(pind,1),:), ... | ||
23 | lofilt, bfilts, edges, levs-1, bands); | ||
24 | else | ||
25 | nres = pyrBand(pyr,pind,lo_ind); % lowpass subband | ||
26 | end | ||
27 | |||
28 | res = upConv(nres, lofilt, edges, [2 2], [1 1], res_sz); | ||
29 | |||
30 | else | ||
31 | |||
32 | res = zeros(res_sz); | ||
33 | |||
34 | end | ||
35 | |||
36 | if any(levs == 1) | ||
37 | ind = 1; | ||
38 | for b = 1:nbands | ||
39 | if any(bands == b) | ||
40 | bfilt = reshape(bfilts(:,b), bfiltsz, bfiltsz); | ||
41 | upConv(reshape(pyr(ind:ind+prod(res_sz)-1), res_sz(1), res_sz(2)), ... | ||
42 | bfilt, edges, [1 1], [1 1], res_sz, res); | ||
43 | end | ||
44 | ind = ind + prod(res_sz); | ||
45 | end | ||
46 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/reconWpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/reconWpyr.m new file mode 100755 index 0000000..fc31226 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/reconWpyr.m | |||
@@ -0,0 +1,148 @@ | |||
1 | % RES = reconWpyr(PYR, INDICES, FILT, EDGES, LEVS, BANDS) | ||
2 | % | ||
3 | % Reconstruct image from its separable orthonormal QMF/wavelet pyramid | ||
4 | % representation, as created by buildWpyr. | ||
5 | % | ||
6 | % PYR is a vector containing the N pyramid subbands, ordered from fine | ||
7 | % to coarse. INDICES is an Nx2 matrix containing the sizes of | ||
8 | % each subband. This is compatible with the MatLab Wavelet toolbox. | ||
9 | % | ||
10 | % FILT (optional) can be a string naming a standard filter (see | ||
11 | % namedFilter), or a vector which will be used for (separable) | ||
12 | % convolution. Default = 'qmf9'. EDGES specifies edge-handling, | ||
13 | % and defaults to 'reflect1' (see corrDn). | ||
14 | % | ||
15 | % LEVS (optional) should be a vector of levels to include, or the string | ||
16 | % 'all' (default). 1 corresponds to the finest scale. The lowpass band | ||
17 | % corresponds to wpyrHt(INDICES)+1. | ||
18 | % | ||
19 | % BANDS (optional) should be a vector of bands to include, or the string | ||
20 | % 'all' (default). 1=horizontal, 2=vertical, 3=diagonal. This is only used | ||
21 | % for pyramids of 2D images. | ||
22 | |||
23 | % Eero Simoncelli, 6/96. | ||
24 | |||
25 | function res = reconWpyr(pyr, ind, filt, edges, levs, bands) | ||
26 | |||
27 | if (nargin < 2) | ||
28 | error('First two arguments (PYR INDICES) are required'); | ||
29 | end | ||
30 | |||
31 | %%------------------------------------------------------------ | ||
32 | %% OPTIONAL ARGS: | ||
33 | |||
34 | if (exist('filt') ~= 1) | ||
35 | filt = 'qmf9'; | ||
36 | end | ||
37 | |||
38 | if (exist('edges') ~= 1) | ||
39 | edges= 'reflect1'; | ||
40 | end | ||
41 | |||
42 | if (exist('levs') ~= 1) | ||
43 | levs = 'all'; | ||
44 | end | ||
45 | |||
46 | if (exist('bands') ~= 1) | ||
47 | bands = 'all'; | ||
48 | end | ||
49 | |||
50 | %%------------------------------------------------------------ | ||
51 | |||
52 | maxLev = 1+wpyrHt(ind); | ||
53 | if strcmp(levs,'all') | ||
54 | levs = [1:maxLev]'; | ||
55 | else | ||
56 | if (any(levs > maxLev)) | ||
57 | error(sprintf('Level numbers must be in the range [1, %d].', maxLev)); | ||
58 | end | ||
59 | levs = levs(:); | ||
60 | end | ||
61 | |||
62 | if strcmp(bands,'all') | ||
63 | bands = [1:3]'; | ||
64 | else | ||
65 | if (any(bands < 1) | any(bands > 3)) | ||
66 | error('Band numbers must be in the range [1,3].'); | ||
67 | end | ||
68 | bands = bands(:); | ||
69 | end | ||
70 | |||
71 | if isstr(filt) | ||
72 | filt = namedFilter(filt); | ||
73 | end | ||
74 | |||
75 | filt = filt(:); | ||
76 | hfilt = modulateFlip(filt); | ||
77 | |||
78 | %% For odd-length filters, stagger the sampling lattices: | ||
79 | if (mod(size(filt,1),2) == 0) | ||
80 | stag = 2; | ||
81 | else | ||
82 | stag = 1; | ||
83 | end | ||
84 | |||
85 | %% Compute size of result image: assumes critical sampling (boundaries correct) | ||
86 | res_sz = ind(1,:); | ||
87 | if (res_sz(1) == 1) | ||
88 | loind = 2; | ||
89 | res_sz(2) = sum(ind(:,2)); | ||
90 | elseif (res_sz(2) == 1) | ||
91 | loind = 2; | ||
92 | res_sz(1) = sum(ind(:,1)); | ||
93 | else | ||
94 | loind = 4; | ||
95 | res_sz = ind(1,:) + ind(2,:); %%horizontal + vertical bands. | ||
96 | hres_sz = [ind(1,1), res_sz(2)]; | ||
97 | lres_sz = [ind(2,1), res_sz(2)]; | ||
98 | end | ||
99 | |||
100 | |||
101 | %% First, recursively collapse coarser scales: | ||
102 | if any(levs > 1) | ||
103 | |||
104 | if (size(ind,1) > loind) | ||
105 | nres = reconWpyr( pyr(1+sum(prod(ind(1:loind-1,:)')):size(pyr,1)), ... | ||
106 | ind(loind:size(ind,1),:), filt, edges, levs-1, bands); | ||
107 | else | ||
108 | nres = pyrBand(pyr, ind, loind); % lowpass subband | ||
109 | end | ||
110 | |||
111 | if (res_sz(1) == 1) | ||
112 | res = upConv(nres, filt', edges, [1 2], [1 stag], res_sz); | ||
113 | elseif (res_sz(2) == 1) | ||
114 | res = upConv(nres, filt, edges, [2 1], [stag 1], res_sz); | ||
115 | else | ||
116 | ires = upConv(nres, filt', edges, [1 2], [1 stag], lres_sz); | ||
117 | res = upConv(ires, filt, edges, [2 1], [stag 1], res_sz); | ||
118 | end | ||
119 | |||
120 | else | ||
121 | |||
122 | res = zeros(res_sz); | ||
123 | |||
124 | end | ||
125 | |||
126 | |||
127 | %% Add in reconstructed bands from this level: | ||
128 | if any(levs == 1) | ||
129 | if (res_sz(1) == 1) | ||
130 | upConv(pyrBand(pyr,ind,1), hfilt', edges, [1 2], [1 2], res_sz, res); | ||
131 | elseif (res_sz(2) == 1) | ||
132 | upConv(pyrBand(pyr,ind,1), hfilt, edges, [2 1], [2 1], res_sz, res); | ||
133 | else | ||
134 | if any(bands == 1) % horizontal | ||
135 | ires = upConv(pyrBand(pyr,ind,1),filt',edges,[1 2],[1 stag],hres_sz); | ||
136 | upConv(ires,hfilt,edges,[2 1],[2 1],res_sz,res); %destructively modify res | ||
137 | end | ||
138 | if any(bands == 2) % vertical | ||
139 | ires = upConv(pyrBand(pyr,ind,2),hfilt',edges,[1 2],[1 2],lres_sz); | ||
140 | upConv(ires,filt,edges,[2 1],[stag 1],res_sz,res); %destructively modify res | ||
141 | end | ||
142 | if any(bands == 3) % diagonal | ||
143 | ires = upConv(pyrBand(pyr,ind,3),hfilt',edges,[1 2],[1 2],hres_sz); | ||
144 | upConv(ires,hfilt,edges,[2 1],[2 1],res_sz,res); %destructively modify res | ||
145 | end | ||
146 | end | ||
147 | end | ||
148 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/script_run_profile.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/script_run_profile.m new file mode 100755 index 0000000..133ca50 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/script_run_profile.m | |||
@@ -0,0 +1,142 @@ | |||
1 | % Example 2: Seamless blending of real and synthetic texture in an | ||
2 | % image, using Portilla-Simoncelli texture analysis/synthesis code, | ||
3 | % based on alternate projections onto statistical constraints in a | ||
4 | % complex overcomplete wavelet representation. | ||
5 | % | ||
6 | % See Readme.txt, and headers of textureAnalysis.m and | ||
7 | % textureSynthesis.m for more details. | ||
8 | % | ||
9 | % Javier Portilla (javier@decsai.ugr.es). March, 2001 | ||
10 | |||
11 | function script_run_profile(dataDir, resultDir, type, common,toolDir) | ||
12 | |||
13 | path(path, common); | ||
14 | Files = dir([dataDir,'/1.bmp']); | ||
15 | inputFile = fullfile(dataDir,Files(1).name); | ||
16 | |||
17 | close all | ||
18 | |||
19 | Nsc = 4; % Number of scales | ||
20 | Nor = 4; % Number of orientations | ||
21 | Na = 5; % Spatial neighborhood is Na x Na coefficients | ||
22 | % It must be an odd number! | ||
23 | Niter = 25; % Number of iterations of synthesis loop | ||
24 | Nsx = 192; % Size of synthetic image is Nsy x Nsx | ||
25 | Nsy = 192; % Warning: both dimensions must be multiple of 2^(Nsc+2) | ||
26 | |||
27 | if(strcmp(type,'qcif')) | ||
28 | Nsc = 4; | ||
29 | Nor = 4; | ||
30 | Na = 5; | ||
31 | Niter = 5; | ||
32 | elseif(strcmp(type,'sqcif')) | ||
33 | Nsc = 2; | ||
34 | Nor = 2; | ||
35 | Na = 3; | ||
36 | Niter = 5; | ||
37 | elseif(strcmp(type, 'test')) | ||
38 | Nsc = 2; % Number of scales | ||
39 | Nor = 2; % Number of orientations | ||
40 | Na = 1; % Spatial neighborhood is Na x Na coefficients | ||
41 | % It must be an odd number! | ||
42 | Niter = 1; % Number of iterations of synthesis loop | ||
43 | Nsx = 16; % Size of synthetic image is Nsy x Nsx | ||
44 | Nsy = 16; % Warning: both dimensions must be multiple of 2^(Nsc+2) | ||
45 | |||
46 | elseif(strcmp(type, 'sim_fast')) | ||
47 | Nsc = 2; % Number of scales | ||
48 | Nor = 2; % Number of orientations | ||
49 | Na = 3; % Spatial neighborhood is Na x Na coefficients | ||
50 | % It must be an odd number! | ||
51 | Niter = 2; % Number of iterations of synthesis loop | ||
52 | Nsx = 16; % Size of synthetic image is Nsy x Nsx | ||
53 | Nsy = 16; % Warning: both dimensions must be multiple of 2^(Nsc+2) | ||
54 | |||
55 | elseif(strcmp(type, 'sim')) | ||
56 | Nsc = 2; % Number of scales | ||
57 | Nor = 2; % Number of orientations | ||
58 | Na = 3; % Spatial neighborhood is Na x Na coefficients | ||
59 | % It must be an odd number! | ||
60 | Niter = 1; % Number of iterations of synthesis loop | ||
61 | Nsx = 32; % Size of synthetic image is Nsy x Nsx | ||
62 | Nsy = 32; % Warning: both dimensions must be multiple of 2^(Nsc+2) | ||
63 | |||
64 | elseif(strcmp(type, 'vga')) | ||
65 | Nsc = 2; % Number of scales | ||
66 | Nor = 2; % Number of orientations | ||
67 | Na = 3; % Spatial neighborhood is Na x Na coefficients | ||
68 | % It must be an odd number! | ||
69 | Niter = 1; % Number of iterations of synthesis loop | ||
70 | Nsx = 640; % Size of synthetic image is Nsy x Nsx | ||
71 | Nsy = 480; % Warning: both dimensions must be multiple of 2^(Nsc+2) | ||
72 | |||
73 | elseif(strcmp(type, 'real')) | ||
74 | Nsc = 2; % Number of scales | ||
75 | Nor = 2; % Number of orientations | ||
76 | Na = 3; % Spatial neighborhood is Na x Na coefficients | ||
77 | % It must be an odd number! | ||
78 | Niter = 1; % Number of iterations of synthesis loop | ||
79 | Nsx = 1920; % Size of synthetic image is Nsy x Nsx | ||
80 | Nsy = 1200; % Warning: both dimensions must be multiple of 2^(Nsc+2) | ||
81 | |||
82 | end | ||
83 | |||
84 | im0 = readImage(inputFile); % Warning: im0 is a double float matrix! | ||
85 | rows = size(im0,1); | ||
86 | cols = size(im0,2); | ||
87 | fprintf(1,'Input size\t\t- (%dx%d)\n', rows, cols); | ||
88 | |||
89 | %% Self check params | ||
90 | tol = 0.1; | ||
91 | elapsed = zeros(1,2); | ||
92 | |||
93 | %% Timing | ||
94 | start = photonStartTiming; | ||
95 | |||
96 | params = textureAnalysis(im0, Nsc, Nor, Na); | ||
97 | |||
98 | %% Timing | ||
99 | stop = photonEndTiming; | ||
100 | |||
101 | temp = photonReportTiming(start, stop); | ||
102 | elapsed(1) = elapsed(1) + temp(1); | ||
103 | elapsed(2) = elapsed(2) + temp(2); | ||
104 | |||
105 | % Use a mask and the original image to synthesize an image with the | ||
106 | % left side synthetic and the right side real data. | ||
107 | % The effective mask is M = (mask>0), its smoothness is for avoiding | ||
108 | % border effects. | ||
109 | ramp = meshgrid(1:Nsx/4,1:Nsy)*4/Nsy; | ||
110 | mask = [zeros(Nsy,Nsx/2) ramp ramp(:,Nsx/4:-1:1)]; | ||
111 | mask = 1/2*(1-cos(pi*mask)); | ||
112 | |||
113 | imKeep = zeros(Nsx*Nsy,2); | ||
114 | imKeep(:,1) = reshape(mask, [Nsy*Nsx,1]); | ||
115 | imKeep(:,2) = reshape(im0(1:Nsy,1:Nsx), [Nsy*Nsx,1]); % Original | ||
116 | |||
117 | %% Timing | ||
118 | start = photonStartTiming; | ||
119 | |||
120 | res = textureSynthesis(params, [Nsy Nsx], Niter,[],imKeep); | ||
121 | |||
122 | %% Timing | ||
123 | stop = photonEndTiming; | ||
124 | |||
125 | temp = photonReportTiming(start, stop); | ||
126 | elapsed(1) = elapsed(1) + temp(1); | ||
127 | elapsed(2) = elapsed(2) + temp(2); | ||
128 | |||
129 | %% Self checking | ||
130 | fWriteMatrix(res, dataDir); | ||
131 | |||
132 | rows = Nsy; | ||
133 | cols = Nsx; | ||
134 | |||
135 | %% Timing | ||
136 | photonPrintTiming(elapsed); | ||
137 | |||
138 | %close all | ||
139 | %figure(1);showIm(mask>0, 'auto', 'auto', 'Mask'); | ||
140 | %figure(2);showIm(im0, 'auto', 'auto', 'Original Texture'); | ||
141 | %figure(3);showIm(res, 'auto', 'auto', 'Blended Original and Synthetic Texture'); | ||
142 | %pause; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/script_run_profile1.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/script_run_profile1.m new file mode 100755 index 0000000..2a7a0dc --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/script_run_profile1.m | |||
@@ -0,0 +1,34 @@ | |||
1 | % Example 1: Synthesis of a "text" texture image, using | ||
2 | % Portilla-Simoncelli texture analysis/synthesis code, based on | ||
3 | % alternate projections onto statistical constraints in a complex | ||
4 | % overcomplete wavelet representation. | ||
5 | % | ||
6 | % See Readme.txt, and headers of textureAnalysis.m and | ||
7 | % textureSynthesis.m for more details. | ||
8 | % | ||
9 | % Javier Portilla (javier@decsai.ugr.es). March, 2001 | ||
10 | |||
11 | close all | ||
12 | |||
13 | im0 = imread('/u/kvs/VisionBenchmark/texture_synthesis/result/text.pgm'); % im0 is a double float matrix! | ||
14 | |||
15 | Nsc = 4; % Number of scales | ||
16 | Nor = 4; % Number of orientations | ||
17 | Na = 9; % Spatial neighborhood is Na x Na coefficients | ||
18 | % It must be an odd number! | ||
19 | |||
20 | params = textureAnalysis(im0, Nsc, Nor, Na); | ||
21 | |||
22 | Niter = 25; % Number of iterations of synthesis loop | ||
23 | Nsx = 192; % Size of synthetic image is Nsy x Nsx | ||
24 | Nsy = 128; % WARNING: Both dimensions must be multiple of 2^(Nsc+2) | ||
25 | |||
26 | res = textureSynthesis(params, [Nsy Nsx], Niter); | ||
27 | |||
28 | close all | ||
29 | figure(1) | ||
30 | showIm(im0, 'auto', 1, 'Original texture'); | ||
31 | figure(2) | ||
32 | showIm(res, 'auto', 1, 'Synthesized texture'); | ||
33 | |||
34 | % Can you read the NEW text? ;-) | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/setPyrBand.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/setPyrBand.m new file mode 100755 index 0000000..baa9f77 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/setPyrBand.m | |||
@@ -0,0 +1,32 @@ | |||
1 | % NEWPYR = setPyrBand(PYR, INDICES, BAND, BAND_NUM) | ||
2 | % | ||
3 | % Insert an image (BAND) into a pyramid (gaussian, laplacian, QMF/wavelet, | ||
4 | % or steerable). Subbands are numbered consecutively, from finest | ||
5 | % (highest spatial frequency) to coarsest (lowest spatial frequency). | ||
6 | |||
7 | % Eero Simoncelli, 1/03. | ||
8 | |||
9 | function pyr = pyrBand(pyr, pind, band, bandNum) | ||
10 | |||
11 | %% Check: PIND a valid index matrix? | ||
12 | if ( ~(ndims(pind) == 2) | ~(size(pind,2) == 2) | ~all(pind==round(pind)) ) | ||
13 | pind | ||
14 | error('pyrTools:badArg',... | ||
15 | 'PIND argument is not an Nbands X 2 matrix of integers'); | ||
16 | end | ||
17 | |||
18 | %% Check: PIND consistent with size of PYR? | ||
19 | if ( length(pyr) ~= sum(prod(pind,2)) ) | ||
20 | error('pyrTools:badPyr',... | ||
21 | 'Pyramid data vector length is inconsistent with index matrix PIND'); | ||
22 | end | ||
23 | |||
24 | %% Check: size of BAND consistent with desired BANDNUM? | ||
25 | if (~all(size(band) == pind(bandNum,:))) | ||
26 | size(band) | ||
27 | pind(bandNum,:) | ||
28 | error('pyrTools:badArg',... | ||
29 | 'size of BAND to be inserted is inconsistent with BAND_NUM'); | ||
30 | end | ||
31 | |||
32 | pyr(pyrBandIndices(pind,bandNum)) = vectify(band); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/shift.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/shift.m new file mode 100755 index 0000000..497297e --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/shift.m | |||
@@ -0,0 +1,15 @@ | |||
1 | % [RES] = shift(MTX, OFFSET) | ||
2 | % | ||
3 | % Circular shift 2D matrix samples by OFFSET (a [Y,X] 2-vector), | ||
4 | % such that RES(POS) = MTX(POS-OFFSET). | ||
5 | |||
6 | function res = shift(mtx, offset) | ||
7 | |||
8 | dims = size(mtx); | ||
9 | |||
10 | offset = mod(-offset,dims); | ||
11 | |||
12 | res = [ mtx(offset(1)+1:dims(1), offset(2)+1:dims(2)), ... | ||
13 | mtx(offset(1)+1:dims(1), 1:offset(2)); ... | ||
14 | mtx(1:offset(1), offset(2)+1:dims(2)), ... | ||
15 | mtx(1:offset(1), 1:offset(2)) ]; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/showIm.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/showIm.m new file mode 100755 index 0000000..a9e2bd1 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/showIm.m | |||
@@ -0,0 +1,221 @@ | |||
1 | % RANGE = showIm (MATRIX, RANGE, ZOOM, LABEL, NSHADES ) | ||
2 | % | ||
3 | % Display a MatLab MATRIX as a grayscale image in the current figure, | ||
4 | % inside the current axes. If MATRIX is complex, the real and imaginary | ||
5 | % parts are shown side-by-side, with the same grayscale mapping. | ||
6 | % | ||
7 | % If MATRIX is a string, it should be the name of a variable bound to a | ||
8 | % MATRIX in the base (global) environment. This matrix is displayed as an | ||
9 | % image, with the title set to the string. | ||
10 | % | ||
11 | % RANGE (optional) is a 2-vector specifying the values that map to | ||
12 | % black and white, respectively. Passing a value of 'auto' (default) | ||
13 | % sets RANGE=[min,max] (as in MatLab's imagesc). 'auto2' sets | ||
14 | % RANGE=[mean-2*stdev, mean+2*stdev]. 'auto3' sets | ||
15 | % RANGE=[p1-(p2-p1)/8, p2+(p2-p1)/8], where p1 is the 10th percentile | ||
16 | % value of the sorted MATRIX samples, and p2 is the 90th percentile | ||
17 | % value. | ||
18 | % | ||
19 | % ZOOM specifies the number of matrix samples per screen pixel. It | ||
20 | % will be rounded to an integer, or 1 divided by an integer. A value | ||
21 | % of 'same' or 'auto' (default) causes the zoom value to be chosen | ||
22 | % automatically to fit the image into the current axes. A value of | ||
23 | % 'full' fills the axis region (leaving no room for labels). See | ||
24 | % pixelAxes.m. | ||
25 | % | ||
26 | % If LABEL (optional, default = 1, unless zoom='full') is non-zero, the range | ||
27 | % of values that are mapped into the gray colormap and the dimensions | ||
28 | % (size) of the matrix and zoom factor are printed below the image. If label | ||
29 | % is a string, it is used as a title. | ||
30 | % | ||
31 | % NSHADES (optional) specifies the number of gray shades, and defaults | ||
32 | % to the size of the current colormap. | ||
33 | |||
34 | % Eero Simoncelli, 6/96. | ||
35 | |||
36 | %%TODO: should use "newplot" | ||
37 | |||
38 | function range = showIm( im, range, zoom, label, nshades ); | ||
39 | |||
40 | %------------------------------------------------------------ | ||
41 | %% OPTIONAL ARGS: | ||
42 | |||
43 | if (nargin < 1) | ||
44 | error('Requires at least one input argument.'); | ||
45 | end | ||
46 | |||
47 | MLv = version; | ||
48 | |||
49 | if isstr(im) | ||
50 | if (strcmp(MLv(1),'4')) | ||
51 | error('Cannot pass string arg for MATRIX in MatLab version 4.x'); | ||
52 | end | ||
53 | label = im; | ||
54 | im = evalin('base',im); | ||
55 | end | ||
56 | |||
57 | if (exist('range') ~= 1) | ||
58 | range = 'auto1'; | ||
59 | end | ||
60 | |||
61 | if (exist('nshades') ~= 1) | ||
62 | nshades = size(colormap,1); | ||
63 | end | ||
64 | nshades = max( nshades, 2 ); | ||
65 | |||
66 | if (exist('zoom') ~= 1) | ||
67 | zoom = 'auto'; | ||
68 | end | ||
69 | |||
70 | if (exist('label') ~= 1) | ||
71 | if strcmp(zoom,'full') | ||
72 | label = 0; % no labeling | ||
73 | else | ||
74 | label = 1; % just print grayrange & dims | ||
75 | end | ||
76 | end | ||
77 | |||
78 | %------------------------------------------------------------ | ||
79 | |||
80 | %% Automatic range calculation: | ||
81 | if (strcmp(range,'auto1') | strcmp(range,'auto')) | ||
82 | if isreal(im) | ||
83 | [mn,mx] = range2(im); | ||
84 | else | ||
85 | [mn1,mx1] = range2(real(im)); | ||
86 | [mn2,mx2] = range2(imag(im)); | ||
87 | mn = min(mn1,mn2); | ||
88 | mx = max(mx1,mx2); | ||
89 | end | ||
90 | if any(size(im)==1) | ||
91 | pad = (mx-mn)/12; % MAGIC NUMBER: graph padding | ||
92 | range = [mn-pad, mx+pad]; | ||
93 | else | ||
94 | range = [mn,mx]; | ||
95 | end | ||
96 | |||
97 | elseif strcmp(range,'auto2') | ||
98 | if isreal(im) | ||
99 | stdev = sqrt(var2(im)); | ||
100 | av = mean2(im); | ||
101 | else | ||
102 | stdev = sqrt((var2(real(im)) + var2(imag(im)))/2); | ||
103 | av = (mean2(real(im)) + mean2(imag(im)))/2; | ||
104 | end | ||
105 | range = [av-2*stdev,av+2*stdev]; % MAGIC NUMBER: 2 stdevs | ||
106 | |||
107 | elseif strcmp(range, 'auto3') | ||
108 | percentile = 0.1; % MAGIC NUMBER: 0<p<0.5 | ||
109 | [N,X] = histo(im); | ||
110 | binsz = X(2)-X(1); | ||
111 | N = N+1e-10; % Ensure cumsum will be monotonic for call to interp1 | ||
112 | cumN = [0, cumsum(N)]/sum(N); | ||
113 | cumX = [X(1)-binsz, X] + (binsz/2); | ||
114 | ctrRange = interp1(cumN,cumX, [percentile, 1-percentile]); | ||
115 | range = mean(ctrRange) + (ctrRange-mean(ctrRange))/(1-2*percentile); | ||
116 | |||
117 | elseif isstr(range) | ||
118 | error(sprintf('Bad RANGE argument: %s',range)) | ||
119 | |||
120 | end | ||
121 | |||
122 | if ((range(2) - range(1)) <= eps) | ||
123 | range(1) = range(1) - 0.5; | ||
124 | range(2) = range(2) + 0.5; | ||
125 | end | ||
126 | |||
127 | |||
128 | if isreal(im) | ||
129 | factor=1; | ||
130 | else | ||
131 | factor = 1+sqrt(-1); | ||
132 | end | ||
133 | |||
134 | xlbl_offset = 0; % default value | ||
135 | |||
136 | if (~any(size(im)==1)) | ||
137 | %% MatLab's "image" rounds when mapping to the colormap, so we compute | ||
138 | %% (im-r1)*(nshades-1)/(r2-r1) + 1.5 | ||
139 | mult = ((nshades-1) / (range(2)-range(1))); | ||
140 | d_im = (mult * im) + factor*(1.5 - range(1)*mult); | ||
141 | end | ||
142 | |||
143 | if isreal(im) | ||
144 | if (any(size(im)==1)) | ||
145 | hh = plot( im); | ||
146 | axis([1, prod(size(im)), range]); | ||
147 | else | ||
148 | hh = image( d_im ); | ||
149 | axis('off'); | ||
150 | zoom = pixelAxes(size(d_im),zoom); | ||
151 | end | ||
152 | else | ||
153 | if (any(size(im)==1)) | ||
154 | subplot(2,1,1); | ||
155 | hh = plot(real(im)); | ||
156 | axis([1, prod(size(im)), range]); | ||
157 | subplot(2,1,2); | ||
158 | hh = plot(imag(im)); | ||
159 | axis([1, prod(size(im)), range]); | ||
160 | else | ||
161 | subplot(1,2,1); | ||
162 | hh = image(real(d_im)); | ||
163 | axis('off'); zoom = pixelAxes(size(d_im),zoom); | ||
164 | ax = gca; orig_units = get(ax,'Units'); | ||
165 | set(ax,'Units','points'); | ||
166 | pos1 = get(ax,'Position'); | ||
167 | set(ax,'Units',orig_units); | ||
168 | subplot(1,2,2); | ||
169 | hh = image(imag(d_im)); | ||
170 | axis('off'); zoom = pixelAxes(size(d_im),zoom); | ||
171 | ax = gca; orig_units = get(ax,'Units'); | ||
172 | set(ax,'Units','points'); | ||
173 | pos2 = get(ax,'Position'); | ||
174 | set(ax,'Units',orig_units); | ||
175 | xlbl_offset = (pos1(1)-pos2(1))/2; | ||
176 | end | ||
177 | end | ||
178 | |||
179 | if ~any(size(im)==1) | ||
180 | colormap(gray(nshades)); | ||
181 | end | ||
182 | |||
183 | if ((label ~= 0)) | ||
184 | if isstr(label) | ||
185 | title(label); | ||
186 | h = get(gca,'Title'); | ||
187 | orig_units = get(h,'Units'); | ||
188 | set(h,'Units','points'); | ||
189 | pos = get(h,'Position'); | ||
190 | pos(1:2) = pos(1:2) + [xlbl_offset, -3]; % MAGIC NUMBER: y pixel offset | ||
191 | set(h,'Position',pos); | ||
192 | set(h,'Units',orig_units); | ||
193 | end | ||
194 | |||
195 | if (~any(size(im)==1)) | ||
196 | if (zoom > 1) | ||
197 | zformat = sprintf('* %d',round(zoom)); | ||
198 | else | ||
199 | zformat = sprintf('/ %d',round(1/zoom)); | ||
200 | end | ||
201 | if isreal(im) | ||
202 | format=[' Range: [%.3g, %.3g] \n Dims: [%d, %d] ', zformat]; | ||
203 | else | ||
204 | format=['Range: [%.3g, %.3g] ---- Dims: [%d, %d]', zformat]; | ||
205 | end | ||
206 | xlabel(sprintf(format, range(1), range(2), size(im,1), size(im,2))); | ||
207 | h = get(gca,'Xlabel'); | ||
208 | set(h,'FontSize', 9); % MAGIC NUMBER: font size!!! | ||
209 | |||
210 | orig_units = get(h,'Units'); | ||
211 | set(h,'Units','points'); | ||
212 | pos = get(h,'Position'); | ||
213 | pos(1:2) = pos(1:2) + [xlbl_offset, 10]; % MAGIC NUMBER: y offset in points | ||
214 | set(h,'Position',pos); | ||
215 | set(h,'Units',orig_units); | ||
216 | |||
217 | set(h,'Visible','on'); % axis('image') turned the xlabel off... | ||
218 | end | ||
219 | end | ||
220 | |||
221 | return; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/showLpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/showLpyr.m new file mode 100755 index 0000000..0d85f9d --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/showLpyr.m | |||
@@ -0,0 +1,202 @@ | |||
1 | % RANGE = showLpyr (PYR, INDICES, RANGE, GAP, LEVEL_SCALE_FACTOR) | ||
2 | % | ||
3 | % Display a Laplacian (or Gaussian) pyramid, specified by PYR and | ||
4 | % INDICES (see buildLpyr), in the current figure. | ||
5 | % | ||
6 | % RANGE is a 2-vector specifying the values that map to black and | ||
7 | % white, respectively. These values are scaled by | ||
8 | % LEVEL_SCALE_FACTOR^(lev-1) for bands at each level. Passing a value | ||
9 | % of 'auto1' sets RANGE to the min and max values of MATRIX. 'auto2' | ||
10 | % sets RANGE to 3 standard deviations below and above 0.0. In both of | ||
11 | % these cases, the lowpass band is independently scaled. A value of | ||
12 | % 'indep1' sets the range of each subband independently, as in a call | ||
13 | % to showIm(subband,'auto1'). Similarly, 'indep2' causes each subband | ||
14 | % to be scaled independently as if by showIm(subband,'indep2'). | ||
15 | % The default value for RANGE is 'auto1' for 1D images, and 'auto2' for | ||
16 | % 2D images. | ||
17 | % | ||
18 | % GAP (optional, default=1) specifies the gap in pixels to leave | ||
19 | % between subbands (2D images only). | ||
20 | % | ||
21 | % LEVEL_SCALE_FACTOR indicates the relative scaling between pyramid | ||
22 | % levels. This should be set to the sum of the kernel taps of the | ||
23 | % lowpass filter used to construct the pyramid (default assumes | ||
24 | % L2-normalalized filters, using a value of 2 for 2D images, sqrt(2) for | ||
25 | % 1D images). | ||
26 | |||
27 | % Eero Simoncelli, 2/97. | ||
28 | |||
29 | function [range] = showLpyr(pyr, pind, range, gap, scale); | ||
30 | |||
31 | % Determine 1D or 2D pyramid: | ||
32 | if ((pind(1,1) == 1) | (pind(1,2) ==1)) | ||
33 | oned = 1; | ||
34 | else | ||
35 | oned = 0; | ||
36 | end | ||
37 | |||
38 | %------------------------------------------------------------ | ||
39 | %% OPTIONAL ARGS: | ||
40 | |||
41 | if (exist('range') ~= 1) | ||
42 | if (oned==1) | ||
43 | range = 'auto1'; | ||
44 | else | ||
45 | range = 'auto2'; | ||
46 | end | ||
47 | end | ||
48 | |||
49 | if (exist('gap') ~= 1) | ||
50 | gap = 1; | ||
51 | end | ||
52 | |||
53 | if (exist('scale') ~= 1) | ||
54 | if (oned == 1) | ||
55 | scale = sqrt(2); | ||
56 | else | ||
57 | scale = 2; | ||
58 | end | ||
59 | end | ||
60 | |||
61 | %------------------------------------------------------------ | ||
62 | |||
63 | nind = size(pind,1); | ||
64 | |||
65 | %% Auto range calculations: | ||
66 | if strcmp(range,'auto1') | ||
67 | range = zeros(nind,1); | ||
68 | mn = 0.0; mx = 0.0; | ||
69 | for bnum = 1:(nind-1) | ||
70 | band = pyrBand(pyr,pind,bnum)/(scale^(bnum-1)); | ||
71 | range(bnum) = scale^(bnum-1); | ||
72 | [bmn,bmx] = range2(band); | ||
73 | mn = min(mn, bmn); mx = max(mx, bmx); | ||
74 | end | ||
75 | if (oned == 1) | ||
76 | pad = (mx-mn)/12; % *** MAGIC NUMBER!! | ||
77 | mn = mn-pad; mx = mx+pad; | ||
78 | end | ||
79 | range = range * [mn mx]; % outer product | ||
80 | band = pyrLow(pyr,pind); | ||
81 | [mn,mx] = range2(band); | ||
82 | if (oned == 1) | ||
83 | pad = (mx-mn)/12; % *** MAGIC NUMBER!! | ||
84 | mn = mn-pad; mx = mx+pad; | ||
85 | end | ||
86 | range(nind,:) = [mn, mx]; | ||
87 | |||
88 | elseif strcmp(range,'indep1') | ||
89 | range = zeros(nind,2); | ||
90 | for bnum = 1:nind | ||
91 | band = pyrBand(pyr,pind,bnum); | ||
92 | [mn,mx] = range2(band); | ||
93 | if (oned == 1) | ||
94 | pad = (mx-mn)/12; % *** MAGIC NUMBER!! | ||
95 | mn = mn-pad; mx = mx+pad; | ||
96 | end | ||
97 | range(bnum,:) = [mn mx]; | ||
98 | end | ||
99 | |||
100 | elseif strcmp(range,'auto2') | ||
101 | range = zeros(nind,1); | ||
102 | sqsum = 0; numpixels = 0; | ||
103 | for bnum = 1:(nind-1) | ||
104 | band = pyrBand(pyr,pind,bnum)/(scale^(bnum-1)); | ||
105 | sqsum = sqsum + sum(sum(band.^2)); | ||
106 | numpixels = numpixels + prod(size(band)); | ||
107 | range(bnum) = scale^(bnum-1); | ||
108 | end | ||
109 | stdev = sqrt(sqsum/(numpixels-1)); | ||
110 | range = range * [ -3*stdev 3*stdev ]; % outer product | ||
111 | band = pyrLow(pyr,pind); | ||
112 | av = mean2(band); stdev = sqrt(var2(band)); | ||
113 | range(nind,:) = [av-2*stdev,av+2*stdev]; | ||
114 | |||
115 | elseif strcmp(range,'indep2') | ||
116 | range = zeros(nind,2); | ||
117 | for bnum = 1:(nind-1) | ||
118 | band = pyrBand(pyr,pind,bnum); | ||
119 | stdev = sqrt(var2(band)); | ||
120 | range(bnum,:) = [ -3*stdev 3*stdev ]; | ||
121 | end | ||
122 | band = pyrLow(pyr,pind); | ||
123 | av = mean2(band); stdev = sqrt(var2(band)); | ||
124 | range(nind,:) = [av-2*stdev,av+2*stdev]; | ||
125 | |||
126 | elseif isstr(range) | ||
127 | error(sprintf('Bad RANGE argument: %s',range)) | ||
128 | |||
129 | elseif ((size(range,1) == 1) & (size(range,2) == 2)) | ||
130 | scales = scale.^[0:nind-1]; | ||
131 | range = scales(:) * range; % outer product | ||
132 | band = pyrLow(pyr,pind); | ||
133 | range(nind,:) = range(nind,:) + mean2(band) - mean(range(nind,:)); | ||
134 | |||
135 | end | ||
136 | |||
137 | %% Clear Figure | ||
138 | clf; | ||
139 | |||
140 | if (oned == 1) | ||
141 | |||
142 | %%%%% 1D signal: | ||
143 | for bnum=1:nind | ||
144 | band = pyrBand(pyr,pind,bnum); | ||
145 | subplot(nind,1,nind-bnum+1); | ||
146 | plot(band); | ||
147 | axis([1, prod(size(band)), range(bnum,:)]); | ||
148 | end | ||
149 | |||
150 | else | ||
151 | |||
152 | %%%%% 2D signal: | ||
153 | colormap(gray); | ||
154 | cmap = get(gcf,'Colormap'); | ||
155 | nshades = size(cmap,1); | ||
156 | |||
157 | % Find background color index: | ||
158 | clr = get(gcf,'Color'); | ||
159 | bg = 1; | ||
160 | dist = norm(cmap(bg,:)-clr); | ||
161 | for n = 1:nshades | ||
162 | ndist = norm(cmap(n,:)-clr); | ||
163 | if (ndist < dist) | ||
164 | dist = ndist; | ||
165 | bg = n; | ||
166 | end | ||
167 | end | ||
168 | |||
169 | %% Compute positions of subbands: | ||
170 | llpos = ones(nind,2); | ||
171 | dir = [-1 -1]; | ||
172 | ctr = [pind(1,1)+1+gap 1]; | ||
173 | sz = [0 0]; | ||
174 | for bnum = 1:nind | ||
175 | prevsz = sz; | ||
176 | sz = pind(bnum,:); | ||
177 | |||
178 | % Determine center position of new band: | ||
179 | ctr = ctr + gap*dir/2 + dir.* floor((prevsz+(dir>0))/2); | ||
180 | dir = dir * [0 -1; 1 0]; % ccw rotation | ||
181 | ctr = ctr + gap*dir/2 + dir.* floor((sz+(dir<0))/2); | ||
182 | llpos(bnum,:) = ctr - floor(sz./2); | ||
183 | end | ||
184 | |||
185 | %% Make position list positive, and allocate appropriate image: | ||
186 | llpos = llpos - ones(nind,1)*min(llpos) + 1; | ||
187 | urpos = llpos + pind - 1; | ||
188 | d_im = bg + zeros(max(urpos)); | ||
189 | |||
190 | %% Paste bands into image, (im-r1)*(nshades-1)/(r2-r1) + 1.5 | ||
191 | for bnum=1:nind | ||
192 | mult = (nshades-1) / (range(bnum,2)-range(bnum,1)); | ||
193 | d_im(llpos(bnum,1):urpos(bnum,1), llpos(bnum,2):urpos(bnum,2)) = ... | ||
194 | mult*pyrBand(pyr,pind,bnum) + (1.5-mult*range(bnum,1)); | ||
195 | end | ||
196 | |||
197 | hh = image(d_im); | ||
198 | axis('off'); | ||
199 | pixelAxes(size(d_im),'full'); | ||
200 | set(hh,'UserData',range); | ||
201 | |||
202 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/showSpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/showSpyr.m new file mode 100755 index 0000000..da85715 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/showSpyr.m | |||
@@ -0,0 +1,188 @@ | |||
1 | % RANGE = showSpyr (PYR, INDICES, RANGE, GAP, LEVEL_SCALE_FACTOR) | ||
2 | % | ||
3 | % Display a steerable pyramid, specified by PYR and INDICES | ||
4 | % (see buildSpyr), in the current figure. The highpass band is not shown. | ||
5 | % | ||
6 | % RANGE is a 2-vector specifying the values that map to black and | ||
7 | % white, respectively. These values are scaled by | ||
8 | % LEVEL_SCALE_FACTOR^(lev-1) for bands at each level. Passing a value | ||
9 | % of 'auto1' sets RANGE to the min and max values of MATRIX. 'auto2' | ||
10 | % sets RANGE to 3 standard deviations below and above 0.0. In both of | ||
11 | % these cases, the lowpass band is independently scaled. A value of | ||
12 | % 'indep1' sets the range of each subband independently, as in a call | ||
13 | % to showIm(subband,'auto1'). Similarly, 'indep2' causes each subband | ||
14 | % to be scaled independently as if by showIm(subband,'indep2'). | ||
15 | % The default value for RANGE is 'auto2'. | ||
16 | % | ||
17 | % GAP (optional, default=1) specifies the gap in pixels to leave | ||
18 | % between subbands. | ||
19 | % | ||
20 | % LEVEL_SCALE_FACTOR indicates the relative scaling between pyramid | ||
21 | % levels. This should be set to the sum of the kernel taps of the | ||
22 | % lowpass filter used to construct the pyramid (default is 2, which is | ||
23 | % correct for L2-normalized filters. | ||
24 | |||
25 | % Eero Simoncelli, 2/97. | ||
26 | |||
27 | function [range] = showSpyr(pyr, pind, range, gap, scale); | ||
28 | |||
29 | nbands = spyrNumBands(pind); | ||
30 | |||
31 | %------------------------------------------------------------ | ||
32 | %% OPTIONAL ARGS: | ||
33 | |||
34 | if (exist('range') ~= 1) | ||
35 | range = 'auto2'; | ||
36 | end | ||
37 | |||
38 | if (exist('gap') ~= 1) | ||
39 | gap = 1; | ||
40 | end | ||
41 | |||
42 | if (exist('scale') ~= 1) | ||
43 | scale = 2; | ||
44 | end | ||
45 | |||
46 | %------------------------------------------------------------ | ||
47 | |||
48 | ht = spyrHt(pind); | ||
49 | nind = size(pind,1); | ||
50 | |||
51 | %% Auto range calculations: | ||
52 | if strcmp(range,'auto1') | ||
53 | range = ones(nind,1); | ||
54 | band = spyrHigh(pyr,pind); | ||
55 | [mn,mx] = range2(band); | ||
56 | for lnum = 1:ht | ||
57 | for bnum = 1:nbands | ||
58 | band = spyrBand(pyr,pind,lnum,bnum)/(scale^(lnum-1)); | ||
59 | range((lnum-1)*nbands+bnum+1) = scale^(lnum-1); | ||
60 | [bmn,bmx] = range2(band); | ||
61 | mn = min(mn, bmn); | ||
62 | mx = max(mx, bmx); | ||
63 | end | ||
64 | end | ||
65 | range = range * [mn mx]; % outer product | ||
66 | band = pyrLow(pyr,pind); | ||
67 | [mn,mx] = range2(band); | ||
68 | range(nind,:) = [mn, mx]; | ||
69 | |||
70 | elseif strcmp(range,'indep1') | ||
71 | range = zeros(nind,2); | ||
72 | for bnum = 1:nind | ||
73 | band = pyrBand(pyr,pind,bnum); | ||
74 | [mn,mx] = range2(band); | ||
75 | range(bnum,:) = [mn mx]; | ||
76 | end | ||
77 | |||
78 | elseif strcmp(range,'auto2') | ||
79 | range = ones(nind,1); | ||
80 | band = spyrHigh(pyr,pind); | ||
81 | sqsum = sum(sum(band.^2)); numpixels = prod(size(band)); | ||
82 | for lnum = 1:ht | ||
83 | for bnum = 1:nbands | ||
84 | band = spyrBand(pyr,pind,lnum,bnum)/(scale^(lnum-1)); | ||
85 | sqsum = sqsum + sum(sum(band.^2)); | ||
86 | numpixels = numpixels + prod(size(band)); | ||
87 | range((lnum-1)*nbands+bnum+1) = scale^(lnum-1); | ||
88 | end | ||
89 | end | ||
90 | stdev = sqrt(sqsum/(numpixels-1)); | ||
91 | range = range * [ -3*stdev 3*stdev ]; % outer product | ||
92 | band = pyrLow(pyr,pind); | ||
93 | av = mean2(band); stdev = sqrt(var2(band)); | ||
94 | range(nind,:) = [av-2*stdev,av+2*stdev]; | ||
95 | |||
96 | elseif strcmp(range,'indep2') | ||
97 | range = zeros(nind,2); | ||
98 | for bnum = 1:(nind-1) | ||
99 | band = pyrBand(pyr,pind,bnum); | ||
100 | stdev = sqrt(var2(band)); | ||
101 | range(bnum,:) = [ -3*stdev 3*stdev ]; | ||
102 | end | ||
103 | band = pyrLow(pyr,pind); | ||
104 | av = mean2(band); stdev = sqrt(var2(band)); | ||
105 | range(nind,:) = [av-2*stdev,av+2*stdev]; | ||
106 | |||
107 | elseif isstr(range) | ||
108 | error(sprintf('Bad RANGE argument: %s',range)) | ||
109 | |||
110 | elseif ((size(range,1) == 1) & (size(range,2) == 2)) | ||
111 | scales = scale.^[0:(ht-1)]; | ||
112 | scales = ones(nbands,1) * scales; %outer product | ||
113 | scales = [1; scales(:); scale^ht]; %tack on highpass and lowpass | ||
114 | range = scales * range; % outer product | ||
115 | band = pyrLow(pyr,pind); | ||
116 | range(nind,:) = range(nind,:) + mean2(band) - mean(range(nind,:)); | ||
117 | |||
118 | end | ||
119 | |||
120 | % CLEAR FIGURE: | ||
121 | clf; | ||
122 | |||
123 | colormap(gray); | ||
124 | cmap = get(gcf,'Colormap'); | ||
125 | nshades = size(cmap,1); | ||
126 | |||
127 | % Find background color index: | ||
128 | clr = get(gcf,'Color'); | ||
129 | bg = 1; | ||
130 | dist = norm(cmap(bg,:)-clr); | ||
131 | for n = 1:nshades | ||
132 | ndist = norm(cmap(n,:)-clr); | ||
133 | if (ndist < dist) | ||
134 | dist = ndist; | ||
135 | bg = n; | ||
136 | end | ||
137 | end | ||
138 | |||
139 | %% Compute positions of subbands: | ||
140 | llpos = ones(nind,2); | ||
141 | |||
142 | if (nbands == 2) | ||
143 | ncols = 1; nrows = 2; | ||
144 | else | ||
145 | ncols = ceil((nbands+1)/2); nrows = ceil(nbands/2); | ||
146 | end | ||
147 | relpos = [ (1-nrows):0, zeros(1,(ncols-1)); ... | ||
148 | zeros(1,nrows), -1:-1:(1-ncols) ]'; | ||
149 | if (nbands > 1) | ||
150 | mvpos = [-1 -1]; | ||
151 | else | ||
152 | mvpos = [0 -1]; | ||
153 | end | ||
154 | basepos = [0 0]; | ||
155 | |||
156 | for lnum = 1:ht | ||
157 | ind1 = (lnum-1)*nbands + 2; | ||
158 | sz = pind(ind1,:)+gap; | ||
159 | basepos = basepos + mvpos .* sz; | ||
160 | if (nbands < 5) % to align edges... | ||
161 | sz = sz + gap*(ht-lnum+1); | ||
162 | end | ||
163 | llpos(ind1:ind1+nbands-1,:) = relpos * diag(sz) + ones(nbands,1)*basepos; | ||
164 | end | ||
165 | |||
166 | % lowpass band | ||
167 | sz = pind(nind-1,:)+gap; | ||
168 | basepos = basepos + mvpos .* sz; | ||
169 | llpos(nind,:) = basepos; | ||
170 | |||
171 | %% Make position list positive, and allocate appropriate image: | ||
172 | llpos = llpos - ones(nind,1)*min(llpos) + 1; | ||
173 | llpos(1,:) = [1 1]; | ||
174 | urpos = llpos + pind - 1; | ||
175 | d_im = bg + zeros(max(urpos)); | ||
176 | |||
177 | %% Paste bands into image, (im-r1)*(nshades-1)/(r2-r1) + 1.5 | ||
178 | for bnum=2:nind | ||
179 | mult = (nshades-1) / (range(bnum,2)-range(bnum,1)); | ||
180 | d_im(llpos(bnum,1):urpos(bnum,1), llpos(bnum,2):urpos(bnum,2)) = ... | ||
181 | mult*pyrBand(pyr,pind,bnum) + (1.5-mult*range(bnum,1)); | ||
182 | end | ||
183 | |||
184 | hh = image(d_im); | ||
185 | axis('off'); | ||
186 | pixelAxes(size(d_im),'full'); | ||
187 | set(hh,'UserData',range); | ||
188 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/showWpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/showWpyr.m new file mode 100755 index 0000000..510e395 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/showWpyr.m | |||
@@ -0,0 +1,204 @@ | |||
1 | % RANGE = showWpyr (PYR, INDICES, RANGE, GAP, LEVEL_SCALE_FACTOR) | ||
2 | % | ||
3 | % Display a separable QMF/wavelet pyramid, specified by PYR and INDICES | ||
4 | % (see buildWpyr), in the current figure. | ||
5 | % | ||
6 | % RANGE is a 2-vector specifying the values that map to black and | ||
7 | % white, respectively. These values are scaled by | ||
8 | % LEVEL_SCALE_FACTOR^(lev-1) for bands at each level. Passing a value | ||
9 | % of 'auto1' sets RANGE to the min and max values of MATRIX. 'auto2' | ||
10 | % sets RANGE to 3 standard deviations below and above 0.0. In both of | ||
11 | % these cases, the lowpass band is independently scaled. A value of | ||
12 | % 'indep1' sets the range of each subband independently, as in a call | ||
13 | % to showIm(subband,'auto1'). Similarly, 'indep2' causes each subband | ||
14 | % to be scaled independently as if by showIm(subband,'indep2'). | ||
15 | % The default value for RANGE is 'auto1' for 1D images, and 'auto2' for | ||
16 | % 2D images. | ||
17 | % | ||
18 | % GAP (optional, default=1) specifies the gap in pixels to leave | ||
19 | % between subbands (2D images only). | ||
20 | % | ||
21 | % LEVEL_SCALE_FACTOR indicates the relative scaling between pyramid | ||
22 | % levels. This should be set to the sum of the kernel taps of the | ||
23 | % lowpass filter used to construct the pyramid (default assumes | ||
24 | % L2-normalized filters, using a value of 2 for 2D images, sqrt(2) for | ||
25 | % 1D images). | ||
26 | |||
27 | % Eero Simoncelli, 2/97. | ||
28 | |||
29 | function [range] = showWpyr(pyr, pind, range, gap, scale); | ||
30 | |||
31 | % Determine 1D or 2D pyramid: | ||
32 | if ((pind(1,1) == 1) | (pind(1,2) ==1)) | ||
33 | nbands = 1; | ||
34 | else | ||
35 | nbands = 3; | ||
36 | end | ||
37 | |||
38 | %------------------------------------------------------------ | ||
39 | %% OPTIONAL ARGS: | ||
40 | |||
41 | if (exist('range') ~= 1) | ||
42 | if (nbands==1) | ||
43 | range = 'auto1'; | ||
44 | else | ||
45 | range = 'auto2'; | ||
46 | end | ||
47 | end | ||
48 | |||
49 | if (exist('gap') ~= 1) | ||
50 | gap = 1; | ||
51 | end | ||
52 | |||
53 | if (exist('scale') ~= 1) | ||
54 | if (nbands == 1) | ||
55 | scale = sqrt(2); | ||
56 | else | ||
57 | scale = 2; | ||
58 | end | ||
59 | end | ||
60 | |||
61 | %------------------------------------------------------------ | ||
62 | |||
63 | ht = wpyrHt(pind); | ||
64 | nind = size(pind,1); | ||
65 | |||
66 | %% Auto range calculations: | ||
67 | if strcmp(range,'auto1') | ||
68 | range = zeros(nind,1); | ||
69 | mn = 0.0; mx = 0.0; | ||
70 | for lnum = 1:ht | ||
71 | for bnum = 1:nbands | ||
72 | band = wpyrBand(pyr,pind,lnum,bnum)/(scale^(lnum-1)); | ||
73 | range((lnum-1)*nbands+bnum) = scale^(lnum-1); | ||
74 | [bmn,bmx] = range2(band); | ||
75 | mn = min(mn, bmn); mx = max(mx, bmx); | ||
76 | end | ||
77 | end | ||
78 | if (nbands == 1) | ||
79 | pad = (mx-mn)/12; % *** MAGIC NUMBER!! | ||
80 | mn = mn-pad; mx = mx+pad; | ||
81 | end | ||
82 | range = range * [mn mx]; % outer product | ||
83 | band = pyrLow(pyr,pind); | ||
84 | [mn,mx] = range2(band); | ||
85 | if (nbands == 1) | ||
86 | pad = (mx-mn)/12; % *** MAGIC NUMBER!! | ||
87 | mn = mn-pad; mx = mx+pad; | ||
88 | end | ||
89 | range(nind,:) = [mn, mx]; | ||
90 | |||
91 | elseif strcmp(range,'indep1') | ||
92 | range = zeros(nind,2); | ||
93 | for bnum = 1:nind | ||
94 | band = pyrBand(pyr,pind,bnum); | ||
95 | [mn,mx] = range2(band); | ||
96 | if (nbands == 1) | ||
97 | pad = (mx-mn)/12; % *** MAGIC NUMBER!! | ||
98 | mn = mn-pad; mx = mx+pad; | ||
99 | end | ||
100 | range(bnum,:) = [mn mx]; | ||
101 | end | ||
102 | |||
103 | elseif strcmp(range,'auto2') | ||
104 | range = zeros(nind,1); | ||
105 | sqsum = 0; numpixels = 0; | ||
106 | for lnum = 1:ht | ||
107 | for bnum = 1:nbands | ||
108 | band = wpyrBand(pyr,pind,lnum,bnum)/(scale^(lnum-1)); | ||
109 | sqsum = sqsum + sum(sum(band.^2)); | ||
110 | numpixels = numpixels + prod(size(band)); | ||
111 | range((lnum-1)*nbands+bnum) = scale^(lnum-1); | ||
112 | end | ||
113 | end | ||
114 | stdev = sqrt(sqsum/(numpixels-1)); | ||
115 | range = range * [ -3*stdev 3*stdev ]; % outer product | ||
116 | band = pyrLow(pyr,pind); | ||
117 | av = mean2(band); stdev = sqrt(var2(band)); | ||
118 | range(nind,:) = [av-2*stdev,av+2*stdev]; | ||
119 | |||
120 | elseif strcmp(range,'indep2') | ||
121 | range = zeros(nind,2); | ||
122 | for bnum = 1:(nind-1) | ||
123 | band = pyrBand(pyr,pind,bnum); | ||
124 | stdev = sqrt(var2(band)); | ||
125 | range(bnum,:) = [ -3*stdev 3*stdev ]; | ||
126 | end | ||
127 | band = pyrLow(pyr,pind); | ||
128 | av = mean2(band); stdev = sqrt(var2(band)); | ||
129 | range(nind,:) = [av-2*stdev,av+2*stdev]; | ||
130 | |||
131 | elseif isstr(range) | ||
132 | error(sprintf('Bad RANGE argument: %s',range)) | ||
133 | |||
134 | elseif ((size(range,1) == 1) & (size(range,2) == 2)) | ||
135 | scales = scale.^[0:ht]; | ||
136 | if (nbands ~= 1) | ||
137 | scales = [scales; scales; scales]; | ||
138 | end | ||
139 | range = scales(:) * range; % outer product | ||
140 | band = pyrLow(pyr,pind); | ||
141 | range(nind,:) = range(nind,:) + mean2(band) - mean(range(nind,:)); | ||
142 | |||
143 | end | ||
144 | |||
145 | % CLEAR FIGURE: | ||
146 | clf; | ||
147 | |||
148 | if (nbands == 1) | ||
149 | |||
150 | %%%%% 1D signal: | ||
151 | for bnum=1:nind | ||
152 | band = pyrBand(pyr,pind,bnum); | ||
153 | subplot(nind,1,nind-bnum+1); | ||
154 | plot(band); | ||
155 | axis([1, prod(size(band)), range(bnum,:)]); | ||
156 | end | ||
157 | |||
158 | else | ||
159 | |||
160 | %%%%% 2D signal: | ||
161 | colormap(gray); | ||
162 | cmap = get(gcf,'Colormap'); | ||
163 | nshades = size(cmap,1); | ||
164 | |||
165 | % Find background color index: | ||
166 | clr = get(gcf,'Color'); | ||
167 | bg = 1; | ||
168 | dist = norm(cmap(bg,:)-clr); | ||
169 | for n = 1:nshades | ||
170 | ndist = norm(cmap(n,:)-clr); | ||
171 | if (ndist < dist) | ||
172 | dist = ndist; | ||
173 | bg = n; | ||
174 | end | ||
175 | end | ||
176 | |||
177 | %% Compute positions of subbands: | ||
178 | llpos = ones(nind,2); | ||
179 | for lnum = 1:ht | ||
180 | ind1 = nbands*(lnum-1) + 1; | ||
181 | xpos = pind(ind1,2) + 1 + gap*(ht-lnum+1); | ||
182 | ypos = pind(ind1+1,1) + 1 + gap*(ht-lnum+1); | ||
183 | llpos(ind1:ind1+2,:) = [ypos 1; 1 xpos; ypos xpos]; | ||
184 | end | ||
185 | llpos(nind,:) = [1 1]; %lowpass | ||
186 | |||
187 | %% Make position list positive, and allocate appropriate image: | ||
188 | llpos = llpos - ones(nind,1)*min(llpos) + 1; | ||
189 | urpos = llpos + pind - 1; | ||
190 | d_im = bg + zeros(max(urpos)); | ||
191 | |||
192 | %% Paste bands into image, (im-r1)*(nshades-1)/(r2-r1) + 1.5 | ||
193 | for bnum=1:nind | ||
194 | mult = (nshades-1) / (range(bnum,2)-range(bnum,1)); | ||
195 | d_im(llpos(bnum,1):urpos(bnum,1), llpos(bnum,2):urpos(bnum,2)) = ... | ||
196 | mult*pyrBand(pyr,pind,bnum) + (1.5-mult*range(bnum,1)); | ||
197 | end | ||
198 | |||
199 | hh = image(d_im); | ||
200 | axis('off'); | ||
201 | pixelAxes(size(d_im),'full'); | ||
202 | set(hh,'UserData',range); | ||
203 | |||
204 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/shrink.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/shrink.m new file mode 100755 index 0000000..7af0151 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/shrink.m | |||
@@ -0,0 +1,25 @@ | |||
1 | function ts=shrink(t,f) | ||
2 | |||
3 | % It shrinks an image in a factor f | ||
4 | % in each dimension. | ||
5 | % ts = shrink(t,f) | ||
6 | % ts may also be complex. | ||
7 | % See also: expand.m, blurDn.m | ||
8 | % JPM, April 95, Instituto de Optica, CSIC, Madrid. | ||
9 | |||
10 | [my,mx]=size(t); | ||
11 | T=fftshift(fft2(t))/f^2; | ||
12 | Ts=zeros(my/f,mx/f); | ||
13 | y1=my/2+2-my/(2*f); | ||
14 | y2=my/2+my/(2*f); | ||
15 | x1=mx/2+2-mx/(2*f); | ||
16 | x2=mx/2+mx/(2*f); | ||
17 | Ts(2:my/f,2:mx/f)=T(y1:y2,x1:x2); | ||
18 | Ts(1,2:mx/f)=(T(y1-1,x1:x2)+T(y2+1,x1:x2))/2; | ||
19 | Ts(2:my/f,1)=(T(y1:y2,x1-1)+T(y1:y2,x2+1))/2; | ||
20 | Ts(1,1)=(T(y1-1,x1-1)+T(y1-1,x2+1)+T(y2+1,x1-1)+T(y2+1,x2+1))/4; | ||
21 | Ts=fftshift(Ts); | ||
22 | ts=ifft2(Ts); | ||
23 | if all(imag(t)==0), | ||
24 | ts = real(ts); | ||
25 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/skew2.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/skew2.m new file mode 100755 index 0000000..623d6ca --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/skew2.m | |||
@@ -0,0 +1,21 @@ | |||
1 | % S = SKEW2(MTX,MEAN,VAR) | ||
2 | % | ||
3 | % Sample skew (third moment divided by variance^3/2) of a matrix. | ||
4 | % MEAN (optional) and VAR (optional) make the computation faster. | ||
5 | |||
6 | function res = skew2(mtx, mn, v) | ||
7 | |||
8 | if (exist('mn') ~= 1) | ||
9 | mn = mean2(mtx); | ||
10 | end | ||
11 | |||
12 | if (exist('v') ~= 1) | ||
13 | v = var2(mtx,mn); | ||
14 | end | ||
15 | |||
16 | if (isreal(mtx)) | ||
17 | res = mean(mean((mtx-mn).^3)) / (v^(3/2)); | ||
18 | else | ||
19 | res = mean(mean(real(mtx-mn).^3)) / (real(v)^(3/2)) + ... | ||
20 | i * mean(mean(imag(mtx-mn).^3)) / (imag(v)^(3/2)); | ||
21 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/snr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/snr.m new file mode 100755 index 0000000..3945d90 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/snr.m | |||
@@ -0,0 +1,10 @@ | |||
1 | function X=SNR(s,n); | ||
2 | |||
3 | % Compute the signal-to-noise ratio in dB | ||
4 | % X=SNR(signal,noise); | ||
5 | % (it does not subtract the means). | ||
6 | |||
7 | es=sum(sum(abs(s).^2))+0.0000001; | ||
8 | en=sum(sum(abs(n).^2))+0.0000001; | ||
9 | X=10*log10(es/en); | ||
10 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/sp0Filters.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/sp0Filters.m new file mode 100755 index 0000000..6b25e36 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/sp0Filters.m | |||
@@ -0,0 +1,72 @@ | |||
1 | % Steerable pyramid filters. Transform described in: | ||
2 | % | ||
3 | % @INPROCEEDINGS{Simoncelli95b, | ||
4 | % TITLE = "The Steerable Pyramid: A Flexible Architecture for | ||
5 | % Multi-Scale Derivative Computation", | ||
6 | % AUTHOR = "E P Simoncelli and W T Freeman", | ||
7 | % BOOKTITLE = "Second Int'l Conf on Image Processing", | ||
8 | % ADDRESS = "Washington, DC", MONTH = "October", YEAR = 1995 } | ||
9 | % | ||
10 | % Filter kernel design described in: | ||
11 | % | ||
12 | %@INPROCEEDINGS{Karasaridis96, | ||
13 | % TITLE = "A Filter Design Technique for | ||
14 | % Steerable Pyramid Image Transforms", | ||
15 | % AUTHOR = "A Karasaridis and E P Simoncelli", | ||
16 | % BOOKTITLE = "ICASSP", ADDRESS = "Atlanta, GA", | ||
17 | % MONTH = "May", YEAR = 1996 } | ||
18 | |||
19 | % Eero Simoncelli, 6/96. | ||
20 | |||
21 | function [lo0filt,hi0filt,lofilt,bfilts,mtx,harmonics] = sp0Filters(); | ||
22 | |||
23 | harmonics = [ 0 ]; | ||
24 | |||
25 | lo0filt = [ ... | ||
26 | -4.514000e-04 -1.137100e-04 -3.725800e-04 -3.743860e-03 -3.725800e-04 -1.137100e-04 -4.514000e-04 | ||
27 | -1.137100e-04 -6.119520e-03 -1.344160e-02 -7.563200e-03 -1.344160e-02 -6.119520e-03 -1.137100e-04 | ||
28 | -3.725800e-04 -1.344160e-02 6.441488e-02 1.524935e-01 6.441488e-02 -1.344160e-02 -3.725800e-04 | ||
29 | -3.743860e-03 -7.563200e-03 1.524935e-01 3.153017e-01 1.524935e-01 -7.563200e-03 -3.743860e-03 | ||
30 | -3.725800e-04 -1.344160e-02 6.441488e-02 1.524935e-01 6.441488e-02 -1.344160e-02 -3.725800e-04 | ||
31 | -1.137100e-04 -6.119520e-03 -1.344160e-02 -7.563200e-03 -1.344160e-02 -6.119520e-03 -1.137100e-04 | ||
32 | -4.514000e-04 -1.137100e-04 -3.725800e-04 -3.743860e-03 -3.725800e-04 -1.137100e-04 -4.514000e-04]; | ||
33 | |||
34 | lofilt = [ ... | ||
35 | -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 | ||
36 | -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 | ||
37 | -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 | ||
38 | 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 | ||
39 | -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 | ||
40 | -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 | ||
41 | -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 | ||
42 | -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 | ||
43 | -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 | ||
44 | 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 | ||
45 | -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 | ||
46 | -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 | ||
47 | -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]; | ||
48 | |||
49 | mtx = [ 1.000000 ]; | ||
50 | |||
51 | hi0filt = [... | ||
52 | 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 | ||
53 | -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 | ||
54 | -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 | ||
55 | -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 | ||
56 | -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 | ||
57 | -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 | ||
58 | -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 | ||
59 | -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 | ||
60 | 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 ]; | ||
61 | |||
62 | bfilts = [ ... | ||
63 | -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 ... | ||
64 | -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 ... | ||
65 | -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 ... | ||
66 | -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 ... | ||
67 | -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 ... | ||
68 | -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 ... | ||
69 | -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 ... | ||
70 | -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 ... | ||
71 | -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 ]'; | ||
72 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/sp1Filters.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/sp1Filters.m new file mode 100755 index 0000000..215e651 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/sp1Filters.m | |||
@@ -0,0 +1,91 @@ | |||
1 | % Steerable pyramid filters. Transform described in: | ||
2 | % | ||
3 | % @INPROCEEDINGS{Simoncelli95b, | ||
4 | % TITLE = "The Steerable Pyramid: A Flexible Architecture for | ||
5 | % Multi-Scale Derivative Computation", | ||
6 | % AUTHOR = "E P Simoncelli and W T Freeman", | ||
7 | % BOOKTITLE = "Second Int'l Conf on Image Processing", | ||
8 | % ADDRESS = "Washington, DC", MONTH = "October", YEAR = 1995 } | ||
9 | % | ||
10 | % Filter kernel design described in: | ||
11 | % | ||
12 | %@INPROCEEDINGS{Karasaridis96, | ||
13 | % TITLE = "A Filter Design Technique for | ||
14 | % Steerable Pyramid Image Transforms", | ||
15 | % AUTHOR = "A Karasaridis and E P Simoncelli", | ||
16 | % BOOKTITLE = "ICASSP", ADDRESS = "Atlanta, GA", | ||
17 | % MONTH = "May", YEAR = 1996 } | ||
18 | |||
19 | % Eero Simoncelli, 6/96. | ||
20 | |||
21 | function [lo0filt,hi0filt,lofilt,bfilts,mtx,harmonics] = sp1Filters(); | ||
22 | |||
23 | harmonics = [ 1 ]; | ||
24 | |||
25 | %% filters only contain first harmonic. | ||
26 | mtx = eye(2); | ||
27 | |||
28 | lo0filt = [ ... | ||
29 | -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 | ||
30 | -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 | ||
31 | -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 | ||
32 | -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 | ||
33 | 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 | ||
34 | -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 | ||
35 | -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 | ||
36 | -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 | ||
37 | -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 | ||
38 | ]; | ||
39 | |||
40 | lofilt = [ ... | ||
41 | -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 ; ... | ||
42 | 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 ; ... | ||
43 | -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 ; ... | ||
44 | -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 ; ... | ||
45 | -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 ; ... | ||
46 | -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 ; ... | ||
47 | -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 ; ... | ||
48 | -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 ; ... | ||
49 | 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 ; ... | ||
50 | -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 ; ... | ||
51 | -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 ; ... | ||
52 | -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 ; ... | ||
53 | -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 ; ... | ||
54 | -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 ; ... | ||
55 | -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 ; ... | ||
56 | 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 ; ... | ||
57 | -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 ]; | ||
58 | |||
59 | hi0filt = [... | ||
60 | -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 ; ... | ||
61 | -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 ; ... | ||
62 | -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 ; ... | ||
63 | -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 ; ... | ||
64 | -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 ; ... | ||
65 | -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 ; ... | ||
66 | -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 ; ... | ||
67 | -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 ; ... | ||
68 | -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 ]; | ||
69 | |||
70 | bfilts = -[ ... | ||
71 | 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 ... | ||
72 | -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 ... | ||
73 | -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 ... | ||
74 | -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 ... | ||
75 | 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 ... | ||
76 | 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 ... | ||
77 | 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 ... | ||
78 | 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 ... | ||
79 | -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; ... | ||
80 | ... | ||
81 | -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 ... | ||
82 | 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 ... | ||
83 | 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 ... | ||
84 | 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 ... | ||
85 | 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 ... | ||
86 | 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 ... | ||
87 | 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 ... | ||
88 | 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 ... | ||
89 | -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 ... | ||
90 | ]'; | ||
91 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/sp3Filters.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/sp3Filters.m new file mode 100755 index 0000000..c9cfaaf --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/sp3Filters.m | |||
@@ -0,0 +1,121 @@ | |||
1 | % Steerable pyramid filters. Transform described in: | ||
2 | % | ||
3 | % @INPROCEEDINGS{Simoncelli95b, | ||
4 | % TITLE = "The Steerable Pyramid: A Flexible Architecture for | ||
5 | % Multi-Scale Derivative Computation", | ||
6 | % AUTHOR = "E P Simoncelli and W T Freeman", | ||
7 | % BOOKTITLE = "Second Int'l Conf on Image Processing", | ||
8 | % ADDRESS = "Washington, DC", MONTH = "October", YEAR = 1995 } | ||
9 | % | ||
10 | % Filter kernel design described in: | ||
11 | % | ||
12 | %@INPROCEEDINGS{Karasaridis96, | ||
13 | % TITLE = "A Filter Design Technique for | ||
14 | % Steerable Pyramid Image Transforms", | ||
15 | % AUTHOR = "A Karasaridis and E P Simoncelli", | ||
16 | % BOOKTITLE = "ICASSP", ADDRESS = "Atlanta, GA", | ||
17 | % MONTH = "May", YEAR = 1996 } | ||
18 | |||
19 | % Eero Simoncelli, 6/96. | ||
20 | |||
21 | function [lo0filt,hi0filt,lofilt,bfilts,mtx,harmonics] = sp3Filters(); | ||
22 | |||
23 | harmonics = [1 3]; | ||
24 | |||
25 | mtx = [ ... | ||
26 | 0.5000 0.3536 0 -0.3536 | ||
27 | -0.0000 0.3536 0.5000 0.3536 | ||
28 | 0.5000 -0.3536 0 0.3536 | ||
29 | -0.0000 0.3536 -0.5000 0.3536]; | ||
30 | |||
31 | hi0filt = [ | ||
32 | -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 | ||
33 | -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 | ||
34 | -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 | ||
35 | 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 | ||
36 | 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 | ||
37 | 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 | ||
38 | 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 | ||
39 | 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 | ||
40 | 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 | ||
41 | 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 | ||
42 | 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 | ||
43 | 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 | ||
44 | -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 | ||
45 | -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 | ||
46 | -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 | ||
47 | ]; | ||
48 | |||
49 | lo0filt = [ | ||
50 | -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 | ||
51 | -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 | ||
52 | -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 | ||
53 | -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 | ||
54 | 2.5240099058E-3 1.1076199589E-3 -3.2971370965E-2 0.1811603010 0.4376249909 0.1811603010 -3.2971370965E-2 1.1076199589E-3 2.5240099058E-3 | ||
55 | -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 | ||
56 | -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 | ||
57 | -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 | ||
58 | -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 | ||
59 | ]; | ||
60 | |||
61 | lofilt = [ | ||
62 | -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 | ||
63 | 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 | ||
64 | -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 | ||
65 | -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 | ||
66 | -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 | ||
67 | -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 | ||
68 | -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 | ||
69 | -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 | ||
70 | 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 | ||
71 | -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 | ||
72 | -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 | ||
73 | -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 | ||
74 | -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 | ||
75 | -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 | ||
76 | -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 | ||
77 | 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 | ||
78 | -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 | ||
79 | ]; | ||
80 | |||
81 | bfilts = [... | ||
82 | -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 ... | ||
83 | 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 ... | ||
84 | 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 ... | ||
85 | 7.4700999539E-4 -3.6522001028E-4 -2.2522680461E-2 -0.1105690673 -0.1768419296 -0.1105690673 -2.2522680461E-2 -3.6522001028E-4 7.4700999539E-4 ... | ||
86 | 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 ... | ||
87 | -7.4700999539E-4 3.6522001028E-4 2.2522680461E-2 0.1105690673 0.1768419296 0.1105690673 2.2522680461E-2 3.6522001028E-4 -7.4700999539E-4 ... | ||
88 | -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 ... | ||
89 | -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 ... | ||
90 | 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; ... | ||
91 | ... | ||
92 | 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 ... | ||
93 | 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 ... | ||
94 | 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 ... | ||
95 | -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 ... | ||
96 | -4.6670897864E-3 2.0865600090E-3 2.4427289143E-2 0.1510555595 0.0000000000 -0.1510555595 -2.4427289143E-2 -2.0865600090E-3 4.6670897864E-3 ... | ||
97 | -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 ... | ||
98 | -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 ... | ||
99 | -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 ... | ||
100 | 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; ... | ||
101 | ... | ||
102 | 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 ... | ||
103 | -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 ... | ||
104 | -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 ... | ||
105 | -1.3955879956E-2 2.8760801069E-3 -3.9442278445E-2 0.1105690673 0.0000000000 -0.1105690673 3.9442278445E-2 -2.8760801069E-3 1.3955879956E-2 ... | ||
106 | -1.4179450460E-2 -8.5267601535E-3 -5.3605638444E-2 0.1768419296 0.0000000000 -0.1768419296 5.3605638444E-2 8.5267601535E-3 1.4179450460E-2 ... | ||
107 | -1.3955879956E-2 2.8760801069E-3 -3.9442278445E-2 0.1105690673 0.0000000000 -0.1105690673 3.9442278445E-2 -2.8760801069E-3 1.3955879956E-2 ... | ||
108 | -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 ... | ||
109 | -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 ... | ||
110 | 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; ... | ||
111 | ... | ||
112 | 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 ... | ||
113 | -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 ... | ||
114 | -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 ... | ||
115 | -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 ... | ||
116 | -4.6670897864E-3 2.0865600090E-3 2.4427289143E-2 0.1510555595 0.0000000000 -0.1510555595 -2.4427289143E-2 -2.0865600090E-3 4.6670897864E-3 ... | ||
117 | -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 ... | ||
118 | 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 ... | ||
119 | 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 ... | ||
120 | 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 ... | ||
121 | ]'; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/sp5Filters.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/sp5Filters.m new file mode 100755 index 0000000..4cddcfd --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/sp5Filters.m | |||
@@ -0,0 +1,110 @@ | |||
1 | % Steerable pyramid filters. Transform described in: | ||
2 | % | ||
3 | % @INPROCEEDINGS{Simoncelli95b, | ||
4 | % TITLE = "The Steerable Pyramid: A Flexible Architecture for | ||
5 | % Multi-Scale Derivative Computation", | ||
6 | % AUTHOR = "E P Simoncelli and W T Freeman", | ||
7 | % BOOKTITLE = "Second Int'l Conf on Image Processing", | ||
8 | % ADDRESS = "Washington, DC", MONTH = "October", YEAR = 1995 } | ||
9 | % | ||
10 | % Filter kernel design described in: | ||
11 | % | ||
12 | %@INPROCEEDINGS{Karasaridis96, | ||
13 | % TITLE = "A Filter Design Technique for | ||
14 | % Steerable Pyramid Image Transforms", | ||
15 | % AUTHOR = "A Karasaridis and E P Simoncelli", | ||
16 | % BOOKTITLE = "ICASSP", ADDRESS = "Atlanta, GA", | ||
17 | % MONTH = "May", YEAR = 1996 } | ||
18 | |||
19 | % Eero Simoncelli, 6/96. | ||
20 | |||
21 | function [lo0filt,hi0filt,lofilt,bfilts,mtx,harmonics] = sp5Filters(); | ||
22 | |||
23 | harmonics = [1 3 5]; | ||
24 | |||
25 | mtx = [ ... | ||
26 | 0.3333 0.2887 0.1667 0.0000 -0.1667 -0.2887 | ||
27 | 0.0000 0.1667 0.2887 0.3333 0.2887 0.1667 | ||
28 | 0.3333 -0.0000 -0.3333 -0.0000 0.3333 -0.0000 | ||
29 | 0.0000 0.3333 0.0000 -0.3333 0.0000 0.3333 | ||
30 | 0.3333 -0.2887 0.1667 -0.0000 -0.1667 0.2887 | ||
31 | -0.0000 0.1667 -0.2887 0.3333 -0.2887 0.1667]; | ||
32 | |||
33 | hi0filt = [ | ||
34 | -0.00033429 -0.00113093 -0.00171484 -0.00133542 -0.00080639 -0.00133542 -0.00171484 -0.00113093 -0.00033429 | ||
35 | -0.00113093 -0.00350017 -0.00243812 0.00631653 0.01261227 0.00631653 -0.00243812 -0.00350017 -0.00113093 | ||
36 | -0.00171484 -0.00243812 -0.00290081 -0.00673482 -0.00981051 -0.00673482 -0.00290081 -0.00243812 -0.00171484 | ||
37 | -0.00133542 0.00631653 -0.00673482 -0.07027679 -0.11435863 -0.07027679 -0.00673482 0.00631653 -0.00133542 | ||
38 | -0.00080639 0.01261227 -0.00981051 -0.11435863 0.81380200 -0.11435863 -0.00981051 0.01261227 -0.00080639 | ||
39 | -0.00133542 0.00631653 -0.00673482 -0.07027679 -0.11435863 -0.07027679 -0.00673482 0.00631653 -0.00133542 | ||
40 | -0.00171484 -0.00243812 -0.00290081 -0.00673482 -0.00981051 -0.00673482 -0.00290081 -0.00243812 -0.00171484 | ||
41 | -0.00113093 -0.00350017 -0.00243812 0.00631653 0.01261227 0.00631653 -0.00243812 -0.00350017 -0.00113093 | ||
42 | -0.00033429 -0.00113093 -0.00171484 -0.00133542 -0.00080639 -0.00133542 -0.00171484 -0.00113093 -0.00033429]; | ||
43 | |||
44 | |||
45 | lo0filt = [ | ||
46 | 0.00341614 -0.01551246 -0.03848215 -0.01551246 0.00341614 | ||
47 | -0.01551246 0.05586982 0.15925570 0.05586982 -0.01551246 | ||
48 | -0.03848215 0.15925570 0.40304148 0.15925570 -0.03848215 | ||
49 | -0.01551246 0.05586982 0.15925570 0.05586982 -0.01551246 | ||
50 | 0.00341614 -0.01551246 -0.03848215 -0.01551246 0.00341614]; | ||
51 | |||
52 | lofilt = 2*[ | ||
53 | 0.00085404 -0.00244917 -0.00387812 -0.00944432 -0.00962054 -0.00944432 -0.00387812 -0.00244917 0.00085404 | ||
54 | -0.00244917 -0.00523281 -0.00661117 0.00410600 0.01002988 0.00410600 -0.00661117 -0.00523281 -0.00244917 | ||
55 | -0.00387812 -0.00661117 0.01396746 0.03277038 0.03981393 0.03277038 0.01396746 -0.00661117 -0.00387812 | ||
56 | -0.00944432 0.00410600 0.03277038 0.06426333 0.08169618 0.06426333 0.03277038 0.00410600 -0.00944432 | ||
57 | -0.00962054 0.01002988 0.03981393 0.08169618 0.10096540 0.08169618 0.03981393 0.01002988 -0.00962054 | ||
58 | -0.00944432 0.00410600 0.03277038 0.06426333 0.08169618 0.06426333 0.03277038 0.00410600 -0.00944432 | ||
59 | -0.00387812 -0.00661117 0.01396746 0.03277038 0.03981393 0.03277038 0.01396746 -0.00661117 -0.00387812 | ||
60 | -0.00244917 -0.00523281 -0.00661117 0.00410600 0.01002988 0.00410600 -0.00661117 -0.00523281 -0.00244917 | ||
61 | 0.00085404 -0.00244917 -0.00387812 -0.00944432 -0.00962054 -0.00944432 -0.00387812 -0.00244917 0.00085404]; | ||
62 | |||
63 | bfilts = [... | ||
64 | 0.00277643 0.00496194 0.01026699 0.01455399 0.01026699 0.00496194 0.00277643 ... | ||
65 | -0.00986904 -0.00893064 0.01189859 0.02755155 0.01189859 -0.00893064 -0.00986904 ... | ||
66 | -0.01021852 -0.03075356 -0.08226445 -0.11732297 -0.08226445 -0.03075356 -0.01021852 ... | ||
67 | 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 ... | ||
68 | 0.01021852 0.03075356 0.08226445 0.11732297 0.08226445 0.03075356 0.01021852 ... | ||
69 | 0.00986904 0.00893064 -0.01189859 -0.02755155 -0.01189859 0.00893064 0.00986904 ... | ||
70 | -0.00277643 -0.00496194 -0.01026699 -0.01455399 -0.01026699 -0.00496194 -0.00277643; | ||
71 | ... | ||
72 | -0.00343249 -0.00640815 -0.00073141 0.01124321 0.00182078 0.00285723 0.01166982 ... | ||
73 | -0.00358461 -0.01977507 -0.04084211 -0.00228219 0.03930573 0.01161195 0.00128000 ... | ||
74 | 0.01047717 0.01486305 -0.04819057 -0.12227230 -0.05394139 0.00853965 -0.00459034 ... | ||
75 | 0.00790407 0.04435647 0.09454202 -0.00000000 -0.09454202 -0.04435647 -0.00790407 ... | ||
76 | 0.00459034 -0.00853965 0.05394139 0.12227230 0.04819057 -0.01486305 -0.01047717 ... | ||
77 | -0.00128000 -0.01161195 -0.03930573 0.00228219 0.04084211 0.01977507 0.00358461 ... | ||
78 | -0.01166982 -0.00285723 -0.00182078 -0.01124321 0.00073141 0.00640815 0.00343249; | ||
79 | ... | ||
80 | 0.00343249 0.00358461 -0.01047717 -0.00790407 -0.00459034 0.00128000 0.01166982 ... | ||
81 | 0.00640815 0.01977507 -0.01486305 -0.04435647 0.00853965 0.01161195 0.00285723 ... | ||
82 | 0.00073141 0.04084211 0.04819057 -0.09454202 -0.05394139 0.03930573 0.00182078 ... | ||
83 | -0.01124321 0.00228219 0.12227230 -0.00000000 -0.12227230 -0.00228219 0.01124321 ... | ||
84 | -0.00182078 -0.03930573 0.05394139 0.09454202 -0.04819057 -0.04084211 -0.00073141 ... | ||
85 | -0.00285723 -0.01161195 -0.00853965 0.04435647 0.01486305 -0.01977507 -0.00640815 ... | ||
86 | -0.01166982 -0.00128000 0.00459034 0.00790407 0.01047717 -0.00358461 -0.00343249; | ||
87 | ... | ||
88 | -0.00277643 0.00986904 0.01021852 -0.00000000 -0.01021852 -0.00986904 0.00277643 ... | ||
89 | -0.00496194 0.00893064 0.03075356 -0.00000000 -0.03075356 -0.00893064 0.00496194 ... | ||
90 | -0.01026699 -0.01189859 0.08226445 -0.00000000 -0.08226445 0.01189859 0.01026699 ... | ||
91 | -0.01455399 -0.02755155 0.11732297 -0.00000000 -0.11732297 0.02755155 0.01455399 ... | ||
92 | -0.01026699 -0.01189859 0.08226445 -0.00000000 -0.08226445 0.01189859 0.01026699 ... | ||
93 | -0.00496194 0.00893064 0.03075356 -0.00000000 -0.03075356 -0.00893064 0.00496194 ... | ||
94 | -0.00277643 0.00986904 0.01021852 -0.00000000 -0.01021852 -0.00986904 0.00277643; | ||
95 | ... | ||
96 | -0.01166982 -0.00128000 0.00459034 0.00790407 0.01047717 -0.00358461 -0.00343249 ... | ||
97 | -0.00285723 -0.01161195 -0.00853965 0.04435647 0.01486305 -0.01977507 -0.00640815 ... | ||
98 | -0.00182078 -0.03930573 0.05394139 0.09454202 -0.04819057 -0.04084211 -0.00073141 ... | ||
99 | -0.01124321 0.00228219 0.12227230 -0.00000000 -0.12227230 -0.00228219 0.01124321 ... | ||
100 | 0.00073141 0.04084211 0.04819057 -0.09454202 -0.05394139 0.03930573 0.00182078 ... | ||
101 | 0.00640815 0.01977507 -0.01486305 -0.04435647 0.00853965 0.01161195 0.00285723 ... | ||
102 | 0.00343249 0.00358461 -0.01047717 -0.00790407 -0.00459034 0.00128000 0.01166982; | ||
103 | ... | ||
104 | -0.01166982 -0.00285723 -0.00182078 -0.01124321 0.00073141 0.00640815 0.00343249 ... | ||
105 | -0.00128000 -0.01161195 -0.03930573 0.00228219 0.04084211 0.01977507 0.00358461 ... | ||
106 | 0.00459034 -0.00853965 0.05394139 0.12227230 0.04819057 -0.01486305 -0.01047717 ... | ||
107 | 0.00790407 0.04435647 0.09454202 -0.00000000 -0.09454202 -0.04435647 -0.00790407 ... | ||
108 | 0.01047717 0.01486305 -0.04819057 -0.12227230 -0.05394139 0.00853965 -0.00459034 ... | ||
109 | -0.00358461 -0.01977507 -0.04084211 -0.00228219 0.03930573 0.01161195 0.00128000 ... | ||
110 | -0.00343249 -0.00640815 -0.00073141 0.01124321 0.00182078 0.00285723 0.01166982]'; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/spyrBand.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/spyrBand.m new file mode 100755 index 0000000..474a8dc --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/spyrBand.m | |||
@@ -0,0 +1,34 @@ | |||
1 | % [LEV,IND] = spyrBand(PYR,INDICES,LEVEL,BAND) | ||
2 | % | ||
3 | % Access a band from a steerable pyramid. | ||
4 | % | ||
5 | % LEVEL indicates the scale (finest = 1, coarsest = spyrHt(INDICES)). | ||
6 | % | ||
7 | % BAND (optional, default=1) indicates which subband | ||
8 | % (1 = vertical, rest proceeding anti-clockwise). | ||
9 | |||
10 | % Eero Simoncelli, 6/96. | ||
11 | |||
12 | function res = spyrBand(pyr,pind,level,band) | ||
13 | |||
14 | if (exist('level') ~= 1) | ||
15 | level = 1; | ||
16 | end | ||
17 | |||
18 | if (exist('band') ~= 1) | ||
19 | band = 1; | ||
20 | end | ||
21 | |||
22 | nbands = spyrNumBands(pind); | ||
23 | if ((band > nbands) | (band < 1)) | ||
24 | error(sprintf('Bad band number (%d) should be in range [1,%d].', band, nbands)); | ||
25 | end | ||
26 | |||
27 | maxLev = spyrHt(pind); | ||
28 | if ((level > maxLev) | (level < 1)) | ||
29 | error(sprintf('Bad level number (%d), should be in range [1,%d].', level, maxLev)); | ||
30 | end | ||
31 | |||
32 | firstband = 1 + band + nbands*(level-1); | ||
33 | res = pyrBand(pyr, pind, firstband); | ||
34 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/spyrHigh.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/spyrHigh.m new file mode 100755 index 0000000..f91b466 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/spyrHigh.m | |||
@@ -0,0 +1,10 @@ | |||
1 | % RES = spyrHigh(PYR, INDICES) | ||
2 | % | ||
3 | % Access the highpass residual band from a steerable pyramid. | ||
4 | |||
5 | % Eero Simoncelli, 6/96. | ||
6 | |||
7 | function res = spyrHigh(pyr,pind) | ||
8 | |||
9 | res = pyrBand(pyr, pind, 1); | ||
10 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/spyrHt.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/spyrHt.m new file mode 100755 index 0000000..8706b9e --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/spyrHt.m | |||
@@ -0,0 +1,16 @@ | |||
1 | % [HEIGHT] = spyrHt(INDICES) | ||
2 | % | ||
3 | % Compute height of steerable pyramid with given index matrix. | ||
4 | |||
5 | % Eero Simoncelli, 6/96. | ||
6 | |||
7 | function [ht] = spyrHt(pind) | ||
8 | |||
9 | nbands = spyrNumBands(pind); | ||
10 | |||
11 | % Don't count lowpass, or highpass residual bands | ||
12 | if (size(pind,1) > 2) | ||
13 | ht = (size(pind,1)-2)/nbands; | ||
14 | else | ||
15 | ht = 0; | ||
16 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/spyrLev.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/spyrLev.m new file mode 100755 index 0000000..5cb4a85 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/spyrLev.m | |||
@@ -0,0 +1,24 @@ | |||
1 | % [LEV,IND] = spyrLev(PYR,INDICES,LEVEL) | ||
2 | % | ||
3 | % Access a level from a steerable pyramid. | ||
4 | % Return as an SxB matrix, B = number of bands, S = total size of a band. | ||
5 | % Also returns an Bx2 matrix containing dimensions of the subbands. | ||
6 | |||
7 | % Eero Simoncelli, 6/96. | ||
8 | |||
9 | function [lev,ind] = spyrLev(pyr,pind,level) | ||
10 | |||
11 | nbands = spyrNumBands(pind); | ||
12 | |||
13 | if ((level > spyrHt(pind)) | (level < 1)) | ||
14 | error(sprintf('Level number must be in the range [1, %d].', spyrHt(pind))); | ||
15 | end | ||
16 | |||
17 | firstband = 2 + nbands*(level-1); | ||
18 | firstind = 1; | ||
19 | for l=1:firstband-1 | ||
20 | firstind = firstind + prod(pind(l,:)); | ||
21 | end | ||
22 | |||
23 | ind = pind(firstband:firstband+nbands-1,:); | ||
24 | lev = pyr(firstind:firstind+sum(prod(ind'))-1); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/spyrNumBands.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/spyrNumBands.m new file mode 100755 index 0000000..68aec3f --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/spyrNumBands.m | |||
@@ -0,0 +1,20 @@ | |||
1 | % [NBANDS] = spyrNumBands(INDICES) | ||
2 | % | ||
3 | % Compute number of orientation bands in a steerable pyramid with | ||
4 | % given index matrix. If the pyramid contains only the highpass and | ||
5 | % lowpass bands (i.e., zero levels), returns 0. | ||
6 | |||
7 | % Eero Simoncelli, 2/97. | ||
8 | |||
9 | function [nbands] = spyrNumBands(pind) | ||
10 | |||
11 | if (size(pind,1) == 2) | ||
12 | nbands = 0; | ||
13 | else | ||
14 | % Count number of orientation bands: | ||
15 | b = 3; | ||
16 | while ((b <= size(pind,1)) & all( pind(b,:) == pind(2,:)) ) | ||
17 | b = b+1; | ||
18 | end | ||
19 | nbands = b-2; | ||
20 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/steer.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/steer.m new file mode 100755 index 0000000..8f9c2ac --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/steer.m | |||
@@ -0,0 +1,68 @@ | |||
1 | % RES = STEER(BASIS, ANGLE, HARMONICS, STEERMTX) | ||
2 | % | ||
3 | % Steer BASIS to the specfied ANGLE. | ||
4 | % | ||
5 | % BASIS should be a matrix whose columns are vectorized rotated copies of a | ||
6 | % steerable function, or the responses of a set of steerable filters. | ||
7 | % | ||
8 | % ANGLE can be a scalar, or a column vector the size of the basis. | ||
9 | % | ||
10 | % HARMONICS (optional, default is N even or odd low frequencies, as for | ||
11 | % derivative filters) should be a list of harmonic numbers indicating | ||
12 | % the angular harmonic content of the basis. | ||
13 | % | ||
14 | % STEERMTX (optional, default assumes cosine phase harmonic components, | ||
15 | % and filter positions at 2pi*n/N) should be a matrix which maps | ||
16 | % the filters onto Fourier series components (ordered [cos0 cos1 sin1 | ||
17 | % cos2 sin2 ... sinN]). See steer2HarmMtx.m | ||
18 | |||
19 | % Eero Simoncelli, 7/96. | ||
20 | |||
21 | function res = steer(basis,angle,harmonics,steermtx) | ||
22 | |||
23 | num = size(basis,2); | ||
24 | |||
25 | if ( any(size(angle) ~= [size(basis,1) 1]) & any(size(angle) ~= [1 1]) ) | ||
26 | error('ANGLE must be a scalar, or a column vector the size of the basis elements'); | ||
27 | end | ||
28 | |||
29 | %% If HARMONICS are not passed, assume derivatives. | ||
30 | if (exist('harmonics') ~= 1) | ||
31 | if (mod(num,2) == 0) | ||
32 | harmonics = [0:(num/2)-1]'*2 + 1; | ||
33 | else | ||
34 | harmonics = [0:(num-1)/2]'*2; | ||
35 | end | ||
36 | else | ||
37 | harmonics = harmonics(:); | ||
38 | if ((2*size(harmonics,1)-any(harmonics == 0)) ~= num) | ||
39 | error('harmonics list is incompatible with basis size'); | ||
40 | end | ||
41 | end | ||
42 | |||
43 | %% If STEERMTX not passed, assume evenly distributed cosine-phase filters: | ||
44 | if (exist('steermtx') ~= 1) | ||
45 | steermtx = steer2HarmMtx(harmonics, pi*[0:num-1]/num, 'even'); | ||
46 | end | ||
47 | |||
48 | steervect = zeros(size(angle,1),num); | ||
49 | arg = angle * harmonics(find(harmonics~=0))'; | ||
50 | if (all(harmonics)) | ||
51 | steervect(:, 1:2:num) = cos(arg); | ||
52 | steervect(:, 2:2:num) = sin(arg); | ||
53 | else | ||
54 | steervect(:, 1) = ones(size(arg,1),1); | ||
55 | steervect(:, 2:2:num) = cos(arg); | ||
56 | steervect(:, 3:2:num) = sin(arg); | ||
57 | end | ||
58 | |||
59 | steervect = steervect * steermtx; | ||
60 | |||
61 | if (size(steervect,1) > 1) | ||
62 | tmp = basis' .* steervect'; | ||
63 | res = sum(tmp)'; | ||
64 | else | ||
65 | res = basis * steervect'; | ||
66 | end | ||
67 | |||
68 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/steer2HarmMtx.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/steer2HarmMtx.m new file mode 100755 index 0000000..1f3e80e --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/steer2HarmMtx.m | |||
@@ -0,0 +1,71 @@ | |||
1 | % MTX = steer2HarmMtx(HARMONICS, ANGLES, REL_PHASES) | ||
2 | % | ||
3 | % Compute a steering matrix (maps a directional basis set onto the | ||
4 | % angular Fourier harmonics). HARMONICS is a vector specifying the | ||
5 | % angular harmonics contained in the steerable basis/filters. ANGLES | ||
6 | % (optional) is a vector specifying the angular position of each filter. | ||
7 | % REL_PHASES (optional, default = 'even') specifies whether the harmonics | ||
8 | % are cosine or sine phase aligned about those positions. | ||
9 | % The result matrix is suitable for passing to the function STEER. | ||
10 | |||
11 | % Eero Simoncelli, 7/96. | ||
12 | |||
13 | function mtx = steer2HarmMtx(harmonics, angles, evenorodd) | ||
14 | |||
15 | %%================================================================= | ||
16 | %%% Optional Parameters: | ||
17 | |||
18 | if (exist('evenorodd') ~= 1) | ||
19 | evenorodd = 'even'; | ||
20 | end | ||
21 | |||
22 | % Make HARMONICS a row vector | ||
23 | harmonics = harmonics(:)'; | ||
24 | |||
25 | numh = 2*size(harmonics,2) - any(harmonics == 0); | ||
26 | |||
27 | if (exist('angles') ~= 1) | ||
28 | angles = pi * [0:numh-1]'/numh; | ||
29 | else | ||
30 | angles = angles(:); | ||
31 | end | ||
32 | |||
33 | %%================================================================= | ||
34 | |||
35 | if isstr(evenorodd) | ||
36 | if strcmp(evenorodd,'even') | ||
37 | evenorodd = 0; | ||
38 | elseif strcmp(evenorodd,'odd') | ||
39 | evenorodd = 1; | ||
40 | else | ||
41 | error('EVEN_OR_ODD should be the string EVEN or ODD'); | ||
42 | end | ||
43 | end | ||
44 | |||
45 | %% Compute inverse matrix, which maps Fourier components onto | ||
46 | %% steerable basis. | ||
47 | imtx = zeros(size(angles,1),numh); | ||
48 | col = 1; | ||
49 | for h=harmonics | ||
50 | args = h*angles; | ||
51 | if (h == 0) | ||
52 | imtx(:,col) = ones(size(angles)); | ||
53 | col = col+1; | ||
54 | elseif evenorodd | ||
55 | imtx(:,col) = sin(args); | ||
56 | imtx(:,col+1) = -cos(args); | ||
57 | col = col+2; | ||
58 | else | ||
59 | imtx(:,col) = cos(args); | ||
60 | imtx(:,col+1) = sin(args); | ||
61 | col = col+2; | ||
62 | end | ||
63 | end | ||
64 | |||
65 | r = rank(imtx); | ||
66 | if (( r ~= numh ) & ( r ~= size(angles,1) )) | ||
67 | fprintf(2,'WARNING: matrix is not full rank'); | ||
68 | end | ||
69 | |||
70 | mtx = pinv(imtx); | ||
71 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/subMtx.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/subMtx.m new file mode 100755 index 0000000..ea3c2ea --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/subMtx.m | |||
@@ -0,0 +1,21 @@ | |||
1 | % MTX = subMtx(VEC, DIMENSIONS, START_INDEX) | ||
2 | % | ||
3 | % Reshape a portion of VEC starting from START_INDEX (optional, | ||
4 | % default=1) to the given dimensions. | ||
5 | |||
6 | % Eero Simoncelli, 6/96. | ||
7 | |||
8 | function mtx = subMtx(vec, sz, offset) | ||
9 | |||
10 | if (exist('offset') ~= 1) | ||
11 | offset = 1; | ||
12 | end | ||
13 | |||
14 | vec = vec(:); | ||
15 | sz = sz(:); | ||
16 | |||
17 | if (size(sz,1) ~= 2) | ||
18 | error('DIMENSIONS must be a 2-vector.'); | ||
19 | end | ||
20 | |||
21 | mtx = reshape( vec(offset:offset+prod(sz)-1), sz(1), sz(2) ); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/textureAnalysis.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/textureAnalysis.m new file mode 100755 index 0000000..d7a0ec1 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/textureAnalysis.m | |||
@@ -0,0 +1,245 @@ | |||
1 | function [params] = textureAnalysis(im0, Nsc, Nor, Na) | ||
2 | |||
3 | % Analyze texture for application of Portilla-Simoncelli model/algorithm. | ||
4 | % | ||
5 | % [params] = textureAnalysis(im0, Nsc, Nor, Na); | ||
6 | % im0: original image | ||
7 | % Nsc: number of scales | ||
8 | % Nor: number of orientations | ||
9 | % Na: spatial neighborhood considered (Na x Na) | ||
10 | % | ||
11 | % Example: Nsc=4; Nor=4; Na=7; | ||
12 | % | ||
13 | % See also textureSynthesis. | ||
14 | |||
15 | % Javier Portilla and Eero Simoncelli. | ||
16 | % Work described in: | ||
17 | % "A Parametric Texture Model based on Joint Statistics of Complex Wavelet Coefficients". | ||
18 | % J Portilla and E P Simoncelli. Int'l Journal of Computer Vision, | ||
19 | % vol.40(1), pp. 49-71, Dec 2000. | ||
20 | % | ||
21 | % Please refer to this publication if you use the program for research or | ||
22 | % for technical applications. Thank you. | ||
23 | % | ||
24 | % Copyright, Center for Neural Science, New York University, January 2001. | ||
25 | % All rights reserved. | ||
26 | |||
27 | |||
28 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
29 | |||
30 | Warn = 0; % Set to 1 if you want to see warning messages | ||
31 | |||
32 | %% Check required args are passed | ||
33 | if (nargin < 4) | ||
34 | error('Function called with too few input arguments'); | ||
35 | end | ||
36 | |||
37 | %% 1D interpolation filter, for scale cross-correlations: | ||
38 | interp = [-1/16 0 9/16 1 9/16 0 -1/16]/sqrt(2); | ||
39 | |||
40 | if ( mod(Na,2) == 0 ) | ||
41 | error('Na is not an odd integer'); | ||
42 | end | ||
43 | |||
44 | %% If the spatial neighborhood Na is too big for the lower scales, | ||
45 | %% "modacor22.m" will make it as big as the spatial support at | ||
46 | %% each scale: | ||
47 | |||
48 | [Ny,Nx] = size(im0); | ||
49 | nth = log2(min(Ny,Nx)/Na); | ||
50 | if nth<Nsc & Warn, | ||
51 | fprintf(1,'Warning: Na will be cut off for levels above #%d !\n', floor(nth+1)); | ||
52 | end | ||
53 | |||
54 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
55 | |||
56 | la = floor((Na-1)/2); | ||
57 | |||
58 | %% Pixel statistics | ||
59 | [mn0 mx0] = size(im0); | ||
60 | mean0 = mean2(im0); | ||
61 | var0 = var2(im0, mean0); | ||
62 | skew0 = skew2(im0, mean0, var0); | ||
63 | kurt0 = kurt2(im0, mean0, var0); | ||
64 | statg0 = [mean0 var0 skew0 kurt0 mn0 mx0]; | ||
65 | |||
66 | % Add a little bit of noise to the original, in case it has been | ||
67 | % artificially generated, to avoid instability crated by symmetric | ||
68 | % conditions at the synthesis stage. | ||
69 | |||
70 | %im0 = im0 + (mx0-mn0)/1000*randn(size(im0)); %kvs | ||
71 | |||
72 | %% Build the steerable pyramid | ||
73 | [pyr0,pind0] = buildSCFpyr(im0,Nsc,Nor-1); | ||
74 | |||
75 | if ( any(vector(mod(pind0,2))) ) | ||
76 | error('Algorithm will fail: Some bands have odd dimensions!'); | ||
77 | end | ||
78 | |||
79 | %% Subtract mean of lowBand: | ||
80 | nband = size(pind0,1); | ||
81 | pyr0(pyrBandIndices(pind0,nband)) = ... | ||
82 | real(pyrBand(pyr0,pind0,nband)) - mean2(real(pyrBand(pyr0,pind0,nband))); | ||
83 | |||
84 | rpyr0 = real(pyr0); | ||
85 | apyr0 = abs(pyr0); | ||
86 | |||
87 | figure(gcf) | ||
88 | clf | ||
89 | showIm(im0,'auto',1); title('Original'); drawnow | ||
90 | |||
91 | %% Subtract mean of magnitude: | ||
92 | magMeans0 = zeros(size(pind0,1), 1); | ||
93 | for nband = 1:size(pind0,1) | ||
94 | indices = pyrBandIndices(pind0,nband); | ||
95 | magMeans0(nband) = mean2(apyr0(indices)); | ||
96 | apyr0(indices) = apyr0(indices) - magMeans0(nband); | ||
97 | end | ||
98 | |||
99 | %% Compute central autoCorr of lowband | ||
100 | acr = NaN * ones(Na,Na,Nsc+1); | ||
101 | nband = size(pind0,1); | ||
102 | ch = pyrBand(pyr0,pind0,nband); | ||
103 | [mpyr,mpind] = buildSFpyr(real(ch),0,0); | ||
104 | im = pyrBand(mpyr,mpind,2); | ||
105 | [Nly Nlx] = size(ch); | ||
106 | Sch = min(Nly,Nlx); %size of low band | ||
107 | le = min(Sch/2-1,la); | ||
108 | cy = Nly/2+1; | ||
109 | cx = Nlx/2+1; | ||
110 | ac = fftshift(real(ifft2(abs(fft2(im)).^2)))/prod(size(ch)); | ||
111 | ac = ac(cy-le:cy+le,cx-le:cx+le); | ||
112 | acr(la-le+1:la+le+1,la-le+1:la+le+1,Nsc+1) = ac; | ||
113 | skew0p = zeros(Nsc+1,1); | ||
114 | kurt0p = zeros(Nsc+1,1); | ||
115 | vari = ac(le+1,le+1); | ||
116 | if vari/var0 > 1e-6, | ||
117 | skew0p(Nsc+1) = mean2(im.^3)/vari^1.5; | ||
118 | kurt0p(Nsc+1) = mean2(im.^4)/vari^2; | ||
119 | else | ||
120 | skew0p(Nsc+1) = 0; | ||
121 | kurt0p(Nsc+1) = 3; | ||
122 | end | ||
123 | |||
124 | %% Compute central autoCorr of each Mag band, and the autoCorr of the | ||
125 | %% combined (non-oriented) band. | ||
126 | ace = NaN * ones(Na,Na,Nsc,Nor); | ||
127 | for nsc = Nsc:-1:1, | ||
128 | for nor = 1:Nor, | ||
129 | nband = (nsc-1)*Nor+nor+1; | ||
130 | ch = pyrBand(apyr0,pind0,nband); | ||
131 | [Nly, Nlx] = size(ch); | ||
132 | Sch = min(Nlx, Nly); | ||
133 | le = min(Sch/2-1,la); | ||
134 | cx = Nlx/2+1; %Assumes Nlx even | ||
135 | cy = Nly/2+1; | ||
136 | ac = fftshift(real(ifft2(abs(fft2(ch)).^2)))/prod(size(ch)); | ||
137 | ac = ac(cy-le:cy+le,cx-le:cx+le); | ||
138 | ace(la-le+1:la+le+1,la-le+1:la+le+1,nsc,nor) = ac; | ||
139 | end | ||
140 | |||
141 | %% Combine ori bands | ||
142 | |||
143 | bandNums = [1:Nor] + (nsc-1)*Nor+1; %ori bands only | ||
144 | ind1 = pyrBandIndices(pind0, bandNums(1)); | ||
145 | indN = pyrBandIndices(pind0, bandNums(Nor)); | ||
146 | bandInds = [ind1(1):indN(length(indN))]; | ||
147 | %% Make fake pyramid, containing dummy hi, ori, lo | ||
148 | fakePind = [pind0(bandNums(1),:);pind0(bandNums(1):bandNums(Nor)+1,:)]; | ||
149 | fakePyr = [zeros(prod(fakePind(1,:)),1);... | ||
150 | rpyr0(bandInds); zeros(prod(fakePind(size(fakePind,1),:)),1);]; | ||
151 | ch = reconSFpyr(fakePyr, fakePind, [1]); % recon ori bands only | ||
152 | im = real(expand(im,2))/4; | ||
153 | im = im + ch; | ||
154 | ac = fftshift(real(ifft2(abs(fft2(im)).^2)))/prod(size(ch)); | ||
155 | ac = ac(cy-le:cy+le,cx-le:cx+le); | ||
156 | acr(la-le+1:la+le+1,la-le+1:la+le+1,nsc) = ac; | ||
157 | vari = ac(le+1,le+1); | ||
158 | if vari/var0 > 1e-6, | ||
159 | skew0p(nsc) = mean2(im.^3)/vari^1.5; | ||
160 | kurt0p(nsc) = mean2(im.^4)/vari^2; | ||
161 | else | ||
162 | skew0p(nsc) = 0; | ||
163 | kurt0p(nsc) = 3; | ||
164 | end | ||
165 | end | ||
166 | |||
167 | %% Compute the cross-correlation matrices of the coefficient magnitudes | ||
168 | %% pyramid at the different levels and orientations | ||
169 | |||
170 | C0 = zeros(Nor,Nor,Nsc+1); | ||
171 | Cx0 = zeros(Nor,Nor,Nsc); | ||
172 | |||
173 | Cr0 = zeros(2*Nor,2*Nor,Nsc+1); | ||
174 | Crx0 = zeros(2*Nor,2*Nor,Nsc); | ||
175 | |||
176 | for nsc = 1:Nsc, | ||
177 | firstBnum = (nsc-1)*Nor+2; | ||
178 | cousinSz = prod(pind0(firstBnum,:)); | ||
179 | ind = pyrBandIndices(pind0,firstBnum); | ||
180 | cousinInd = ind(1) + [0:Nor*cousinSz-1]; | ||
181 | |||
182 | if (nsc<Nsc) | ||
183 | parents = zeros(cousinSz,Nor); | ||
184 | rparents = zeros(cousinSz,Nor*2); | ||
185 | for nor=1:Nor, | ||
186 | nband = (nsc-1+1)*Nor+nor+1; | ||
187 | |||
188 | tmp = expand(pyrBand(pyr0, pind0, nband),2)/4; | ||
189 | rtmp = real(tmp); itmp = imag(tmp); | ||
190 | %% Double phase: | ||
191 | tmp = sqrt(rtmp.^2 + itmp.^2) .* exp(2 * sqrt(-1) * atan2(rtmp,itmp)); | ||
192 | rparents(:,nor) = vector(real(tmp)); | ||
193 | rparents(:,Nor+nor) = vector(imag(tmp)); | ||
194 | |||
195 | tmp = abs(tmp); | ||
196 | parents(:,nor) = vector(tmp - mean2(tmp)); | ||
197 | end | ||
198 | else | ||
199 | tmp = real(expand(pyrLow(rpyr0,pind0),2))/4; | ||
200 | rparents = [vector(tmp),... | ||
201 | vector(shift(tmp,[0 1])), vector(shift(tmp,[0 -1])), ... | ||
202 | vector(shift(tmp,[1 0])), vector(shift(tmp,[-1 0]))]; | ||
203 | parents = []; | ||
204 | end | ||
205 | |||
206 | cousins = reshape(apyr0(cousinInd), [cousinSz Nor]); | ||
207 | nc = size(cousins,2); np = size(parents,2); | ||
208 | C0(1:nc,1:nc,nsc) = innerProd(cousins)/cousinSz; | ||
209 | if (np > 0) | ||
210 | Cx0(1:nc,1:np,nsc) = (cousins'*parents)/cousinSz; | ||
211 | if (nsc==Nsc) | ||
212 | C0(1:np,1:np,Nsc+1) = innerProd(parents)/(cousinSz/4); | ||
213 | end | ||
214 | end | ||
215 | |||
216 | cousins = reshape(real(pyr0(cousinInd)), [cousinSz Nor]); | ||
217 | nrc = size(cousins,2); nrp = size(rparents,2); | ||
218 | Cr0(1:nrc,1:nrc,nsc) = innerProd(cousins)/cousinSz; | ||
219 | if (nrp > 0) | ||
220 | Crx0(1:nrc,1:nrp,nsc) = (cousins'*rparents)/cousinSz; | ||
221 | if (nsc==Nsc) | ||
222 | Cr0(1:nrp,1:nrp,Nsc+1) = innerProd(rparents)/(cousinSz/4); | ||
223 | end | ||
224 | end | ||
225 | end | ||
226 | |||
227 | %% Calculate the mean, range and variance of the LF and HF residuals' energy. | ||
228 | |||
229 | channel = pyr0(pyrBandIndices(pind0,1)); | ||
230 | vHPR0 = mean2(channel.^2); | ||
231 | |||
232 | statsLPim = [skew0p kurt0p]; | ||
233 | |||
234 | params = struct('pixelStats', statg0, ... | ||
235 | 'pixelLPStats', statsLPim, ... | ||
236 | 'autoCorrReal', acr, ... | ||
237 | 'autoCorrMag', ace, ... | ||
238 | 'magMeans', magMeans0, ... | ||
239 | 'cousinMagCorr', C0, ... | ||
240 | 'parentMagCorr', Cx0, ... | ||
241 | 'cousinRealCorr', Cr0, ... | ||
242 | 'parentRealCorr', Crx0, ... | ||
243 | 'varianceHPR', vHPR0); | ||
244 | |||
245 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/textureSynthesis.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/textureSynthesis.m new file mode 100755 index 0000000..38fce5a --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/textureSynthesis.m | |||
@@ -0,0 +1,436 @@ | |||
1 | function [im,snrP,imS] = textureSynthesis(params, im0, Niter, cmask, imask) | ||
2 | |||
3 | % [res,snrP,imS] = textureSynthesis(params, initialIm, Niter, cmask, imask) | ||
4 | % | ||
5 | % Synthesize texture applying Portilla-Simoncelli model/algorithm. | ||
6 | % | ||
7 | % params: structure containing texture parameters (as returned by textureAnalysis). | ||
8 | % | ||
9 | % im0: initial image, OR a vector (Ydim, Xdim, [SEED]) containing | ||
10 | % dimensions of desired image and an optional seed for the random | ||
11 | % number generator. If dimensions are passed, initial image is | ||
12 | % Gaussian white noise. | ||
13 | % | ||
14 | % Niter (optional): Number of iterations. Default = 50. | ||
15 | % | ||
16 | % cmask (optional): binary column vector (4x1) indicating which sets of | ||
17 | % constraints we want to apply in the synthesis. The four sets are: | ||
18 | % 1) Marginal statistics (mean, var, skew, kurt, range) | ||
19 | % 2) Correlation of subbands (space, orientation, scale) | ||
20 | % 3) Correlation of magnitude responses (sp, or, sc) | ||
21 | % 4) Relative local phase | ||
22 | % | ||
23 | % imask (optional): imsizex2 matrix. First column is a mask, second | ||
24 | % column contains the image values to be imposed. If only one column is | ||
25 | % provided, it assumes it corresponds to the image values, and it uses | ||
26 | % a raised cosine square for the mask. | ||
27 | % snrP (optional): Set of adjustment values (in dB) of the parameters. | ||
28 | % imS (optional): Sequence of synthetic images, from niter = 1 to 2^n, being | ||
29 | % n = floor(log2(Niter)). | ||
30 | |||
31 | % Javier Portilla and Eero Simoncelli. | ||
32 | % Work described in: | ||
33 | % "A Parametric Texture Model based on Joint Statistics of Complex Wavelet Coefficients". | ||
34 | % J Portilla and E P Simoncelli. Int'l Journal of Computer Vision, | ||
35 | % vol.40(1), pp. 49-71, Dec 2000. | ||
36 | % | ||
37 | % Please refer to this publication if you use the program for research or | ||
38 | % for technical applications. Thank you. | ||
39 | % | ||
40 | % Copyright, Center for Neural Science, New York University, January 2001. | ||
41 | % All rights reserved. | ||
42 | |||
43 | Warn = 0; % Set to 1 if you want to see warning messages | ||
44 | |||
45 | %% Check required args are passed: | ||
46 | if (nargin < 2) | ||
47 | error('Function called with too few input arguments'); | ||
48 | end | ||
49 | |||
50 | if ( ~exist('Niter') | isempty(Niter) ) | ||
51 | Niter = 50; | ||
52 | end | ||
53 | |||
54 | if (exist('cmask') & ~isempty(cmask) ) | ||
55 | cmask = (cmask > 0.5); % indices of ones in mask | ||
56 | else | ||
57 | cmask = ones(4,1); | ||
58 | end | ||
59 | |||
60 | %% Extract parameters | ||
61 | statg0 = params.pixelStats; | ||
62 | mean0 = statg0(1); var0 = statg0(2); | ||
63 | skew0 = statg0(3); kurt0 = statg0(4); | ||
64 | mn0 = statg0(5); mx0 = statg0(6); | ||
65 | statsLPim = params.pixelLPStats; | ||
66 | skew0p = statsLPim(:,1); | ||
67 | kurt0p = statsLPim(:,2); | ||
68 | vHPR0 = params.varianceHPR; | ||
69 | acr0 = params.autoCorrReal; | ||
70 | ace0 = params.autoCorrMag; | ||
71 | magMeans0 = params.magMeans; | ||
72 | C0 = params.cousinMagCorr; | ||
73 | Cx0 = params.parentMagCorr; | ||
74 | Crx0 = params.parentRealCorr; | ||
75 | |||
76 | %% Extract {Nsc, Nor, Na} from params | ||
77 | tmp = size(params.autoCorrMag); | ||
78 | Na = tmp(1); Nsc = tmp(3); | ||
79 | Nor = tmp(length(tmp))*(length(tmp)==4) + (length(tmp)<4); | ||
80 | la = (Na-1)/2; | ||
81 | |||
82 | %% If im0 is a vector of length 2, create Gaussian white noise image of this | ||
83 | %% size, with desired pixel mean and variance. If vector length is | ||
84 | %% 3, use the 3rd element to seed the random number generator. | ||
85 | if ( length(im0) <= 3 ) | ||
86 | if ( length(im0) == 3) | ||
87 | randn('state', im0(3)); % Reset Seed | ||
88 | im0 = im0(1:2); | ||
89 | end | ||
90 | im = mean0 + sqrt(var0)*randn(im0); | ||
91 | else | ||
92 | im = im0; | ||
93 | end | ||
94 | |||
95 | %% If the spatial neighborhood Na is too big for the lower scales, | ||
96 | %% "modacor22.m" will make it as big as the spatial support at | ||
97 | %% each scale: | ||
98 | [Ny,Nx] = size(im); | ||
99 | nth = log2(min(Ny,Nx)/Na); | ||
100 | if nth<Nsc+1 & Warn, | ||
101 | fprintf(1,'Warning: Na will be cut off for levels above #%d !\n',floor(nth)); | ||
102 | end | ||
103 | |||
104 | if exist('imask') & ~isempty(imask), | ||
105 | if size(imask,1) ~= prod(size(im)) | ||
106 | error(sprintf('imask size %d does not match image dimensions [%d,%d]',... | ||
107 | size(imask,1), size(im,1), size(im,2))); | ||
108 | end | ||
109 | if size(imask,2) == 1, | ||
110 | mask = (cos(-pi/2:2*pi/Ny:pi*(1-2/Ny)/2)).'*cos(-pi/2:2*pi/Nx:pi*(1-2/Nx)/2); | ||
111 | mask = mask.^2; | ||
112 | aux = zeros(size(im)); | ||
113 | aux(Ny/4+1:Ny/4+Ny/2,Nx/4+1:Nx/4+Nx/2)=mask; | ||
114 | mask = aux; | ||
115 | else | ||
116 | mask = reshape(imask(:,1),size(im)); | ||
117 | end | ||
118 | end | ||
119 | |||
120 | imf = max(1,gcf-1); snrf = imf+1; | ||
121 | figure(imf); clf | ||
122 | subplot(1,2,1); grayRange = showIm(im,'auto',1); title('Starting image'); | ||
123 | drawnow | ||
124 | |||
125 | prev_im=im; | ||
126 | |||
127 | imf = max(1,gcf-1); | ||
128 | figure(imf); | ||
129 | clf;showIm(im,'auto',1); title(sprintf('iteration 0')); | ||
130 | |||
131 | nq = 0; | ||
132 | Nq = floor(log2(Niter)); | ||
133 | imS = zeros(Ny,Nx,Nq); | ||
134 | |||
135 | %% MAIN LOOP | ||
136 | for niter = 1:Niter | ||
137 | |||
138 | %p = niter/Niter; | ||
139 | p = 1; | ||
140 | |||
141 | %% Build the steerable pyramid | ||
142 | [pyr,pind] = buildSCFpyr(im,Nsc,Nor-1); | ||
143 | |||
144 | if ( any(vector(mod(pind,4))) ) | ||
145 | error('Algorithm will fail: band dimensions are not all multiples of 4!'); | ||
146 | end | ||
147 | |||
148 | %% Subtract mean of lowBand: | ||
149 | nband = size(pind,1); | ||
150 | pyr(pyrBandIndices(pind,nband)) = ... | ||
151 | pyrBand(pyr,pind,nband) - mean2(pyrBand(pyr,pind,nband)); | ||
152 | |||
153 | apyr = abs(pyr); | ||
154 | |||
155 | %% Adjust autoCorr of lowBand | ||
156 | nband = size(pind,1); | ||
157 | ch = pyrBand(pyr,pind,nband); | ||
158 | Sch = min(size(ch)/2); | ||
159 | nz = sum(sum(~isnan(acr0(:,:,Nsc+1)))); | ||
160 | lz = (sqrt(nz)-1)/2; | ||
161 | le = min(Sch/2-1,lz); | ||
162 | im = real(ch); %Reconstructed image: initialize to lowband | ||
163 | [mpyr,mpind] = buildSFpyr(im,0,0); | ||
164 | im = pyrBand(mpyr,mpind,2); | ||
165 | vari = acr0(la+1:la+1,la+1:la+1,Nsc+1); | ||
166 | if cmask(2), | ||
167 | if vari/var0 > 1e-4, | ||
168 | [im, snr2(niter,Nsc+1)] = ... | ||
169 | modacor22(im, acr0(la-le+1:la+le+1,la-le+1:la+le+1,Nsc+1),p); | ||
170 | else | ||
171 | im = im*sqrt(vari/var2(im)); | ||
172 | end | ||
173 | if (var2(imag(ch))/var2(real(ch)) > 1e-6) | ||
174 | fprintf(1,'Discarding non-trivial imaginary part, lowPass autoCorr!'); | ||
175 | end | ||
176 | im = real(im); | ||
177 | end % cmask(2) | ||
178 | if cmask(1), | ||
179 | if vari/var0 > 1e-4, | ||
180 | [im,snr7(niter,2*(Nsc+1)-1)] = modskew(im,skew0p(Nsc+1),p); % Adjusts skewness | ||
181 | [im,snr7(niter,2*(Nsc+1))] = modkurt(im,kurt0p(Nsc+1),p); % Adjusts kurtosis | ||
182 | end | ||
183 | end % cmask(2) | ||
184 | |||
185 | %% Subtract mean of magnitude | ||
186 | if cmask(3), | ||
187 | magMeans = zeros(size(pind,1), 1); | ||
188 | for nband = 1:size(pind,1) | ||
189 | indices = pyrBandIndices(pind,nband); | ||
190 | magMeans(nband) = mean2(apyr(indices)); | ||
191 | apyr(indices) = apyr(indices) - magMeans(nband); | ||
192 | end | ||
193 | end % cmask(3) | ||
194 | |||
195 | %% Coarse-to-fine loop: | ||
196 | for nsc = Nsc:-1:1 | ||
197 | |||
198 | firstBnum = (nsc-1)*Nor+2; | ||
199 | cousinSz = prod(pind(firstBnum,:)); | ||
200 | ind = pyrBandIndices(pind,firstBnum); | ||
201 | cousinInd = ind(1) + [0:Nor*cousinSz-1]; | ||
202 | |||
203 | %% Interpolate parents | ||
204 | if (cmask(3) | cmask(4)), | ||
205 | if (nsc<Nsc) | ||
206 | parents = zeros(cousinSz,Nor); | ||
207 | rparents = zeros(cousinSz,Nor*2); | ||
208 | for nor = 1:Nor | ||
209 | nband = (nsc+1-1)*Nor+nor+1; | ||
210 | |||
211 | tmp = expand(pyrBand(pyr, pind, nband),2)/4; | ||
212 | rtmp = real(tmp); itmp = imag(tmp); | ||
213 | tmp = sqrt(rtmp.^2 + itmp.^2) .* exp(2 * sqrt(-1) * atan2(rtmp,itmp)); | ||
214 | rparents(:,nor) = vector(real(tmp)); | ||
215 | rparents(:,Nor+nor) = vector(imag(tmp)); | ||
216 | |||
217 | tmp = abs(tmp); | ||
218 | parents(:,nor) = vector(tmp - mean2(tmp)); | ||
219 | end | ||
220 | else | ||
221 | rparents = []; | ||
222 | parents = []; | ||
223 | end | ||
224 | end % if (cmask(3) | cmask(4)) | ||
225 | |||
226 | if cmask(3), | ||
227 | %% Adjust cross-correlation with MAGNITUDES at other orientations/scales: | ||
228 | cousins = reshape(apyr(cousinInd), [cousinSz Nor]); | ||
229 | nc = size(cousins,2); np = size(parents,2); | ||
230 | if (np == 0) | ||
231 | [cousins, snr3(niter,nsc)] = adjustCorr1s(cousins, C0(1:nc,1:nc,nsc), 2, p); | ||
232 | else | ||
233 | [cousins, snr3(niter,nsc), snr4(niter,nsc)] = ... | ||
234 | adjustCorr2s(cousins, C0(1:nc,1:nc,nsc), parents, Cx0(1:nc,1:np,nsc), 3, p); | ||
235 | end | ||
236 | if (var2(imag(cousins))/var2(real(cousins)) > 1e-6) | ||
237 | fprintf(1,'Non-trivial imaginary part, mag crossCorr, lev=%d!\n',nsc); | ||
238 | else | ||
239 | cousins = real(cousins); | ||
240 | ind = cousinInd; | ||
241 | apyr(ind) = vector(cousins); | ||
242 | end | ||
243 | |||
244 | %% Adjust autoCorr of mag responses | ||
245 | nband = (nsc-1)*Nor+2; | ||
246 | Sch = min(pind(nband,:)/2); | ||
247 | nz = sum(sum(~isnan(ace0(:,:,nsc,1)))); | ||
248 | lz = (sqrt(nz)-1)/2; | ||
249 | le = min(Sch/2-1,lz); | ||
250 | for nor = 1:Nor, | ||
251 | nband = (nsc-1)*Nor+nor+1; | ||
252 | ch = pyrBand(apyr,pind,nband); | ||
253 | [ch, snr1(niter,nband-1)] = modacor22(ch,... | ||
254 | ace0(la-le+1:la+le+1,la-le+1:la+le+1,nsc,nor), p); | ||
255 | ch = real(ch); | ||
256 | ind = pyrBandIndices(pind,nband); | ||
257 | apyr(ind) = ch; | ||
258 | %% Impose magnitude: | ||
259 | mag = apyr(ind) + magMeans0(nband); | ||
260 | mag = mag .* (mag>0); | ||
261 | pyr(ind) = pyr(ind) .* (mag./(abs(pyr(ind))+(abs(pyr(ind))<eps))); | ||
262 | end | ||
263 | end % cmask(3) | ||
264 | |||
265 | %% Adjust cross-correlation of REAL PARTS at other orientations/scales: | ||
266 | cousins = reshape(real(pyr(cousinInd)), [cousinSz Nor]); | ||
267 | Nrc = size(cousins,2); Nrp = size(rparents,2); | ||
268 | if cmask(4) & (Nrp ~= 0) | ||
269 | a3 = 0; a4 = 0; | ||
270 | for nrc = 1:Nrc, | ||
271 | cou = cousins(:,nrc); | ||
272 | [cou, s3, s4] = ... | ||
273 | adjustCorr2s(cou,mean(cou.^2),rparents,Crx0(nrc,1:Nrp,nsc), 3); | ||
274 | a3 = s3 + a3; | ||
275 | a4 = s4 + a4; | ||
276 | cousins(:,nrc) = cou; | ||
277 | end | ||
278 | snr4r(niter,nsc) = a4/Nrc; | ||
279 | end | ||
280 | if (var2(imag(cousins))/var2(real(cousins)) > 1e-6) | ||
281 | fprintf(1,'Non-trivial imaginary part, real crossCorr, lev=%d!\n',nsc); | ||
282 | else | ||
283 | %%% NOTE: THIS SETS REAL PART ONLY - signal is now NONANALYTIC! | ||
284 | pyr(cousinInd) = vector(cousins(1:Nor*cousinSz)); | ||
285 | end | ||
286 | |||
287 | %% Re-create analytic subbands | ||
288 | dims = pind(firstBnum,:); | ||
289 | ctr = ceil((dims+0.5)/2); | ||
290 | ang = mkAngle(dims, 0, ctr); | ||
291 | ang(ctr(1),ctr(2)) = -pi/2; | ||
292 | for nor = 1:Nor, | ||
293 | nband = (nsc-1)*Nor+nor+1; | ||
294 | ind = pyrBandIndices(pind,nband); | ||
295 | ch = pyrBand(pyr, pind, nband); | ||
296 | ang0 = pi*(nor-1)/Nor; | ||
297 | xang = mod(ang-ang0+pi, 2*pi) - pi; | ||
298 | amask = 2*(abs(xang) < pi/2) + (abs(xang) == pi/2); | ||
299 | amask(ctr(1),ctr(2)) = 1; | ||
300 | amask(:,1) = 1; | ||
301 | amask(1,:) = 1; | ||
302 | amask = fftshift(amask); | ||
303 | ch = ifft2(amask.*fft2(ch)); % "Analytic" version | ||
304 | pyr(ind) = ch; | ||
305 | end | ||
306 | |||
307 | %% Combine ori bands | ||
308 | bandNums = [1:Nor] + (nsc-1)*Nor+1; %ori bands only | ||
309 | ind1 = pyrBandIndices(pind, bandNums(1)); | ||
310 | indN = pyrBandIndices(pind, bandNums(Nor)); | ||
311 | bandInds = [ind1(1):indN(length(indN))]; | ||
312 | %% Make fake pyramid, containing dummy hi, ori, lo | ||
313 | fakePind = pind([bandNums(1), bandNums, bandNums(Nor)+1],:); | ||
314 | fakePyr = [zeros(prod(fakePind(1,:)),1);... | ||
315 | real(pyr(bandInds)); zeros(prod(fakePind(size(fakePind,1),:)),1)]; | ||
316 | ch = reconSFpyr(fakePyr, fakePind, [1]); % recon ori bands only | ||
317 | im = real(expand(im,2))/4; | ||
318 | im = im + ch; | ||
319 | vari = acr0(la+1:la+1,la+1:la+1,nsc); | ||
320 | if cmask(2), | ||
321 | if vari/var0 > 1e-4, | ||
322 | [im, snr2(niter,nsc)] = ... | ||
323 | modacor22(im, acr0(la-le+1:la+le+1,la-le+1:la+le+1,nsc), p); | ||
324 | else | ||
325 | im = im*sqrt(vari/var2(im)); | ||
326 | end | ||
327 | end % cmask(2) | ||
328 | im = real(im); | ||
329 | |||
330 | if cmask(1), | ||
331 | %% Fix marginal stats | ||
332 | if vari/var0 > 1e-4, | ||
333 | [im,snr7(niter,2*nsc-1)] = modskew(im,skew0p(nsc),p); % Adjusts skewness | ||
334 | [im,snr7(niter,2*nsc)] = modkurt(im,kurt0p(nsc),p); % Adjusts kurtosis | ||
335 | end | ||
336 | end % cmask(1) | ||
337 | |||
338 | end %END Coarse-to-fine loop | ||
339 | |||
340 | %% Adjust variance in HP, if higher than desired | ||
341 | if (cmask(2)|cmask(3)|cmask(4)), | ||
342 | ind = pyrBandIndices(pind,1); | ||
343 | ch = pyr(ind); | ||
344 | vHPR = mean2(ch.^2); | ||
345 | if vHPR > vHPR0, | ||
346 | ch = ch * sqrt(vHPR0/vHPR); | ||
347 | pyr(ind) = ch; | ||
348 | end | ||
349 | end % cmask | ||
350 | im = im + reconSFpyr(real(pyr), pind, [0]); %recon hi only | ||
351 | |||
352 | %% Pixel statistics | ||
353 | means = mean2(im); | ||
354 | vars = var2(im, means); | ||
355 | snr7(niter,2*(Nsc+1)+1) = snr(var0,var0-vars); | ||
356 | im = im-means; % Adjusts mean and variance | ||
357 | [mns mxs] = range2(im + mean0); | ||
358 | snr7(niter,2*(Nsc+1)+2) = snr(mx0-mn0,sqrt((mx0-mxs)^2+(mn0-mns)^2)); | ||
359 | if cmask(1), | ||
360 | im = im*sqrt(((1-p)*vars + p*var0)/vars); | ||
361 | end % cmaks(1) | ||
362 | im = im+mean0; | ||
363 | if cmask(1), | ||
364 | [im, snr7(niter,2*(Nsc+1)+3)] = modskew(im,skew0,p); % Adjusts skewness (keep mean and variance) | ||
365 | [im, snr7(niter,2*(Nsc+1)+4)] = modkurt(im,kurt0,p); % Adjusts kurtosis (keep mean and variance, | ||
366 | % but not skewness) | ||
367 | im = max(min(im,(1-p)*max(max(im))+p*mx0),... | ||
368 | (1-p)*min(min(im))+p*mn0); % Adjusts range (affects everything) | ||
369 | else | ||
370 | snr7(niter,2*(Nsc+1)+3) = snr(skew0,skew0-skew2(im)); | ||
371 | snr7(niter,2*(Nsc+1)+4) = snr(kurt0,kurt0-kurt2(im)); | ||
372 | end % cmask(1) | ||
373 | |||
374 | %% Force pixels specified by image mask | ||
375 | if (exist('imask') & ~isempty(imask) ) | ||
376 | im = mask.*reshape(imask(:,2 - (size(imask,2)==1)),size(im)) + ... | ||
377 | (1-mask).*im; | ||
378 | end | ||
379 | |||
380 | snr6(niter,1) = snr(im-mean0,im-prev_im); | ||
381 | |||
382 | if floor(log2(niter))==log2(niter), | ||
383 | nq = nq + 1; | ||
384 | imS(:,:,nq) = im; | ||
385 | end | ||
386 | |||
387 | tmp = prev_im; | ||
388 | prev_im=im; | ||
389 | |||
390 | figure(imf); | ||
391 | subplot(1,2,1); | ||
392 | showIm(im-tmp,'auto',1); title('Change'); | ||
393 | subplot(1,2,2); | ||
394 | showIm(im,'auto',1); title(sprintf('iteration %d/%d',niter,Niter)); | ||
395 | drawnow | ||
396 | |||
397 | % accelerator | ||
398 | alpha = 0.8; | ||
399 | im = im + alpha*(im - tmp); | ||
400 | |||
401 | commented = 1; % set it to 0 for displaying convergence of parameters in SNR (dB) | ||
402 | if ~commented, | ||
403 | |||
404 | % The graphs that appear reflect | ||
405 | % the relative distance of each parameter or group | ||
406 | % of parametersi, to the original's, in decibels. | ||
407 | % Note, however, that when the original parameters | ||
408 | % are close to zero, this measurement is meaningless. | ||
409 | % This is why in some cases it seems that some of | ||
410 | % the parameters do not converge at all. | ||
411 | |||
412 | figure(snrf); | ||
413 | if cmask(1) | ||
414 | subplot(171); plot(snr7); title('Mrgl stats'); | ||
415 | end | ||
416 | if cmask(2), | ||
417 | subplot(172); plot(snr2); title('Raw auto'); | ||
418 | end | ||
419 | if cmask(3), | ||
420 | subplot(173); plot(snr1); title('Mag auto'); | ||
421 | subplot(174); plot(snr3); title('Mag ori'); | ||
422 | subplot(175); plot(snr4); title('Mag scale'); | ||
423 | end | ||
424 | if (Nrp > 0) & cmask(4), | ||
425 | subplot(176); plot(snr4r); title('Phs scale'); | ||
426 | end | ||
427 | subplot(177); plot(snr6); title('Im change'); | ||
428 | drawnow | ||
429 | |||
430 | end % if ~commented | ||
431 | |||
432 | end %END MAIN LOOP | ||
433 | |||
434 | im = prev_im; | ||
435 | |||
436 | snrP = [snr7 snr2 snr1 snr3 snr4 snr4r snr6]; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/upBlur.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/upBlur.m new file mode 100755 index 0000000..948c2e1 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/upBlur.m | |||
@@ -0,0 +1,52 @@ | |||
1 | % RES = upBlur(IM, LEVELS, FILT) | ||
2 | % | ||
3 | % Upsample and blur an image. The blurring is done with filter | ||
4 | % kernel specified by FILT (default = 'binom5'), which can be a string | ||
5 | % (to be passed to namedFilter), a vector (applied separably as a 1D | ||
6 | % convolution kernel in X and Y), or a matrix (applied as a 2D | ||
7 | % convolution kernel). The downsampling is always by 2 in each | ||
8 | % direction. | ||
9 | % | ||
10 | % The procedure is applied recursively LEVELS times (default=1). | ||
11 | |||
12 | % Eero Simoncelli, 4/97. | ||
13 | |||
14 | function res = upBlur(im, nlevs, filt) | ||
15 | |||
16 | %------------------------------------------------------------ | ||
17 | %% OPTIONAL ARGS: | ||
18 | |||
19 | if (exist('nlevs') ~= 1) | ||
20 | nlevs = 1; | ||
21 | end | ||
22 | |||
23 | if (exist('filt') ~= 1) | ||
24 | filt = 'binom5'; | ||
25 | end | ||
26 | |||
27 | %------------------------------------------------------------ | ||
28 | |||
29 | if isstr(filt) | ||
30 | filt = namedFilter(filt); | ||
31 | end | ||
32 | |||
33 | if nlevs > 1 | ||
34 | im = upBlur(im,nlevs-1,filt); | ||
35 | end | ||
36 | |||
37 | if (nlevs >= 1) | ||
38 | if (any(size(im)==1)) | ||
39 | if (size(im,1)==1) | ||
40 | filt = filt'; | ||
41 | end | ||
42 | res = upConv(im,filt,'reflect1',(size(im)~=1)+1); | ||
43 | elseif (any(size(filt)==1)) | ||
44 | filt = filt(:); | ||
45 | res = upConv(im,filt,'reflect1',[2 1]); | ||
46 | res = upConv(res,filt','reflect1',[1 2]); | ||
47 | else | ||
48 | res = upConv(im,filt,'reflect1',[2 2]); | ||
49 | end | ||
50 | else | ||
51 | res = im; | ||
52 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/upConv.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/upConv.m new file mode 100755 index 0000000..10bea46 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/upConv.m | |||
@@ -0,0 +1,80 @@ | |||
1 | % RES = upConv(IM, FILT, EDGES, STEP, START, STOP, RES) | ||
2 | % | ||
3 | % Upsample matrix IM, followed by convolution with matrix FILT. These | ||
4 | % arguments should be 1D or 2D matrices, and IM must be larger (in | ||
5 | % both dimensions) than FILT. The origin of filt | ||
6 | % is assumed to be floor(size(filt)/2)+1. | ||
7 | % | ||
8 | % EDGES is a string determining boundary handling: | ||
9 | % 'circular' - Circular convolution | ||
10 | % 'reflect1' - Reflect about the edge pixels | ||
11 | % 'reflect2' - Reflect, doubling the edge pixels | ||
12 | % 'repeat' - Repeat the edge pixels | ||
13 | % 'zero' - Assume values of zero outside image boundary | ||
14 | % 'extend' - Reflect and invert | ||
15 | % 'dont-compute' - Zero output when filter overhangs OUTPUT boundaries | ||
16 | % | ||
17 | % Upsampling factors are determined by STEP (optional, default=[1 1]), | ||
18 | % a 2-vector [y,x]. | ||
19 | % | ||
20 | % The window over which the convolution occurs is specfied by START | ||
21 | % (optional, default=[1,1], and STOP (optional, default = | ||
22 | % step .* (size(IM) + floor((start-1)./step))). | ||
23 | % | ||
24 | % RES is an optional result matrix. The convolution result will be | ||
25 | % destructively added into this matrix. If this argument is passed, the | ||
26 | % result matrix will not be returned. DO NOT USE THIS ARGUMENT IF | ||
27 | % YOU DO NOT UNDERSTAND WHAT THIS MEANS!! | ||
28 | % | ||
29 | % NOTE: this operation corresponds to multiplication of a signal | ||
30 | % vector by a matrix whose columns contain copies of the time-reversed | ||
31 | % (or space-reversed) FILT shifted by multiples of STEP. See corrDn.m | ||
32 | % for the operation corresponding to the transpose of this matrix. | ||
33 | |||
34 | % Eero Simoncelli, 6/96. revised 2/97. | ||
35 | |||
36 | function result = upConv(im,filt,edges,step,start,stop,res) | ||
37 | |||
38 | %% THIS CODE IS NOT ACTUALLY USED! (MEX FILE IS CALLED INSTEAD) | ||
39 | |||
40 | %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'); | ||
41 | |||
42 | %------------------------------------------------------------ | ||
43 | %% OPTIONAL ARGS: | ||
44 | |||
45 | if (exist('edges') == 1) | ||
46 | if (strcmp(edges,'reflect1') ~= 1) | ||
47 | warning('Using REFLECT1 edge-handling (use MEX code for other options).'); | ||
48 | end | ||
49 | end | ||
50 | |||
51 | if (exist('step') ~= 1) | ||
52 | step = [1,1]; | ||
53 | end | ||
54 | |||
55 | if (exist('start') ~= 1) | ||
56 | start = [1,1]; | ||
57 | end | ||
58 | |||
59 | % A multiple of step | ||
60 | if (exist('stop') ~= 1) | ||
61 | stop = step .* (floor((start-ones(size(start)))./step)+size(im)) | ||
62 | end | ||
63 | |||
64 | if ( ceil((stop(1)+1-start(1)) / step(1)) ~= size(im,1) ) | ||
65 | error('Bad Y result dimension'); | ||
66 | end | ||
67 | if ( ceil((stop(2)+1-start(2)) / step(2)) ~= size(im,2) ) | ||
68 | error('Bad X result dimension'); | ||
69 | end | ||
70 | |||
71 | if (exist('res') ~= 1) | ||
72 | res = zeros(stop-start+1); | ||
73 | end | ||
74 | |||
75 | %------------------------------------------------------------ | ||
76 | |||
77 | tmp = zeros(size(res)); | ||
78 | tmp(start(1):step(1):stop(1),start(2):step(2):stop(2)) = im; | ||
79 | |||
80 | result = rconv2(tmp,filt) + res; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/var2.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/var2.m new file mode 100755 index 0000000..6957eff --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/var2.m | |||
@@ -0,0 +1,17 @@ | |||
1 | % V = VAR2(MTX,MEAN) | ||
2 | % | ||
3 | % Sample variance of a matrix. | ||
4 | % Passing MEAN (optional) makes the calculation faster. | ||
5 | |||
6 | function res = var2(mtx, mn) | ||
7 | |||
8 | if (exist('mn') ~= 1) | ||
9 | mn = mean2(mtx); | ||
10 | end | ||
11 | |||
12 | if (isreal(mtx)) | ||
13 | res = sum(sum(abs(mtx-mn).^2)) / max((prod(size(mtx)) - 1),1); | ||
14 | else | ||
15 | res = sum(sum(real(mtx-mn).^2)) + i*sum(sum(imag(mtx-mn).^2)); | ||
16 | res = res / max((prod(size(mtx)) - 1),1); | ||
17 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/vectify.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/vectify.m new file mode 100755 index 0000000..3664223 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/vectify.m | |||
@@ -0,0 +1,8 @@ | |||
1 | % [VEC] = columnize(MTX) | ||
2 | % | ||
3 | % Pack elements of MTX into a column vector. Just provides a | ||
4 | % function-call notatoin for the operation MTX(:) | ||
5 | |||
6 | function vec = columnize(mtx) | ||
7 | |||
8 | vec = mtx(:); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/vector.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/vector.m new file mode 100755 index 0000000..6168151 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/vector.m | |||
@@ -0,0 +1,7 @@ | |||
1 | % [VEC] = vector(MTX) | ||
2 | % | ||
3 | % Pack elements of MTX into a column vector. Same as VEC = MTX(:) | ||
4 | |||
5 | function vec = vector(mtx) | ||
6 | |||
7 | vec = mtx(:); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/wpyrBand.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/wpyrBand.m new file mode 100755 index 0000000..c027cca --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/wpyrBand.m | |||
@@ -0,0 +1,39 @@ | |||
1 | % RES = wpyrBand(PYR, INDICES, LEVEL, BAND) | ||
2 | % | ||
3 | % Access a subband from a separable QMF/wavelet pyramid. | ||
4 | % | ||
5 | % LEVEL (optional, default=1) indicates the scale (finest = 1, | ||
6 | % coarsest = wpyrHt(INDICES)). | ||
7 | % | ||
8 | % BAND (optional, default=1) indicates which subband (1=horizontal, | ||
9 | % 2=vertical, 3=diagonal). | ||
10 | |||
11 | % Eero Simoncelli, 6/96. | ||
12 | |||
13 | function im = wpyrBand(pyr,pind,level,band) | ||
14 | |||
15 | if (exist('level') ~= 1) | ||
16 | level = 1; | ||
17 | end | ||
18 | |||
19 | if (exist('band') ~= 1) | ||
20 | band = 1; | ||
21 | end | ||
22 | |||
23 | if ((pind(1,1) == 1) | (pind(1,2) ==1)) | ||
24 | nbands = 1; | ||
25 | else | ||
26 | nbands = 3; | ||
27 | end | ||
28 | |||
29 | if ((band > nbands) | (band < 1)) | ||
30 | error(sprintf('Bad band number (%d) should be in range [1,%d].', band, nbands)); | ||
31 | end | ||
32 | |||
33 | maxLev = wpyrHt(pind); | ||
34 | if ((level > maxLev) | (level < 1)) | ||
35 | error(sprintf('Bad level number (%d), should be in range [1,%d].', level, maxLev)); | ||
36 | end | ||
37 | |||
38 | band = band + nbands*(level-1); | ||
39 | im = pyrBand(pyr,pind,band); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/wpyrHt.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/wpyrHt.m new file mode 100755 index 0000000..476be83 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/wpyrHt.m | |||
@@ -0,0 +1,15 @@ | |||
1 | % [HEIGHT] = wpyrHt(INDICES) | ||
2 | % | ||
3 | % Compute height of separable QMF/wavelet pyramid with given index matrix. | ||
4 | |||
5 | % Eero Simoncelli, 6/96. | ||
6 | |||
7 | function [ht] = wpyrHt(pind) | ||
8 | |||
9 | if ((pind(1,1) == 1) | (pind(1,2) ==1)) | ||
10 | nbands = 1; | ||
11 | else | ||
12 | nbands = 3; | ||
13 | end | ||
14 | |||
15 | ht = (size(pind,1)-1)/nbands; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/wpyrLev.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/wpyrLev.m new file mode 100755 index 0000000..18f30ae --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/wpyrLev.m | |||
@@ -0,0 +1,30 @@ | |||
1 | % [LEV,IND] = wpyrLev(PYR,INDICES,LEVEL) | ||
2 | % | ||
3 | % Access a level from a separable QMF/wavelet pyramid. | ||
4 | % Return as an SxB matrix, B = number of bands, S = total size of a band. | ||
5 | % Also returns an Bx2 matrix containing dimensions of the subbands. | ||
6 | |||
7 | % Eero Simoncelli, 6/96. | ||
8 | |||
9 | function [lev,ind] = wpyrLev(pyr,pind,level) | ||
10 | |||
11 | if ((pind(1,1) == 1) | (pind(1,2) ==1)) | ||
12 | nbands = 1; | ||
13 | else | ||
14 | nbands = 3; | ||
15 | end | ||
16 | |||
17 | if ((level > wpyrHt(pind)) | (level < 1)) | ||
18 | error(sprintf('Level number must be in the range [1, %d].', wpyrHt(pind))); | ||
19 | end | ||
20 | |||
21 | firstband = 1 + nbands*(level-1) | ||
22 | firstind = 1; | ||
23 | for l=1:firstband-1 | ||
24 | firstind = firstind + prod(pind(l,:)); | ||
25 | end | ||
26 | |||
27 | |||
28 | ind = pind(firstband:firstband+nbands-1,:); | ||
29 | lev = pyr(firstind:firstind+sum(prod(ind'))-1); | ||
30 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlab/zconv2.m b/SD-VBS/benchmarks/texture_synthesis/src/matlab/zconv2.m new file mode 100755 index 0000000..f678d89 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlab/zconv2.m | |||
@@ -0,0 +1,41 @@ | |||
1 | % RES = ZCONV2(MTX1, MTX2, CTR) | ||
2 | % | ||
3 | % Convolution of two matrices, with boundaries handled as if the larger mtx | ||
4 | % lies in a sea of zeros. Result will be of size of LARGER vector. | ||
5 | % | ||
6 | % The origin of the smaller matrix is assumed to be its center. | ||
7 | % For even dimensions, the origin is determined by the CTR (optional) | ||
8 | % argument: | ||
9 | % CTR origin | ||
10 | % 0 DIM/2 (default) | ||
11 | % 1 (DIM/2)+1 (behaves like conv2(mtx1,mtx2,'same')) | ||
12 | |||
13 | % Eero Simoncelli, 2/97. | ||
14 | |||
15 | function c = zconv2(a,b,ctr) | ||
16 | |||
17 | if (exist('ctr') ~= 1) | ||
18 | ctr = 0; | ||
19 | end | ||
20 | |||
21 | if (( size(a,1) >= size(b,1) ) & ( size(a,2) >= size(b,2) )) | ||
22 | large = a; small = b; | ||
23 | elseif (( size(a,1) <= size(b,1) ) & ( size(a,2) <= size(b,2) )) | ||
24 | large = b; small = a; | ||
25 | else | ||
26 | error('one arg must be larger than the other in both dimensions!'); | ||
27 | end | ||
28 | |||
29 | ly = size(large,1); | ||
30 | lx = size(large,2); | ||
31 | sy = size(small,1); | ||
32 | sx = size(small,2); | ||
33 | |||
34 | %% These values are the index of the small mtx that falls on the | ||
35 | %% border pixel of the large matrix when computing the first | ||
36 | %% convolution response sample: | ||
37 | sy2 = floor((sy+ctr+1)/2); | ||
38 | sx2 = floor((sx+ctr+1)/2); | ||
39 | |||
40 | clarge = conv2(large,small); | ||
41 | c = clarge(sy2:ly+sy2-1, sx2:lx+sx2-1); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/ChangeLog b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/ChangeLog new file mode 100755 index 0000000..f20c499 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/ChangeLog | |||
@@ -0,0 +1,430 @@ | |||
1 | Log of changes made to matlabPyrTools code | ||
2 | (important changes marked with **) | ||
3 | ----------------------------------------------------------------------- | ||
4 | 2004-10-14 Eero Simoncelli <eero@sesto.cns.nyu.edu> | ||
5 | |||
6 | * Made new tarfile (version 1.3) | ||
7 | |||
8 | * Incorporated complex-valued steerable pyramid code (buildSCFpyr, | ||
9 | buildSCFpyrLevs,reconSCFpyr) written by Javier Portilla in 9/97, | ||
10 | and used in our work on texture representation/synthesis | ||
11 | (Portilla&Simoncelli, Int'l Journal of Computer Vision, | ||
12 | 40(1):49-71, Dec 2000). | ||
13 | |||
14 | * Incorporated imGradient.m from personal code. | ||
15 | |||
16 | * reagan.pgm out. feynam.pgm in | ||
17 | |||
18 | 2004-03-20 Eero Simoncelli <eero@sesto.cns.nyu.edu> | ||
19 | |||
20 | * blur.m added (just calls blurDn and then upBlur). | ||
21 | |||
22 | 2003-08-06 Eero Simoncelli <eero@sesto.cns.nyu.edu> | ||
23 | |||
24 | * blurDn.m (filt): Forced correct scaling of filters in 1D | ||
25 | |||
26 | 2003-05-28 Eero Simoncelli <eero@ferrando.cns.nyu.edu> | ||
27 | |||
28 | * incorporated setPyrBand.m from local code | ||
29 | |||
30 | 2002-10-01 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
31 | |||
32 | * incorporated clip.m from local code | ||
33 | |||
34 | 2002-09-18 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
35 | |||
36 | * pointOp.m: Added the new 'extrap' option for matlab's interp1 to | ||
37 | make this m-file version more compatible with the mex version. | ||
38 | |||
39 | Wed Aug 28 2002 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
40 | |||
41 | * var2.m: now returns zero (instead of error) for matrix of size 1. | ||
42 | * function VECTORIZE renamed to VECTIFY, since it was colliding | ||
43 | with a function introduced in standard matlab. | ||
44 | |||
45 | Dec 27 2001 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
46 | |||
47 | * Modified calls to upConv in reconSpyr.m and reconSpyrLevs.m so | ||
48 | that the returned result is bound. Previously, had relied on the | ||
49 | MEX version of upConv to destructively modify the result array, | ||
50 | users had been getting errors because they were using the m-file | ||
51 | version of upConv. | ||
52 | |||
53 | Wed Sep 19 2001 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
54 | |||
55 | * buildSFpyrLevs/reconSFpyrLevs: replace use of "i" with sqrt(-1), to | ||
56 | avoid problems if user rebinds it! | ||
57 | |||
58 | Wed Mar 28 10:22:01 2001 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
59 | |||
60 | * Moved innerProd.m and all associated MEX files from the | ||
61 | matlabLocal source tree into matlabPyrTools. | ||
62 | * Added innerProd to Contents.m | ||
63 | * Updated/clarified WARNINGS in all *.m files that have MEX versions. | ||
64 | |||
65 | Tue Mar 27 11:21:53 2001 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
66 | |||
67 | * Incorporated Windows MEX files (*.dll) into MEX subdirectory. | ||
68 | Windows users should either copy these into the main directory, | ||
69 | or put the MEX subdirectory in their matlab path. | ||
70 | |||
71 | Fri Mar 23 14:46:16 2001 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
72 | |||
73 | * buildSFpyrLevs.m, reconSFpyrLevs.m: shift the raised-cosine | ||
74 | lookup table (Xrcos) instead of incrementing the log-radial image | ||
75 | (log_rad). THis is more efficient... | ||
76 | |||
77 | Fri Oct 1 19:37:03 1999 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
78 | |||
79 | * upConv.m: Did not return correct size result when STOP argument | ||
80 | was passed. Thanks to hertzman@mrl.nyu.edu for pointing this out. | ||
81 | |||
82 | Fri Sep 17 15:53:26 1999 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
83 | |||
84 | * buildSFpyrLevs.m: Changed lutsize to 1024, giving a slight | ||
85 | increase in accuracy. | ||
86 | |||
87 | Thu Feb 25 18:10:38 1999 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
88 | |||
89 | * histo1.m: Modified histo.m to be more compatible (but still not | ||
90 | exactly the same) as the MEX file version. | ||
91 | |||
92 | Fri Jun 12 21:15:39 1998 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
93 | |||
94 | * TUTORIALS pyramids.m upgraded. | ||
95 | |||
96 | Tue Feb 17 13:22:28 1998 Eero Simoncelli <eero.simoncelli@nyu.edu> | ||
97 | |||
98 | * showIm.m: Dims are now printed followed by the zoom factor. | ||
99 | |||
100 | Mon Oct 13 14:49:51 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
101 | |||
102 | * mkSquare.m: Modified to do raised-cosine soft threshold | ||
103 | transitions. | ||
104 | |||
105 | Tue Oct 7 10:13:51 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> | ||
106 | |||
107 | * upConv.m: Argument order was wrong (this function is not used | ||
108 | anyway, unless you don't compile the MEX code). - Thanks to | ||
109 | farid@psyche.mit.edu for pointing this out. | ||
110 | |||
111 | Thu Sep 25 16:09:49 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
112 | |||
113 | * MEX/wrap.c: Changed #include <malloc.h> to <stdlib.h>, as | ||
114 | suggested by David Brainard. * Incorporated Mac-compiled mex | ||
115 | files, courtesy of David Brainard. | ||
116 | |||
117 | Sat Sep 6 16:10:25 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> | ||
118 | |||
119 | * MEX/convolve.h: abstracted out type of images with typedef image_type. | ||
120 | Added ansi declarations. | ||
121 | |||
122 | Fri Aug 29 13:49:16 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
123 | |||
124 | ** showIm.m: Modified to behave better under resizing (and printing): | ||
125 | resets axis units to "normalized". | ||
126 | |||
127 | Thu Aug 28 22:56:52 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
128 | |||
129 | ** MEX/edges.c: reflect1, reflect2, repeat, extend upgraded to work | ||
130 | properly for non-symmetric filters. reflect2 and extend were also | ||
131 | broken for upConv. Added qreflect2 to handle even-length QMF's | ||
132 | which broke under the reflect2 modification. | ||
133 | * Added example code to TUTORIALS/matlabPyrTools to illustrate the | ||
134 | boundary-handling behavior... | ||
135 | |||
136 | Thu Aug 21 13:34:17 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> | ||
137 | |||
138 | * var2, skew2, kurt2: modified to return complex values for complex images. | ||
139 | * imStats.m: now gives an error for complex args. | ||
140 | |||
141 | Thu Aug 14 15:24:29 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
142 | |||
143 | * Modified shift.m: negated the meaning of the offset parameter, | ||
144 | such that RES=shift(MTX,OFFSET) means RES(POS)=MTX(POS-OFFSET) | ||
145 | (this is more intuitive). | ||
146 | |||
147 | Thu Jul 10 17:06:52 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
148 | |||
149 | * Modified MEX/Makefile-* to be consistent with matlab5: | ||
150 | - call mex instead of cmex | ||
151 | - use -V4 flag (creating matlab v4 compatible binaries) | ||
152 | |||
153 | * showIm.m (xlbl_offset): Modified to use "points" units, so that | ||
154 | printed images look correct. Still slightly busted for arbitrary figure | ||
155 | window sizes and for printing. | ||
156 | |||
157 | * Modified upConv.c: does not return ANYTHING if you pass a result | ||
158 | argument (this had been causing occasional problems with matlab's | ||
159 | memory manager). | ||
160 | |||
161 | Mon Jun 30 12:09:30 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
162 | |||
163 | * reconSFpyr.m (res): now returns real part (oops). | ||
164 | |||
165 | * reconSpyrLevs.m (maxLev): got rid of superfluous nbands argument | ||
166 | (can be calculated from bfilts). | ||
167 | |||
168 | Mon May 26 12:29:54 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
169 | |||
170 | * showIm.m/pgmWrite.m: Modified 'auto3'-scaling to use a | ||
171 | histogram. This gives a significant speedup. | ||
172 | |||
173 | * fixed a few minor bugs in the TUTORIALS, having to do with | ||
174 | matching image sizes to the machine speed... | ||
175 | |||
176 | Sat May 10 17:27:25 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
177 | |||
178 | * pgmWrite.m: fixed auto-scaling bug. Added new scaling | ||
179 | calculations, parallel to those of imShow. | ||
180 | |||
181 | Fri May 9 09:02:56 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
182 | |||
183 | * buildSFpyr.m: Changed NBANDS argument to be ORDER, which is one | ||
184 | less than the number of orientation bands. This is consistent | ||
185 | with the derivative order, and the labels on the spNFilters files. | ||
186 | |||
187 | Tue May 6 19:08:18 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
188 | |||
189 | ** Added buildSFpyr, reconSFpyr: Steerable pyramids constructed | ||
190 | in the Fourier domain. Radial functions tile, with a | ||
191 | raised-cosine falloff. Angular functions are | ||
192 | cos(theta-k\pi/(K+1))^K, where K is the order (number of bands | ||
193 | minus 1). Compared to the convolution version: | ||
194 | + Reconstruction is exact (within floating point errors) | ||
195 | + Can produce any number of orientation bands. | ||
196 | - Typically slower. | ||
197 | - Boundary-handling must be circular. | ||
198 | Could be made much more efficient by taking advantage of symmetries in | ||
199 | the fft! | ||
200 | |||
201 | * Added example usage of Fourier steerable pyramid to TUTORIALS/pyramids.m | ||
202 | |||
203 | * steer.m: fixed for harmonic lists including zero. | ||
204 | |||
205 | Sun May 4 15:16:10 1997 Eero Simoncelli <eero@ferrando.cns.nyu.edu> | ||
206 | |||
207 | * MEX/Makefile-linux: created. | ||
208 | |||
209 | * spyrHt, spyrNumBands: Modified to return 0 for pyramids of height 0. | ||
210 | |||
211 | * reconWpyr.m: utilize desctructive addition in calls to upConv. | ||
212 | |||
213 | * reconSpyr.m: Added error check to ensure consistancy between | ||
214 | pyramid and filter file. Utilize destructive addition in upConv | ||
215 | call on highpass band. Modified to work properly with pyramids of | ||
216 | height 0. | ||
217 | |||
218 | Mon Apr 28 13:38:10 1997 Eero Simoncelli <eero@ferrando.cns.nyu.edu> | ||
219 | |||
220 | * lplot.m: modified to handle complex vectors, use standard MatLab | ||
221 | indices, and show minimal axes. Added xrange parameter to allow | ||
222 | adjustment of X axis labeling. | ||
223 | |||
224 | Sun Apr 27 20:20:41 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
225 | |||
226 | * var2, skew2, kurt2: enhanced to work on complex matrices. | ||
227 | |||
228 | Sat Apr 26 11:16:12 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
229 | |||
230 | * Changed parent directory (and distribution) name: | ||
231 | matlabImTools -> matlabPyrTools | ||
232 | |||
233 | * namedFilter.m: Added two more Daubechies filters, and modified | ||
234 | names to match the reference (e.g., daub2 is now a 4-tap filter). | ||
235 | |||
236 | * Added vectorize.m: trivial function to pack matrix into vector (i.e., | ||
237 | computes mtx(:)). | ||
238 | |||
239 | * Added upBlur.m: Upsample and blur (parallels blurDn). | ||
240 | |||
241 | Sun Apr 13 14:23:38 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> | ||
242 | |||
243 | * TUTORIALS/pyramids.m: Added plots of Fourier spectra for Wavelet bases. | ||
244 | |||
245 | * make-tar-file: switched from compress to gzip for the | ||
246 | distribution tarfile. | ||
247 | |||
248 | * namedFilter.m: Added a few even-length QMF's from Johnston80. | ||
249 | |||
250 | Fri Apr 11 19:16:21 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> | ||
251 | |||
252 | * buildWpyr.m, reconWpyr.m: Modified slightly, so that subsampling | ||
253 | lattice is better for even-length filters. | ||
254 | |||
255 | * TUTORIALS/pyramids.m: Substantially overhauled. | ||
256 | |||
257 | Thu Apr 10 15:20:23 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> | ||
258 | |||
259 | * blurDn.m: added this function to downsample an image by a factor | ||
260 | 2^L. | ||
261 | |||
262 | * Fixed minor bug in upConv.m: errors in image size checking. | ||
263 | |||
264 | Mon Apr 7 13:25:37 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
265 | |||
266 | * Changed TUTORIALS/matlabImTools.m to use histo.mex instead of | ||
267 | matlab's hist. | ||
268 | |||
269 | Wed Apr 2 13:20:55 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
270 | |||
271 | ** Incorporated Denis Pelli's ThinkC and MetroWorks projects for | ||
272 | Macintosh versions of the MEX code, along with MEX binaries. These | ||
273 | are included as an HQX'ed self-extracting archive | ||
274 | (Macintosh-MEX.sit.hqx), in the MEX subdirectory. | ||
275 | |||
276 | Tue Apr 1 15:35:31 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> | ||
277 | |||
278 | * edges.c: modified by Denis Pelli to support THINK C. * edges.c: | ||
279 | |||
280 | * histo.c, upConv.c, corrDn.c: minor changes in error message | ||
281 | printouts, to work around bugs in THINK C. | ||
282 | |||
283 | * Included Denis Pelli's MacReadMe file in the MEX subdirectory, | ||
284 | which gives instructions for MEX file compilation on a MacIntosh | ||
285 | (PPC or 68k). | ||
286 | |||
287 | * wrap.c, convolve.c, edges.c: added explicit int function | ||
288 | declarations, and return values. | ||
289 | |||
290 | * range2.m/range2.c: A MEX function for fast min/max computation. | ||
291 | Adjusted entropy2.m, histo.m, imStats.m, pgmWrite.m, showIm.m, | ||
292 | showLpyr.m, showSpyr.m, showWpyr.m to call it. | ||
293 | |||
294 | Thu Mar 27 17:23:05 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
295 | |||
296 | ** histo.m/histo.c: Added MEX function HISTO, a fast replacement | ||
297 | for matlab's HIST function. Modified histoMatch.m, entropy2.m to | ||
298 | call it. | ||
299 | |||
300 | * Changed main directory name to matlabImTools. | ||
301 | |||
302 | * Added TUTORIALS/README file. | ||
303 | |||
304 | Wed Mar 19 14:19:51 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
305 | |||
306 | * Changed directory name: MEX_SRC -> MEX | ||
307 | |||
308 | Wed Mar 12 17:00:03 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
309 | |||
310 | * mkGaussian.m: fixed another (X,Y) bug: both dimensions and | ||
311 | cov/mean are now specified in [y,x] order. | ||
312 | |||
313 | Tue Mar 11 19:08:17 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> | ||
314 | |||
315 | * showSpyr.m: Fixed a bug that was dropping display of one | ||
316 | orientation band when there were more than 2 of them! | ||
317 | |||
318 | Mon Mar 10 19:08:24 1997 Eero Simoncelli <eero@chrysothemis.cims.nyu.edu> | ||
319 | |||
320 | * Added shift.m | ||
321 | |||
322 | * makeSteerMtx -> steerDir2HarmMtx | ||
323 | |||
324 | * Added TUTORIALS/matlab-EPS.m: examples using the code in this | ||
325 | distribution. | ||
326 | |||
327 | Sun Mar 9 17:49:18 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
328 | |||
329 | ** showIm.m: | ||
330 | - args: changed order so that NSHADES is last. | ||
331 | - TITLES: Can now pass a string for IM, which will be evaluated | ||
332 | in the global environment to get the matrix. The string is | ||
333 | used as a title. MATLAB v.5 ONLY!!! | ||
334 | - Added 'auto3' RANGE value, that scales based on percentiles. | ||
335 | THis is more robust to outliers than 'auto2' or 'auto1'. | ||
336 | |||
337 | * pixelAxes.m: Made a more serious attempt to reverse-engineer | ||
338 | Mathworks' image pixelization. It is improved, but still makes | ||
339 | occasional errors. | ||
340 | |||
341 | * Added skew2.m. | ||
342 | |||
343 | Fri Mar 7 10:11:07 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
344 | |||
345 | * pixelAxes.m: Modified to take an optional | ||
346 | ZOOM argument. Fixed dimension ordering bug | ||
347 | (positions are reported (x,y), but mtx dims are (y,x)!) | ||
348 | |||
349 | * showIm.m: Added an optional ZOOM argument. | ||
350 | |||
351 | Thu Mar 6 14:17:19 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
352 | |||
353 | * Added showLpyr, showWpyr, showSpyr. Modified | ||
354 | TUTORIALS/pyramids.m to use them. | ||
355 | |||
356 | * added pixelAxes.m: Adjusts size (in pixels) of currently | ||
357 | displayed image to be a multiple of the matrix dimensions, | ||
358 | thus eliminating display aliasing artifacts. | ||
359 | This is now called by all the "show" commands. | ||
360 | |||
361 | Mon Mar 3 17:33:25 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
362 | |||
363 | * Fixed bug in pgmWrite (dimensions were written in reverse order). | ||
364 | |||
365 | * Fixed bug in showIm (X and Y coords were swapped on label display). | ||
366 | |||
367 | * Fixed bug in reconLpyr (swapped X and Y coords on int_sz) | ||
368 | |||
369 | * Changed calls to "reshape" to pass dimensions individually -- | ||
370 | older version of matlab do not accept the reshape(mtx,[y x]) form. | ||
371 | |||
372 | * Fixed bug in mkDisc: sz a scalar. | ||
373 | |||
374 | * Added ifftshift.m | ||
375 | |||
376 | Fri Feb 28 11:07:20 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
377 | |||
378 | * Re-worked TUTORIALS/pyramids.m | ||
379 | |||
380 | * buildGpyr and buildLpyr now use 1+maxPyrHt for default height. | ||
381 | |||
382 | * Fixed buildGpyr to work on 1D signals. | ||
383 | |||
384 | ** Gaussian/Laplacian/Wavelet pyramid build and recon functions: | ||
385 | - work properly with new corrDn/upConv. | ||
386 | - use separable convolutions | ||
387 | - use destructive modification ability of upConv (less memory | ||
388 | allocation) | ||
389 | |||
390 | * modulateFlipShift -> modulateFlip. | ||
391 | |||
392 | * added lpyrHt, wpyrHt, spyrHt to return number of levels in a pyramid. | ||
393 | |||
394 | Thu Feb 27 15:39:53 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
395 | |||
396 | * Changed angular coordinate systems to CLOCKWISE in mkRamp, | ||
397 | mkTheta, mkSine, mkSquare. This is unnatural for screen viewing, | ||
398 | but consistent with an origin in the upper left corner of the | ||
399 | image, which is the way one addresses the underlying matrix. | ||
400 | |||
401 | * mkSine and mkSquare can now take a frequency vector or the | ||
402 | period and direction args | ||
403 | |||
404 | Tue Feb 25 11:58:33 1997 Eero Simoncelli <eero@servilia.cns.nyu.edu> | ||
405 | |||
406 | ** Rewrote corrDn/upConv C routines: | ||
407 | - more efficient | ||
408 | - changed START parameters to have [1 1] origin, consistent with | ||
409 | matlab | ||
410 | - added STOP parameters | ||
411 | - upConv allows destructive modification of a result arg | ||
412 | - changed order of other params (sorry) | ||
413 | - wrote test file conv_test.m | ||
414 | * wrote zconv2.m | ||
415 | |||
416 | Wed Aug 19 20:39:15 1996 Eero Simoncelli (eero@tarpon.cis.upenn.edu) | ||
417 | |||
418 | ** Added "pointOp" function (MUCH faster than interp1). | ||
419 | ** Added "histoMatch" function. | ||
420 | |||
421 | Fri Aug 2 00:56:31 1996 Eero Simoncelli (eero@tarpon.cis.upenn.edu) | ||
422 | |||
423 | * Changed all function/file-names to be of the form "fooBar". * | ||
424 | Fixed entropy2.m (busted due to typo). | ||
425 | |||
426 | Original convolution code was written in Spring 1986, and comes from | ||
427 | OBVIUS (Object-Based Vision and Image Understanding System), an | ||
428 | interactive image-processing system written in Common Lisp (with calls | ||
429 | to C code). | ||
430 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/Contents.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/Contents.m new file mode 100755 index 0000000..d19f067 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/Contents.m | |||
@@ -0,0 +1,107 @@ | |||
1 | % Image and Multi-scale Pyramid Tools | ||
2 | % Version 1.3, October 2004. | ||
3 | % Created: Early Spring, 1996. Eero Simoncelli, eero.simoncelli@nyu.edu | ||
4 | % | ||
5 | % See README file for brief description. | ||
6 | % See ChangeLog file for latest modifications. | ||
7 | % See TUTORIALS subdirectory for demonstrations. | ||
8 | % Type "help <command-name>" for documentation on individual commands. | ||
9 | % ----------------------------------------------------------------- | ||
10 | % Synthetic Images (matrices): | ||
11 | % mkImpulse - Make an image containing an impulse. | ||
12 | % mkRamp - Make an image containing a ramp function. | ||
13 | % mkR - Make an image containing distance from the origin. | ||
14 | % mkAngle - Make an image containing angle about origin. | ||
15 | % mkDisc - Make an image containing a disk image. | ||
16 | % mkGaussian - Make an image containing a Gaussian function. | ||
17 | % mkZonePlate - Make an image containing a zone plate (cos(r^2)). | ||
18 | % mkAngularSine - Make an image containing an angular sine wave (pinwheel). | ||
19 | % mkSine - Make an image containing a sine grating. | ||
20 | % mkSquare - Make an image containing a square grating. | ||
21 | % mkFract - Make an image containing fractal (1/f) noise. | ||
22 | % | ||
23 | % Point Operations: | ||
24 | % clip - clip values to a range. | ||
25 | % pointOp - Lookup table (much faster than interp1) [MEX file] | ||
26 | % histo - Efficient histogram computation [MEX file] | ||
27 | % histoMatch - Modify matrix elements to match specified histogram stats. | ||
28 | % | ||
29 | % Convolution (first two are significantly faster): | ||
30 | % corrDn - Correlate & downsample with boundary-handling [MEX file] | ||
31 | % upConv - Upsample & convolve with boundary-handling [MEX file] | ||
32 | % blurDn - Blur and subsample a signal/image. | ||
33 | % upBlur - Upsample and blur a signal/image. | ||
34 | % blur - Multi-scale blurring, calls blurDn and then upBlur. | ||
35 | % cconv2 - Circular convolution. | ||
36 | % rconv2 - Convolution with reflected boundaries. | ||
37 | % zconv2 - Convolution assuming zeros beyond image boundaries. | ||
38 | % | ||
39 | % General pyramids: | ||
40 | % pyrLow - Access lowpass subband from (any type of) pyramid | ||
41 | % pyrBand - Access a subband from (any type of) pyramid | ||
42 | % setPyrBand - Insert an image into (any type of) pyramid as a subband | ||
43 | % pyrBandIndices - Returns indices for given band in a pyramid vector | ||
44 | % maxPyrHt - compute maximum number of scales in a pyramid | ||
45 | % | ||
46 | % Gaussian/Laplacian Pyramids: | ||
47 | % buildGpyr - Build a Gaussian pyramid of an input signal/image. | ||
48 | % buildLpyr - Build a Laplacian pyramid of an input signal/image. | ||
49 | % reconLpyr - Reconstruct (invert) the Laplacian pyramid transform. | ||
50 | % | ||
51 | % Separable orthonormal QMF/wavelet Pyramids: | ||
52 | % buildWpyr - Build a separable wavelet representation of an input signal/image. | ||
53 | % reconWpyr - Reconstruct (invert) the wavelet transform. | ||
54 | % wpyrBand - Extract a single band of the wavelet representation. | ||
55 | % wpyrLev - Extract (packed) subbands at a particular level | ||
56 | % wpyrHt - Number of levels (height) of a wavelet pyramid. | ||
57 | % | ||
58 | % Steerable Pyramids: | ||
59 | % buildSpyr - Build a steerable pyramid representation of an input image. | ||
60 | % reconSpyr - Reconstruct (invert) the steerable pyramid transform. | ||
61 | % buildSFpyr - Build a steerable pyramid representation in the Fourier domain. | ||
62 | % reconSFpyr - Reconstruct (invert) the (Fourier domain) steerable pyramid transform. | ||
63 | % spyrBand - Extract a single band from a steerable pyramid. | ||
64 | % spyrHigh - Highpass residual band. | ||
65 | % spyrLev - A whole level (i.e., all images at a given scale) of a steerable pyramid. | ||
66 | % spyrHt - Number of levels (height) of a steerable pyramid. | ||
67 | % spyrNumBands - Number of orientation bands in a steerable pyramid. | ||
68 | % | ||
69 | % Steerable filters / derivatives: | ||
70 | % imGradient - Compute gradient of image using directionally accurete filters. | ||
71 | % steer - Steer filters (or responses). | ||
72 | % steer2HarmMtx - Construct a matrix mapping direcional basis to angular harmonics. | ||
73 | % | ||
74 | % Filters: | ||
75 | % binomialFilter - returns a filter of binomial coefficients. | ||
76 | % namedFilter - some typical Laplacian/Wavelet pyramid filters | ||
77 | % spNFilters - Set of Nth order steerable pyramid filters. | ||
78 | % derivNFiltersS - Matched set of S-tap 1D derivatives, orders 0 to N. | ||
79 | % | ||
80 | % Display: | ||
81 | % showIm - Display a matrix (real or complex) as grayscale image(s). | ||
82 | % Displays dimensions, subsampling, and range of pixel values. | ||
83 | % showLpyr - Display a Laplacian pyramid. | ||
84 | % showWpyr - Display a separable wavelet pyramid. | ||
85 | % showSpyr - Display a steerable pyramid. | ||
86 | % lplot - "lollipop" plot. | ||
87 | % nextFig - Make next figure window current. | ||
88 | % pixelAxes - Make image display use an integer number of pixels | ||
89 | % per sample to avoid resampling artifacts. | ||
90 | % | ||
91 | % Statistics (for 2D Matrices): | ||
92 | % range2 - Min and max of image (matrix) [MEX file] | ||
93 | % mean2 - Sample mean of an image (matrix). | ||
94 | % var2 - Sample variance of an image (matrix). | ||
95 | % skew2 - Sample skew (3rd moment / variance^1.5) of an image (matrix). | ||
96 | % kurt2 - Sample kurtosis (4th moment / variance^2) of an image (matrix). | ||
97 | % entropy2 - Sample entropy of an image (matrix). | ||
98 | % imStats - Report sample statistics of an image, or pair of images. | ||
99 | % | ||
100 | % Miscellaneous: | ||
101 | % pgmRead - Load a "pgm" image into a MatLab matrix [try einstein.pgm,feynman.pgm] | ||
102 | % pgmWrite - Write a MatLab matrix to a "pgm" image file. | ||
103 | % shift - circular shift a 2D matrix by an arbitrary amount. | ||
104 | % vectify - pack matrix into column vector (i.e., function to compute mtx(:)). | ||
105 | % ifftshift - inverse of MatLab's FFTSHIFT (differs for odd-length dimensions) | ||
106 | % rcosFn - return a lookup table of a raised-cosine threshold fn. | ||
107 | % innerProd - Compute M'*M efficiently (i.e., do not copy) [MEX file] | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/-MacReadMe b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/-MacReadMe new file mode 100755 index 0000000..898dc0c --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/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/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/.AppleDouble/.Parent b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/.AppleDouble/.Parent new file mode 100755 index 0000000..f242a99 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/.AppleDouble/.Parent | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/.FBCIndex b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/.FBCIndex new file mode 100755 index 0000000..848736b --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/.FBCIndex | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/.FBCLockFolder/.FBCSemaphoreFile b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/.FBCLockFolder/.FBCSemaphoreFile new file mode 100755 index 0000000..ab2c684 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/.FBCLockFolder/.FBCSemaphoreFile | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/Makefile-linux b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/Makefile-linux new file mode 100755 index 0000000..726dd31 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/Makefile-linux | |||
@@ -0,0 +1,39 @@ | |||
1 | MLAB = /usr/local/matlab5.1 | ||
2 | |||
3 | MXSFX = mexlx | ||
4 | MEX = ${MLAB}/bin/mex | ||
5 | |||
6 | MFLAGS = -V4 | ||
7 | INC = -I ${MLAB}/extern/include | ||
8 | LIB = -L ${MLAB}/extern/lib | ||
9 | |||
10 | CC = gcc -Wall -pedantic | ||
11 | C_OPTIMIZE_SWITCH = -O2 ## For GCC | ||
12 | CFLAGS = ${C_OPTIMIZE_SWITCH} ${INC} ${LIB} | ||
13 | |||
14 | all: corrDn.${MXSFX} upConv.${MXSFX} pointOp.${MXSFX} \ | ||
15 | histo.${MXSFX} range2.${MXSFX} | ||
16 | |||
17 | clean: | ||
18 | /bin/rm *.o | ||
19 | |||
20 | corrDn.${MXSFX}: corrDn.o wrap.o convolve.o edges.o | ||
21 | ${MEX} ${MFLAGS} corrDn.o wrap.o convolve.o edges.o | ||
22 | |||
23 | upConv.${MXSFX}: upConv.o wrap.o convolve.o edges.o | ||
24 | ${MEX} ${MFLAGS} upConv.o wrap.o convolve.o edges.o | ||
25 | |||
26 | pointOp.${MXSFX}: pointOp.o | ||
27 | ${MEX} ${MFLAGS} pointOp.o | ||
28 | |||
29 | histo.${MXSFX}: histo.o | ||
30 | ${MEX} ${MFLAGS} histo.o | ||
31 | |||
32 | range2.${MXSFX}: range2.o | ||
33 | ${MEX} ${MFLAGS} range2.o | ||
34 | |||
35 | convolve.o wrap.o edges.o: convolve.h | ||
36 | |||
37 | %.o : %.c | ||
38 | ${CC} -c ${CFLAGS} $< | ||
39 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/Makefile-ml6-linux b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/Makefile-ml6-linux new file mode 100755 index 0000000..f596ad7 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/Makefile-ml6-linux | |||
@@ -0,0 +1,39 @@ | |||
1 | MLAB = /usr/local/matlab6.0 | ||
2 | |||
3 | MXSFX = mexglx | ||
4 | MEX = ${MLAB}/bin/mex | ||
5 | |||
6 | MFLAGS = -V4 | ||
7 | INC = -I ${MLAB}/extern/include | ||
8 | LIB = -L ${MLAB}/extern/lib | ||
9 | |||
10 | CC = gcc -Wall -pedantic | ||
11 | C_OPTIMIZE_SWITCH = -O2 ## For GCC | ||
12 | CFLAGS = ${C_OPTIMIZE_SWITCH} ${INC} ${LIB} | ||
13 | |||
14 | all: corrDn.${MXSFX} upConv.${MXSFX} pointOp.${MXSFX} \ | ||
15 | histo.${MXSFX} range2.${MXSFX} | ||
16 | |||
17 | clean: | ||
18 | /bin/rm *.o | ||
19 | |||
20 | corrDn.${MXSFX}: corrDn.o wrap.o convolve.o edges.o | ||
21 | ${MEX} ${MFLAGS} corrDn.o wrap.o convolve.o edges.o | ||
22 | |||
23 | upConv.${MXSFX}: upConv.o wrap.o convolve.o edges.o | ||
24 | ${MEX} ${MFLAGS} upConv.o wrap.o convolve.o edges.o | ||
25 | |||
26 | pointOp.${MXSFX}: pointOp.o | ||
27 | ${MEX} ${MFLAGS} pointOp.o | ||
28 | |||
29 | histo.${MXSFX}: histo.o | ||
30 | ${MEX} ${MFLAGS} histo.o | ||
31 | |||
32 | range2.${MXSFX}: range2.o | ||
33 | ${MEX} ${MFLAGS} range2.o | ||
34 | |||
35 | convolve.o wrap.o edges.o: convolve.h | ||
36 | |||
37 | %.o : %.c | ||
38 | ${CC} -c ${CFLAGS} $< | ||
39 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/Makefile-osx b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/Makefile-osx new file mode 100755 index 0000000..352d15b --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/Makefile-osx | |||
@@ -0,0 +1,39 @@ | |||
1 | MLAB = /share/wotan/matlab13 | ||
2 | |||
3 | MXSFX = mexosx | ||
4 | MEX = ${MLAB}/bin/mex | ||
5 | |||
6 | MFLAGS = | ||
7 | INC = -I ${MLAB}/extern/include | ||
8 | LIB = -L ${MLAB}/extern/lib | ||
9 | |||
10 | CC = cc -Wall -pedantic -no-cpp-precomp | ||
11 | C_OPTIMIZE_SWITCH = -O2 ## For GCC | ||
12 | CFLAGS = ${C_OPTIMIZE_SWITCH} ${INC} ${LIB} | ||
13 | |||
14 | all: corrDn.${MXSFX} upConv.${MXSFX} pointOp.${MXSFX} \ | ||
15 | histo.${MXSFX} range2.${MXSFX} | ||
16 | |||
17 | clean: | ||
18 | /bin/rm *.o | ||
19 | |||
20 | corrDn.${MXSFX}: corrDn.o wrap.o convolve.o edges.o | ||
21 | ${MEX} ${MFLAGS} corrDn.o wrap.o convolve.o edges.o | ||
22 | |||
23 | upConv.${MXSFX}: upConv.o wrap.o convolve.o edges.o | ||
24 | ${MEX} ${MFLAGS} upConv.o wrap.o convolve.o edges.o | ||
25 | |||
26 | pointOp.${MXSFX}: pointOp.o | ||
27 | ${MEX} ${MFLAGS} pointOp.o | ||
28 | |||
29 | histo.${MXSFX}: histo.o | ||
30 | ${MEX} ${MFLAGS} histo.o | ||
31 | |||
32 | range2.${MXSFX}: range2.o | ||
33 | ${MEX} ${MFLAGS} range2.o | ||
34 | |||
35 | convolve.o wrap.o edges.o: convolve.h | ||
36 | |||
37 | %.o : %.c | ||
38 | ${CC} -c ${CFLAGS} $< | ||
39 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/Makefile-solaris b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/Makefile-solaris new file mode 100755 index 0000000..2be2bdb --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/Makefile-solaris | |||
@@ -0,0 +1,38 @@ | |||
1 | MLAB = /export/home/Solaris2/matlab5.1 | ||
2 | |||
3 | MXSFX = mexsol | ||
4 | MEX = ${MLAB}/bin/mex | ||
5 | |||
6 | MFLAGS = -V4 | ||
7 | INC = -I ${MLAB}/extern/include | ||
8 | LIB = -L ${MLAB}/extern/lib | ||
9 | |||
10 | CC = gcc -Wall -pedantic | ||
11 | C_OPTIMIZE_SWITCH = -O2 ## For GCC | ||
12 | CFLAGS = ${C_OPTIMIZE_SWITCH} ${INC} ${LIB} | ||
13 | |||
14 | all: corrDn.${MXSFX} upConv.${MXSFX} pointOp.${MXSFX} \ | ||
15 | histo.${MXSFX} range2.${MXSFX} | ||
16 | |||
17 | clean: | ||
18 | /bin/rm *.o | ||
19 | |||
20 | corrDn.${MXSFX}: corrDn.o wrap.o convolve.o edges.o | ||
21 | ${MEX} ${MFLAGS} corrDn.o wrap.o convolve.o edges.o | ||
22 | |||
23 | upConv.${MXSFX}: upConv.o wrap.o convolve.o edges.o | ||
24 | ${MEX} ${MFLAGS} upConv.o wrap.o convolve.o edges.o | ||
25 | |||
26 | pointOp.${MXSFX}: pointOp.o | ||
27 | ${MEX} ${MFLAGS} pointOp.o | ||
28 | |||
29 | histo.${MXSFX}: histo.o | ||
30 | ${MEX} ${MFLAGS} histo.o | ||
31 | |||
32 | range2.${MXSFX}: range2.o | ||
33 | ${MEX} ${MFLAGS} range2.o | ||
34 | |||
35 | convolve.o wrap.o edges.o: convolve.h | ||
36 | |||
37 | %.o : %.c | ||
38 | ${CC} -c ${CFLAGS} $< | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/Makefile-sun4 b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/Makefile-sun4 new file mode 100755 index 0000000..432b181 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/Makefile-sun4 | |||
@@ -0,0 +1,39 @@ | |||
1 | MLAB = /home/alberich/matlab4 | ||
2 | |||
3 | MXSFX = mex4 | ||
4 | MEX = ${MLAB}/bin/cmex | ||
5 | |||
6 | MFLAGS = | ||
7 | INC = -I ${MLAB}/extern/include | ||
8 | LIB = -L ${MLAB}/extern/lib/sun4 | ||
9 | |||
10 | CC = gcc | ||
11 | C_OPTIMIZE_SWITCH = -O2 ## For GCC | ||
12 | CFLAGS = ${C_OPTIMIZE_SWITCH} ${INC} ${LIB} | ||
13 | |||
14 | all: corrDn.${MXSFX} upConv.${MXSFX} pointOp.${MXSFX} \ | ||
15 | histo.${MXSFX} range2.${MXSFX} | ||
16 | |||
17 | clean: | ||
18 | /bin/rm *.o | ||
19 | |||
20 | corrDn.${MXSFX}: corrDn.o wrap.o convolve.o edges.o | ||
21 | ${MEX} ${MFLAGS} corrDn.o wrap.o convolve.o edges.o | ||
22 | |||
23 | upConv.${MXSFX}: upConv.o wrap.o convolve.o edges.o | ||
24 | ${MEX} ${MFLAGS} upConv.o wrap.o convolve.o edges.o | ||
25 | |||
26 | pointOp.${MXSFX}: pointOp.o | ||
27 | ${MEX} ${MFLAGS} pointOp.o | ||
28 | |||
29 | histo.${MXSFX}: histo.o | ||
30 | ${MEX} ${MFLAGS} histo.o | ||
31 | |||
32 | range2.${MXSFX}: range2.o | ||
33 | ${MEX} ${MFLAGS} range2.o | ||
34 | |||
35 | convolve.o wrap.o edges.o: convolve.h | ||
36 | |||
37 | %.o : %.c | ||
38 | ${CC} -c ${CFLAGS} $< | ||
39 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/convolve.c b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/convolve.c new file mode 100755 index 0000000..60a11a4 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/convolve.c | |||
@@ -0,0 +1,325 @@ | |||
1 | /* | ||
2 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
3 | ;;; File: convolve.c | ||
4 | ;;; Author: Eero Simoncelli | ||
5 | ;;; Description: General convolution code for 2D images | ||
6 | ;;; Creation Date: Spring, 1987. | ||
7 | ;;; MODIFICATIONS: | ||
8 | ;;; 10/89: approximately optimized the choice of register vars on SPARCS. | ||
9 | ;;; 6/96: Switched array types to double float. | ||
10 | ;;; 2/97: made more robust and readable. Added STOP arguments. | ||
11 | ;;; 8/97: Bug: when calling internal_reduce with edges in {reflect1,repeat, | ||
12 | ;;; extend} and an even filter dimension. Solution: embed the filter | ||
13 | ;;; in the upper-left corner of a filter with odd Y and X dimensions. | ||
14 | ;;; ---------------------------------------------------------------- | ||
15 | ;;; Object-Based Vision and Image Understanding System (OBVIUS), | ||
16 | ;;; Copyright 1988, Vision Science Group, Media Laboratory, | ||
17 | ;;; Massachusetts Institute of Technology. | ||
18 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
19 | */ | ||
20 | |||
21 | #include <stdio.h> | ||
22 | #include <math.h> | ||
23 | #include "convolve.h" | ||
24 | |||
25 | /* | ||
26 | -------------------------------------------------------------------- | ||
27 | Correlate FILT with IMAGE, subsampling according to START, STEP, and | ||
28 | STOP parameters, with values placed into RESULT array. RESULT | ||
29 | dimensions should be ceil((stop-start)/step). TEMP should be a | ||
30 | pointer to a temporary double array the size of the filter. | ||
31 | EDGES is a string specifying how to handle boundaries -- see edges.c. | ||
32 | The convolution is done in 9 sections, where the border sections use | ||
33 | specially computed edge-handling filters (see edges.c). The origin | ||
34 | of the filter is assumed to be (floor(x_fdim/2), floor(y_fdim/2)). | ||
35 | ------------------------------------------------------------------------ */ | ||
36 | |||
37 | /* abstract out the inner product computation */ | ||
38 | #define INPROD(XCNR,YCNR) \ | ||
39 | { \ | ||
40 | sum=0.0; \ | ||
41 | for (im_pos=YCNR*x_dim+XCNR, filt_pos=0, x_filt_stop=x_fdim; \ | ||
42 | x_filt_stop<=filt_size; \ | ||
43 | im_pos+=(x_dim-x_fdim), x_filt_stop+=x_fdim) \ | ||
44 | for (; \ | ||
45 | filt_pos<x_filt_stop; \ | ||
46 | filt_pos++, im_pos++) \ | ||
47 | sum+= image[im_pos]*temp[filt_pos]; \ | ||
48 | result[res_pos] = sum; \ | ||
49 | } | ||
50 | |||
51 | int internal_reduce(image, x_dim, y_dim, filt, temp, x_fdim, y_fdim, | ||
52 | x_start, x_step, x_stop, y_start, y_step, y_stop, | ||
53 | result, edges) | ||
54 | register image_type *image, *temp; | ||
55 | register int x_fdim, x_dim; | ||
56 | register image_type *result; | ||
57 | register int x_step, y_step; | ||
58 | int x_start, y_start; | ||
59 | int x_stop, y_stop; | ||
60 | image_type *filt; | ||
61 | int y_dim, y_fdim; | ||
62 | char *edges; | ||
63 | { | ||
64 | register double sum; | ||
65 | register int filt_pos, im_pos, x_filt_stop; | ||
66 | register int x_pos, filt_size = x_fdim*y_fdim; | ||
67 | register int y_pos, res_pos; | ||
68 | register int y_ctr_stop = y_dim - ((y_fdim==1)?0:y_fdim); | ||
69 | register int x_ctr_stop = x_dim - ((x_fdim==1)?0:x_fdim); | ||
70 | register int x_res_dim = (x_stop-x_start+x_step-1)/x_step; | ||
71 | int x_ctr_start = ((x_fdim==1)?0:1); | ||
72 | int y_ctr_start = ((y_fdim==1)?0:1); | ||
73 | int x_fmid = x_fdim/2; | ||
74 | int y_fmid = y_fdim/2; | ||
75 | int base_res_pos; | ||
76 | fptr reflect = edge_function(edges); /* look up edge-handling function */ | ||
77 | |||
78 | if (!reflect) return(-1); | ||
79 | |||
80 | /* shift start/stop coords to filter upper left hand corner */ | ||
81 | x_start -= x_fmid; y_start -= y_fmid; | ||
82 | x_stop -= x_fmid; y_stop -= y_fmid; | ||
83 | |||
84 | if (x_stop < x_ctr_stop) x_ctr_stop = x_stop; | ||
85 | if (y_stop < y_ctr_stop) y_ctr_stop = y_stop; | ||
86 | |||
87 | for (res_pos=0, y_pos=y_start; /* TOP ROWS */ | ||
88 | y_pos<y_ctr_start; | ||
89 | y_pos+=y_step) | ||
90 | { | ||
91 | for (x_pos=x_start; /* TOP-LEFT CORNER */ | ||
92 | x_pos<x_ctr_start; | ||
93 | x_pos+=x_step, res_pos++) | ||
94 | { | ||
95 | (*reflect)(filt,x_fdim,y_fdim,x_pos-1,y_pos-1,temp,REDUCE); | ||
96 | INPROD(0,0) | ||
97 | } | ||
98 | |||
99 | (*reflect)(filt,x_fdim,y_fdim,0,y_pos-1,temp,REDUCE); | ||
100 | for (; /* TOP EDGE */ | ||
101 | x_pos<x_ctr_stop; | ||
102 | x_pos+=x_step, res_pos++) | ||
103 | INPROD(x_pos,0) | ||
104 | |||
105 | for (; /* TOP-RIGHT CORNER */ | ||
106 | x_pos<x_stop; | ||
107 | x_pos+=x_step, res_pos++) | ||
108 | { | ||
109 | (*reflect)(filt,x_fdim,y_fdim,x_pos-x_ctr_stop+1,y_pos-1,temp,REDUCE); | ||
110 | INPROD(x_ctr_stop,0) | ||
111 | } | ||
112 | } /* end TOP ROWS */ | ||
113 | |||
114 | y_ctr_start = y_pos; /* hold location of top */ | ||
115 | for (base_res_pos=res_pos, x_pos=x_start; /* LEFT EDGE */ | ||
116 | x_pos<x_ctr_start; | ||
117 | x_pos+=x_step, base_res_pos++) | ||
118 | { | ||
119 | (*reflect)(filt,x_fdim,y_fdim,x_pos-1,0,temp,REDUCE); | ||
120 | for (y_pos=y_ctr_start, res_pos=base_res_pos; | ||
121 | y_pos<y_ctr_stop; | ||
122 | y_pos+=y_step, res_pos+=x_res_dim) | ||
123 | INPROD(0,y_pos) | ||
124 | } | ||
125 | |||
126 | (*reflect)(filt,x_fdim,y_fdim,0,0,temp,REDUCE); | ||
127 | for (; /* CENTER */ | ||
128 | x_pos<x_ctr_stop; | ||
129 | x_pos+=x_step, base_res_pos++) | ||
130 | for (y_pos=y_ctr_start, res_pos=base_res_pos; | ||
131 | y_pos<y_ctr_stop; | ||
132 | y_pos+=y_step, res_pos+=x_res_dim) | ||
133 | INPROD(x_pos,y_pos) | ||
134 | |||
135 | for (; /* RIGHT EDGE */ | ||
136 | x_pos<x_stop; | ||
137 | x_pos+=x_step, base_res_pos++) | ||
138 | { | ||
139 | (*reflect)(filt,x_fdim,y_fdim,x_pos-x_ctr_stop+1,0,temp,REDUCE); | ||
140 | for (y_pos=y_ctr_start, res_pos=base_res_pos; | ||
141 | y_pos<y_ctr_stop; | ||
142 | y_pos+=y_step, res_pos+=x_res_dim) | ||
143 | INPROD(x_ctr_stop,y_pos) | ||
144 | } | ||
145 | |||
146 | for (res_pos-=(x_res_dim-1); | ||
147 | y_pos<y_stop; /* BOTTOM ROWS */ | ||
148 | y_pos+=y_step) | ||
149 | { | ||
150 | for (x_pos=x_start; /* BOTTOM-LEFT CORNER */ | ||
151 | x_pos<x_ctr_start; | ||
152 | x_pos+=x_step, res_pos++) | ||
153 | { | ||
154 | (*reflect)(filt,x_fdim,y_fdim,x_pos-1,y_pos-y_ctr_stop+1,temp,REDUCE); | ||
155 | INPROD(0,y_ctr_stop) | ||
156 | } | ||
157 | |||
158 | (*reflect)(filt,x_fdim,y_fdim,0,y_pos-y_ctr_stop+1,temp,REDUCE); | ||
159 | for (; /* BOTTOM EDGE */ | ||
160 | x_pos<x_ctr_stop; | ||
161 | x_pos+=x_step, res_pos++) | ||
162 | INPROD(x_pos,y_ctr_stop) | ||
163 | |||
164 | for (; /* BOTTOM-RIGHT CORNER */ | ||
165 | x_pos<x_stop; | ||
166 | x_pos+=x_step, res_pos++) | ||
167 | { | ||
168 | (*reflect)(filt,x_fdim,y_fdim,x_pos-x_ctr_stop+1,y_pos-y_ctr_stop+1,temp,REDUCE); | ||
169 | INPROD(x_ctr_stop,y_ctr_stop) | ||
170 | } | ||
171 | } /* end BOTTOM */ | ||
172 | return(0); | ||
173 | } /* end of internal_reduce */ | ||
174 | |||
175 | |||
176 | /* | ||
177 | -------------------------------------------------------------------- | ||
178 | Upsample IMAGE according to START,STEP, and STOP parameters and then | ||
179 | convolve with FILT, adding values into RESULT array. IMAGE | ||
180 | dimensions should be ceil((stop-start)/step). See | ||
181 | description of internal_reduce (above). | ||
182 | |||
183 | WARNING: this subroutine destructively modifies the RESULT array! | ||
184 | ------------------------------------------------------------------------ */ | ||
185 | |||
186 | /* abstract out the inner product computation */ | ||
187 | #define INPROD2(XCNR,YCNR) \ | ||
188 | { \ | ||
189 | val = image[im_pos]; \ | ||
190 | for (res_pos=YCNR*x_dim+XCNR, filt_pos=0, x_filt_stop=x_fdim; \ | ||
191 | x_filt_stop<=filt_size; \ | ||
192 | res_pos+=(x_dim-x_fdim), x_filt_stop+=x_fdim) \ | ||
193 | for (; \ | ||
194 | filt_pos<x_filt_stop; \ | ||
195 | filt_pos++, res_pos++) \ | ||
196 | result[res_pos] += val*temp[filt_pos]; \ | ||
197 | } | ||
198 | |||
199 | int internal_expand(image,filt,temp,x_fdim,y_fdim, | ||
200 | x_start,x_step,x_stop,y_start,y_step,y_stop, | ||
201 | result,x_dim,y_dim,edges) | ||
202 | register image_type *result, *temp; | ||
203 | register int x_fdim, x_dim; | ||
204 | register int x_step, y_step; | ||
205 | register image_type *image; | ||
206 | int x_start, y_start; | ||
207 | image_type *filt; | ||
208 | int y_fdim, y_dim; | ||
209 | char *edges; | ||
210 | { | ||
211 | register double val; | ||
212 | register int filt_pos, res_pos, x_filt_stop; | ||
213 | register int x_pos, filt_size = x_fdim*y_fdim; | ||
214 | register int y_pos, im_pos; | ||
215 | register int x_ctr_stop = x_dim - ((x_fdim==1)?0:x_fdim); | ||
216 | int y_ctr_stop = (y_dim - ((y_fdim==1)?0:y_fdim)); | ||
217 | int x_ctr_start = ((x_fdim==1)?0:1); | ||
218 | int y_ctr_start = ((y_fdim==1)?0:1); | ||
219 | int x_fmid = x_fdim/2; | ||
220 | int y_fmid = y_fdim/2; | ||
221 | int base_im_pos, x_im_dim = (x_stop-x_start+x_step-1)/x_step; | ||
222 | fptr reflect = edge_function(edges); /* look up edge-handling function */ | ||
223 | |||
224 | if (!reflect) return(-1); | ||
225 | |||
226 | /* shift start/stop coords to filter upper left hand corner */ | ||
227 | x_start -= x_fmid; y_start -= y_fmid; | ||
228 | x_stop -= x_fmid; y_stop -= y_fmid; | ||
229 | |||
230 | if (x_stop < x_ctr_stop) x_ctr_stop = x_stop; | ||
231 | if (y_stop < y_ctr_stop) y_ctr_stop = y_stop; | ||
232 | |||
233 | for (im_pos=0, y_pos=y_start; /* TOP ROWS */ | ||
234 | y_pos<y_ctr_start; | ||
235 | y_pos+=y_step) | ||
236 | { | ||
237 | for (x_pos=x_start; /* TOP-LEFT CORNER */ | ||
238 | x_pos<x_ctr_start; | ||
239 | x_pos+=x_step, im_pos++) | ||
240 | { | ||
241 | (*reflect)(filt,x_fdim,y_fdim,x_pos-1,y_pos-1,temp,EXPAND); | ||
242 | INPROD2(0,0) | ||
243 | } | ||
244 | |||
245 | (*reflect)(filt,x_fdim,y_fdim,0,y_pos-1,temp,EXPAND); | ||
246 | for (; /* TOP EDGE */ | ||
247 | x_pos<x_ctr_stop; | ||
248 | x_pos+=x_step, im_pos++) | ||
249 | INPROD2(x_pos,0) | ||
250 | |||
251 | for (; /* TOP-RIGHT CORNER */ | ||
252 | x_pos<x_stop; | ||
253 | x_pos+=x_step, im_pos++) | ||
254 | { | ||
255 | (*reflect)(filt,x_fdim,y_fdim,x_pos-x_ctr_stop+1,y_pos-1,temp,EXPAND); | ||
256 | INPROD2(x_ctr_stop,0) | ||
257 | } | ||
258 | } /* end TOP ROWS */ | ||
259 | |||
260 | y_ctr_start = y_pos; /* hold location of top */ | ||
261 | for (base_im_pos=im_pos, x_pos=x_start; /* LEFT EDGE */ | ||
262 | x_pos<x_ctr_start; | ||
263 | x_pos+=x_step, base_im_pos++) | ||
264 | { | ||
265 | (*reflect)(filt,x_fdim,y_fdim,x_pos-1,0,temp,EXPAND); | ||
266 | for (y_pos=y_ctr_start, im_pos=base_im_pos; | ||
267 | y_pos<y_ctr_stop; | ||
268 | y_pos+=y_step, im_pos+=x_im_dim) | ||
269 | INPROD2(0,y_pos) | ||
270 | } | ||
271 | |||
272 | (*reflect)(filt,x_fdim,y_fdim,0,0,temp,EXPAND); | ||
273 | for (; /* CENTER */ | ||
274 | x_pos<x_ctr_stop; | ||
275 | x_pos+=x_step, base_im_pos++) | ||
276 | for (y_pos=y_ctr_start, im_pos=base_im_pos; | ||
277 | y_pos<y_ctr_stop; | ||
278 | y_pos+=y_step, im_pos+=x_im_dim) | ||
279 | INPROD2(x_pos,y_pos) | ||
280 | |||
281 | for (; /* RIGHT EDGE */ | ||
282 | x_pos<x_stop; | ||
283 | x_pos+=x_step, base_im_pos++) | ||
284 | { | ||
285 | (*reflect)(filt,x_fdim,y_fdim,x_pos-x_ctr_stop+1,0,temp,EXPAND); | ||
286 | for (y_pos=y_ctr_start, im_pos=base_im_pos; | ||
287 | y_pos<y_ctr_stop; | ||
288 | y_pos+=y_step, im_pos+=x_im_dim) | ||
289 | INPROD2(x_ctr_stop,y_pos) | ||
290 | } | ||
291 | |||
292 | for (im_pos-=(x_im_dim-1); | ||
293 | y_pos<y_stop; /* BOTTOM ROWS */ | ||
294 | y_pos+=y_step) | ||
295 | { | ||
296 | for (x_pos=x_start; /* BOTTOM-LEFT CORNER */ | ||
297 | x_pos<x_ctr_start; | ||
298 | x_pos+=x_step, im_pos++) | ||
299 | { | ||
300 | (*reflect)(filt,x_fdim,y_fdim,x_pos-1,y_pos-y_ctr_stop+1,temp,EXPAND); | ||
301 | INPROD2(0,y_ctr_stop) | ||
302 | } | ||
303 | |||
304 | (*reflect)(filt,x_fdim,y_fdim,0,y_pos-y_ctr_stop+1,temp,EXPAND); | ||
305 | for (; /* BOTTOM EDGE */ | ||
306 | x_pos<x_ctr_stop; | ||
307 | x_pos+=x_step, im_pos++) | ||
308 | INPROD2(x_pos,y_ctr_stop) | ||
309 | |||
310 | for (; /* BOTTOM-RIGHT CORNER */ | ||
311 | x_pos<x_stop; | ||
312 | x_pos+=x_step, im_pos++) | ||
313 | { | ||
314 | (*reflect)(filt,x_fdim,y_fdim,x_pos-x_ctr_stop+1,y_pos-y_ctr_stop+1,temp,EXPAND); | ||
315 | INPROD2(x_ctr_stop,y_ctr_stop) | ||
316 | } | ||
317 | } /* end BOTTOM */ | ||
318 | return(0); | ||
319 | } /* end of internal_expand */ | ||
320 | |||
321 | |||
322 | /* Local Variables: */ | ||
323 | /* buffer-read-only: t */ | ||
324 | /* End: */ | ||
325 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/convolve.h b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/convolve.h new file mode 100755 index 0000000..48d55f7 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/convolve.h | |||
@@ -0,0 +1,55 @@ | |||
1 | /* | ||
2 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
3 | ;;; File: convolve.h | ||
4 | ;;; Author: Simoncelli | ||
5 | ;;; Description: Header file for convolve.c | ||
6 | ;;; Creation Date: | ||
7 | ;;; ---------------------------------------------------------------- | ||
8 | ;;; Object-Based Vision and Image Understanding System (OBVIUS), | ||
9 | ;;; Copyright 1988, Vision Science Group, Media Laboratory, | ||
10 | ;;; Massachusetts Institute of Technology. | ||
11 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
12 | */ | ||
13 | |||
14 | #include <stdio.h> | ||
15 | #include <stdlib.h> | ||
16 | |||
17 | #define ABS(x) (((x)>=0) ? (x) : (-(x))) | ||
18 | #define ROOT2 1.4142135623730951 | ||
19 | #define REDUCE 0 | ||
20 | #define EXPAND 1 | ||
21 | #define IS == | ||
22 | #define ISNT != | ||
23 | #define AND && | ||
24 | #define OR || | ||
25 | |||
26 | typedef int (*fptr)(); | ||
27 | |||
28 | typedef struct | ||
29 | { | ||
30 | char *name; | ||
31 | fptr func; | ||
32 | } EDGE_HANDLER; | ||
33 | |||
34 | typedef double image_type; | ||
35 | |||
36 | fptr edge_function(char *edges); | ||
37 | int internal_reduce(image_type *image, int x_idim, int y_idim, | ||
38 | image_type *filt, image_type *temp, int x_fdim, int y_fdim, | ||
39 | int x_start, int x_step, int x_stop, | ||
40 | int y_start, int y_step, int y_stop, | ||
41 | image_type *result, char *edges); | ||
42 | int internal_expand(image_type *image, | ||
43 | image_type *filt, image_type *temp, int x_fdim, int y_fdim, | ||
44 | int x_start, int x_step, int x_stop, | ||
45 | int y_start, int y_step, int y_stop, | ||
46 | image_type *result, int x_rdim, int y_rdim, char *edges); | ||
47 | int internal_wrap_reduce(image_type *image, int x_idim, int y_idim, | ||
48 | image_type *filt, int x_fdim, int y_fdim, | ||
49 | int x_start, int x_step, int x_stop, | ||
50 | int y_start, int y_step, int y_stop, | ||
51 | image_type *result); | ||
52 | int internal_wrap_expand(image_type *image, image_type *filt, int x_fdim, int y_fdim, | ||
53 | int x_start, int x_step, int x_stop, | ||
54 | int y_start, int y_step, int y_stop, | ||
55 | image_type *result, int x_rdim, int y_rdim); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/corrDn.c b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/corrDn.c new file mode 100755 index 0000000..c74df1f --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/corrDn.c | |||
@@ -0,0 +1,145 @@ | |||
1 | /* | ||
2 | RES = corrDn(IM, FILT, EDGES, STEP, START, STOP); | ||
3 | >>> See corrDn.m for documentation <<< | ||
4 | This is a matlab interface to the internal_reduce function. | ||
5 | EPS, 7/96. | ||
6 | */ | ||
7 | |||
8 | #define V4_COMPAT | ||
9 | #include <matrix.h> /* Matlab matrices */ | ||
10 | #include <mex.h> | ||
11 | |||
12 | #include "convolve.h" | ||
13 | |||
14 | #define notDblMtx(it) (!mxIsNumeric(it) || !mxIsDouble(it) || mxIsSparse(it) || mxIsComplex(it)) | ||
15 | |||
16 | void mexFunction(int nlhs, /* Num return vals on lhs */ | ||
17 | mxArray *plhs[], /* Matrices on lhs */ | ||
18 | int nrhs, /* Num args on rhs */ | ||
19 | const mxArray *prhs[] /* Matrices on rhs */ | ||
20 | ) | ||
21 | { | ||
22 | double *image,*filt, *temp, *result; | ||
23 | int x_fdim, y_fdim, x_idim, y_idim; | ||
24 | int x_rdim, y_rdim; | ||
25 | int x_start = 1; | ||
26 | int x_step = 1; | ||
27 | int y_start = 1; | ||
28 | int y_step = 1; | ||
29 | int x_stop, y_stop; | ||
30 | mxArray *arg; | ||
31 | double *mxMat; | ||
32 | char edges[15] = "reflect1"; | ||
33 | |||
34 | if (nrhs<2) mexErrMsgTxt("requres at least 2 args."); | ||
35 | |||
36 | /* ARG 1: IMAGE */ | ||
37 | arg = prhs[0]; | ||
38 | if notDblMtx(arg) mexErrMsgTxt("IMAGE arg must be a non-sparse double float matrix."); | ||
39 | image = mxGetPr(arg); | ||
40 | x_idim = (int) mxGetM(arg); /* X is inner index! */ | ||
41 | y_idim = (int) mxGetN(arg); | ||
42 | |||
43 | /* ARG 2: FILTER */ | ||
44 | arg = prhs[1]; | ||
45 | if notDblMtx(arg) mexErrMsgTxt("FILTER arg must be non-sparse double float matrix."); | ||
46 | filt = mxGetPr(arg); | ||
47 | x_fdim = (int) mxGetM(arg); | ||
48 | y_fdim = (int) mxGetN(arg); | ||
49 | |||
50 | if ((x_fdim > x_idim) || (y_fdim > y_idim)) | ||
51 | { | ||
52 | mexPrintf("Filter: [%d %d], Image: [%d %d]\n",x_fdim,y_fdim,x_idim,y_idim); | ||
53 | mexErrMsgTxt("FILTER dimensions larger than IMAGE dimensions."); | ||
54 | } | ||
55 | |||
56 | /* ARG 3 (optional): EDGES */ | ||
57 | if (nrhs>2) | ||
58 | { | ||
59 | if (!mxIsChar(prhs[2])) | ||
60 | mexErrMsgTxt("EDGES arg must be a string."); | ||
61 | mxGetString(prhs[2],edges,15); | ||
62 | } | ||
63 | |||
64 | /* ARG 4 (optional): STEP */ | ||
65 | if (nrhs>3) | ||
66 | { | ||
67 | arg = prhs[3]; | ||
68 | if notDblMtx(arg) mexErrMsgTxt("STEP arg must be a double float matrix."); | ||
69 | if (mxGetM(arg) * mxGetN(arg) != 2) | ||
70 | mexErrMsgTxt("STEP arg must contain two elements."); | ||
71 | mxMat = mxGetPr(arg); | ||
72 | x_step = (int) mxMat[0]; | ||
73 | y_step = (int) mxMat[1]; | ||
74 | if ((x_step<1) || (y_step<1)) | ||
75 | mexErrMsgTxt("STEP values must be greater than zero."); | ||
76 | } | ||
77 | |||
78 | /* ARG 5 (optional): START */ | ||
79 | if (nrhs>4) | ||
80 | { | ||
81 | arg = prhs[4]; | ||
82 | if notDblMtx(arg) mexErrMsgTxt("START arg must be a double float matrix."); | ||
83 | if (mxGetM(arg) * mxGetN(arg) != 2) | ||
84 | mexErrMsgTxt("START arg must contain two elements."); | ||
85 | mxMat = mxGetPr(arg); | ||
86 | x_start = (int) mxMat[0]; | ||
87 | y_start = (int) mxMat[1]; | ||
88 | if ((x_start<1) || (x_start>x_idim) || | ||
89 | (y_start<1) || (y_start>y_idim)) | ||
90 | mexErrMsgTxt("START values must lie between 1 and the image dimensions."); | ||
91 | } | ||
92 | x_start--; /* convert from Matlab to standard C indexes */ | ||
93 | y_start--; | ||
94 | |||
95 | /* ARG 6 (optional): STOP */ | ||
96 | if (nrhs>5) | ||
97 | { | ||
98 | if notDblMtx(prhs[5]) mexErrMsgTxt("STOP arg must be double float matrix."); | ||
99 | if (mxGetM(prhs[5]) * mxGetN(prhs[5]) != 2) | ||
100 | mexErrMsgTxt("STOP arg must contain two elements."); | ||
101 | mxMat = mxGetPr(prhs[5]); | ||
102 | x_stop = (int) mxMat[0]; | ||
103 | y_stop = (int) mxMat[1]; | ||
104 | if ((x_stop<x_start) || (x_stop>x_idim) || | ||
105 | (y_stop<y_start) || (y_stop>y_idim)) | ||
106 | mexErrMsgTxt("STOP values must lie between START and the image dimensions."); | ||
107 | } | ||
108 | else | ||
109 | { | ||
110 | x_stop = x_idim; | ||
111 | y_stop = y_idim; | ||
112 | } | ||
113 | |||
114 | x_rdim = (x_stop-x_start+x_step-1) / x_step; | ||
115 | y_rdim = (y_stop-y_start+y_step-1) / y_step; | ||
116 | |||
117 | /* mxFreeMatrix(plhs[0]); */ | ||
118 | plhs[0] = (mxArray *) mxCreateDoubleMatrix(x_rdim,y_rdim,mxREAL); | ||
119 | if (plhs[0] == NULL) mexErrMsgTxt("Cannot allocate result matrix"); | ||
120 | result = mxGetPr(plhs[0]); | ||
121 | |||
122 | temp = mxCalloc(x_fdim*y_fdim, sizeof(double)); | ||
123 | if (temp == NULL) | ||
124 | mexErrMsgTxt("Cannot allocate necessary temporary space"); | ||
125 | |||
126 | /* | ||
127 | printf("i(%d, %d), f(%d, %d), r(%d, %d), X(%d, %d, %d), Y(%d, %d, %d), %s\n", | ||
128 | x_idim,y_idim,x_fdim,y_fdim,x_rdim,y_rdim, | ||
129 | x_start,x_step,x_stop,y_start,y_step,y_stop,edges); | ||
130 | */ | ||
131 | |||
132 | if (strcmp(edges,"circular") == 0) | ||
133 | internal_wrap_reduce(image, x_idim, y_idim, filt, x_fdim, y_fdim, | ||
134 | x_start, x_step, x_stop, y_start, y_step, y_stop, | ||
135 | result); | ||
136 | else internal_reduce(image, x_idim, y_idim, filt, temp, x_fdim, y_fdim, | ||
137 | x_start, x_step, x_stop, y_start, y_step, y_stop, | ||
138 | result, edges); | ||
139 | |||
140 | mxFree((char *) temp); | ||
141 | return; | ||
142 | } | ||
143 | |||
144 | |||
145 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/edges-orig.c b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/edges-orig.c new file mode 100755 index 0000000..1f6a98b --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/edges-orig.c | |||
@@ -0,0 +1,494 @@ | |||
1 | /* | ||
2 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
3 | ;;; File: edges.c | ||
4 | ;;; Author: Eero Simoncelli | ||
5 | ;;; Description: Boundary handling routines for use with convolve.c | ||
6 | ;;; Creation Date: Spring 1987. | ||
7 | ;;; MODIFIED, 6/96, to operate on double float arrays. | ||
8 | ;;; MODIFIED by dgp, 4/1/97, to support THINK C. | ||
9 | ;;; ---------------------------------------------------------------- | ||
10 | ;;; Object-Based Vision and Image Understanding System (OBVIUS), | ||
11 | ;;; Copyright 1988, Vision Science Group, Media Laboratory, | ||
12 | ;;; Massachusetts Institute of Technology. | ||
13 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
14 | */ | ||
15 | |||
16 | /* | ||
17 | This file contains functions which determine how edges are to be | ||
18 | handled when performing convolutions of images with linear filters. | ||
19 | Any edge handling function which is local and linear may be defined, | ||
20 | except (unfortunately) constants cannot be added. So to treat the | ||
21 | edges as if the image is surrounded by a gray field, you must paste it | ||
22 | into a gray image, convolve, and crop it out... | ||
23 | The main convolution function is called internal_filter and is defined | ||
24 | in the file convolve.c. The idea is that the convolution function | ||
25 | calls the edge handling function which computes a new filter based on | ||
26 | the old filter and the distance to the edge of the image. For | ||
27 | example, reflection is done by reflecting the filter through the | ||
28 | appropriate axis and summing. Currently defined functions are listed | ||
29 | below. | ||
30 | */ | ||
31 | |||
32 | /* | ||
33 | #define DEBUG | ||
34 | */ | ||
35 | |||
36 | #include <stdio.h> | ||
37 | #include <math.h> | ||
38 | #include <string.h> | ||
39 | #include "convolve.h" | ||
40 | |||
41 | #define sgn(a) ( ((a)>0)?1:(((a)<0)?-1:0) ) | ||
42 | #define clip(a,mn,mx) ( ((a)<(mn))?(mn):(((a)>=(mx))?(mx-1):(a)) ) | ||
43 | |||
44 | int reflect1(), reflect2(), repeat(), zero(), Extend(), nocompute(); | ||
45 | int ereflect(), predict(); | ||
46 | |||
47 | /* Lookup table matching a descriptive string to the edge-handling function */ | ||
48 | #if !THINK_C | ||
49 | static EDGE_HANDLER edge_foos[] = | ||
50 | { | ||
51 | { "dont-compute", nocompute }, /* zero output for filter touching edge */ | ||
52 | { "zero", zero }, /* zero outside of image */ | ||
53 | { "repeat", repeat }, /* repeat edge pixel */ | ||
54 | { "reflect1", reflect1 }, /* reflect about edge pixels */ | ||
55 | { "reflect2", reflect2 }, /* reflect image, including edge pixels */ | ||
56 | { "extend", Extend }, /* extend (reflect & invert) */ | ||
57 | { "predict", predict }, /* predict based on portion covered by filt */ | ||
58 | { "ereflect", ereflect }, /* orthogonal QMF reflection */ | ||
59 | }; | ||
60 | #else | ||
61 | /* | ||
62 | This is really stupid, but THINK C won't allow initialization of static variables in | ||
63 | a code resource with string addresses. So we do it this way. | ||
64 | The 68K code for a MATLAB 4 MEX file can only be created by THINK C. | ||
65 | However, for MATLAB 5, we'll be able to use Metrowerks CodeWarrior for both 68K and PPC, so this | ||
66 | cludge can be dropped when we drop support for MATLAB 4. | ||
67 | Denis Pelli, 4/1/97. | ||
68 | */ | ||
69 | static EDGE_HANDLER edge_foos[8]; | ||
70 | |||
71 | void InitializeTable(EDGE_HANDLER edge_foos[]) | ||
72 | { | ||
73 | static int i=0; | ||
74 | |||
75 | if(i>0) return; | ||
76 | edge_foos[i].name="dont-compute"; | ||
77 | edge_foos[i++].func=nocompute; | ||
78 | edge_foos[i].name="zero"; | ||
79 | edge_foos[i++].func=zero; | ||
80 | edge_foos[i].name="repeat"; | ||
81 | edge_foos[i++].func=repeat; | ||
82 | edge_foos[i].name="reflect1"; | ||
83 | edge_foos[i++].func=reflect1; | ||
84 | edge_foos[i].name="reflect2"; | ||
85 | edge_foos[i++].func=reflect2; | ||
86 | edge_foos[i].name="extend"; | ||
87 | edge_foos[i++].func=Extend; | ||
88 | edge_foos[i].name="predict"; | ||
89 | edge_foos[i++].func=predict; | ||
90 | edge_foos[i].name="ereflect"; | ||
91 | edge_foos[i++].func=ereflect; | ||
92 | } | ||
93 | #endif | ||
94 | |||
95 | /* | ||
96 | Function looks up an edge handler id string in the structure above, and | ||
97 | returns the associated function | ||
98 | */ | ||
99 | fptr edge_function(char *edges) | ||
100 | { | ||
101 | int i; | ||
102 | |||
103 | #if THINK_C | ||
104 | InitializeTable(edge_foos); | ||
105 | #endif | ||
106 | for (i = 0; i<sizeof(edge_foos)/sizeof(EDGE_HANDLER); i++) | ||
107 | if (strcmp(edges,edge_foos[i].name) == 0) | ||
108 | return(edge_foos[i].func); | ||
109 | printf("Error: '%s' is not the name of a valid edge-handler!\n",edges); | ||
110 | for (i=0; i<sizeof(edge_foos)/sizeof(EDGE_HANDLER); i++) | ||
111 | { | ||
112 | if (i==0) printf(" Options are: "); | ||
113 | else printf(", "); | ||
114 | printf("%s",edge_foos[i].name); | ||
115 | } | ||
116 | printf("\n"); | ||
117 | return(0); | ||
118 | } | ||
119 | |||
120 | /* | ||
121 | ---------------- EDGE HANDLER ARGUMENTS ------------------------ | ||
122 | filt - array of filter taps. | ||
123 | x_dim, y_dim - x and y dimensions of filt. | ||
124 | x_pos - position of filter relative to the horizontal image edges. Negative | ||
125 | values indicate left edge, positive indicate right edge. Zero | ||
126 | indicates that the filter is not touching either edge. An absolute | ||
127 | value of 1 indicates that the edge tap of the filter is over the | ||
128 | edge pixel of the image. | ||
129 | y_pos - analogous to x_pos. | ||
130 | result - array where the resulting filter will go. The edge | ||
131 | of this filter will be aligned with the image for application... | ||
132 | f_or_e - equal to one of the two constants EXPAND or FILTER. | ||
133 | -------------------------------------------------------------------- | ||
134 | */ | ||
135 | |||
136 | |||
137 | /* -------------------------------------------------------------------- | ||
138 | nocompute() - Return zero for values where filter hangs over the edge. | ||
139 | */ | ||
140 | |||
141 | int nocompute(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) | ||
142 | register double *filt, *result; | ||
143 | register int x_dim; | ||
144 | int y_dim, x_pos, y_pos, f_or_e; | ||
145 | { | ||
146 | register int i; | ||
147 | register int size = x_dim*y_dim; | ||
148 | |||
149 | if ( (x_pos>1) OR (x_pos<-1) OR (y_pos>1) OR (y_pos<-1) ) | ||
150 | for (i=0; i<size; i++) result[i] = 0.0; | ||
151 | else | ||
152 | for (i=0; i<size; i++) result[i] = filt[i]; | ||
153 | return(0); | ||
154 | } | ||
155 | |||
156 | /* -------------------------------------------------------------------- | ||
157 | zero() - Zero outside of image. Discontinuous, but adds zero energy. */ | ||
158 | |||
159 | int zero(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) | ||
160 | register double *filt, *result; | ||
161 | register int x_dim; | ||
162 | int y_dim, x_pos, y_pos, f_or_e; | ||
163 | { | ||
164 | register int y_filt,x_filt, y_res,x_res; | ||
165 | int filt_sz = x_dim*y_dim; | ||
166 | int x_start = ((x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0)); | ||
167 | int y_start = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); | ||
168 | int i; | ||
169 | |||
170 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
171 | |||
172 | for (y_filt=0, y_res=y_start; | ||
173 | y_filt<filt_sz; | ||
174 | y_filt+=x_dim, y_res+=x_dim) | ||
175 | if ((y_res >= 0) AND (y_res < filt_sz)) | ||
176 | for (x_filt=y_filt, x_res=x_start; | ||
177 | x_filt<y_filt+x_dim; | ||
178 | x_filt++, x_res++) | ||
179 | if ((x_res >= 0) AND (x_res < x_dim)) | ||
180 | result[y_res+x_res] = filt[x_filt]; | ||
181 | return(0); | ||
182 | } | ||
183 | |||
184 | /* -------------------------------------------------------------------- | ||
185 | repeat() - repeat edge pixel. Continuous, but content is usually | ||
186 | different from image. | ||
187 | */ | ||
188 | |||
189 | int repeat(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) | ||
190 | register double *filt, *result; | ||
191 | register int x_dim; | ||
192 | int y_dim, x_pos, y_pos, f_or_e; | ||
193 | { | ||
194 | register int y_filt,x_filt, y_res,x_res; | ||
195 | int filt_sz = x_dim*y_dim; | ||
196 | int x_start = ((x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0)); | ||
197 | int y_start = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); | ||
198 | int i; | ||
199 | |||
200 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
201 | |||
202 | for (y_filt=0, y_res=y_start; | ||
203 | y_filt<filt_sz; | ||
204 | y_filt+=x_dim, y_res+=x_dim) | ||
205 | for (x_filt=y_filt, x_res=x_start; | ||
206 | x_filt<y_filt+x_dim; | ||
207 | x_filt++, x_res++) | ||
208 | result[((y_res>=0)?((y_res<filt_sz)?y_res:(filt_sz-x_dim)):0) | ||
209 | + ((x_res>=0)?((x_res<x_dim)?x_res:(x_dim-1)):0)] | ||
210 | += filt[x_filt]; | ||
211 | return(0); | ||
212 | } | ||
213 | |||
214 | /* -------------------------------------------------------------------- | ||
215 | reflect2() - "Normal" image reflection. The edge pixel is repeated, | ||
216 | then the next pixel, etc. Continuous, attempting to maintain | ||
217 | "similar" content, but discontinuous first derivative. | ||
218 | */ | ||
219 | |||
220 | int reflect2(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) | ||
221 | register double *filt, *result; | ||
222 | register int x_dim; | ||
223 | int y_dim, x_pos, y_pos, f_or_e; | ||
224 | { | ||
225 | register int y_filt,x_filt, y_edge,x_edge; | ||
226 | register int x_base = (x_pos>0)?(x_dim-1):0; | ||
227 | register int y_base = (y_pos>0)?(x_dim*(y_dim-1)):0; | ||
228 | int filt_sz = x_dim*y_dim; | ||
229 | int x_edge_dist = (x_pos>0)?(x_pos-x_dim-1):(x_pos+1); | ||
230 | int y_edge_dist = x_dim * ((y_pos>0)?(y_pos-y_dim-1):(y_pos+1)); | ||
231 | int i; | ||
232 | |||
233 | #ifdef DEBUG | ||
234 | printf("(%d,%d) ",y_pos,x_pos); | ||
235 | if (x_pos==0) printf("\n"); | ||
236 | #endif | ||
237 | |||
238 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
239 | |||
240 | for (y_filt=0, y_edge=y_edge_dist; | ||
241 | y_filt<filt_sz; | ||
242 | y_filt+=x_dim, y_edge+=x_dim) | ||
243 | { | ||
244 | if (y_edge IS 0) y_edge+=x_dim; | ||
245 | for (x_filt=y_filt, x_edge=x_edge_dist; | ||
246 | x_filt<y_filt+x_dim; | ||
247 | x_filt++, x_edge++) | ||
248 | { | ||
249 | if (x_edge IS 0) x_edge++; | ||
250 | result[ABS(y_base-ABS(y_edge)+x_dim) + ABS(x_base-ABS(x_edge)+1)] | ||
251 | += filt[x_filt]; | ||
252 | } | ||
253 | } | ||
254 | return(0); | ||
255 | } | ||
256 | |||
257 | /* -------------------------------------------------------------------- | ||
258 | reflect1() - Reflection through the edge pixels. This is the right thing | ||
259 | to do if you are subsampling by 2, since it maintains parity (even | ||
260 | pixels positions remain even, odd ones remain odd). (note: procedure differs | ||
261 | depending on f_or_e parameter). */ | ||
262 | |||
263 | int reflect1(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) | ||
264 | register double *filt, *result; | ||
265 | register int x_dim; | ||
266 | int y_dim, x_pos, y_pos, f_or_e; | ||
267 | { | ||
268 | int filt_sz = x_dim*y_dim; | ||
269 | register int x_start = 0, y_start = 0, x_stop = x_dim, y_stop = filt_sz; | ||
270 | register int y_filt,x_filt, y_edge,x_edge; | ||
271 | register int x_base = (x_pos>0)?(x_dim-1):0; | ||
272 | register int y_base = (y_pos>0)?(x_dim*(y_dim-1)):0; | ||
273 | int x_edge_dist = (x_pos>0)?(x_pos-x_dim):((x_pos<0)?(x_pos+1):0); | ||
274 | int y_edge_dist = x_dim * ((y_pos>0)?(y_pos-y_dim):((y_pos<0)?(y_pos+1):0)); | ||
275 | int i; | ||
276 | int mx_pos = (x_dim/2)+1; | ||
277 | int my_pos = (y_dim/2)+1; | ||
278 | |||
279 | #ifdef DEBUG | ||
280 | printf("(%d,%d) ",y_pos,x_pos); | ||
281 | if (x_pos==0) printf("\n"); | ||
282 | #endif | ||
283 | |||
284 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
285 | |||
286 | /* if EXPAND and filter is centered on image edge, do not reflect */ | ||
287 | if (f_or_e IS EXPAND) | ||
288 | { | ||
289 | if (x_pos IS mx_pos) x_stop = (x_dim+1)/2; | ||
290 | else if (x_pos IS -mx_pos) { x_start = x_dim/2; x_edge_dist = 0; } | ||
291 | |||
292 | if (y_pos IS my_pos) y_stop = x_dim*((y_dim+1)/2); | ||
293 | else if (y_pos IS -my_pos) { y_start = x_dim*(y_dim/2); y_edge_dist = 0;} | ||
294 | } | ||
295 | |||
296 | /* reflect at boundary of image */ | ||
297 | for (y_filt=y_start, y_edge=y_edge_dist; | ||
298 | y_filt<y_stop; | ||
299 | y_filt+=x_dim, y_edge+=x_dim) | ||
300 | for (x_filt=y_filt+x_start, x_edge=x_edge_dist; | ||
301 | x_filt<y_filt+x_stop; | ||
302 | x_filt++, x_edge++) | ||
303 | result[ABS(y_base-ABS(y_edge)) + ABS(x_base-ABS(x_edge))] | ||
304 | += filt[x_filt]; | ||
305 | |||
306 | /* if EXPAND and filter is not centered on image edge, mult edge by 2 */ | ||
307 | if (f_or_e IS EXPAND) | ||
308 | { | ||
309 | if ( (ABS(x_pos) ISNT mx_pos) AND (x_pos ISNT 0) ) | ||
310 | for (y_filt=x_base; y_filt<filt_sz; y_filt+=x_dim) | ||
311 | result[y_filt] += result[y_filt]; | ||
312 | if ( (ABS(y_pos) ISNT my_pos) AND (y_pos ISNT 0) ) | ||
313 | for (x_filt=y_base; x_filt<y_base+x_dim; x_filt++) | ||
314 | result[x_filt] += result[x_filt]; | ||
315 | } | ||
316 | return(0); | ||
317 | } | ||
318 | |||
319 | /* -------------------------------------------------------------------- | ||
320 | Extend() - Extend image by reflecting and inverting about edge pixel | ||
321 | value. Maintains continuity in intensity AND first derivative (but | ||
322 | not higher derivs). | ||
323 | */ | ||
324 | |||
325 | int Extend(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) | ||
326 | register double *filt, *result; | ||
327 | register int x_dim; | ||
328 | int y_dim, x_pos, y_pos, f_or_e; | ||
329 | { | ||
330 | int filt_sz = x_dim*y_dim; | ||
331 | register int x_start = 0, y_start = 0, x_stop = x_dim, y_stop = filt_sz; | ||
332 | register int y_filt,x_filt, y_edge,x_edge; | ||
333 | register int x_base = (x_pos>0)?(x_dim-1):0; | ||
334 | register int y_base = (y_pos>0)?(x_dim*(y_dim-1)):0; | ||
335 | int x_edge_dist = (x_pos>0)?(x_pos-x_dim):((x_pos<-1)?(x_pos+1):0); | ||
336 | int y_edge_dist = x_dim * ((y_pos>0)?(y_pos-y_dim):((y_pos<-1)?(y_pos+1):0)); | ||
337 | int i; | ||
338 | int mx_pos = (x_dim/2)+1; | ||
339 | int my_pos = (y_dim/2)+1; | ||
340 | |||
341 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
342 | |||
343 | /* if EXPAND and filter is centered on image edge, do not reflect */ | ||
344 | if (f_or_e IS EXPAND) | ||
345 | { | ||
346 | if (x_pos IS mx_pos) x_stop = (x_dim+1)/2; | ||
347 | else if (x_pos IS -mx_pos) { x_start = x_dim/2; x_edge_dist = 0; } | ||
348 | |||
349 | if (y_pos IS my_pos) y_stop = x_dim*((y_dim+1)/2); | ||
350 | else if (y_pos IS -my_pos) { y_start = x_dim*(y_dim/2); y_edge_dist = 0;} | ||
351 | } | ||
352 | |||
353 | /* reflect at boundary of image */ | ||
354 | for (y_filt=y_start, y_edge=y_edge_dist; | ||
355 | y_filt<y_stop; | ||
356 | y_filt+=x_dim, y_edge+=x_dim) | ||
357 | for (x_filt=y_filt+x_start, x_edge=x_edge_dist; | ||
358 | x_filt<y_filt+x_stop; | ||
359 | x_filt++, x_edge++) | ||
360 | if (((!y_base AND (sgn(y_edge) IS -1)) /* y overhanging */ | ||
361 | OR | ||
362 | (y_base AND (sgn(y_edge) IS 1))) | ||
363 | ISNT /* XOR */ | ||
364 | ((!x_base AND (sgn(x_edge) IS -1)) /* x overhanging */ | ||
365 | OR | ||
366 | (x_base AND (sgn(x_edge) IS 1)))) | ||
367 | { | ||
368 | result[ABS(y_base-ABS(y_edge)) + ABS(x_base-ABS(x_edge))] | ||
369 | -= filt[x_filt]; | ||
370 | result[clip(y_base+y_edge,0,y_dim) + clip(x_base+x_edge,0,x_dim)] | ||
371 | += filt[x_filt] + filt[x_filt]; | ||
372 | } | ||
373 | else result[ABS(y_base-ABS(y_edge)) + ABS(x_base-ABS(x_edge))] | ||
374 | += filt[x_filt]; | ||
375 | return(0); | ||
376 | } | ||
377 | |||
378 | /* -------------------------------------------------------------------- | ||
379 | predict() - Simple prediction. Like zero, but multiplies the result | ||
380 | by the reciprocal of the percentage of filter being used. (i.e. if | ||
381 | 50% of the filter is hanging over the edge of the image, multiply the | ||
382 | taps being used by 2). */ | ||
383 | |||
384 | int predict(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) | ||
385 | register double *filt, *result; | ||
386 | register int x_dim; | ||
387 | int y_dim, x_pos, y_pos, f_or_e; | ||
388 | { | ||
389 | register int y_filt,x_filt, y_res,x_res; | ||
390 | register double taps_used = 0.0; /* int *** */ | ||
391 | register double fraction = 0.0; | ||
392 | int filt_sz = x_dim*y_dim; | ||
393 | int x_start = ((x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0)); | ||
394 | int y_start = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); | ||
395 | int i; | ||
396 | |||
397 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
398 | |||
399 | for (y_filt=0, y_res=y_start; | ||
400 | y_filt<filt_sz; | ||
401 | y_filt+=x_dim, y_res+=x_dim) | ||
402 | if ((y_res >= 0) AND (y_res < filt_sz)) | ||
403 | for (x_filt=y_filt, x_res=x_start; | ||
404 | x_filt<y_filt+x_dim; | ||
405 | x_filt++, x_res++) | ||
406 | if ((x_res >= 0) AND (x_res < x_dim)) | ||
407 | { | ||
408 | result[y_res+x_res] = filt[x_filt]; | ||
409 | taps_used += ABS(filt[x_filt]); | ||
410 | } | ||
411 | printf("TU: %f\n",taps_used); | ||
412 | if (f_or_e IS FILTER) | ||
413 | { | ||
414 | /* fraction = ( (double) filt_sz ) / ( (double) taps_used ); */ | ||
415 | for (i=0; i<filt_sz; i++) fraction += ABS(filt[i]); | ||
416 | fraction = ( fraction / taps_used ); | ||
417 | for (i=0; i<filt_sz; i++) result[i] *= fraction; | ||
418 | } | ||
419 | return(0); | ||
420 | } | ||
421 | |||
422 | |||
423 | /* -------------------------------------------------------------------- | ||
424 | Reflect, multiplying tap of filter which is at the edge of the image | ||
425 | by root 2. This maintains orthogonality of odd-length linear-phase | ||
426 | QMF filters, but it is not useful for most applications, since it | ||
427 | alters the DC level. */ | ||
428 | |||
429 | int ereflect(filt,x_dim,y_dim,x_pos,y_pos,result,f_or_e) | ||
430 | register double *filt, *result; | ||
431 | register int x_dim; | ||
432 | int y_dim, x_pos, y_pos, f_or_e; | ||
433 | { | ||
434 | register int y_filt,x_filt, y_edge,x_edge; | ||
435 | register int x_base = (x_pos>0)?(x_dim-1):0; | ||
436 | register int y_base = x_dim * ( (y_pos>0)?(y_dim-1):0 ); | ||
437 | int filt_sz = x_dim*y_dim; | ||
438 | int x_edge_dist = (x_pos>1)?(x_pos-x_dim):((x_pos<-1)?(x_pos+1):0); | ||
439 | int y_edge_dist = x_dim * ( (y_pos>1)?(y_pos-y_dim):((y_pos<-1)?(y_pos+1):0) ); | ||
440 | int i; | ||
441 | double norm,onorm; | ||
442 | |||
443 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
444 | |||
445 | /* reflect at boundary */ | ||
446 | for (y_filt=0, y_edge=y_edge_dist; | ||
447 | y_filt<filt_sz; | ||
448 | y_filt+=x_dim, y_edge+=x_dim) | ||
449 | for (x_filt=y_filt, x_edge=x_edge_dist; | ||
450 | x_filt<y_filt+x_dim; | ||
451 | x_filt++, x_edge++) | ||
452 | result[ABS(y_base-ABS(y_edge)) + ABS(x_base-ABS(x_edge))] | ||
453 | += filt[x_filt]; | ||
454 | |||
455 | /* now multiply edge by root 2 */ | ||
456 | if (x_pos ISNT 0) | ||
457 | for (y_filt=x_base; y_filt<filt_sz; y_filt+=x_dim) | ||
458 | result[y_filt] *= ROOT2; | ||
459 | if (y_pos ISNT 0) | ||
460 | for (x_filt=y_base; x_filt<y_base+x_dim; x_filt++) | ||
461 | result[x_filt] *= ROOT2; | ||
462 | |||
463 | /* now normalize to norm of original filter */ | ||
464 | for (norm=0.0,i=0; i<filt_sz; i++) | ||
465 | norm += (result[i]*result[i]); | ||
466 | norm=sqrt(norm); | ||
467 | |||
468 | for (onorm=0.0,i=0; i<filt_sz; i++) | ||
469 | onorm += (filt[i]*filt[i]); | ||
470 | onorm = sqrt(onorm); | ||
471 | |||
472 | norm = norm/onorm; | ||
473 | for (i=0; i<filt_sz; i++) | ||
474 | result[i] /= norm; | ||
475 | return(0); | ||
476 | } | ||
477 | |||
478 | |||
479 | /* ------- printout stuff for testing ------------------------------ | ||
480 | printf("Xpos: %d, Ypos: %d", x_pos, y_pos); | ||
481 | for (y_filt=0; y_filt<y_dim; y_filt++) | ||
482 | { | ||
483 | printf("\n"); | ||
484 | for (x_filt=0; x_filt<x_dim; x_filt++) | ||
485 | printf("%6.1f", result[y_filt*x_dim+x_filt]); | ||
486 | } | ||
487 | printf("\n"); | ||
488 | */ | ||
489 | |||
490 | |||
491 | |||
492 | /* Local Variables: */ | ||
493 | /* buffer-read-only: t */ | ||
494 | /* End: */ | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/edges.c b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/edges.c new file mode 100755 index 0000000..98b377d --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/edges.c | |||
@@ -0,0 +1,647 @@ | |||
1 | /* | ||
2 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
3 | ;;; File: edges.c | ||
4 | ;;; Author: Eero Simoncelli | ||
5 | ;;; Description: Boundary handling routines for use with convolve.c | ||
6 | ;;; Creation Date: Spring 1987. | ||
7 | ;;; MODIFIED, 6/96, to operate on double float arrays. | ||
8 | ;;; MODIFIED by dgp, 4/1/97, to support THINK C. | ||
9 | ;;; MODIFIED, 8/97: reflect1, reflect2, repeat, extend upgraded to | ||
10 | ;;; work properly for non-symmetric filters. Added qreflect2 to handle | ||
11 | ;;; even-length QMF's which broke under the reflect2 modification. | ||
12 | ;;; ---------------------------------------------------------------- | ||
13 | ;;; Object-Based Vision and Image Understanding System (OBVIUS), | ||
14 | ;;; Copyright 1988, Vision Science Group, Media Laboratory, | ||
15 | ;;; Massachusetts Institute of Technology. | ||
16 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
17 | */ | ||
18 | |||
19 | /* This file contains functions which determine how edges are to be | ||
20 | handled when performing convolutions of images with linear filters. | ||
21 | Any edge handling function which is local and linear may be defined, | ||
22 | except (unfortunately) constants cannot be added. So to treat the | ||
23 | edges as if the image is surrounded by a gray field, you must paste it | ||
24 | into a gray image, convolve, and crop it out... The main convolution | ||
25 | functions are called internal_reduce and internal_expand and are | ||
26 | defined in the file convolve.c. The idea is that the convolution | ||
27 | function calls the edge handling function which computes a new filter | ||
28 | based on the old filter and the distance to the edge of the image. | ||
29 | For example, reflection is done by reflecting the filter through the | ||
30 | appropriate axis and summing. Currently defined functions are listed | ||
31 | below. | ||
32 | */ | ||
33 | |||
34 | |||
35 | #include <stdio.h> | ||
36 | #include <math.h> | ||
37 | #include <string.h> | ||
38 | #include "convolve.h" | ||
39 | |||
40 | #define sgn(a) ( ((a)>0)?1:(((a)<0)?-1:0) ) | ||
41 | #define clip(a,mn,mx) ( ((a)<(mn))?(mn):(((a)>=(mx))?(mx-1):(a)) ) | ||
42 | |||
43 | int reflect1(), reflect2(), qreflect2(), repeat(), zero(), Extend(), nocompute(); | ||
44 | int ereflect(), predict(); | ||
45 | |||
46 | /* Lookup table matching a descriptive string to the edge-handling function */ | ||
47 | #if !THINK_C | ||
48 | static EDGE_HANDLER edge_foos[] = | ||
49 | { | ||
50 | { "dont-compute", nocompute }, /* zero output for filter touching edge */ | ||
51 | { "zero", zero }, /* zero outside of image */ | ||
52 | { "repeat", repeat }, /* repeat edge pixel */ | ||
53 | { "reflect1", reflect1 }, /* reflect about edge pixels */ | ||
54 | { "reflect2", reflect2 }, /* reflect image, including edge pixels */ | ||
55 | { "qreflect2", qreflect2 }, /* reflect image, including edge pixels | ||
56 | for even-length QMF decompositions */ | ||
57 | { "extend", Extend }, /* extend (reflect & invert) */ | ||
58 | { "ereflect", ereflect }, /* orthogonal QMF reflection */ | ||
59 | }; | ||
60 | #else | ||
61 | /* | ||
62 | This is really stupid, but THINK C won't allow initialization of static variables in | ||
63 | a code resource with string addresses. So we do it this way. | ||
64 | The 68K code for a MATLAB 4 MEX file can only be created by THINK C. | ||
65 | However, for MATLAB 5, we'll be able to use Metrowerks CodeWarrior for both 68K and PPC, so this | ||
66 | cludge can be dropped when we drop support for MATLAB 4. | ||
67 | Denis Pelli, 4/1/97. | ||
68 | */ | ||
69 | static EDGE_HANDLER edge_foos[8]; | ||
70 | |||
71 | void InitializeTable(EDGE_HANDLER edge_foos[]) | ||
72 | { | ||
73 | static int i=0; | ||
74 | |||
75 | if(i>0) return; | ||
76 | edge_foos[i].name="dont-compute"; | ||
77 | edge_foos[i++].func=nocompute; | ||
78 | edge_foos[i].name="zero"; | ||
79 | edge_foos[i++].func=zero; | ||
80 | edge_foos[i].name="repeat"; | ||
81 | edge_foos[i++].func=repeat; | ||
82 | edge_foos[i].name="reflect1"; | ||
83 | edge_foos[i++].func=reflect1; | ||
84 | edge_foos[i].name="reflect2"; | ||
85 | edge_foos[i++].func=reflect2; | ||
86 | edge_foos[i].name="qreflect2"; | ||
87 | edge_foos[i++].func=qreflect2; | ||
88 | edge_foos[i].name="extend"; | ||
89 | edge_foos[i++].func=Extend; | ||
90 | edge_foos[i].name="ereflect"; | ||
91 | edge_foos[i++].func=ereflect; | ||
92 | } | ||
93 | #endif | ||
94 | |||
95 | /* | ||
96 | Function looks up an edge handler id string in the structure above, and | ||
97 | returns the associated function | ||
98 | */ | ||
99 | fptr edge_function(char *edges) | ||
100 | { | ||
101 | int i; | ||
102 | |||
103 | #if THINK_C | ||
104 | InitializeTable(edge_foos); | ||
105 | #endif | ||
106 | for (i = 0; i<sizeof(edge_foos)/sizeof(EDGE_HANDLER); i++) | ||
107 | if (strcmp(edges,edge_foos[i].name) IS 0) | ||
108 | return(edge_foos[i].func); | ||
109 | printf("Error: '%s' is not the name of a valid edge-handler!\n",edges); | ||
110 | for (i=0; i<sizeof(edge_foos)/sizeof(EDGE_HANDLER); i++) | ||
111 | { | ||
112 | if (i IS 0) printf(" Options are: "); | ||
113 | else printf(", "); | ||
114 | printf("%s",edge_foos[i].name); | ||
115 | } | ||
116 | printf("\n"); | ||
117 | return(0); | ||
118 | } | ||
119 | |||
120 | /* | ||
121 | ---------------- EDGE HANDLER ARGUMENTS ------------------------ | ||
122 | filt - array of filter taps. | ||
123 | x_dim, y_dim - x and y dimensions of filt. | ||
124 | x_pos - position of filter relative to the horizontal image edges. Negative | ||
125 | values indicate left edge, positive indicate right edge. Zero | ||
126 | indicates that the filter is not touching either edge. An absolute | ||
127 | value of 1 indicates that the edge tap of the filter is over the | ||
128 | edge pixel of the image. | ||
129 | y_pos - analogous to x_pos. | ||
130 | result - array where the resulting filter will go. The edge | ||
131 | of this filter will be aligned with the image for application... | ||
132 | r_or_e - equal to one of the two constants EXPAND or REDUCE. | ||
133 | -------------------------------------------------------------------- | ||
134 | */ | ||
135 | |||
136 | |||
137 | /* -------------------------------------------------------------------- | ||
138 | nocompute() - Return zero for values where filter hangs over the edge. | ||
139 | */ | ||
140 | |||
141 | int nocompute(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) | ||
142 | register double *filt, *result; | ||
143 | register int x_dim; | ||
144 | int y_dim, x_pos, y_pos, r_or_e; | ||
145 | { | ||
146 | register int i; | ||
147 | register int size = x_dim*y_dim; | ||
148 | |||
149 | if ( (x_pos>1) OR (x_pos<-1) OR (y_pos>1) OR (y_pos<-1) ) | ||
150 | for (i=0; i<size; i++) result[i] = 0.0; | ||
151 | else | ||
152 | for (i=0; i<size; i++) result[i] = filt[i]; | ||
153 | |||
154 | return(0); | ||
155 | } | ||
156 | |||
157 | /* -------------------------------------------------------------------- | ||
158 | zero() - Zero outside of image. Discontinuous, but adds zero energy. */ | ||
159 | |||
160 | int zero(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) | ||
161 | register double *filt, *result; | ||
162 | register int x_dim; | ||
163 | int y_dim, x_pos, y_pos, r_or_e; | ||
164 | { | ||
165 | register int y_filt,x_filt, y_res,x_res; | ||
166 | int filt_sz = x_dim*y_dim; | ||
167 | int x_start = ((x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0)); | ||
168 | int y_start = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); | ||
169 | int i; | ||
170 | |||
171 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
172 | |||
173 | for (y_filt=0, y_res=y_start; | ||
174 | y_filt<filt_sz; | ||
175 | y_filt+=x_dim, y_res+=x_dim) | ||
176 | if ((y_res >= 0) AND (y_res < filt_sz)) | ||
177 | for (x_filt=y_filt, x_res=x_start; | ||
178 | x_filt<y_filt+x_dim; | ||
179 | x_filt++, x_res++) | ||
180 | if ((x_res >= 0) AND (x_res < x_dim)) | ||
181 | result[y_res+x_res] = filt[x_filt]; | ||
182 | return(0); | ||
183 | } | ||
184 | |||
185 | |||
186 | /* -------------------------------------------------------------------- | ||
187 | reflect1() - Reflection through the edge pixels. Continuous, but | ||
188 | discontinuous first derivative. This is the right thing to do if you | ||
189 | are subsampling by 2, since it maintains parity (even pixels positions | ||
190 | remain even, odd ones remain odd). | ||
191 | */ | ||
192 | |||
193 | int reflect1(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) | ||
194 | register double *filt, *result; | ||
195 | register int x_dim; | ||
196 | int y_dim, x_pos, y_pos, r_or_e; | ||
197 | { | ||
198 | int filt_sz = x_dim*y_dim; | ||
199 | register int y_filt,x_filt, y_res, x_res; | ||
200 | register int x_base = (x_pos>0)?(x_dim-1):0; | ||
201 | register int y_base = x_dim * ((y_pos>0)?(y_dim-1):0); | ||
202 | int x_overhang = (x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0); | ||
203 | int y_overhang = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); | ||
204 | int i; | ||
205 | int mx_pos = (x_pos<0)?(x_dim/2):((x_dim-1)/2); | ||
206 | int my_pos = x_dim * ((y_pos<0)?(y_dim/2):((y_dim-1)/2)); | ||
207 | |||
208 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
209 | |||
210 | if (r_or_e IS REDUCE) | ||
211 | for (y_filt=0, y_res=y_overhang-y_base; | ||
212 | y_filt<filt_sz; | ||
213 | y_filt+=x_dim, y_res+=x_dim) | ||
214 | for (x_filt=y_filt, x_res=x_overhang-x_base; | ||
215 | x_filt<y_filt+x_dim; | ||
216 | x_filt++, x_res++) | ||
217 | result[ABS(y_base-ABS(y_res)) + ABS(x_base-ABS(x_res))] | ||
218 | += filt[x_filt]; | ||
219 | else { | ||
220 | y_overhang = ABS(y_overhang); | ||
221 | x_overhang = ABS(x_overhang); | ||
222 | for (y_res=y_base, y_filt = y_base-y_overhang; | ||
223 | y_filt > y_base-filt_sz; | ||
224 | y_filt-=x_dim, y_res-=x_dim) | ||
225 | { | ||
226 | for (x_res=x_base, x_filt=x_base-x_overhang; | ||
227 | x_filt > x_base-x_dim; | ||
228 | x_res--, x_filt--) | ||
229 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; | ||
230 | if ((x_overhang ISNT mx_pos) AND (x_pos ISNT 0)) | ||
231 | for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang; | ||
232 | x_filt > x_base-x_dim; | ||
233 | x_res--, x_filt--) | ||
234 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; | ||
235 | } | ||
236 | if ((y_overhang ISNT my_pos) AND (y_pos ISNT 0)) | ||
237 | for (y_res=y_base, y_filt = y_base-2*my_pos+y_overhang; | ||
238 | y_filt > y_base-filt_sz; | ||
239 | y_filt-=x_dim, y_res-=x_dim) | ||
240 | { | ||
241 | for (x_res=x_base, x_filt=x_base-x_overhang; | ||
242 | x_filt > x_base-x_dim; | ||
243 | x_res--, x_filt--) | ||
244 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; | ||
245 | if ((x_overhang ISNT mx_pos) AND (x_pos ISNT 0)) | ||
246 | for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang; | ||
247 | x_filt > x_base-x_dim; | ||
248 | x_res--, x_filt--) | ||
249 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; | ||
250 | } | ||
251 | } | ||
252 | |||
253 | return(0); | ||
254 | } | ||
255 | |||
256 | /* -------------------------------------------------------------------- | ||
257 | reflect2() - Reflect image at boundary. The edge pixel is repeated, | ||
258 | then the next pixel, etc. Continuous, but discontinuous first | ||
259 | derivative. | ||
260 | */ | ||
261 | |||
262 | int reflect2(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) | ||
263 | register double *filt, *result; | ||
264 | register int x_dim; | ||
265 | int y_dim, x_pos, y_pos, r_or_e; | ||
266 | { | ||
267 | int filt_sz = x_dim*y_dim; | ||
268 | register int y_filt,x_filt, y_res, x_res; | ||
269 | register int x_base = (x_pos>0)?(x_dim-1):0; | ||
270 | register int y_base = x_dim * ((y_pos>0)?(y_dim-1):0); | ||
271 | int x_overhang = (x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0); | ||
272 | int y_overhang = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); | ||
273 | int i; | ||
274 | int mx_pos = (x_pos<0)?(x_dim/2):((x_dim-1)/2); | ||
275 | int my_pos = x_dim * ((y_pos<0)?(y_dim/2):((y_dim-1)/2)); | ||
276 | |||
277 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
278 | |||
279 | if (r_or_e IS REDUCE) | ||
280 | for (y_filt=0, y_res = (y_overhang-y_base) - ((y_pos>0)?x_dim:0); | ||
281 | y_filt<filt_sz; | ||
282 | y_filt+=x_dim, y_res+=x_dim) | ||
283 | { | ||
284 | if (y_res IS 0) y_res+=x_dim; | ||
285 | for (x_filt=y_filt, x_res = (x_overhang-x_base) - ((x_pos>0)?1:0); | ||
286 | x_filt<y_filt+x_dim; | ||
287 | x_filt++, x_res++) | ||
288 | { | ||
289 | if (x_res IS 0) x_res++; | ||
290 | result[ABS(y_base-ABS(y_res)+x_dim) + ABS(x_base-ABS(x_res)+1)] | ||
291 | += filt[x_filt]; | ||
292 | } | ||
293 | } | ||
294 | else { | ||
295 | y_overhang = ABS(y_overhang); | ||
296 | x_overhang = ABS(x_overhang); | ||
297 | for (y_res=y_base, y_filt = y_base-y_overhang; | ||
298 | y_filt > y_base-filt_sz; | ||
299 | y_filt-=x_dim, y_res-=x_dim) | ||
300 | { | ||
301 | for (x_res=x_base, x_filt=x_base-x_overhang; | ||
302 | x_filt > x_base-x_dim; | ||
303 | x_res--, x_filt--) | ||
304 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; | ||
305 | if (x_pos ISNT 0) | ||
306 | for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang-1; | ||
307 | x_filt > x_base-x_dim; | ||
308 | x_res--, x_filt--) | ||
309 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; | ||
310 | } | ||
311 | if (y_pos ISNT 0) | ||
312 | for (y_res=y_base, y_filt = y_base-2*my_pos+y_overhang-x_dim; | ||
313 | y_filt > y_base-filt_sz; | ||
314 | y_filt-=x_dim, y_res-=x_dim) | ||
315 | { | ||
316 | for (x_res=x_base, x_filt=x_base-x_overhang; | ||
317 | x_filt > x_base-x_dim; | ||
318 | x_res--, x_filt--) | ||
319 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; | ||
320 | if (x_pos ISNT 0) | ||
321 | for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang-1; | ||
322 | x_filt > x_base-x_dim; | ||
323 | x_res--, x_filt--) | ||
324 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; | ||
325 | } | ||
326 | } | ||
327 | |||
328 | return(0); | ||
329 | } | ||
330 | |||
331 | |||
332 | /* -------------------------------------------------------------------- | ||
333 | qreflect2() - Modified version of reflect2 that works properly for | ||
334 | even-length QMF filters. | ||
335 | */ | ||
336 | |||
337 | int qreflect2(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) | ||
338 | double *filt, *result; | ||
339 | int x_dim, y_dim, x_pos, y_pos, r_or_e; | ||
340 | { | ||
341 | reflect2(filt,x_dim,y_dim,x_pos,y_pos,result,0); | ||
342 | return(0); | ||
343 | } | ||
344 | |||
345 | /* -------------------------------------------------------------------- | ||
346 | repeat() - repeat edge pixel. Continuous, with discontinuous first | ||
347 | derivative. | ||
348 | */ | ||
349 | |||
350 | int repeat(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) | ||
351 | register double *filt, *result; | ||
352 | register int x_dim; | ||
353 | int y_dim, x_pos, y_pos, r_or_e; | ||
354 | { | ||
355 | register int y_filt,x_filt, y_res,x_res, y_tmp, x_tmp; | ||
356 | register int x_base = (x_pos>0)?(x_dim-1):0; | ||
357 | register int y_base = x_dim * ((y_pos>0)?(y_dim-1):0); | ||
358 | int x_overhang = ((x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0)); | ||
359 | int y_overhang = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); | ||
360 | int filt_sz = x_dim*y_dim; | ||
361 | int mx_pos = (x_dim/2); | ||
362 | int my_pos = x_dim * (y_dim/2); | ||
363 | int i; | ||
364 | |||
365 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
366 | |||
367 | if (r_or_e IS REDUCE) | ||
368 | for (y_filt=0, y_res=y_overhang; | ||
369 | y_filt<filt_sz; | ||
370 | y_filt+=x_dim, y_res+=x_dim) | ||
371 | for (x_filt=y_filt, x_res=x_overhang; | ||
372 | x_filt<y_filt+x_dim; | ||
373 | x_filt++, x_res++) | ||
374 | /* Clip the index: */ | ||
375 | result[((y_res>=0)?((y_res<filt_sz)?y_res:(filt_sz-x_dim)):0) | ||
376 | + ((x_res>=0)?((x_res<x_dim)?x_res:(x_dim-1)):0)] | ||
377 | += filt[x_filt]; | ||
378 | else { | ||
379 | if ((y_base-y_overhang) ISNT my_pos) | ||
380 | for (y_res=y_base, y_filt=y_base-ABS(y_overhang); | ||
381 | y_filt > y_base-filt_sz; | ||
382 | y_filt-=x_dim, y_res-=x_dim) | ||
383 | if ((x_base-x_overhang) ISNT mx_pos) | ||
384 | for (x_res=x_base, x_filt=x_base-ABS(x_overhang); | ||
385 | x_filt > x_base-x_dim; | ||
386 | x_res--, x_filt--) | ||
387 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; | ||
388 | else /* ((x_base-x_overhang) IS mx_pos) */ | ||
389 | for (x_res=x_base, x_filt=x_base-ABS(x_overhang); | ||
390 | x_filt > x_base-x_dim; | ||
391 | x_filt--, x_res--) | ||
392 | for(x_tmp=x_filt; x_tmp > x_base-x_dim; x_tmp--) | ||
393 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_tmp)]; | ||
394 | else /* ((y_base-y_overhang) IS my_pos) */ | ||
395 | for (y_res=y_base, y_filt=y_base-ABS(y_overhang); | ||
396 | y_filt > y_base-filt_sz; | ||
397 | y_filt-=x_dim, y_res-=x_dim) | ||
398 | for (y_tmp=y_filt; y_tmp > y_base-filt_sz; y_tmp-=x_dim) | ||
399 | if ((x_base-x_overhang) ISNT mx_pos) | ||
400 | for (x_res=x_base, x_filt=x_base-ABS(x_overhang); | ||
401 | x_filt > x_base-x_dim; | ||
402 | x_filt--, x_res--) | ||
403 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_tmp)+ABS(x_filt)]; | ||
404 | else /* ((x_base-x_overhang) IS mx_pos) */ | ||
405 | for (x_res=x_base, x_filt=x_base-ABS(x_overhang); | ||
406 | x_filt > x_base-x_dim; | ||
407 | x_filt--, x_res--) | ||
408 | for (x_tmp=x_filt; x_tmp > x_base-x_dim; x_tmp--) | ||
409 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_tmp)+ABS(x_tmp)]; | ||
410 | } /* End, if r_or_e IS EXPAND */ | ||
411 | |||
412 | return(0); | ||
413 | } | ||
414 | |||
415 | /* -------------------------------------------------------------------- | ||
416 | extend() - Extend image by reflecting and inverting about edge pixel | ||
417 | value. Maintains continuity in intensity AND first derivative (but | ||
418 | not higher derivs). | ||
419 | */ | ||
420 | |||
421 | int Extend(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) | ||
422 | register double *filt, *result; | ||
423 | register int x_dim; | ||
424 | int y_dim, x_pos, y_pos, r_or_e; | ||
425 | { | ||
426 | int filt_sz = x_dim*y_dim; | ||
427 | register int y_filt,x_filt, y_res,x_res, y_tmp, x_tmp; | ||
428 | register int x_base = (x_pos>0)?(x_dim-1):0; | ||
429 | register int y_base = x_dim * ((y_pos>0)?(y_dim-1):0); | ||
430 | int x_overhang = (x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0); | ||
431 | int y_overhang = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); | ||
432 | int mx_pos = (x_pos<0)?(x_dim/2):((x_dim-1)/2); | ||
433 | int my_pos = x_dim * ((y_pos<0)?(y_dim/2):((y_dim-1)/2)); | ||
434 | int i; | ||
435 | |||
436 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
437 | |||
438 | /* Modeled on reflect1() */ | ||
439 | if (r_or_e IS REDUCE) | ||
440 | for (y_filt=0, y_res=y_overhang; | ||
441 | y_filt<filt_sz; | ||
442 | y_filt+=x_dim, y_res+=x_dim) | ||
443 | if ((y_res>=0) AND (y_res<filt_sz)) | ||
444 | for (x_filt=y_filt, x_res=x_overhang; | ||
445 | x_filt<y_filt+x_dim; | ||
446 | x_filt++, x_res++) | ||
447 | if ((x_res>=0) AND (x_res<x_dim)) | ||
448 | result[y_res+x_res] += filt[x_filt]; | ||
449 | else | ||
450 | { | ||
451 | result[y_res+ABS(x_base-ABS(x_res-x_base))] -= filt[x_filt]; | ||
452 | result[y_res+x_base] += 2*filt[x_filt]; | ||
453 | } | ||
454 | else | ||
455 | for (x_filt=y_filt, x_res=x_overhang; | ||
456 | x_filt<y_filt+x_dim; | ||
457 | x_filt++, x_res++) | ||
458 | if ((x_res>=0) AND (x_res<x_dim)) | ||
459 | { | ||
460 | result[ABS(y_base-ABS(y_res-y_base))+x_res] -= filt[x_filt]; | ||
461 | result[y_base+x_res] += 2*filt[x_filt]; | ||
462 | } | ||
463 | else | ||
464 | { | ||
465 | result[ABS(y_base-ABS(y_res-y_base))+ABS(x_base-ABS(x_res-x_base))] | ||
466 | -= filt[x_filt]; | ||
467 | result[y_base+x_base] += 2*filt[x_filt]; | ||
468 | } | ||
469 | else { /* r_or_e ISNT REDUCE */ | ||
470 | y_overhang = ABS(y_overhang); | ||
471 | x_overhang = ABS(x_overhang); | ||
472 | for (y_res=y_base, y_filt = y_base-y_overhang; | ||
473 | y_filt > y_base-filt_sz; | ||
474 | y_filt-=x_dim, y_res-=x_dim) | ||
475 | { | ||
476 | for (x_res=x_base, x_filt=x_base-x_overhang; | ||
477 | x_filt > x_base-x_dim; | ||
478 | x_res--, x_filt--) | ||
479 | result[ABS(y_res)+ABS(x_res)] += filt[ABS(y_filt)+ABS(x_filt)]; | ||
480 | if (x_pos ISNT 0) | ||
481 | if (x_overhang ISNT mx_pos) | ||
482 | for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang; | ||
483 | x_filt > x_base-x_dim; | ||
484 | x_res--, x_filt--) | ||
485 | result[ABS(y_res)+ABS(x_res)] -= filt[ABS(y_filt)+ABS(x_filt)]; | ||
486 | else /* x_overhang IS mx_pos */ | ||
487 | for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang-1; | ||
488 | x_filt > x_base-x_dim; | ||
489 | x_res--, x_filt--) | ||
490 | for (x_tmp=x_filt; x_tmp > x_base-x_dim; x_tmp--) | ||
491 | result[ABS(y_res)+ABS(x_res)] += 2*filt[ABS(y_filt)+ABS(x_tmp)]; | ||
492 | } | ||
493 | if (y_pos ISNT 0) | ||
494 | if (y_overhang ISNT my_pos) | ||
495 | for (y_res=y_base, y_filt = y_base-2*my_pos+y_overhang; | ||
496 | y_filt > y_base-filt_sz; | ||
497 | y_filt-=x_dim, y_res-=x_dim) | ||
498 | { | ||
499 | for (x_res=x_base, x_filt=x_base-x_overhang; | ||
500 | x_filt > x_base-x_dim; | ||
501 | x_res--, x_filt--) | ||
502 | result[ABS(y_res)+ABS(x_res)] -= filt[ABS(y_filt)+ABS(x_filt)]; | ||
503 | if ((x_pos ISNT 0) AND (x_overhang ISNT mx_pos)) | ||
504 | for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang; | ||
505 | x_filt > x_base-x_dim; | ||
506 | x_res--, x_filt--) | ||
507 | result[ABS(y_res)+ABS(x_res)] -= filt[ABS(y_filt)+ABS(x_filt)]; | ||
508 | } | ||
509 | else /* y_overhang IS my_pos */ | ||
510 | for (y_res=y_base, y_filt = y_base-2*my_pos+y_overhang-x_dim; | ||
511 | y_filt > y_base-filt_sz; | ||
512 | y_res-=x_dim, y_filt-=x_dim) | ||
513 | for (y_tmp=y_filt; y_tmp > y_base-filt_sz; y_tmp-=x_dim) | ||
514 | { | ||
515 | for (x_res=x_base, x_filt=x_base-x_overhang; | ||
516 | x_filt > x_base-x_dim; | ||
517 | x_res--, x_filt--) | ||
518 | result[ABS(y_res)+ABS(x_res)] += 2*filt[ABS(y_tmp)+ABS(x_filt)]; | ||
519 | if ((x_pos ISNT 0) AND (x_overhang IS mx_pos)) | ||
520 | for (x_res=x_base, x_filt=x_base-2*mx_pos+x_overhang-1; | ||
521 | x_filt > x_base-x_dim; | ||
522 | x_res--, x_filt--) | ||
523 | for (x_tmp=x_filt; x_tmp > x_base-x_dim; x_tmp--) | ||
524 | result[ABS(y_res)+ABS(x_res)] += 2*filt[ABS(y_tmp)+ABS(x_tmp)]; | ||
525 | } | ||
526 | } /* r_or_e ISNT REDUCE */ | ||
527 | |||
528 | return(0); | ||
529 | } | ||
530 | |||
531 | /* -------------------------------------------------------------------- | ||
532 | predict() - Simple prediction. Like zero, but multiplies the result | ||
533 | by the reciprocal of the percentage of filter being used. (i.e. if | ||
534 | 50% of the filter is hanging over the edge of the image, multiply the | ||
535 | taps being used by 2). */ | ||
536 | |||
537 | int predict(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) | ||
538 | register double *filt, *result; | ||
539 | register int x_dim; | ||
540 | int y_dim, x_pos, y_pos, r_or_e; | ||
541 | { | ||
542 | register int y_filt,x_filt, y_res,x_res; | ||
543 | register double taps_used = 0.0; /* int *** */ | ||
544 | register double fraction = 0.0; | ||
545 | int filt_sz = x_dim*y_dim; | ||
546 | int x_start = ((x_pos>0)?(x_pos-1):((x_pos<0)?(x_pos+1):0)); | ||
547 | int y_start = x_dim * ((y_pos>0)?(y_pos-1):((y_pos<0)?(y_pos+1):0)); | ||
548 | int i; | ||
549 | |||
550 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
551 | |||
552 | for (y_filt=0, y_res=y_start; | ||
553 | y_filt<filt_sz; | ||
554 | y_filt+=x_dim, y_res+=x_dim) | ||
555 | if ((y_res >= 0) AND (y_res < filt_sz)) | ||
556 | for (x_filt=y_filt, x_res=x_start; | ||
557 | x_filt<y_filt+x_dim; | ||
558 | x_filt++, x_res++) | ||
559 | if ((x_res >= 0) AND (x_res < x_dim)) | ||
560 | { | ||
561 | result[y_res+x_res] = filt[x_filt]; | ||
562 | taps_used += ABS(filt[x_filt]); | ||
563 | } | ||
564 | |||
565 | if (r_or_e IS REDUCE) | ||
566 | { | ||
567 | /* fraction = ( (double) filt_sz ) / ( (double) taps_used ); */ | ||
568 | for (i=0; i<filt_sz; i++) fraction += ABS(filt[i]); | ||
569 | fraction = ( fraction / taps_used ); | ||
570 | for (i=0; i<filt_sz; i++) result[i] *= fraction; | ||
571 | } | ||
572 | return(0); | ||
573 | } | ||
574 | |||
575 | |||
576 | /* -------------------------------------------------------------------- | ||
577 | Reflect, multiplying tap of filter which is at the edge of the image | ||
578 | by root 2. This maintains orthogonality of odd-length linear-phase | ||
579 | QMF filters, but it is not useful for most applications, since it | ||
580 | alters the DC level. */ | ||
581 | |||
582 | int ereflect(filt,x_dim,y_dim,x_pos,y_pos,result,r_or_e) | ||
583 | register double *filt, *result; | ||
584 | register int x_dim; | ||
585 | int y_dim, x_pos, y_pos, r_or_e; | ||
586 | { | ||
587 | register int y_filt,x_filt, y_res,x_res; | ||
588 | register int x_base = (x_pos>0)?(x_dim-1):0; | ||
589 | register int y_base = x_dim * ((y_pos>0)?(y_dim-1):0); | ||
590 | int filt_sz = x_dim*y_dim; | ||
591 | int x_overhang = (x_pos>1)?(x_pos-x_dim):((x_pos<-1)?(x_pos+1):0); | ||
592 | int y_overhang = x_dim * ( (y_pos>1)?(y_pos-y_dim):((y_pos<-1)?(y_pos+1):0) ); | ||
593 | int i; | ||
594 | double norm,onorm; | ||
595 | |||
596 | for (i=0; i<filt_sz; i++) result[i] = 0.0; | ||
597 | |||
598 | /* reflect at boundary */ | ||
599 | for (y_filt=0, y_res=y_overhang; | ||
600 | y_filt<filt_sz; | ||
601 | y_filt+=x_dim, y_res+=x_dim) | ||
602 | for (x_filt=y_filt, x_res=x_overhang; | ||
603 | x_filt<y_filt+x_dim; | ||
604 | x_filt++, x_res++) | ||
605 | result[ABS(y_base-ABS(y_res)) + ABS(x_base-ABS(x_res))] | ||
606 | += filt[x_filt]; | ||
607 | |||
608 | /* now multiply edge by root 2 */ | ||
609 | if (x_pos ISNT 0) | ||
610 | for (y_filt=x_base; y_filt<filt_sz; y_filt+=x_dim) | ||
611 | result[y_filt] *= ROOT2; | ||
612 | if (y_pos ISNT 0) | ||
613 | for (x_filt=y_base; x_filt<y_base+x_dim; x_filt++) | ||
614 | result[x_filt] *= ROOT2; | ||
615 | |||
616 | /* now normalize to norm of original filter */ | ||
617 | for (norm=0.0,i=0; i<filt_sz; i++) | ||
618 | norm += (result[i]*result[i]); | ||
619 | norm=sqrt(norm); | ||
620 | |||
621 | for (onorm=0.0,i=0; i<filt_sz; i++) | ||
622 | onorm += (filt[i]*filt[i]); | ||
623 | onorm = sqrt(onorm); | ||
624 | |||
625 | norm = norm/onorm; | ||
626 | for (i=0; i<filt_sz; i++) | ||
627 | result[i] /= norm; | ||
628 | return(0); | ||
629 | } | ||
630 | |||
631 | |||
632 | /* ------- printout stuff for testing ------------------------------ | ||
633 | printf("Xpos: %d, Ypos: %d", x_pos, y_pos); | ||
634 | for (y_filt=0; y_filt<y_dim; y_filt++) | ||
635 | { | ||
636 | printf("\n"); | ||
637 | for (x_filt=0; x_filt<x_dim; x_filt++) | ||
638 | printf("%6.1f", result[y_filt*x_dim+x_filt]); | ||
639 | } | ||
640 | printf("\n"); | ||
641 | */ | ||
642 | |||
643 | |||
644 | |||
645 | /* Local Variables: */ | ||
646 | /* buffer-read-only: t */ | ||
647 | /* End: */ | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/histo.c b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/histo.c new file mode 100755 index 0000000..43a99c7 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/histo.c | |||
@@ -0,0 +1,140 @@ | |||
1 | /* | ||
2 | [N, X] = histo(MTX, NBINS_OR_BINSIZE, BIN_CENTER) | ||
3 | >>> See histo.m for documentation <<< | ||
4 | EPS, ported from OBVIUS, 3/97. | ||
5 | */ | ||
6 | |||
7 | #define V4_COMPAT | ||
8 | #include <matrix.h> /* Matlab matrices */ | ||
9 | #include <mex.h> | ||
10 | |||
11 | #include <stddef.h> /* NULL */ | ||
12 | #include <math.h> /* ceil */ | ||
13 | |||
14 | #define notDblMtx(it) (!mxIsNumeric(it) || !mxIsDouble(it) || mxIsSparse(it) || mxIsComplex(it)) | ||
15 | |||
16 | #define PAD 0.49999 /* A hair below 1/2, to avoid roundoff errors */ | ||
17 | #define MAXBINS 20000 | ||
18 | |||
19 | void mexFunction(int nlhs, /* Num return vals on lhs */ | ||
20 | mxArray *plhs[], /* Matrices on lhs */ | ||
21 | int nrhs, /* Num args on rhs */ | ||
22 | const mxArray *prhs[] /* Matrices on rhs */ | ||
23 | ) | ||
24 | { | ||
25 | register double temp; | ||
26 | register int binnum, i, size; | ||
27 | register double *im, binsize; | ||
28 | register double origin, *hist, mn, mx, mean; | ||
29 | register int nbins; | ||
30 | double *bincenters; | ||
31 | mxArray *arg; | ||
32 | double *mxMat; | ||
33 | |||
34 | if (nrhs < 1 ) mexErrMsgTxt("requires at least 1 argument."); | ||
35 | |||
36 | /* ARG 1: MATRIX */ | ||
37 | arg = prhs[0]; | ||
38 | if notDblMtx(arg) mexErrMsgTxt("MTX arg must be a real non-sparse matrix."); | ||
39 | im = mxGetPr(arg); | ||
40 | size = (int) mxGetM(arg) * mxGetN(arg); | ||
41 | |||
42 | /* FIND min, max, mean values of MTX */ | ||
43 | mn = *im; mx = *im; binsize = 0; | ||
44 | for (i=1; i<size; i++) | ||
45 | { | ||
46 | temp = im[i]; | ||
47 | if (temp < mn) | ||
48 | mn = temp; | ||
49 | else if (temp > mx) | ||
50 | mx = temp; | ||
51 | binsize += temp; | ||
52 | } | ||
53 | mean = binsize / size; | ||
54 | |||
55 | /* ARG 3: BIN_CENTER */ | ||
56 | if (nrhs > 2) | ||
57 | { | ||
58 | arg = prhs[2]; | ||
59 | if notDblMtx(arg) mexErrMsgTxt("BIN_CENTER arg must be a real scalar."); | ||
60 | if (mxGetM(arg) * mxGetN(arg) != 1) | ||
61 | mexErrMsgTxt("BIN_CENTER must be a real scalar."); | ||
62 | mxMat= mxGetPr(arg); | ||
63 | origin = *mxMat; | ||
64 | } | ||
65 | else | ||
66 | origin = mean; | ||
67 | |||
68 | /* ARG 2: If positive, NBINS. If negative, -BINSIZE. */ | ||
69 | if (nrhs > 1) | ||
70 | { | ||
71 | arg = prhs[1]; | ||
72 | if notDblMtx(arg) mexErrMsgTxt("NBINS_OR_BINSIZE arg must be a real scalar."); | ||
73 | if (mxGetM(arg) * mxGetN(arg) != 1) | ||
74 | mexErrMsgTxt("NBINS_OR_BINSIZE must be a real scalar."); | ||
75 | mxMat= mxGetPr(arg); | ||
76 | binsize = *mxMat; | ||
77 | } | ||
78 | else | ||
79 | { | ||
80 | binsize = 101; /* DEFAULT: 101 bins */ | ||
81 | } | ||
82 | |||
83 | /* -------------------------------------------------- | ||
84 | Adjust origin, binsize, nbins such that | ||
85 | mx <= origin + (nbins-1)*binsize + PAD*binsize | ||
86 | mn >= origin - PAD*binsize | ||
87 | -------------------------------------------------- */ | ||
88 | if (binsize < 0) /* user specified BINSIZE */ | ||
89 | { | ||
90 | binsize = -binsize; | ||
91 | origin -= binsize * ceil((origin-mn-PAD*binsize)/binsize); | ||
92 | nbins = (int) ceil((mx-origin-PAD*binsize)/binsize) + 1; | ||
93 | } | ||
94 | else /* user specified NBINS */ | ||
95 | { | ||
96 | nbins = (int) (binsize + 0.5); /* round to int */ | ||
97 | if (nbins == 0) | ||
98 | mexErrMsgTxt("NBINS must be greater than zero."); | ||
99 | binsize = (mx-mn)/(nbins-1+2*PAD); /* start with lower bound */ | ||
100 | i = ceil((origin-mn-binsize/2)/binsize); | ||
101 | if ( mn < (origin-i*binsize-PAD*binsize) ) | ||
102 | binsize = (origin-mn)/(i+PAD); | ||
103 | else if ( mx > (origin+(nbins-1-i)*binsize+PAD*binsize) ) | ||
104 | binsize = (mx-origin)/((nbins-1-i)+PAD); | ||
105 | origin -= binsize * ceil((origin-mn-PAD*binsize)/binsize); | ||
106 | } | ||
107 | |||
108 | if (nbins > MAXBINS) | ||
109 | { | ||
110 | mexPrintf("nbins: %d, MAXBINS: %d\n",nbins,MAXBINS); | ||
111 | mexErrMsgTxt("Number of histo bins has exceeded maximum"); | ||
112 | } | ||
113 | |||
114 | /* Allocate hist and xvals */ | ||
115 | plhs[0] = (mxArray *) mxCreateDoubleMatrix(1,nbins,mxREAL); | ||
116 | if (plhs[0] == NULL) mexErrMsgTxt("Error allocating result matrix"); | ||
117 | hist = mxGetPr(plhs[0]); | ||
118 | |||
119 | if (nlhs > 1) | ||
120 | { | ||
121 | plhs[1] = (mxArray *) mxCreateDoubleMatrix(1,nbins,mxREAL); | ||
122 | if (plhs[1] == NULL) mexErrMsgTxt("Error allocating result matrix"); | ||
123 | bincenters = mxGetPr(plhs[1]); | ||
124 | for (i=0, temp=origin; i<nbins; i++, temp+=binsize) | ||
125 | bincenters[i] = temp; | ||
126 | } | ||
127 | |||
128 | for (i=0; i<size; i++) | ||
129 | { | ||
130 | binnum = (int) ((im[i] - origin)/binsize + 0.5); | ||
131 | if ((binnum < nbins) && (binnum >= 0)) | ||
132 | (hist[binnum]) += 1.0; | ||
133 | else | ||
134 | printf("HISTO warning: value %f outside of range [%f,%f]\n", | ||
135 | im[i], origin-0.5*binsize, origin+(nbins-0.5)*binsize); | ||
136 | } | ||
137 | |||
138 | return; | ||
139 | } | ||
140 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/innerProd.c b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/innerProd.c new file mode 100755 index 0000000..8fa1224 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/innerProd.c | |||
@@ -0,0 +1,52 @@ | |||
1 | /* | ||
2 | RES = innerProd(MAT); | ||
3 | Computes mat'*mat | ||
4 | Odelia Schwartz, 8/97. | ||
5 | */ | ||
6 | |||
7 | #define V4_COMPAT | ||
8 | #include <matrix.h> | ||
9 | |||
10 | #include <stdio.h> | ||
11 | #include <ctype.h> | ||
12 | #include <math.h> | ||
13 | #include <strings.h> | ||
14 | #include <stdlib.h> | ||
15 | |||
16 | void mexFunction(int nlhs, /* Num return vals on lhs */ | ||
17 | mxArray *plhs[], /* Matrices on lhs */ | ||
18 | int nrhs, /* Num args on rhs */ | ||
19 | const mxArray *prhs[] /* Matrices on rhs */ | ||
20 | ) | ||
21 | { | ||
22 | register double *res, *mat, tmp; | ||
23 | register int len, wid, i, k, j, jlen, ilen, imat, jmat; | ||
24 | mxArray *arg; | ||
25 | |||
26 | /* get matrix input argument */ | ||
27 | /* should be matrix in which num rows >= num columns */ | ||
28 | arg=prhs[0]; | ||
29 | mat= mxGetPr(arg); | ||
30 | len = (int) mxGetM(arg); | ||
31 | wid = (int) mxGetN(arg); | ||
32 | if ( wid > len ) | ||
33 | printf("innerProd: Warning: width %d is greater than length %d.\n",wid,len); | ||
34 | plhs[0] = (mxArray *) mxCreateDoubleMatrix(wid,wid,mxREAL); | ||
35 | if (plhs[0] == NULL) | ||
36 | mexErrMsgTxt(sprintf("Error allocating %dx%d result matrix",wid,wid)); | ||
37 | res = mxGetPr(plhs[0]); | ||
38 | |||
39 | for(i=0, ilen=0; i<wid; i++, ilen+=len) | ||
40 | { | ||
41 | for(j=i, jlen=ilen; j<wid; j++, jlen+=len) | ||
42 | { | ||
43 | tmp = 0.0; | ||
44 | for(k=0, imat=ilen, jmat=jlen; k<len; k++, imat++, jmat++) | ||
45 | tmp += mat[imat]*mat[jmat]; | ||
46 | res[i*wid+j] = tmp; | ||
47 | res[j*wid+i] = tmp; | ||
48 | } | ||
49 | } | ||
50 | return; | ||
51 | |||
52 | } | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/innerProd.dll b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/innerProd.dll new file mode 100755 index 0000000..40ac896 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/innerProd.dll | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/innerProd.mexglx b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/innerProd.mexglx new file mode 100755 index 0000000..749a5b5 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/innerProd.mexglx | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/innerProd.mexlx b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/innerProd.mexlx new file mode 100755 index 0000000..151b08f --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/innerProd.mexlx | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/innerProd.mexmac b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/innerProd.mexmac new file mode 100755 index 0000000..6e11fcd --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/innerProd.mexmac | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/innerProd.mexsol b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/innerProd.mexsol new file mode 100755 index 0000000..d761ed8 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/innerProd.mexsol | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/pointOp.c b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/pointOp.c new file mode 100755 index 0000000..6ffcb45 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/pointOp.c | |||
@@ -0,0 +1,126 @@ | |||
1 | /* | ||
2 | RES = pointOp(IM, LUT, ORIGIN, INCREMENT, WARNINGS) | ||
3 | >>> See pointOp.m for documentation <<< | ||
4 | EPS, ported from OBVIUS, 7/96. | ||
5 | */ | ||
6 | |||
7 | #define V4_COMPAT | ||
8 | #include <matrix.h> /* Matlab matrices */ | ||
9 | #include <mex.h> | ||
10 | |||
11 | #include <stddef.h> /* NULL */ | ||
12 | |||
13 | #define notDblMtx(it) (!mxIsNumeric(it) || !mxIsDouble(it) || mxIsSparse(it) || mxIsComplex(it)) | ||
14 | |||
15 | void internal_pointop(); | ||
16 | |||
17 | void mexFunction(int nlhs, /* Num return vals on lhs */ | ||
18 | mxArray *plhs[], /* Matrices on lhs */ | ||
19 | int nrhs, /* Num args on rhs */ | ||
20 | const mxArray *prhs[] /* Matrices on rhs */ | ||
21 | ) | ||
22 | { | ||
23 | double *image, *lut, *res; | ||
24 | double origin, increment; | ||
25 | int x_dim, y_dim, lx_dim, ly_dim; | ||
26 | int warnings = 1; | ||
27 | mxArray *arg; | ||
28 | double *mxMat; | ||
29 | |||
30 | if (nrhs < 4 ) mexErrMsgTxt("requres at least 4 args."); | ||
31 | |||
32 | /* ARG 1: IMAGE */ | ||
33 | arg = prhs[0]; | ||
34 | if notDblMtx(arg) mexErrMsgTxt("IMAGE arg must be a real non-sparse matrix."); | ||
35 | image = mxGetPr(arg); | ||
36 | x_dim = (int) mxGetM(arg); /* X is inner index! */ | ||
37 | y_dim = (int) mxGetN(arg); | ||
38 | |||
39 | /* ARG 2: Lookup table */ | ||
40 | arg = prhs[1]; | ||
41 | if notDblMtx(arg) mexErrMsgTxt("LUT arg must be a real non-sparse matrix."); | ||
42 | lut = mxGetPr(arg); | ||
43 | lx_dim = (int) mxGetM(arg); /* X is inner index! */ | ||
44 | ly_dim = (int) mxGetN(arg); | ||
45 | if ( (lx_dim != 1) && (ly_dim != 1) ) | ||
46 | mexErrMsgTxt("Lookup table must be a row or column vector."); | ||
47 | |||
48 | /* ARG 3: ORIGIN */ | ||
49 | arg = prhs[2]; | ||
50 | if notDblMtx(arg) mexErrMsgTxt("ORIGIN arg must be a real scalar."); | ||
51 | if (mxGetM(arg) * mxGetN(arg) != 1) | ||
52 | mexErrMsgTxt("ORIGIN arg must be a real scalar."); | ||
53 | mxMat = mxGetPr(arg); | ||
54 | origin = *mxMat; | ||
55 | |||
56 | /* ARG 4: INCREMENT */ | ||
57 | arg = prhs[3]; | ||
58 | if notDblMtx(arg) mexErrMsgTxt("INCREMENT arg must be a real scalar."); | ||
59 | if (mxGetM(arg) * mxGetN(arg) != 1) | ||
60 | mexErrMsgTxt("INCREMENT arg must be a real scalar."); | ||
61 | mxMat = mxGetPr(arg); | ||
62 | increment = *mxMat; | ||
63 | |||
64 | /* ARG 5: WARNINGS */ | ||
65 | if (nrhs>4) | ||
66 | { | ||
67 | arg = prhs[4]; | ||
68 | if notDblMtx(arg) mexErrMsgTxt("WARINGS arg must be a real scalar."); | ||
69 | if (mxGetM(arg) * mxGetN(arg) != 1) | ||
70 | mexErrMsgTxt("WARNINGS arg must be a real scalar."); | ||
71 | mxMat = mxGetPr(arg); | ||
72 | warnings = (int) *mxMat; | ||
73 | } | ||
74 | |||
75 | plhs[0] = (mxArray *) mxCreateDoubleMatrix(x_dim,y_dim,mxREAL); | ||
76 | if (plhs[0] == NULL) mexErrMsgTxt("Cannot allocate result matrix"); | ||
77 | res = mxGetPr(plhs[0]); | ||
78 | |||
79 | internal_pointop(image, res, x_dim*y_dim, lut, lx_dim*ly_dim, | ||
80 | origin, increment, warnings); | ||
81 | return; | ||
82 | } | ||
83 | |||
84 | |||
85 | /* Use linear interpolation on a lookup table. | ||
86 | Taken from OBVIUS. EPS, Spring, 1987. | ||
87 | */ | ||
88 | void internal_pointop (im, res, size, lut, lutsize, origin, increment, warnings) | ||
89 | register double *im, *res, *lut; | ||
90 | register double origin, increment; | ||
91 | register int size, lutsize, warnings; | ||
92 | { | ||
93 | register int i, index; | ||
94 | register double pos; | ||
95 | register int l_unwarned = warnings; | ||
96 | register int r_unwarned = warnings; | ||
97 | |||
98 | lutsize = lutsize - 2; /* Maximum index value */ | ||
99 | if (increment > 0) | ||
100 | for (i=0; i<size; i++) | ||
101 | { | ||
102 | pos = (im[i] - origin) / increment; | ||
103 | index = (int) pos; /* Floor */ | ||
104 | if (index < 0) | ||
105 | { | ||
106 | index = 0; | ||
107 | if (l_unwarned) | ||
108 | { | ||
109 | mexPrintf("Warning: Extrapolating to left of lookup table...\n"); | ||
110 | l_unwarned = 0; | ||
111 | } | ||
112 | } | ||
113 | else if (index > lutsize) | ||
114 | { | ||
115 | index = lutsize; | ||
116 | if (r_unwarned) | ||
117 | { | ||
118 | mexPrintf("Warning: Extrapolating to right of lookup table...\n"); | ||
119 | r_unwarned = 0; | ||
120 | } | ||
121 | } | ||
122 | res[i] = lut[index] + (lut[index+1] - lut[index]) * (pos - index); | ||
123 | } | ||
124 | else | ||
125 | for (i=0; i<size; i++) res[i] = *lut; | ||
126 | } | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/range2.c b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/range2.c new file mode 100755 index 0000000..b84f4e1 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/range2.c | |||
@@ -0,0 +1,56 @@ | |||
1 | /* | ||
2 | [MIN, MAX] = range2(MTX) | ||
3 | >>> See range2.m for documentation <<< | ||
4 | EPS, 3/97. | ||
5 | */ | ||
6 | |||
7 | #define V4_COMPAT | ||
8 | #include <matrix.h> /* Matlab matrices */ | ||
9 | #include <mex.h> | ||
10 | |||
11 | #include <stddef.h> /* NULL */ | ||
12 | |||
13 | #define notDblMtx(it) (!mxIsNumeric(it) || !mxIsDouble(it) || mxIsSparse(it) || mxIsComplex(it)) | ||
14 | |||
15 | void mexFunction(int nlhs, /* Num return vals on lhs */ | ||
16 | mxArray *plhs[], /* Matrices on lhs */ | ||
17 | int nrhs, /* Num args on rhs */ | ||
18 | const mxArray *prhs[] /* Matrices on rhs */ | ||
19 | ) | ||
20 | { | ||
21 | register double temp, mn, mx; | ||
22 | register double *mtx; | ||
23 | register int i, size; | ||
24 | mxArray *arg; | ||
25 | |||
26 | if (nrhs != 1) mexErrMsgTxt("requires 1 argument."); | ||
27 | |||
28 | /* ARG 1: MATRIX */ | ||
29 | arg = prhs[0]; | ||
30 | if notDblMtx(arg) mexErrMsgTxt("MTX arg must be a real non-sparse matrix."); | ||
31 | mtx = mxGetPr(arg); | ||
32 | size = (int) mxGetM(arg) * mxGetN(arg); | ||
33 | |||
34 | /* FIND min, max values of MTX */ | ||
35 | mn = *mtx; mx = *mtx; | ||
36 | for (i=1; i<size; i++) | ||
37 | { | ||
38 | temp = mtx[i]; | ||
39 | if (temp < mn) | ||
40 | mn = temp; | ||
41 | else if (temp > mx) | ||
42 | mx = temp; | ||
43 | } | ||
44 | |||
45 | plhs[0] = (mxArray *) mxCreateDoubleMatrix(1,1,mxREAL); | ||
46 | if (plhs[0] == NULL) mexErrMsgTxt("Error allocating result matrix"); | ||
47 | plhs[1] = (mxArray *) mxCreateDoubleMatrix(1,1,mxREAL); | ||
48 | if (plhs[1] == NULL) mexErrMsgTxt("Error allocating result matrix"); | ||
49 | mtx = mxGetPr(plhs[0]); | ||
50 | mtx[0] = mn; | ||
51 | mtx = mxGetPr(plhs[1]); | ||
52 | mtx[0] = mx; | ||
53 | |||
54 | return; | ||
55 | } | ||
56 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/upConv.c b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/upConv.c new file mode 100755 index 0000000..3708f8a --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/upConv.c | |||
@@ -0,0 +1,195 @@ | |||
1 | /* | ||
2 | RES = upConv(IM, FILT, EDGES, STEP, START, STOP, RES); | ||
3 | >>> See upConv.m for documentation <<< | ||
4 | This is a matlab interface to the internal_expand function. | ||
5 | EPS, 7/96. | ||
6 | */ | ||
7 | |||
8 | #define V4_COMPAT | ||
9 | #include <matrix.h> /* Matlab matrices */ | ||
10 | #include <mex.h> | ||
11 | |||
12 | #include "convolve.h" | ||
13 | |||
14 | #define notDblMtx(it) (!mxIsNumeric(it) || !mxIsDouble(it) || mxIsSparse(it) || mxIsComplex(it)) | ||
15 | |||
16 | void mexFunction(int nlhs, /* Num return vals on lhs */ | ||
17 | mxArray *plhs[], /* Matrices on lhs */ | ||
18 | int nrhs, /* Num args on rhs */ | ||
19 | const mxArray *prhs[] /* Matrices on rhs */ | ||
20 | ) | ||
21 | { | ||
22 | double *image,*filt, *temp, *result, *orig_filt; | ||
23 | int x_fdim, y_fdim, x_idim, y_idim; | ||
24 | int orig_x = 0, orig_y, x, y; | ||
25 | int x_rdim, y_rdim; | ||
26 | int x_start = 1; | ||
27 | int x_step = 1; | ||
28 | int y_start = 1; | ||
29 | int y_step = 1; | ||
30 | int x_stop, y_stop; | ||
31 | mxArray *arg; | ||
32 | double *mxMat; | ||
33 | char edges[15] = "reflect1"; | ||
34 | |||
35 | if (nrhs<2) mexErrMsgTxt("requres at least 2 args."); | ||
36 | |||
37 | /* ARG 1: IMAGE */ | ||
38 | arg = prhs[0]; | ||
39 | if notDblMtx(arg) mexErrMsgTxt("IMAGE arg must be a non-sparse double float matrix."); | ||
40 | image = mxGetPr(arg); | ||
41 | x_idim = (int) mxGetM(arg); /* X is inner index! */ | ||
42 | y_idim = (int) mxGetN(arg); | ||
43 | |||
44 | /* ARG 2: FILTER */ | ||
45 | arg = prhs[1]; | ||
46 | if notDblMtx(arg) mexErrMsgTxt("FILTER arg must be non-sparse double float matrix."); filt = mxGetPr(arg); | ||
47 | x_fdim = (int) mxGetM(arg); | ||
48 | y_fdim = (int) mxGetN(arg); | ||
49 | |||
50 | /* ARG 3 (optional): EDGES */ | ||
51 | if (nrhs>2) | ||
52 | { | ||
53 | if (!mxIsChar(prhs[2])) | ||
54 | mexErrMsgTxt("EDGES arg must be a string."); | ||
55 | mxGetString(prhs[2],edges,15); | ||
56 | } | ||
57 | |||
58 | /* ARG 4 (optional): STEP */ | ||
59 | if (nrhs>3) | ||
60 | { | ||
61 | arg = prhs[3]; | ||
62 | if notDblMtx(arg) mexErrMsgTxt("STEP arg must be double float matrix."); | ||
63 | if (mxGetM(arg) * mxGetN(arg) != 2) | ||
64 | mexErrMsgTxt("STEP arg must contain two elements."); | ||
65 | mxMat = mxGetPr(arg); | ||
66 | x_step = (int) mxMat[0]; | ||
67 | y_step = (int) mxMat[1]; | ||
68 | if ((x_step<1) || (y_step<1)) | ||
69 | mexErrMsgTxt("STEP values must be greater than zero."); | ||
70 | } | ||
71 | |||
72 | /* ARG 5 (optional): START */ | ||
73 | if (nrhs>4) | ||
74 | { | ||
75 | arg = prhs[4]; | ||
76 | if notDblMtx(arg) mexErrMsgTxt("START arg must be double float matrix."); | ||
77 | if (mxGetM(arg) * mxGetN(arg) != 2) | ||
78 | mexErrMsgTxt("START arg must contain two elements."); | ||
79 | mxMat = mxGetPr(arg); | ||
80 | x_start = (int) mxMat[0]; | ||
81 | y_start = (int) mxMat[1]; | ||
82 | if ((x_start<1) || (y_start<1)) | ||
83 | mexErrMsgTxt("START values must be greater than zero."); | ||
84 | } | ||
85 | x_start--; /* convert to standard C indexes */ | ||
86 | y_start--; | ||
87 | |||
88 | /* ARG 6 (optional): STOP */ | ||
89 | if (nrhs>5) | ||
90 | { | ||
91 | if notDblMtx(prhs[5]) mexErrMsgTxt("STOP arg must be double float matrix."); | ||
92 | if (mxGetM(prhs[5]) * mxGetN(prhs[5]) != 2) | ||
93 | mexErrMsgTxt("STOP arg must contain two elements."); | ||
94 | mxMat = mxGetPr(prhs[5]); | ||
95 | x_stop = (int) mxMat[0]; | ||
96 | y_stop = (int) mxMat[1]; | ||
97 | if ((x_stop<x_start) || (y_stop<y_start)) | ||
98 | mexErrMsgTxt("STOP values must be greater than START values."); | ||
99 | } | ||
100 | else | ||
101 | { /* default: make res dims a multiple of STEP size */ | ||
102 | x_stop = x_step * ((x_start/x_step) + x_idim); | ||
103 | y_stop = y_step * ((y_start/y_step) + y_idim); | ||
104 | } | ||
105 | |||
106 | /* ARG 6 (optional): RESULT image */ | ||
107 | if (nrhs>6) | ||
108 | { | ||
109 | arg = prhs[6]; | ||
110 | if notDblMtx(arg) mexErrMsgTxt("RES arg must be double float matrix."); | ||
111 | |||
112 | /* 7/10/97: Returning one of the args causes problems with Matlab's memory | ||
113 | manager, so we don't return anything if the result image is passed */ | ||
114 | /* plhs[0] = arg; */ | ||
115 | result = mxGetPr(arg); | ||
116 | x_rdim = (int) mxGetM(arg); /* X is inner index! */ | ||
117 | y_rdim = (int) mxGetN(arg); | ||
118 | if ((x_stop>x_rdim) || (y_stop>y_rdim)) | ||
119 | mexErrMsgTxt("STOP values must within image dimensions."); | ||
120 | } | ||
121 | else | ||
122 | { | ||
123 | x_rdim = x_stop; | ||
124 | y_rdim = y_stop; | ||
125 | /* x_rdim = x_step * ((x_stop+x_step-1)/x_step); | ||
126 | y_rdim = y_step * ((y_stop+y_step-1)/y_step); */ | ||
127 | |||
128 | plhs[0] = (mxArray *) mxCreateDoubleMatrix(x_rdim,y_rdim,mxREAL); | ||
129 | if (plhs[0] == NULL) mexErrMsgTxt("Cannot allocate result matrix"); | ||
130 | result = mxGetPr(plhs[0]); | ||
131 | } | ||
132 | |||
133 | if ( (((x_stop-x_start+x_step-1) / x_step) != x_idim) || | ||
134 | (((y_stop-y_start+y_step-1) / y_step) != y_idim) ) | ||
135 | { | ||
136 | mexPrintf("Im dims: [%d %d]\n",x_idim,y_idim); | ||
137 | mexPrintf("Start: [%d %d]\n",x_start,y_start); | ||
138 | mexPrintf("Step: [%d %d]\n",x_step,y_step); | ||
139 | mexPrintf("Stop: [%d %d]\n",x_stop,y_stop); | ||
140 | mexPrintf("Res dims: [%d %d]\n",x_rdim,y_rdim); | ||
141 | mexErrMsgTxt("Image sizes and upsampling args are incompatible!"); | ||
142 | } | ||
143 | |||
144 | /* upConv has a bug for even-length kernels when using the | ||
145 | reflect1, extend, or repeat edge-handlers */ | ||
146 | if ((!strcmp(edges,"reflect1") || !strcmp(edges,"extend") || !strcmp(edges,"repeat")) | ||
147 | && | ||
148 | ((x_fdim%2 == 0) || (y_fdim%2 == 0))) | ||
149 | { | ||
150 | orig_filt = filt; | ||
151 | orig_x = x_fdim; | ||
152 | orig_y = y_fdim; | ||
153 | x_fdim = 2*(orig_x/2)+1; | ||
154 | y_fdim = 2*(orig_y/2)+1; | ||
155 | filt = mxCalloc(x_fdim*y_fdim, sizeof(double)); | ||
156 | if (filt == NULL) | ||
157 | mexErrMsgTxt("Cannot allocate necessary temporary space"); | ||
158 | for (y=0; y<orig_y; y++) | ||
159 | for (x=0; x<orig_x; x++) | ||
160 | filt[y*x_fdim + x] = orig_filt[y*orig_x + x]; | ||
161 | } | ||
162 | |||
163 | if ((x_fdim > x_rdim) || (y_fdim > y_rdim)) | ||
164 | { | ||
165 | mexPrintf("Filter: [%d %d], ",x_fdim,y_fdim); | ||
166 | mexPrintf("Result: [%d %d]\n",x_rdim,y_rdim); | ||
167 | mexErrMsgTxt("FILTER dimensions larger than RESULT dimensions."); | ||
168 | } | ||
169 | |||
170 | temp = mxCalloc(x_fdim*y_fdim, sizeof(double)); | ||
171 | if (temp == NULL) | ||
172 | mexErrMsgTxt("Cannot allocate necessary temporary space"); | ||
173 | |||
174 | /* | ||
175 | printf("(%d, %d), (%d, %d), (%d, %d), (%d, %d), (%d, %d), %s\n", | ||
176 | x_idim,y_idim,x_fdim,y_fdim,x_rdim,y_rdim, | ||
177 | x_start,x_step,y_start,y_step,edges); | ||
178 | */ | ||
179 | |||
180 | if (strcmp(edges,"circular") == 0) | ||
181 | internal_wrap_expand(image, filt, x_fdim, y_fdim, | ||
182 | x_start, x_step, x_stop, y_start, y_step, y_stop, | ||
183 | result, x_rdim, y_rdim); | ||
184 | else internal_expand(image, filt, temp, x_fdim, y_fdim, | ||
185 | x_start, x_step, x_stop, y_start, y_step, y_stop, | ||
186 | result, x_rdim, y_rdim, edges); | ||
187 | |||
188 | if (orig_x) mxFree((char *) filt); | ||
189 | mxFree((char *) temp); | ||
190 | |||
191 | return; | ||
192 | } | ||
193 | |||
194 | |||
195 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/wrap.c b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/wrap.c new file mode 100755 index 0000000..a081123 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/MEX/wrap.c | |||
@@ -0,0 +1,281 @@ | |||
1 | /* | ||
2 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
3 | ;;; File: wrap.c | ||
4 | ;;; Author: Eero Simoncelli | ||
5 | ;;; Description: Circular convolution on 2D images. | ||
6 | ;;; Creation Date: Spring, 1987. | ||
7 | ;;; MODIFICATIONS: | ||
8 | ;;; 6/96: Switched array types to double float. | ||
9 | ;;; 2/97: made more robust and readable. Added STOP arguments. | ||
10 | ;;; ---------------------------------------------------------------- | ||
11 | ;;; Object-Based Vision and Image Understanding System (OBVIUS), | ||
12 | ;;; Copyright 1988, Vision Science Group, Media Laboratory, | ||
13 | ;;; Massachusetts Institute of Technology. | ||
14 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
15 | */ | ||
16 | |||
17 | #include <stdlib.h> | ||
18 | |||
19 | #include "convolve.h" | ||
20 | |||
21 | /* | ||
22 | -------------------------------------------------------------------- | ||
23 | Performs correlation (i.e., convolution with filt(-x,-y)) of FILT | ||
24 | with IMAGE followed by subsampling (a.k.a. REDUCE in Burt&Adelson81). | ||
25 | The operations are combined to avoid unnecessary computation of the | ||
26 | convolution samples that are to be discarded in the subsampling | ||
27 | operation. The convolution is done in 9 sections so that mod | ||
28 | operations are not performed unnecessarily. The subsampling lattice | ||
29 | is specified by the START, STEP and STOP parameters. | ||
30 | -------------------------------------------------------------------- */ | ||
31 | |||
32 | /* abstract out the inner product computation */ | ||
33 | #define INPROD(YSTART,YIND,XSTART,XIND) \ | ||
34 | { \ | ||
35 | sum=0.0; \ | ||
36 | for (y_im=YSTART, filt_pos=0, x_filt_stop=x_fdim; \ | ||
37 | x_filt_stop<=filt_size; \ | ||
38 | y_im++, x_filt_stop+=x_fdim) \ | ||
39 | for (x_im=XSTART ; \ | ||
40 | filt_pos<x_filt_stop; \ | ||
41 | filt_pos++, x_im++) \ | ||
42 | sum += imval[YIND][XIND] * filt[filt_pos]; \ | ||
43 | result[res_pos] = sum; \ | ||
44 | } | ||
45 | |||
46 | int internal_wrap_reduce(image, x_dim, y_dim, filt, x_fdim, y_fdim, | ||
47 | x_start, x_step, x_stop, y_start, y_step, y_stop, | ||
48 | result) | ||
49 | register image_type *filt, *result; | ||
50 | register int x_dim, y_dim, x_fdim, y_fdim; | ||
51 | image_type *image; | ||
52 | int x_start, x_step, x_stop, y_start, y_step, y_stop; | ||
53 | { | ||
54 | register double sum; | ||
55 | register int filt_size = x_fdim*y_fdim; | ||
56 | image_type **imval; | ||
57 | register int filt_pos, x_im, y_im, x_filt_stop; | ||
58 | register int x_pos, y_pos, res_pos; | ||
59 | int x_ctr_stop = x_dim - x_fdim + 1; | ||
60 | int y_ctr_stop = y_dim - y_fdim + 1; | ||
61 | int x_ctr_start = 0; | ||
62 | int y_ctr_start = 0; | ||
63 | int x_fmid = x_fdim/2; | ||
64 | int y_fmid = y_fdim/2; | ||
65 | |||
66 | /* shift start/stop coords to filter upper left hand corner */ | ||
67 | x_start -= x_fmid; y_start -= y_fmid; | ||
68 | x_stop -= x_fmid; y_stop -= y_fmid; | ||
69 | |||
70 | if (x_stop < x_ctr_stop) x_ctr_stop = x_stop; | ||
71 | if (y_stop < y_ctr_stop) y_ctr_stop = y_stop; | ||
72 | |||
73 | /* Set up pointer array for rows */ | ||
74 | imval = (image_type **) malloc(y_dim*sizeof(image_type *)); | ||
75 | if (imval IS NULL) | ||
76 | { | ||
77 | printf("INTERNAL_WRAP: Failed to allocate temp array!"); | ||
78 | return(-1); | ||
79 | } | ||
80 | for (y_pos=y_im=0;y_pos<y_dim;y_pos++,y_im+=x_dim) | ||
81 | imval[y_pos] = (image+y_im); | ||
82 | |||
83 | for (res_pos=0, y_pos=y_start; /* TOP ROWS */ | ||
84 | y_pos<y_ctr_start; | ||
85 | y_pos+=y_step) | ||
86 | { | ||
87 | for (x_pos=x_start; | ||
88 | x_pos<x_ctr_start; | ||
89 | x_pos+=x_step, res_pos++) | ||
90 | INPROD(y_pos+y_dim, y_im%y_dim, x_pos+x_dim, x_im%x_dim) | ||
91 | |||
92 | for (; | ||
93 | x_pos<x_ctr_stop; | ||
94 | x_pos+=x_step, res_pos++) | ||
95 | INPROD(y_pos+y_dim, y_im%y_dim, x_pos, x_im) | ||
96 | |||
97 | for (; | ||
98 | x_pos<x_stop; | ||
99 | x_pos+=x_step, res_pos++) | ||
100 | INPROD(y_pos+y_dim, y_im%y_dim, x_pos, x_im%x_dim) | ||
101 | } /* end TOP ROWS */ | ||
102 | |||
103 | for (; /* MID ROWS */ | ||
104 | y_pos<y_ctr_stop; | ||
105 | y_pos+=y_step) | ||
106 | { | ||
107 | for (x_pos=x_start; | ||
108 | x_pos<x_ctr_start; | ||
109 | x_pos+=x_step, res_pos++) | ||
110 | INPROD(y_pos, y_im, x_pos+x_dim, x_im%x_dim) | ||
111 | |||
112 | for (; /* CENTER SECTION */ | ||
113 | x_pos<x_ctr_stop; | ||
114 | x_pos+=x_step, res_pos++) | ||
115 | INPROD(y_pos, y_im, x_pos, x_im) | ||
116 | |||
117 | for (; | ||
118 | x_pos<x_stop; | ||
119 | x_pos+=x_step, res_pos++) | ||
120 | INPROD(y_pos, y_im, x_pos, x_im%x_dim) | ||
121 | } /* end MID ROWS */ | ||
122 | |||
123 | for (; /* BOTTOM ROWS */ | ||
124 | y_pos<y_stop; | ||
125 | y_pos+=y_step) | ||
126 | { | ||
127 | for (x_pos=x_start; | ||
128 | x_pos<x_ctr_start; | ||
129 | x_pos+=x_step, res_pos++) | ||
130 | INPROD(y_pos, y_im%y_dim, x_pos+x_dim, x_im%x_dim) | ||
131 | |||
132 | for (; | ||
133 | x_pos<x_ctr_stop; | ||
134 | x_pos+=x_step, res_pos++) | ||
135 | INPROD(y_pos, y_im%y_dim, x_pos, x_im) | ||
136 | |||
137 | for (; | ||
138 | x_pos<x_stop; | ||
139 | x_pos+=x_step, res_pos++) | ||
140 | INPROD(y_pos, y_im%y_dim, x_pos, x_im%x_dim) | ||
141 | } /* end BOTTOM ROWS */ | ||
142 | |||
143 | free ((image_type **) imval); | ||
144 | |||
145 | return(0); | ||
146 | } /* end of internal_wrap_reduce */ | ||
147 | |||
148 | |||
149 | |||
150 | /* | ||
151 | -------------------------------------------------------------------- | ||
152 | Performs upsampling (padding with zeros) followed by convolution of | ||
153 | FILT with IMAGE (a.k.a. EXPAND in Burt&Adelson81). The operations | ||
154 | are combined to avoid unnecessary multiplication of filter samples | ||
155 | with zeros in the upsampled image. The convolution is done in 9 | ||
156 | sections so that mod operation is not performed unnecessarily. | ||
157 | Arguments are described in the comment above internal_wrap_reduce. | ||
158 | |||
159 | WARNING: this subroutine destructively modifes the RESULT image, so | ||
160 | the user must zero the result before invocation! | ||
161 | -------------------------------------------------------------------- */ | ||
162 | |||
163 | /* abstract out the inner product computation */ | ||
164 | #define INPROD2(YSTART,YIND,XSTART,XIND) \ | ||
165 | { \ | ||
166 | val = image[im_pos]; \ | ||
167 | for (y_res=YSTART, filt_pos=0, x_filt_stop=x_fdim; \ | ||
168 | x_filt_stop<=filt_size; \ | ||
169 | y_res++, x_filt_stop+=x_fdim) \ | ||
170 | for (x_res=XSTART; \ | ||
171 | filt_pos<x_filt_stop; \ | ||
172 | filt_pos++, x_res++) \ | ||
173 | imval[YIND][XIND] += val * filt[filt_pos]; \ | ||
174 | } | ||
175 | |||
176 | int internal_wrap_expand(image, filt, x_fdim, y_fdim, | ||
177 | x_start, x_step, x_stop, y_start, y_step, y_stop, | ||
178 | result, x_dim, y_dim) | ||
179 | register image_type *filt, *result; | ||
180 | register int x_fdim, y_fdim, x_dim, y_dim; | ||
181 | image_type *image; | ||
182 | int x_start, x_step, x_stop, y_start, y_step, y_stop; | ||
183 | { | ||
184 | register double val; | ||
185 | register int filt_size = x_fdim*y_fdim; | ||
186 | image_type **imval; | ||
187 | register int filt_pos, x_res, y_res, x_filt_stop; | ||
188 | register int x_pos, y_pos, im_pos; | ||
189 | int x_ctr_stop = x_dim - x_fdim + 1; | ||
190 | int y_ctr_stop = y_dim - y_fdim + 1; | ||
191 | int x_ctr_start = 0; | ||
192 | int y_ctr_start = 0; | ||
193 | int x_fmid = x_fdim/2; | ||
194 | int y_fmid = y_fdim/2; | ||
195 | |||
196 | /* shift start/stop coords to filter upper left hand corner */ | ||
197 | x_start -= x_fmid; y_start -= y_fmid; | ||
198 | x_stop -= x_fmid; y_stop -= y_fmid; | ||
199 | |||
200 | if (x_stop < x_ctr_stop) x_ctr_stop = x_stop; | ||
201 | if (y_stop < y_ctr_stop) y_ctr_stop = y_stop; | ||
202 | |||
203 | /* Set up pointer array for rows */ | ||
204 | imval = (image_type **) malloc(y_dim*sizeof(image_type *)); | ||
205 | if (imval IS NULL) | ||
206 | { | ||
207 | printf("INTERNAL_WRAP: Failed to allocate temp array!"); | ||
208 | return(-1); | ||
209 | } | ||
210 | for (y_pos=y_res=0;y_pos<y_dim;y_pos++,y_res+=x_dim) | ||
211 | imval[y_pos] = (result+y_res); | ||
212 | |||
213 | for (im_pos=0, y_pos=y_start; /* TOP ROWS */ | ||
214 | y_pos<y_ctr_start; | ||
215 | y_pos+=y_step) | ||
216 | { | ||
217 | for (x_pos=x_start; | ||
218 | x_pos<x_ctr_start; | ||
219 | x_pos+=x_step, im_pos++) | ||
220 | INPROD2(y_pos+y_dim, y_res%y_dim, x_pos+x_dim, x_res%x_dim) | ||
221 | |||
222 | for (; | ||
223 | x_pos<x_ctr_stop; | ||
224 | x_pos+=x_step, im_pos++) | ||
225 | INPROD2(y_pos+y_dim, y_res%y_dim, x_pos, x_res) | ||
226 | |||
227 | for (; | ||
228 | x_pos<x_stop; | ||
229 | x_pos+=x_step, im_pos++) | ||
230 | INPROD2(y_pos+y_dim, y_res%y_dim, x_pos, x_res%x_dim) | ||
231 | } /* end TOP ROWS */ | ||
232 | |||
233 | for (; /* MID ROWS */ | ||
234 | y_pos<y_ctr_stop; | ||
235 | y_pos+=y_step) | ||
236 | { | ||
237 | for (x_pos=x_start; | ||
238 | x_pos<x_ctr_start; | ||
239 | x_pos+=x_step, im_pos++) | ||
240 | INPROD2(y_pos, y_res, x_pos+x_dim, x_res%x_dim) | ||
241 | |||
242 | for (; /* CENTER SECTION */ | ||
243 | x_pos<x_ctr_stop; | ||
244 | x_pos+=x_step, im_pos++) | ||
245 | INPROD2(y_pos, y_res, x_pos, x_res) | ||
246 | |||
247 | for (; | ||
248 | x_pos<x_stop; | ||
249 | x_pos+=x_step, im_pos++) | ||
250 | INPROD2(y_pos, y_res, x_pos, x_res%x_dim) | ||
251 | } /* end MID ROWS */ | ||
252 | |||
253 | for (; /* BOTTOM ROWS */ | ||
254 | y_pos<y_stop; | ||
255 | y_pos+=y_step) | ||
256 | { | ||
257 | for (x_pos=x_start; | ||
258 | x_pos<x_ctr_start; | ||
259 | x_pos+=x_step, im_pos++) | ||
260 | INPROD2(y_pos, y_res%y_dim, x_pos+x_dim, x_res%x_dim) | ||
261 | |||
262 | for (; | ||
263 | x_pos<x_ctr_stop; | ||
264 | x_pos+=x_step, im_pos++) | ||
265 | INPROD2(y_pos, y_res%y_dim, x_pos, x_res) | ||
266 | |||
267 | for (; | ||
268 | x_pos<x_stop; | ||
269 | x_pos+=x_step, im_pos++) | ||
270 | INPROD2(y_pos, y_res%y_dim, x_pos, x_res%x_dim) | ||
271 | } /* end BOTTOM ROWS */ | ||
272 | |||
273 | free ((image_type **) imval); | ||
274 | return(0); | ||
275 | } /* end of internal_wrap_expand */ | ||
276 | |||
277 | |||
278 | |||
279 | /* Local Variables: */ | ||
280 | /* buffer-read-only: t */ | ||
281 | /* End: */ | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/README b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/README new file mode 100755 index 0000000..8f339f3 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/README | |||
@@ -0,0 +1,55 @@ | |||
1 | This package contains some MatLab tools for multi-scale image | ||
2 | processing. Briefly, the tools include: | ||
3 | - Recursive multi-scale image decompositions (pyramids), including | ||
4 | Laplacian pyramids, QMFs, Wavelets, and steerable pyramids. These | ||
5 | operate on 1D or 2D signals of arbitrary dimension. Data | ||
6 | structures are compatible with the MatLab wavelet toolbox. | ||
7 | - Fast 2D convolution routines, with subsampling and boundary-handling. | ||
8 | - Fast point-operations, histograms, histogram-matching. | ||
9 | - Fast synthetic image generation: sine gratings, zone plates, fractals, etc. | ||
10 | - Display routines for images and pyramids. These include several | ||
11 | auto-scaling options, rounding to integer zoom factors to avoid | ||
12 | resampling artifacts, and useful labeling (dimensions and gray-range). | ||
13 | |||
14 | The package is available as a gnu-zipped UNIX "tar" file, | ||
15 | accessible from the web page: | ||
16 | http://www.cns.nyu.edu/~lcv/software.html | ||
17 | |||
18 | The code works in Matlab versions 4.2 and higher, and has been fully tested | ||
19 | on Linux and Macintosh OSX platforms (it should, however, port easily to | ||
20 | others). To use the code (these lines are for UNIX): | ||
21 | 1) gunzip matlabPyrTools.tar.gz # unpack g'zipped file | ||
22 | 2) tar tvf matlabPyrTools.tar # view contents | ||
23 | 3) tar xvf matlabPyrTools.tar # extract contents | ||
24 | 4) rm matlabPyrTools.tar # delete tarfile | ||
25 | 5) Run matlab, and execute: | ||
26 | path(<pathname-of-matlabPyrTools>, path); | ||
27 | help matlabPyrTools | ||
28 | |||
29 | A few functions are actually MEX interfaces to C code. These are | ||
30 | contained in the subdirectory called MEX. The MEX files have been | ||
31 | tested on Sun (Solaris), LinuX on a Pentium platform, and Macintosh | ||
32 | OSX on a PowerPC, but should not be difficult to compile on most other | ||
33 | platforms. Source code is included in the MEX directory, as well as | ||
34 | Make files. I've included pre-compiled versions for a number of | ||
35 | platforms (Solaris,Linux,Mac,Windows). To make sure these are in your | ||
36 | matlab path, you can do *one* of the following: | ||
37 | 1) Create a symbolic link (or macintosh "alias") for the relavent files | ||
38 | in the main matlabPyrTools directory, or | ||
39 | 2) Copy the relavent files into the main matlabPyrTools directory, or | ||
40 | 3) Put the MEX subdirectory in your matlab path. | ||
41 | |||
42 | Some example script files showing usage of the code are in the | ||
43 | directory <dir>/TUTORIALS. There is a README file in that directory | ||
44 | describing the contents. | ||
45 | |||
46 | Incremental changes to the code are documented in the ChangeLog file. | ||
47 | |||
48 | Comments/Suggestions/Bugs to: | ||
49 | Eero P. Simoncelli | ||
50 | Associate Professor, | ||
51 | Center for Neural Science, and | ||
52 | Courant Institute for Mathematical Sciences | ||
53 | New York University | ||
54 | eero.simoncelli@nyu.edu | ||
55 | http://www.cns.nyu.edu/~eero/ | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/TUTORIALS/README b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/TUTORIALS/README new file mode 100755 index 0000000..06960a4 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/TUTORIALS/README | |||
@@ -0,0 +1,18 @@ | |||
1 | |||
2 | This directory contains some Matlab script files that serve to give | ||
3 | example usage of this code, and also to explain some of the | ||
4 | representations and algorithms. | ||
5 | |||
6 | The files are NOT meant to be executed from the MatLab prompt (like many | ||
7 | of the MatLab demos). You should instead read through the comments, | ||
8 | executing the subsequent pieces of code. This gives you a chance to | ||
9 | explore as you go... | ||
10 | |||
11 | matlabPyrTools.m - Example usage of the code in the distribution. | ||
12 | |||
13 | pyramids.m - An introduction to multi-scale pyramid representations, | ||
14 | covering Laplacian, QMF/Wavelet, and Steerable pyramids. The | ||
15 | file assumes a knowledge of linear systems, matrix algebra, | ||
16 | and 2D Fourier transforms. | ||
17 | |||
18 | more to come.... | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/TUTORIALS/matlabPyrTools.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/TUTORIALS/matlabPyrTools.m new file mode 100755 index 0000000..44c27ce --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/TUTORIALS/matlabPyrTools.m | |||
@@ -0,0 +1,145 @@ | |||
1 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
2 | %%% Some examples using the tools in this distribution. | ||
3 | %%% Eero Simoncelli, 2/97. | ||
4 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
5 | |||
6 | %% Add directory to path (YOU'LL NEED TO ADJUST THIS): | ||
7 | path('/lcv/matlab/lib/matlabPyrTools',path); | ||
8 | |||
9 | %% Load an image, and downsample to a size appropriate for the machine speed. | ||
10 | oim = pgmRead('einstein.pgm'); | ||
11 | tic; corrDn(oim,[1 1; 1 1]/4,'reflect1',[2 2]); time = toc; | ||
12 | imSubSample = min(max(floor(log2(time)/2+3),0),2); | ||
13 | im = blurDn(oim, imSubSample,'qmf9'); | ||
14 | clear oim; | ||
15 | |||
16 | %%% ShowIm: | ||
17 | %% 3 types of automatic graylevel scaling, 2 types of automatic | ||
18 | %% sizing, with or without title and Range information. | ||
19 | help showIm | ||
20 | clf; showIm(im,'auto1','auto','Al') | ||
21 | clf; showIm('im','auto2') | ||
22 | clf; showIm(im,'auto3',2) | ||
23 | |||
24 | %%% Statistics: | ||
25 | mean2(im) | ||
26 | var2(im) | ||
27 | skew2(im) | ||
28 | kurt2(im) | ||
29 | entropy2(im) | ||
30 | imStats(im) | ||
31 | |||
32 | %%% Synthetic images. First pick some parameters: | ||
33 | sz = 200; | ||
34 | dir = 2*pi*rand(1) | ||
35 | slope = 10*rand(1)-5 | ||
36 | int = 10*rand(1)-5; | ||
37 | orig = round(1+(sz-1)*rand(2,1)); | ||
38 | expt = 0.8+rand(1) | ||
39 | ampl = 1+5*rand(1) | ||
40 | ph = 2*pi*rand(1) | ||
41 | per = 20 | ||
42 | twidth = 7 | ||
43 | |||
44 | clf; | ||
45 | showIm(mkRamp(sz,dir,slope,int,orig)); | ||
46 | showIm(mkImpulse(sz,orig,ampl)); | ||
47 | showIm(mkR(sz,expt,orig)); | ||
48 | showIm(mkAngle(sz,dir)); | ||
49 | showIm(mkDisc(sz,sz/4,orig,twidth)); | ||
50 | showIm(mkGaussian(sz,(sz/6)^2,orig,ampl)); | ||
51 | showIm(mkZonePlate(sz,ampl,ph)); | ||
52 | showIm(mkAngularSine(sz,3,ampl,ph,orig)); | ||
53 | showIm(mkSine(sz,per,dir,ampl,ph,orig)); | ||
54 | showIm(mkSquare(sz,per,dir,ampl,ph,orig,twidth)); | ||
55 | showIm(mkFract(sz,expt)); | ||
56 | |||
57 | |||
58 | %%% Point operations (lookup tables): | ||
59 | [Xtbl,Ytbl] = rcosFn(20, 25, [-1 1]); | ||
60 | plot(Xtbl,Ytbl); | ||
61 | showIm(pointOp(mkR(100,1,[70,30]), Ytbl, Xtbl(1), Xtbl(2)-Xtbl(1), 0)); | ||
62 | |||
63 | |||
64 | %%% histogram Modification/matching: | ||
65 | [N,X] = histo(im, 150); | ||
66 | [mn, mx] = range2(im); | ||
67 | matched = histoMatch(rand(size(im)), N, X); | ||
68 | showIm(im + sqrt(-1)*matched); | ||
69 | [Nm,Xm] = histo(matched,150); | ||
70 | nextFig(2,1); | ||
71 | subplot(1,2,1); plot(X,N); axis([mn mx 0 max(N)]); | ||
72 | subplot(1,2,2); plot(Xm,Nm); axis([mn mx 0 max(N)]); | ||
73 | nextFig(2,-1); | ||
74 | |||
75 | %%% Convolution routines: | ||
76 | |||
77 | %% Compare speed of convolution/downsampling routines: | ||
78 | noise = rand(400); filt = rand(10); | ||
79 | tic; res1 = corrDn(noise,filt(10:-1:1,10:-1:1),'reflect1',[2 2]); toc; | ||
80 | tic; ires = rconv2(noise,filt); res2 = ires(1:2:400,1:2:400); toc; | ||
81 | imStats(res1,res2) | ||
82 | |||
83 | %% Display image and extension of left and top boundaries: | ||
84 | fsz = [9 9]; | ||
85 | fmid = ceil((fsz+1)/2); | ||
86 | imsz = [16 16]; | ||
87 | |||
88 | % pick one: | ||
89 | im = eye(imsz); | ||
90 | im = mkRamp(imsz,pi/6); | ||
91 | im = mkSquare(imsz,6,pi/6); | ||
92 | |||
93 | % pick one: | ||
94 | edges='reflect1'; | ||
95 | edges='reflect2'; | ||
96 | edges='repeat'; | ||
97 | edges='extend'; | ||
98 | edges='zero'; | ||
99 | edges='circular'; | ||
100 | edges='dont-compute'; | ||
101 | |||
102 | filt = mkImpulse(fsz,[1 1]); | ||
103 | showIm(corrDn(im,filt,edges)); | ||
104 | line([0,0,imsz(2),imsz(2),0]+fmid(2)-0.5, ... | ||
105 | [0,imsz(1),imsz(1),0,0]+fmid(1)-0.5); | ||
106 | title(sprintf('Edges = %s',edges)); | ||
107 | |||
108 | %%% Multi-scale pyramids (see pyramids.m for more examples, | ||
109 | %%% and explanations): | ||
110 | |||
111 | %% A Laplacian pyramid: | ||
112 | [pyr,pind] = buildLpyr(im); | ||
113 | showLpyr(pyr,pind); | ||
114 | |||
115 | res = reconLpyr(pyr, pind); % full reconstruction | ||
116 | imStats(im,res); % essentially perfect | ||
117 | |||
118 | res = reconLpyr(pyr, pind, [2 3]); %reconstruct 2nd and 3rd levels only | ||
119 | showIm(res); | ||
120 | |||
121 | %% Wavelet/QMF pyramids: | ||
122 | filt = 'qmf9'; edges = 'reflect1'; | ||
123 | filt = 'haar'; edges = 'qreflect2'; | ||
124 | filt = 'qmf12'; edges = 'qreflect2'; | ||
125 | filt = 'daub3'; edges = 'circular'; | ||
126 | |||
127 | [pyr,pind] = buildWpyr(im, 5-imSubSample, filt, edges); | ||
128 | showWpyr(pyr,pind,'auto2'); | ||
129 | |||
130 | res = reconWpyr(pyr, pind, filt, edges); | ||
131 | clf; showIm(im + i*res); | ||
132 | imStats(im,res); | ||
133 | |||
134 | res = reconWpyr(pyr, pind, filt, edges, 'all', [2]); %vertical only | ||
135 | clf; showIm(res); | ||
136 | |||
137 | %% Steerable pyramid: | ||
138 | [pyr,pind] = buildSpyr(im,4-imSubSample,'sp3Filters'); | ||
139 | showSpyr(pyr,pind); | ||
140 | |||
141 | %% Steerable pyramid, constructed in frequency domain: | ||
142 | [pyr,pind] = buildSFpyr(im,5-imSubSample,4); %5 orientation bands | ||
143 | showSpyr(pyr,pind); | ||
144 | res = reconSFpyr(pyr,pind); | ||
145 | imStats(im,res); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/TUTORIALS/pyramids.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/TUTORIALS/pyramids.m new file mode 100755 index 0000000..2123c69 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/TUTORIALS/pyramids.m | |||
@@ -0,0 +1,903 @@ | |||
1 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
2 | %%% IMAGE PYRAMID TUTORIAL | ||
3 | %%% | ||
4 | %%% A brief introduction to multi-scale pyramid decompositions for image | ||
5 | %%% processing. You should go through this, reading the comments, and | ||
6 | %%% executing the corresponding MatLab instructions. This file assumes | ||
7 | %%% a basic familiarity with matrix algebra, with linear systems and Fourier | ||
8 | %%% theory, and with MatLab. If you don't understand a particular | ||
9 | %%% function call, execute "help <functionName>" to see documentation. | ||
10 | %%% | ||
11 | %%% EPS, 6/96. | ||
12 | %%% Based on the original OBVIUS tutorial. | ||
13 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
14 | |||
15 | %% Determine a subsampling factor for images, based on machine speed: | ||
16 | oim = pgmRead('einstein.pgm'); | ||
17 | tic; corrDn(oim,[1 1; 1 1]/4,'reflect1',[2 2]); time = toc; | ||
18 | imSubSample = min(max(floor(log2(time)/2+3),0),2); | ||
19 | im = blurDn(oim, imSubSample,'qmf9'); | ||
20 | clear oim; | ||
21 | clf; showIm(im, 'auto2', 'auto', 'im'); | ||
22 | |||
23 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
24 | |||
25 | %%% LAPLACIAN PYRAMIDS: | ||
26 | |||
27 | %% Images may be decomposed into information at different scales. | ||
28 | %% Blurring eliminates the fine scales (detail): | ||
29 | |||
30 | binom5 = binomialFilter(5); | ||
31 | lo_filt = binom5*binom5'; | ||
32 | blurred = rconv2(im,lo_filt); | ||
33 | subplot(1,2,1); showIm(im, 'auto2', 'auto', 'im'); | ||
34 | subplot(1,2,2); showIm(blurred, 'auto2', 'auto', 'blurred'); | ||
35 | |||
36 | %% Subtracting the blurred image from the original leaves ONLY the | ||
37 | %% fine scale detail: | ||
38 | fine0 = im - blurred; | ||
39 | subplot(1,2,1); showIm(fine0, 'auto2', 'auto', 'fine0'); | ||
40 | |||
41 | %% The blurred and fine images contain all the information found in | ||
42 | %% the original image. Trivially, adding the blurred image to the | ||
43 | %% fine scale detail will reconstruct the original. We can compare | ||
44 | %% the original image to the sum of blurred and fine using the | ||
45 | %% "imStats" function, which reports on the statistics of the | ||
46 | %% difference between it's arguments: | ||
47 | imStats(im, blurred+fine0); | ||
48 | |||
49 | %% Since the filter is a lowpass filter, we might want to subsample | ||
50 | %% the blurred image. This may cause some aliasing (depends on the | ||
51 | %% filter), but the decomposition structure given above will still be | ||
52 | %% possible. The corrDn function correlates (same as convolution, but | ||
53 | %% flipped filter) and downsamples in a single operation (for | ||
54 | %% efficiency). The string 'reflect1' tells the function to handle | ||
55 | %% boundaries by reflecting the image about the edge pixels. Notice | ||
56 | %% that the blurred1 image is half the size (in each dimension) of the | ||
57 | %% original image. | ||
58 | lo_filt = 2*binom5*binom5'; %construct a separable 2D filter | ||
59 | blurred1 = corrDn(im,lo_filt,'reflect1',[2 2]); | ||
60 | subplot(1,2,2); showIm(blurred1,'auto2','auto','blurred1'); | ||
61 | |||
62 | %% Now, to extract fine scale detail, we must interpolate the image | ||
63 | %% back up to full size before subtracting it from the original. The | ||
64 | %% upConv function does upsampling (padding with zeros between | ||
65 | %% samples) followed by convolution. This can be done using the | ||
66 | %% lowpass filter that was applied before subsampling or it can be | ||
67 | %% done with a different filter. | ||
68 | fine1 = im - upConv(blurred1,lo_filt,'reflect1',[2 2],[1 1],size(im)); | ||
69 | subplot(1,2,1); showIm(fine1,'auto2','auto','fine1'); | ||
70 | |||
71 | %% We now have a technique that takes an image, computes two new | ||
72 | %% images (blurred1 and fine1) containing the coarse scale information | ||
73 | %% and the fine scale information. We can also (trivially) | ||
74 | %% reconstruct the original from these two (even if the subsampling of | ||
75 | %% the blurred1 image caused aliasing): | ||
76 | |||
77 | recon = fine1 + upConv(blurred1,lo_filt,'reflect1',[2 2],[1 1],size(im)); | ||
78 | imStats(im, recon); | ||
79 | |||
80 | %% Thus, we have described an INVERTIBLE linear transform that maps an | ||
81 | %% input image to the two images blurred1 and fine1. The inverse | ||
82 | %% transformation maps blurred1 and fine1 to the result. This is | ||
83 | %% depicted graphically with a system diagram: | ||
84 | %% | ||
85 | %% IM --> blur/down2 ---------> BLURRED1 --> up2/blur --> add --> RECON | ||
86 | %% | | ^ | ||
87 | %% | | | | ||
88 | %% | V | | ||
89 | %% | up2/blur | | ||
90 | %% | | | | ||
91 | %% | | | | ||
92 | %% | V | | ||
93 | %% --------------> subtract --> FINE1 ------------------- | ||
94 | %% | ||
95 | %% Note that the number of samples in the representation (i.e., total | ||
96 | %% samples in BLURRED1 and FINE1) is 1.5 times the number of samples | ||
97 | %% in the original IM. Thus, this representation is OVERCOMPLETE. | ||
98 | |||
99 | %% Often, we will want further subdivisions of scale. We can | ||
100 | %% decompose the (coarse-scale) BLURRED1 image into medium coarse and | ||
101 | %% very coarse images by applying the same splitting technique: | ||
102 | blurred2 = corrDn(blurred1,lo_filt,'reflect1',[2 2]); | ||
103 | showIm(blurred2) | ||
104 | |||
105 | fine2 = blurred1 - upConv(blurred2,lo_filt,'reflect1',[2 2],[1 1],size(blurred1)); | ||
106 | showIm(fine2) | ||
107 | |||
108 | %% Since blurred2 and fine2 can be used to reconstruct blurred1, and | ||
109 | %% blurred1 and fine1 can be used to reconstruct the original image, | ||
110 | %% the set of THREE images (also known as "subbands") {blurred2, | ||
111 | %% fine2, fine1} constitute a complete representation of the original | ||
112 | %% image. Note that the three subbands are displayed at the same size, | ||
113 | %% but they are actually three different sizes. | ||
114 | |||
115 | subplot(1,3,1); showIm(fine1,'auto2',2^(imSubSample-1),'fine1'); | ||
116 | subplot(1,3,2); showIm(fine2,'auto2',2^(imSubSample),'fine2'); | ||
117 | subplot(1,3,3); showIm(blurred2,'auto2',2^(imSubSample+1),'blurred2'); | ||
118 | |||
119 | %% It is useful to consider exactly what information is stored in each | ||
120 | %% of the pyramid subbands. The reconstruction process involves | ||
121 | %% recursively interpolating these images and then adding them to the | ||
122 | %% image at the next finer scale. To see the contribution of ONE of | ||
123 | %% the representation images (say blurred2) to the reconstruction, we | ||
124 | %% imagine filling all the other subbands with zeros and then | ||
125 | %% following our reconstruction procedure. For the blurred2 subband, | ||
126 | %% this is equivalent to simply calling upConv twice: | ||
127 | blurred2_full = upConv(upConv(blurred2,lo_filt,'reflect1',[2 2],[1 1],size(blurred1)),... | ||
128 | lo_filt,'reflect1',[2 2],[1 1],size(im)); | ||
129 | subplot(1,3,3); showIm(blurred2_full,'auto2',2^(imSubSample-1),'blurred2-full'); | ||
130 | |||
131 | %% For the fine2 subband, this is equivalent to calling upConv once: | ||
132 | fine2_full = upConv(fine2,lo_filt,'reflect1',[2 2],[1 1],size(im)); | ||
133 | subplot(1,3,2); showIm(fine2_full,'auto2',2^(imSubSample-1),'fine2-full'); | ||
134 | |||
135 | %% If we did everything correctly, we should be able to add together | ||
136 | %% these three full-size images to reconstruct the original image: | ||
137 | recon = blurred2_full + fine2_full + fine1; | ||
138 | imStats(im, recon) | ||
139 | |||
140 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
141 | |||
142 | %%% FUNCTIONS for CONSTRUCTING/MANIPULATING LAPLACIAN PYRAMIDS | ||
143 | |||
144 | %% We can continue this process, recursively splitting off finer and | ||
145 | %% finer details from the blurred image (like peeling off the outer | ||
146 | %% layers of an onion). The resulting data structure is known as a | ||
147 | %% "Laplacian Pyramid". To make things easier, we have written a | ||
148 | %% MatLab function called buildLpyr to construct this object. The | ||
149 | %% function returns two items: a long vector containing the subbands | ||
150 | %% of the pyramid, and an index matrix that is used to access these | ||
151 | %% subbands. The display routine showLpyr shows all the subbands of the | ||
152 | %% pyramid, at the their correct relative sizes. It should now be | ||
153 | %% clearer why these data structures are called "pyramids". | ||
154 | [pyr,pind] = buildLpyr(im,5-imSubSample); | ||
155 | showLpyr(pyr,pind); | ||
156 | |||
157 | %% There are also "accessor" functions for pulling out a single subband: | ||
158 | showIm(pyrBand(pyr,pind,2)); | ||
159 | |||
160 | %% The reconLpyr function allows you to reconstruct from a laplacian pyramid. | ||
161 | %% The third (optional) arg allows you to select any subset of pyramid bands | ||
162 | %% (default is to use ALL of them). | ||
163 | clf; showIm(reconLpyr(pyr,pind,[1 3]),'auto2','auto','bands 1 and 3 only'); | ||
164 | |||
165 | fullres = reconLpyr(pyr,pind); | ||
166 | showIm(fullres,'auto2','auto','Full reconstruction'); | ||
167 | imStats(im,fullres); | ||
168 | |||
169 | %% buildLpyr uses 5-tap filters by default for building Laplacian | ||
170 | %% pyramids. You can specify other filters: | ||
171 | namedFilter('binom3') | ||
172 | [pyr3,pind3] = buildLpyr(im,5-imSubSample,'binom3'); | ||
173 | showLpyr(pyr3,pind3); | ||
174 | fullres3 = reconLpyr(pyr3,pind3,'all','binom3'); | ||
175 | imStats(im,fullres3); | ||
176 | |||
177 | %% Here we build a "Laplacian" pyramid using random filters. filt1 is | ||
178 | %% used with the downsampling operations and filt2 is used with the | ||
179 | %% upsampling operations. We normalize the filters for display | ||
180 | %% purposes. Of course, these filters are (almost certainly) not very | ||
181 | %% "Gaussian", and the subbands of such a pyramid will be garbage! | ||
182 | %% Nevertheless, it is a simple property of the Laplacian pyramid that | ||
183 | %% we can use ANY filters and we will still be able to reconstruct | ||
184 | %% perfectly. | ||
185 | |||
186 | filt1 = rand(1,5); filt1 = sqrt(2)*filt1/sum(filt1) | ||
187 | filt2 = rand(1,3); filt2 = sqrt(2)*filt2/sum(filt2) | ||
188 | [pyrr,pindr] = buildLpyr(im,5-imSubSample,filt1,filt2); | ||
189 | showLpyr(pyrr,pindr); | ||
190 | fullresr = reconLpyr(pyrr,pindr,'all',filt2); | ||
191 | imStats(im,fullresr); | ||
192 | |||
193 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
194 | |||
195 | %%% ALIASING in the Gaussian and Laplacian pyramids: | ||
196 | |||
197 | %% Unless one is careful, the subsampling operations will introduce aliasing | ||
198 | %% artifacts in these pyramid transforms. This is true even though the | ||
199 | %% Laplacian pyramid can be used to reconstruct the original image perfectly. | ||
200 | %% When reconstructing, the pyramid is designed in such a way that these | ||
201 | %% aliasing artifacts cancel out. So it's not a problem if the only thing we | ||
202 | %% want to do is reconstruct. However, it can be a serious problem if we | ||
203 | %% intend to process each of the subbands independently. | ||
204 | |||
205 | %% One way to see the consequences of the aliasing artifacts is by | ||
206 | %% examining variations that occur when the input is shifted. We | ||
207 | %% choose an image and shift it by some number of pixels. Then blur | ||
208 | %% (filter-downsample-upsample-filter) the original image and blur the | ||
209 | %% shifted image. If there's no aliasing, then the blur and shift | ||
210 | %% operations should commute (i.e., | ||
211 | %% shift-filter-downsample-upsample-filter is the same as | ||
212 | %% filter-downsample-upsample-filter-shift). Try this for 2 different | ||
213 | %% filters (by replacing 'binom3' with 'binom5' or 'binom7' below), | ||
214 | %% and you'll see that the aliasing is much worse for the 3 tap | ||
215 | %% filter. | ||
216 | |||
217 | sig = 100*randn([1 16]); | ||
218 | sh = [0 7]; %shift amount | ||
219 | lev = 2; % level of pyramid to look at | ||
220 | flt = 'binom3'; %filter to use: | ||
221 | |||
222 | shiftIm = shift(sig,sh); | ||
223 | [pyr,pind] = buildLpyr(shiftIm, lev, flt, flt, 'circular'); | ||
224 | shiftBlur = reconLpyr(pyr, pind, lev, flt, 'circular'); | ||
225 | |||
226 | [pyr,pind] = buildLpyr(sig, lev, flt, flt, 'circular'); | ||
227 | res = reconLpyr(pyr, pind, lev, flt, 'circular'); | ||
228 | blurShift = shift(res,sh); | ||
229 | |||
230 | subplot(2,1,1); r = showIm(shiftBlur,'auto2','auto','shiftBlur'); | ||
231 | subplot(2,1,2); showIm(blurShift,r,'auto','blurShift'); | ||
232 | imStats(blurShift,shiftBlur); | ||
233 | |||
234 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
235 | |||
236 | %%% PROJECTION and BASIS functions: | ||
237 | |||
238 | %% An invertible, linear transform can be characterized in terms | ||
239 | %% of a set of PROJECTION and BASIS functions. In matlab matrix | ||
240 | %% notation: | ||
241 | % | ||
242 | %% c = P' * x | ||
243 | %% x = B * c | ||
244 | % | ||
245 | %% where x is an input, c are the transform coefficients, P and B | ||
246 | %% are matrices. The columns of P are the projection functions (the | ||
247 | %% input is projected onto the the columns of P to get each successive | ||
248 | %% transform coefficient). The columns of B are the basis | ||
249 | %% functions (x is a linear combination of the columns of B). | ||
250 | |||
251 | %% Since the Laplacian pyramid is a linear transform, we can ask: what | ||
252 | %% are its BASIS functions? We consider these in one dimension for | ||
253 | %% simplicity. The BASIS function corresponding to a given | ||
254 | %% coefficient tells us how much that coefficient contributes to each | ||
255 | %% pixel in the reconstructed image. We can construct a single basis | ||
256 | %% function by setting one sample of one subband equal to 1.0 (and all | ||
257 | %% others to zero) and reconstructing. To build the entire matrix, we | ||
258 | %% have to do this for every sample of every subband: | ||
259 | sz = min(round(48/(sqrt(2)^imSubSample)),36); | ||
260 | sig = zeros(sz,1); | ||
261 | [pyr,pind] = buildLpyr(sig); | ||
262 | basis = zeros(sz,size(pyr,1)); | ||
263 | for n=1:size(pyr,1) | ||
264 | pyr = zeros(size(pyr)); | ||
265 | pyr(n) = 1; | ||
266 | basis(:,n) = reconLpyr(pyr,pind); | ||
267 | end | ||
268 | clf; showIm(basis) | ||
269 | |||
270 | %% The columns of the basis matrix are the basis functions. The | ||
271 | %% matrix is short and fat, corresponding to the fact that the | ||
272 | %% representation is OVERCOMPLETE. Below, we plot the middle one from | ||
273 | %% each subband, starting with the finest scale. Note that all of | ||
274 | %% these basis functions are lowpass (Gaussian-like) functions. | ||
275 | locations = round(sz * (2 - 3./2.^[1:max(4,size(pind,1))]))+1; | ||
276 | for lev=1:size(locations,2) | ||
277 | subplot(2,2,lev); | ||
278 | showIm(basis(:,locations(lev))); | ||
279 | axis([0 sz 0 1.1]); | ||
280 | end | ||
281 | |||
282 | %% Now, we'd also like see the inverse (we'll them PROJECTION) | ||
283 | %% functions. We need to ask how much of each sample of the input | ||
284 | %% image contributes to a given pyramid coefficient. Thus, the matrix | ||
285 | %% is constructed by building pyramids on the set of images with | ||
286 | %% impulses at each possible location. The rows of this matrix are | ||
287 | %% the projection functions. | ||
288 | projection = zeros(size(pyr,1),sz); | ||
289 | for pos=1:sz | ||
290 | [pyr,pind] = buildLpyr(mkImpulse([1 sz], [1 pos])); | ||
291 | projection(:,pos) = pyr; | ||
292 | end | ||
293 | clf; showIm(projection); | ||
294 | |||
295 | %% Building a pyramid corresponds to multiplication by the projection | ||
296 | %% matrix. Reconstructing from this pyramid corresponds to | ||
297 | %% multiplication by the basis matrix. Thus, the product of the two | ||
298 | %% matrices (in this order) should be the identity matrix: | ||
299 | showIm(basis*projection); | ||
300 | |||
301 | %% We can plot a few example projection functions at different scales. | ||
302 | %% Note that all of the projection functions are bandpass functions, | ||
303 | %% except for the coarsest subband which is lowpass. | ||
304 | for lev=1:size(locations,2) | ||
305 | subplot(2,2,lev); | ||
306 | showIm(projection(locations(lev),:)); | ||
307 | axis([0 sz -0.3 0.8]); | ||
308 | end | ||
309 | |||
310 | %% Now consider the frequency response of these functions, plotted over the | ||
311 | %% range [-pi,pi]: | ||
312 | for lev=1:size(locations,2) | ||
313 | subplot(2,2,lev); | ||
314 | proj = projection(locations(lev),:); | ||
315 | plot(pi*[-32:31]/32,fftshift(abs(fft(proj',64)))); | ||
316 | axis([-pi pi -0.1 3]); | ||
317 | end | ||
318 | |||
319 | %% The first projection function is highpass, and the second is bandpass. Both | ||
320 | %% of these look something like the Laplacian (2nd derivative) of a Gaussian. | ||
321 | %% The last is lowpass, as are the basis functions. Thus, the basic operation | ||
322 | %% used to create each level of the pyramid involves a simple highpass/lowpass | ||
323 | %% split. | ||
324 | |||
325 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
326 | |||
327 | %%% QMF/WAVELET PYRAMIDS. | ||
328 | |||
329 | %% Two things about Laplacian pyramids are a bit unsatisfactory. | ||
330 | %% First, there are more pixels (coefficients) in the representation | ||
331 | %% than in the original image. Specifically, the 1-dimensional | ||
332 | %% transform is overcomplete by a factor of 4/3, and the 2-dimensional | ||
333 | %% transform is overcomplete by a factor of 2. Secondly, the | ||
334 | %% "bandpass" images (fineN) do not segregate information according to | ||
335 | %% orientation. | ||
336 | |||
337 | %% There are other varieties of pyramid. One type that arose in the | ||
338 | %% speech coding community is based on a particular pairs of filters | ||
339 | %% known as a "Quadrature Mirror Filters" or QMFs. These are closely | ||
340 | %% related to Wavelets (essentially, they are approximate wavelet | ||
341 | %% filters). | ||
342 | |||
343 | %% Recall that the Laplacian pyramid is formed by simple hi/low | ||
344 | %% splitting at each level. The lowpass band is subsampled by a | ||
345 | %% factor of 2, but the highpass band is NOT subsampled. In the QMF | ||
346 | %% pyramid, we apply two filters (hi- and lo- pass) and subsample BOTH | ||
347 | %% by a factor of 2, thus eliminating the excess coefficients of the | ||
348 | %% Laplacian pyramid. | ||
349 | |||
350 | %% The two filters must have a specific relationship to each | ||
351 | %% other. In particular, let n be an index for the filter samples. | ||
352 | %% The highpass filter may be constructed from the lowpass filter by | ||
353 | %% (1) modulating (multiplying) by (-1)^n (equivalent to shifting by | ||
354 | %% pi in the Fourier domain), (2) flipping (i.e., reversing the order | ||
355 | %% of the taps), (3) spatially shifting by one sample. Try to | ||
356 | %% convince yourself that the resulting filters will always be | ||
357 | %% orthogonal to each other (i.e., their inner products will be zero) | ||
358 | %% when shifted by any multiple of two. | ||
359 | |||
360 | %% The function modulateFlip performs the first two of these operations. The | ||
361 | %% third (spatial shifting) step is built into the convolution code. | ||
362 | flo = namedFilter('qmf9')'; | ||
363 | fhi = modulateFlip(flo)'; | ||
364 | subplot(2,1,1); lplot(flo); axis([0 10 -0.5 1.0]); title('lowpass'); | ||
365 | subplot(2,1,2); lplot(fhi); axis([0 10 -0.5 1.0]); title('highpass'); | ||
366 | |||
367 | %% In the Fourier domain, these filters are (approximately) | ||
368 | %% "power-complementary": the sum of their squared power spectra is | ||
369 | %% (approximately) a constant. But note that neither is a perfect | ||
370 | %% bandlimiter (i.e., a sinc function), and thus subsampling by a | ||
371 | %% factor of 2 will cause aliasing in each of the subbands. See below | ||
372 | %% for a discussion of the effect of this aliasing. | ||
373 | |||
374 | %% Plot the two frequency responses: | ||
375 | freq = pi*[-32:31]/32; | ||
376 | subplot(2,1,1); | ||
377 | plot(freq,fftshift(abs(fft(flo,64))),'--',freq,fftshift(abs(fft(fhi,64))),'-'); | ||
378 | axis([-pi pi 0 1.5]); title('FFT magnitudes'); | ||
379 | subplot(2,1,2); | ||
380 | plot(freq,fftshift(abs(fft(flo,64)).^2)+fftshift(abs(fft(fhi,64)).^2)); | ||
381 | axis([-pi pi 0 2.2]); title('Sum of squared magnitudes'); | ||
382 | |||
383 | %% We can split an input signal into two bands as follows: | ||
384 | sig = mkFract([1,64],1.6); | ||
385 | subplot(2,1,1); showIm(sig,'auto1','auto','sig'); | ||
386 | lo1 = corrDn(sig,flo,'reflect1',[1 2],[1 1]); | ||
387 | hi1 = corrDn(sig,fhi,'reflect1',[1 2],[1 2]); | ||
388 | subplot(2,1,2); | ||
389 | showIm(lo1,'auto1','auto','low and high bands'); hold on; plot(hi1,'--r'); hold off; | ||
390 | |||
391 | %% Notice that the two subbands are half the size of the original | ||
392 | %% image, due to the subsampling by a factor of 2. One subtle point: | ||
393 | %% the highpass and lowpass bands are subsampled on different | ||
394 | %% lattices: the lowpass band retains the odd-numbered samples and the | ||
395 | %% highpass band retains the even-numbered samples. This was the | ||
396 | %% 1-sample shift relating the high and lowpass kernels (mentioned | ||
397 | %% above). We've used the 'reflect1' to handle boundaries, which | ||
398 | %% works properly for symmetric odd-length QMFs. | ||
399 | |||
400 | %% We can reconstruct the original image by interpolating these two subbands | ||
401 | %% USING THE SAME FILTERS: | ||
402 | reconlo = upConv(lo1,flo,'reflect1',[1 2]); | ||
403 | reconhi = upConv(hi1,fhi,'reflect1',[1 2],[1 2]); | ||
404 | subplot(2,1,2); showIm(reconlo+reconhi,'auto1','auto','reconstructed'); | ||
405 | imStats(sig,reconlo+reconhi); | ||
406 | |||
407 | %% We have described an INVERTIBLE linear transform that maps an input | ||
408 | %% image to the two images lo1 and hi1. The inverse transformation | ||
409 | %% maps these two images to the result. This is depicted graphically | ||
410 | %% with a system diagram: | ||
411 | %% | ||
412 | %% IM ---> flo/down2 --> LO1 --> up2/flo --> add --> RECON | ||
413 | %% | ^ | ||
414 | %% | | | ||
415 | %% | | | ||
416 | %% -> fhi/down2 --> HI1 --> up2/fhi ----- | ||
417 | %% | ||
418 | %% Note that the number of samples in the representation (i.e., total | ||
419 | %% samples in LO1 and HI1) is equal to the number of samples in the | ||
420 | %% original IM. Thus, this representation is exactly COMPLETE, or | ||
421 | %% "critically sampled". | ||
422 | |||
423 | %% So we've fixed one of the problems that we had with Laplacian | ||
424 | %% pyramid. But the system diagram above places strong constraints on | ||
425 | %% the filters. In particular, for these filters the reconstruction | ||
426 | %% is no longer perfect. Turns out there are NO | ||
427 | %% perfect-reconstruction symmetric filters that are | ||
428 | %% power-complementary, except for the trivial case [1] and the | ||
429 | %% nearly-trivial case [1 1]/sqrt(2). | ||
430 | |||
431 | %% Let's consider the projection functions of this 2-band splitting | ||
432 | %% operation. We can construct these by applying the transform to | ||
433 | %% impulse input signals, for all possible impulse locations. The | ||
434 | %% rows of the following matrix are the projection functions for each | ||
435 | %% coefficient in the transform. | ||
436 | M = [corrDn(eye(32),flo','circular',[1 2]), ... | ||
437 | corrDn(eye(32),fhi','circular',[1 2],[1 2])]'; | ||
438 | clf; showIm(M,'auto1','auto','M'); | ||
439 | |||
440 | %% The transform matrix is composed of two sub-matrices. The top half | ||
441 | %% contains the lowpass kernel, shifted by increments of 2 samples. | ||
442 | %% The bottom half contains the highpass. Now we compute the inverse | ||
443 | %% of this matrix: | ||
444 | M_inv = inv(M); | ||
445 | showIm(M_inv,'auto1','auto','M_inv'); | ||
446 | |||
447 | %% The inverse is (very close to) the transpose of the original | ||
448 | %% matrix! In other words, the transform is orthonormal. | ||
449 | imStats(M_inv',M); | ||
450 | |||
451 | %% This also points out a nice relationship between the corrDn and | ||
452 | %% upConv functions, and the matrix representation. corrDn is | ||
453 | %% equivalent to multiplication by a matrix with copies of the filter | ||
454 | %% on the ROWS, translated in multiples of the downsampling factor. | ||
455 | %% upConv is equivalent to multiplication by a matrix with copies of | ||
456 | %% the filter on the COLUMNS, translated by the upsampling factor. | ||
457 | |||
458 | %% As in the Laplacian pyramid, we can recursively apply this QMF | ||
459 | %% band-splitting operation to the lowpass band: | ||
460 | lo2 = corrDn(lo1,flo,'reflect1',[1 2]); | ||
461 | hi2 = corrDn(lo1,fhi,'reflect1',[1 2],[1 2]); | ||
462 | |||
463 | %% The representation of the original signal is now comprised of the | ||
464 | %% three subbands {hi1, hi2, lo2} (we don't hold onto lo1, because it | ||
465 | %% can be reconstructed from lo2 and hi2). Note that hi1 is at 1/2 | ||
466 | %% resolution, and hi2 and lo2 are at 1/4 resolution: The total number | ||
467 | %% of samples in these three subbands is thus equal to the number of | ||
468 | %% samples in the original signal. | ||
469 | imnames=['hi1'; 'hi2'; 'lo2']; | ||
470 | for bnum=1:3 | ||
471 | band = eval(imnames(bnum,:)); | ||
472 | subplot(3,1,bnum); showIm(band); ylabel(imnames(bnum,:)); | ||
473 | axis([1 size(band,2) 1.1*min(lo2) 1.1*max(lo2)]); | ||
474 | end | ||
475 | |||
476 | %% Reconstruction proceeds as with the Laplacian pyramid: combine lo2 and hi2 | ||
477 | %% to reconstruct lo1, which is then combined with hi1 to reconstruct the | ||
478 | %% original signal: | ||
479 | recon_lo1 = upConv(hi2,fhi,'reflect1',[1 2],[1 2]) + ... | ||
480 | upConv(lo2,flo,'reflect1',[1 2],[1 1]); | ||
481 | reconstructed = upConv(hi1,fhi,'reflect1',[1 2],[1 2]) + ... | ||
482 | upConv(recon_lo1,flo,'reflect1',[1 2],[1 1]); | ||
483 | imStats(sig,reconstructed); | ||
484 | |||
485 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
486 | |||
487 | %%% FUNCTIONS for CONSTRUCTING/MANIPULATING QMF/Wavelet PYRAMIDS | ||
488 | |||
489 | %% To make things easier, we have bundled these qmf operations and | ||
490 | %% data structures into an object in MATLAB. | ||
491 | |||
492 | sig = mkFract([1 64], 1.5); | ||
493 | [pyr,pind] = buildWpyr(sig); | ||
494 | showWpyr(pyr,pind); | ||
495 | |||
496 | nbands = size(pind,1); | ||
497 | for b = 1:nbands | ||
498 | subplot(nbands,1,b); lplot(pyrBand(pyr,pind,b)); | ||
499 | end | ||
500 | |||
501 | res = reconWpyr(pyr,pind); | ||
502 | imStats(sig,res); | ||
503 | |||
504 | %% Now for 2D, we use separable filters. There are 4 ways to apply the two | ||
505 | %% filters to the input image (followed by the relavent subsampling operation): | ||
506 | %% (1) lowpass in both x and y | ||
507 | %% (2) lowpass in x and highpass in y | ||
508 | %% (3) lowpass in y and highpass in x | ||
509 | %% (4) highpass in both x and y. | ||
510 | %% The pyramid is built by recursively subdividing the first of these bands | ||
511 | %% into four new subbands. | ||
512 | |||
513 | %% First, we'll take a look at some of the basis functions. | ||
514 | sz = 40; | ||
515 | zim = zeros(sz); | ||
516 | flo = 'qmf9'; edges = 'reflect1'; | ||
517 | [pyr,pind] = buildWpyr(zim); | ||
518 | |||
519 | % Put an impulse into the middle of each band: | ||
520 | for lev=1:size(pind,1) | ||
521 | mid = sum(prod(pind(1:lev-1,:)')); | ||
522 | mid = mid + floor(pind(lev,2)/2)*pind(lev,1) + floor(pind(lev,1)/2) + 1; | ||
523 | pyr(mid,1) = 1; | ||
524 | end | ||
525 | |||
526 | % And take a look at the reconstruction of each band: | ||
527 | for lnum=1:wpyrHt(pind)+1 | ||
528 | for bnum=1:3 | ||
529 | subplot(wpyrHt(pind)+1,3,(wpyrHt(pind)+1-lnum)*3+bnum); | ||
530 | showIm(reconWpyr(pyr, pind, flo, edges, lnum, bnum),'auto1',2,0); | ||
531 | end | ||
532 | end | ||
533 | |||
534 | %% Note that the first column contains horizontally oriented basis functions at | ||
535 | %% different scales. The second contains vertically oriented basis functions. | ||
536 | %% The third contains both diagonals (a checkerboard pattern). The bottom row | ||
537 | %% shows (3 identical images of) a lowpass basis function. | ||
538 | |||
539 | %% Now look at the corresponding Fourier transform magnitudes (these | ||
540 | %% are plotted over the frequency range [-pi, pi] ): | ||
541 | nextFig(2,1); | ||
542 | freq = 2 * pi * [-sz/2:(sz/2-1)]/sz; | ||
543 | for lnum=1:wpyrHt(pind)+1 | ||
544 | for bnum=1:3 | ||
545 | subplot(wpyrHt(pind)+1,3,(wpyrHt(pind)+1-lnum)*3+bnum); | ||
546 | basisFn = reconWpyr(pyr, pind, flo, edges, lnum, bnum); | ||
547 | basisFmag = fftshift(abs(fft2(basisFn,sz,sz))); | ||
548 | imagesc(freq,freq,basisFmag); | ||
549 | axis('square'); axis('xy'); colormap('gray'); | ||
550 | end | ||
551 | end | ||
552 | nextFig(2,-1); | ||
553 | |||
554 | %% The filters at a given scale sum to a squarish annular region: | ||
555 | sumSpectra = zeros(sz); | ||
556 | lnum = 2; | ||
557 | for bnum=1:3 | ||
558 | basisFn = reconWpyr(pyr, pind, flo, edges, lnum, bnum); | ||
559 | basisFmag = fftshift(abs(fft2(basisFn,sz,sz))); | ||
560 | sumSpectra = basisFmag.^2 + sumSpectra; | ||
561 | end | ||
562 | clf; imagesc(freq,freq,sumSpectra); axis('square'); axis('xy'); title('one scale'); | ||
563 | |||
564 | %% Now decompose an image: | ||
565 | [pyr,pind] = buildWpyr(im); | ||
566 | |||
567 | %% View all of the subbands (except lowpass), scaled to be the same size | ||
568 | %% (requires a big figure window): | ||
569 | nlevs = wpyrHt(pind); | ||
570 | for lnum=1:nlevs | ||
571 | for bnum=1:3 | ||
572 | subplot(nlevs,3,(lnum-1)*3+bnum); | ||
573 | showIm(wpyrBand(pyr,pind,lnum,bnum), 'auto2', 2^(lnum+imSubSample-2)); | ||
574 | end | ||
575 | end | ||
576 | |||
577 | %% In addition to the bands shown above, there's a lowpass residual: | ||
578 | nextFig(2,1); | ||
579 | clf; showIm(pyrLow(pyr,pind)); | ||
580 | nextFig(2,-1); | ||
581 | |||
582 | % Alternatively, display the pyramid with the subbands shown at their | ||
583 | % correct relative sizes: | ||
584 | clf; showWpyr(pyr, pind); | ||
585 | |||
586 | %% The reconWpyr function can be used to reconstruct the entire pyramid: | ||
587 | reconstructed = reconWpyr(pyr,pind); | ||
588 | imStats(im,reconstructed); | ||
589 | |||
590 | %% As with Laplacian pyramids, you can specify sub-levels and subbands | ||
591 | %% to be included in the reconstruction. For example: | ||
592 | clf | ||
593 | showIm(reconWpyr(pyr,pind,'qmf9','reflect1',[1:wpyrHt(pind)],[1])); %Horizontal only | ||
594 | showIm(reconWpyr(pyr,pind,'qmf9','reflect1',[2,3])); %two middle scales | ||
595 | |||
596 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
597 | |||
598 | %%% PERFECT RECONSTRUCTION: HAAR AND DEBAUCHIES WAVELETS | ||
599 | |||
600 | %% The symmetric QMF filters used above are not perfectly orthogonal. | ||
601 | %% In fact, it's impossible to construct a symmetric filter of size | ||
602 | %% greater than 2 that is perfectly orthogonal to shifted copies | ||
603 | %% (shifted by multiples of 2) of itself. For example, consider a | ||
604 | %% symmetric kernel of length 3. Shift by two and the right end of | ||
605 | %% the original kernel is aligned with the left end of the shifted | ||
606 | %% one. Thus, the inner product of these two will be the square of | ||
607 | %% the end tap, which will be non-zero. | ||
608 | |||
609 | %% However, one can easily create wavelet filters of length 2 that | ||
610 | %% will do the job. This is the oldest known wavelet, known as the | ||
611 | %% "Haar". The two kernels are [1,1]/sqrt(2) and [1,-1]/sqrt(2). | ||
612 | %% These are trivially seen to be orthogonal to each other, and shifts | ||
613 | %% by multiples of two are also trivially orthogonal. The projection | ||
614 | %% functions of the Haar transform are in the rows of the following | ||
615 | %% matrix, constructed by applying the transform to impulse input | ||
616 | %% signals, for all possible impulse locations: | ||
617 | |||
618 | haarLo = namedFilter('haar') | ||
619 | haarHi = modulateFlip(haarLo) | ||
620 | subplot(2,1,1); lplot(haarLo); axis([0 3 -1 1]); title('lowpass'); | ||
621 | subplot(2,1,2); lplot(haarHi); axis([0 3 -1 1]); title('highpass'); | ||
622 | |||
623 | M = [corrDn(eye(32), haarLo, 'reflect1', [2 1], [2 1]); ... | ||
624 | corrDn(eye(32), haarHi, 'reflect1', [2 1], [2 1])]; | ||
625 | clf; showIm(M) | ||
626 | showIm(M*M') %identity! | ||
627 | |||
628 | %% As before, the filters are power-complementary (although the | ||
629 | %% frequency isolation is rather poor, and thus the subbands will be | ||
630 | %% heavily aliased): | ||
631 | plot(pi*[-32:31]/32,abs(fft(haarLo,64)).^2,'--',... | ||
632 | pi*[-32:31]/32,abs(fft(haarHi,64)).^2,'-'); | ||
633 | |||
634 | sig = mkFract([1,64],0.5); | ||
635 | [pyr,pind] = buildWpyr(sig,4,'haar','reflect1'); | ||
636 | showWpyr(pyr,pind); | ||
637 | |||
638 | %% check perfect reconstruction: | ||
639 | res = reconWpyr(pyr,pind, 'haar', 'reflect1'); | ||
640 | imStats(sig,res) | ||
641 | |||
642 | %% If you want perfect reconstruction, but don't like the Haar | ||
643 | %% transform, there's another option: drop the symmetry requirement. | ||
644 | %% Ingrid Daubechies developed one of the earliest sets of such | ||
645 | %% perfect-reconstruction wavelets. The simplest of these is of | ||
646 | %% length 4: | ||
647 | |||
648 | daub_lo = namedFilter('daub2'); | ||
649 | daub_hi = modulateFlip(daub_lo); | ||
650 | |||
651 | %% The daub_lo filter is constructed to be orthogonal to 2shifted | ||
652 | %% copy of itself. For example: | ||
653 | [daub_lo;0;0]'*[0;0;daub_lo] | ||
654 | |||
655 | M = [corrDn(eye(32), daub_lo, 'circular', [2 1], [2 1]); ... | ||
656 | corrDn(eye(32), daub_hi, 'circular', [2 1], [2 1])]; | ||
657 | clf; showIm(M) | ||
658 | showIm(M*M') % identity! | ||
659 | |||
660 | %% Again, they're power complementary: | ||
661 | plot(pi*[-32:31]/32,abs(fft(daub_lo,64)).^2,'--',... | ||
662 | pi*[-32:31]/32,abs(fft(daub_hi,64)).^2,'-'); | ||
663 | |||
664 | %% The sum of the power spectra is again flat | ||
665 | plot(pi*[-32:31]/32,... | ||
666 | fftshift(abs(fft(daub_lo,64)).^2)+fftshift(abs(fft(daub_hi,64)).^2)); | ||
667 | |||
668 | %% Make a pyramid using the same code as before (except that we can't | ||
669 | %% use reflected boundaries with asymmetric filters): | ||
670 | [pyr,pind] = buildWpyr(sig, maxPyrHt(size(sig),size(daub_lo)), daub_lo, 'circular'); | ||
671 | showWpyr(pyr,pind,'indep1'); | ||
672 | |||
673 | res = reconWpyr(pyr,pind, daub_lo,'circular'); | ||
674 | imStats(sig,res); | ||
675 | |||
676 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
677 | |||
678 | %%% ALIASING IN WAVELET TRANSFORMS | ||
679 | |||
680 | %% All of these orthonormal pyramid/wavelet transforms have a lot | ||
681 | %% of aliasing in the subbands. You can see that in the frequency | ||
682 | %% response plots since the frequency response of each filter | ||
683 | %% covers well more than half the frequency domain. The aliasing | ||
684 | %% can have serious consequences... | ||
685 | |||
686 | %% Get one of the basis functions of the 2D Daubechies wavelet transform: | ||
687 | [pyr,pind] = buildWpyr(zeros(1,64),4,daub_lo,'circular'); | ||
688 | lev = 3; | ||
689 | pyr(1+sum(pind(1:lev-1,2))+pind(lev,2)/2,1) = 1; | ||
690 | sig = reconWpyr(pyr,pind, daub_lo,'circular'); | ||
691 | clf; lplot(sig) | ||
692 | |||
693 | %% Since the basis functions are orthonormal, building a pyramid using this | ||
694 | %% input will yield a single non-zero coefficient. | ||
695 | [pyr,pind] = buildWpyr(sig, 4, daub_lo, 'circular'); | ||
696 | figure(1); | ||
697 | nbands = size(pind,1) | ||
698 | for b=1:nbands | ||
699 | subplot(nbands,1,b); lplot(pyrBand(pyr,pind,b)); | ||
700 | axis([1 size(pyrBand(pyr,pind,b),2) -0.3 1.3]); | ||
701 | end | ||
702 | |||
703 | %% Now shift the input by one sample and re-build the pyramid. | ||
704 | shifted_sig = [0,sig(1:size(sig,2)-1)]; | ||
705 | [spyr,spind] = buildWpyr(shifted_sig, 4, daub_lo, 'circular'); | ||
706 | |||
707 | %% Plot each band of the unshifted and shifted decomposition | ||
708 | nextFig(2); | ||
709 | nbands = size(spind,1) | ||
710 | for b=1:nbands | ||
711 | subplot(nbands,1,b); lplot(pyrBand(spyr,spind,b)); | ||
712 | axis([1 size(pyrBand(spyr,spind,b),2) -0.3 1.3]); | ||
713 | end | ||
714 | nextFig(2,-1); | ||
715 | |||
716 | %% In the third band, we expected the coefficients to move around | ||
717 | %% because the signal was shifted. But notice that in the original | ||
718 | %% signal decomposition, the other bands were filled with zeros. | ||
719 | %% After the shift, they have significant content. Although these | ||
720 | %% subbands are supposed to represent information at different scales, | ||
721 | %% their content also depends on the relative POSITION of the input | ||
722 | %% signal. | ||
723 | |||
724 | %% This problem is not unique to the Daubechies transform. The same | ||
725 | %% is true for the QMF transform. Try it... In fact, the same kind | ||
726 | %% of problem occurs for almost any orthogonal pyramid transform (the | ||
727 | %% only exception is the limiting case in which the filter is a sinc | ||
728 | %% function). | ||
729 | |||
730 | %% Orthogonal pyramid transforms are not shift-invariant. Although | ||
731 | %% orthogonality may be an important property for some applications | ||
732 | %% (e.g., data compression), orthogonal pyramid transforms are | ||
733 | %% generally not so good for image analysis. | ||
734 | |||
735 | %% The overcompleteness of the Laplacian pyramid turns out to be a | ||
736 | %% good thing in the end. By using an overcomplete representation | ||
737 | %% (and by choosing the filters properly to avoid aliasing as much as | ||
738 | %% possible), you end up with a representation that is useful for | ||
739 | %% image analysis. | ||
740 | |||
741 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
742 | |||
743 | %%% The "STEERABLE PYRAMID" | ||
744 | |||
745 | %% The steerable pyramid is a multi-scale representation that is | ||
746 | %% translation-invariant, but that also includes representation of | ||
747 | %% orientation. Furthermore, the representation of orientation is | ||
748 | %% designed to be rotation-invariant. The basis/projection functions | ||
749 | %% are oriented (steerable) filters, localized in space and frequency. | ||
750 | %% It is overcomplete to avoid aliasing. And it is "self-inverting" | ||
751 | %% (like the QMF/Wavelet transform): the projection functions and | ||
752 | %% basis functions are identical. The mathematical phrase for a | ||
753 | %% transform obeying this property is "tight frame". | ||
754 | |||
755 | %% The system diagram for the steerable pyramid (described in the | ||
756 | %% reference given below) is as follows: | ||
757 | % | ||
758 | % IM ---> fhi0 -----------------> H0 ---------------- fhi0 ---> RESULT | ||
759 | % | | | ||
760 | % | | | ||
761 | % |-> flo0 ---> fl1/down2 --> L1 --> up2/fl1 ---> flo0 -| | ||
762 | % | | | ||
763 | % |----> fb0 -----> B0 ----> fb0 ---| | ||
764 | % | | | ||
765 | % |----> fb1 -----> B1 ----> fb1 ---| | ||
766 | % . . | ||
767 | % . . | ||
768 | % |----> fbK -----> BK ----> fbK ---| | ||
769 | % | ||
770 | %% The filters {fhi0,flo0} are used to initially split the image into | ||
771 | %% a highpass residual band H0 and a lowpass subband. This lowpass | ||
772 | %% band is then split into a low(er)pass band L1 and K+1 oriented | ||
773 | %% subbands {B0,B1,...,BK}. The representatation is substantially | ||
774 | %% overcomplete. The pyramid is built by recursively splitting the | ||
775 | %% lowpass band (L1) using the inner portion of the diagram (i.e., | ||
776 | %% using the filters {fl1,fb0,fb1,...,fbK}). The resulting transform is | ||
777 | %% overcomplete by a factor of 4k/3. | ||
778 | |||
779 | %% The scale tuning of the filters is constrained by the recursive | ||
780 | %% system diagram. The orientation tuning is constrained by requiring | ||
781 | %% the property of steerability. A set of filters form a steerable | ||
782 | %% basis if they 1) are rotated copies of each other, and 2) a copy of | ||
783 | %% the filter at any orientation may be computed as a linear | ||
784 | %% combination of the basis filters. The simplest examples of | ||
785 | %% steerable filters is a set of N+1 Nth-order directional | ||
786 | %% derivatives. | ||
787 | |||
788 | %% Choose a filter set (options are 'sp0Filters', 'sp1Filters', | ||
789 | %% 'sp3Filters', 'sp5Filters'): | ||
790 | filts = 'sp3Filters'; | ||
791 | [lo0filt,hi0filt,lofilt,bfilts,steermtx,harmonics] = eval(filts); | ||
792 | fsz = round(sqrt(size(bfilts,1))); fsz = [fsz fsz]; | ||
793 | nfilts = size(bfilts,2); | ||
794 | nrows = floor(sqrt(nfilts)); | ||
795 | |||
796 | %% Look at the oriented bandpass filters: | ||
797 | for f = 1:nfilts | ||
798 | subplot(nrows,ceil(nfilts/nrows),f); | ||
799 | showIm(conv2(reshape(bfilts(:,f),fsz),lo0filt)); | ||
800 | end | ||
801 | |||
802 | %% Try "steering" to a new orientation (new_ori in degrees): | ||
803 | new_ori = 360*rand(1) | ||
804 | clf; showIm(conv2(reshape(steer(bfilts, new_ori*pi/180 ), fsz), lo0filt)); | ||
805 | |||
806 | %% Look at Fourier transform magnitudes: | ||
807 | lo0 = fftshift(abs(fft2(lo0filt,64,64))); | ||
808 | fsum = zeros(size(lo0)); | ||
809 | for f = 1:size(bfilts,2) | ||
810 | subplot(nrows,ceil(nfilts/nrows),f); | ||
811 | flt = reshape(bfilts(:,f),fsz); | ||
812 | freq = lo0 .* fftshift(abs(fft2(flt,64,64))); | ||
813 | fsum = fsum + freq.^2; | ||
814 | showIm(freq); | ||
815 | end | ||
816 | |||
817 | %% The filters sum to a smooth annular ring: | ||
818 | clf; showIm(fsum); | ||
819 | |||
820 | %% build a Steerable pyramid: | ||
821 | [pyr,pind] = buildSpyr(im, 4-imSubSample, filts); | ||
822 | |||
823 | %% Look at first (vertical) bands, different scales: | ||
824 | for s = 1:min(4,spyrHt(pind)) | ||
825 | band = spyrBand(pyr,pind,s,1); | ||
826 | subplot(2,2,s); showIm(band); | ||
827 | end | ||
828 | |||
829 | %% look at all orientation bands at one level (scale): | ||
830 | for b = 1:spyrNumBands(pind) | ||
831 | band = spyrBand(pyr,pind,1,b); | ||
832 | subplot(nrows,ceil(nfilts/nrows),b); | ||
833 | showIm(band); | ||
834 | end | ||
835 | |||
836 | %% To access the high-pass and low-pass bands: | ||
837 | low = pyrLow(pyr,pind); | ||
838 | showIm(low); | ||
839 | high = spyrHigh(pyr,pind); | ||
840 | showIm(high); | ||
841 | |||
842 | %% Display the whole pyramid (except for the highpass residual band), | ||
843 | %% with images shown at proper relative sizes: | ||
844 | showSpyr(pyr,pind); | ||
845 | |||
846 | %% Spin a level of the pyramid, interpolating (steering to) | ||
847 | %% intermediate orienations: | ||
848 | |||
849 | [lev,lind] = spyrLev(pyr,pind,2); | ||
850 | lev2 = reshape(lev,prod(lind(1,:)),size(bfilts,2)); | ||
851 | figure(1); subplot(1,1,1); showIm(spyrBand(pyr,pind,2,1)); | ||
852 | M = moviein(16); | ||
853 | for frame = 1:16 | ||
854 | steered_im = steer(lev2, 2*pi*(frame-1)/16, harmonics, steermtx); | ||
855 | showIm(reshape(steered_im, lind(1,:)),'auto2'); | ||
856 | M(:,frame) = getframe; | ||
857 | end | ||
858 | |||
859 | %% Show the movie 3 times: | ||
860 | movie(M,3); | ||
861 | |||
862 | %% Reconstruct. Note that the filters are not perfect, although they are good | ||
863 | %% enough for most applications. | ||
864 | res = reconSpyr(pyr, pind, filts); | ||
865 | showIm(im + i * res); | ||
866 | imStats(im,res); | ||
867 | |||
868 | %% As with previous pyramids, you can select subsets of the levels | ||
869 | %% and orientation bands to be included in the reconstruction. For example: | ||
870 | |||
871 | %% All levels (including highpass and lowpass residuals), one orientation: | ||
872 | clf; showIm(reconSpyr(pyr,pind,filts,'reflect1','all', [1])); | ||
873 | |||
874 | %% Without the highpass and lowpass: | ||
875 | clf; showIm(reconSpyr(pyr,pind,filts,'reflect1',[1:spyrHt(pind)], [1])); | ||
876 | |||
877 | %% We also provide an implementation of the Steerable pyramid in the | ||
878 | %% Frequency domain. The advantages are perfect-reconstruction | ||
879 | %% (within floating-point error), and any number of orientation | ||
880 | %% bands. The disadvantages are that it is typically slower, and the | ||
881 | %% boundary handling is always circular. | ||
882 | |||
883 | [pyr,pind] = buildSFpyr(im,4,4); % 4 levels, 5 orientation bands | ||
884 | showSpyr(pyr,pind); | ||
885 | res = reconSFpyr(pyr,pind); | ||
886 | imStats(im,res); % nearly perfect | ||
887 | |||
888 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
889 | % The steerable pyramid transform given above is described in: | ||
890 | % | ||
891 | % E P Simoncelli and W T Freeman. | ||
892 | % The Steerable Pyramid: A Flexible Architecture for Multi-Scale | ||
893 | % Derivative Computation. IEEE Second Int'l Conf on Image Processing. | ||
894 | % Washington DC, October 1995. | ||
895 | % | ||
896 | % Online access: | ||
897 | % Abstract: http://www.cis.upenn.edu/~eero/ABSTRACTS/simoncelli95b-abstract.html | ||
898 | % Full (PostScript): ftp://ftp.cis.upenn.edu/pub/eero/simoncelli95b.ps.Z | ||
899 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
900 | |||
901 | %% Local Variables: | ||
902 | %% buffer-read-only: t | ||
903 | %% End: | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/binomialFilter.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/binomialFilter.m new file mode 100755 index 0000000..e5670c7 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/binomialFilter.m | |||
@@ -0,0 +1,18 @@ | |||
1 | % KERNEL = binomialFilter(size) | ||
2 | % | ||
3 | % Returns a vector of binomial coefficients of order (size-1) . | ||
4 | |||
5 | % Eero Simoncelli, 2/97. | ||
6 | |||
7 | function [kernel] = binomialFilter(sz) | ||
8 | |||
9 | if (sz < 2) | ||
10 | error('size argument must be larger than 1'); | ||
11 | end | ||
12 | |||
13 | kernel = [0.5 0.5]'; | ||
14 | |||
15 | for n=1:sz-2 | ||
16 | kernel = conv([0.5 0.5]', kernel); | ||
17 | end | ||
18 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/blur.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/blur.m new file mode 100755 index 0000000..f993d09 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/blur.m | |||
@@ -0,0 +1,28 @@ | |||
1 | % RES = blur(IM, LEVELS, FILT) | ||
2 | % | ||
3 | % Blur an image, by filtering and downsampling LEVELS times | ||
4 | % (default=1), followed by upsampling and filtering LEVELS times. The | ||
5 | % blurring is done with filter kernel specified by FILT (default = | ||
6 | % 'binom5'), which can be a string (to be passed to namedFilter), a | ||
7 | % vector (applied separably as a 1D convolution kernel in X and Y), or | ||
8 | % a matrix (applied as a 2D convolution kernel). The downsampling is | ||
9 | % always by 2 in each direction. | ||
10 | |||
11 | % Eero Simoncelli, 3/04. | ||
12 | |||
13 | function res = blur(im, nlevs, filt) | ||
14 | |||
15 | %------------------------------------------------------------ | ||
16 | %% OPTIONAL ARGS: | ||
17 | |||
18 | if (exist('nlevs') ~= 1) | ||
19 | nlevs = 1; | ||
20 | end | ||
21 | |||
22 | if (exist('filt') ~= 1) | ||
23 | filt = 'binom5'; | ||
24 | end | ||
25 | |||
26 | %------------------------------------------------------------ | ||
27 | |||
28 | res = upBlur(blurDn(im,nlevs,filt)); \ No newline at end of file | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/blurDn.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/blurDn.m new file mode 100755 index 0000000..8120c04 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/blurDn.m | |||
@@ -0,0 +1,59 @@ | |||
1 | % RES = blurDn(IM, LEVELS, FILT) | ||
2 | % | ||
3 | % Blur and downsample an image. The blurring is done with filter | ||
4 | % kernel specified by FILT (default = 'binom5'), which can be a string | ||
5 | % (to be passed to namedFilter), a vector (applied separably as a 1D | ||
6 | % convolution kernel in X and Y), or a matrix (applied as a 2D | ||
7 | % convolution kernel). The downsampling is always by 2 in each | ||
8 | % direction. | ||
9 | % | ||
10 | % The procedure is applied recursively LEVELS times (default=1). | ||
11 | |||
12 | % Eero Simoncelli, 3/97. | ||
13 | |||
14 | function res = blurDn(im, nlevs, filt) | ||
15 | |||
16 | %------------------------------------------------------------ | ||
17 | %% OPTIONAL ARGS: | ||
18 | |||
19 | if (exist('nlevs') ~= 1) | ||
20 | nlevs = 1; | ||
21 | end | ||
22 | |||
23 | if (exist('filt') ~= 1) | ||
24 | filt = 'binom5'; | ||
25 | end | ||
26 | |||
27 | %------------------------------------------------------------ | ||
28 | |||
29 | if isstr(filt) | ||
30 | filt = namedFilter(filt); | ||
31 | end | ||
32 | |||
33 | filt = filt/sum(filt(:)); | ||
34 | |||
35 | if nlevs > 1 | ||
36 | im = blurDn(im,nlevs-1,filt); | ||
37 | end | ||
38 | |||
39 | if (nlevs >= 1) | ||
40 | if (any(size(im)==1)) | ||
41 | if (~any(size(filt)==1)) | ||
42 | error('Cant apply 2D filter to 1D signal'); | ||
43 | end | ||
44 | if (size(im,2)==1) | ||
45 | filt = filt(:); | ||
46 | else | ||
47 | filt = filt(:)'; | ||
48 | end | ||
49 | res = corrDn(im,filt,'reflect1',(size(im)~=1)+1); | ||
50 | elseif (any(size(filt)==1)) | ||
51 | filt = filt(:); | ||
52 | res = corrDn(im,filt,'reflect1',[2 1]); | ||
53 | res = corrDn(res,filt','reflect1',[1 2]); | ||
54 | else | ||
55 | res = corrDn(im,filt,'reflect1',[2 2]); | ||
56 | end | ||
57 | else | ||
58 | res = im; | ||
59 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildGpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildGpyr.m new file mode 100755 index 0000000..3f3d07b --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildGpyr.m | |||
@@ -0,0 +1,82 @@ | |||
1 | % [PYR, INDICES] = buildGpyr(IM, HEIGHT, FILT, EDGES) | ||
2 | % | ||
3 | % Construct a Gaussian pyramid on matrix IM. | ||
4 | % | ||
5 | % HEIGHT (optional) specifies the number of pyramid levels to build. Default | ||
6 | % is 1+maxPyrHt(size(IM),size(FILT)). | ||
7 | % You can also specify 'auto' to use this value. | ||
8 | % | ||
9 | % FILT (optional) can be a string naming a standard filter (see | ||
10 | % namedFilter), or a vector which will be used for (separable) | ||
11 | % convolution. Default = 'binom5'. EDGES specifies edge-handling, and | ||
12 | % defaults to 'reflect1' (see corrDn). | ||
13 | % | ||
14 | % PYR is a vector containing the N pyramid subbands, ordered from fine | ||
15 | % to coarse. INDICES is an Nx2 matrix containing the sizes of | ||
16 | % each subband. This is compatible with the MatLab Wavelet toolbox. | ||
17 | |||
18 | % Eero Simoncelli, 6/96. | ||
19 | |||
20 | function [pyr,pind] = buildGpyr(im, ht, filt, edges) | ||
21 | |||
22 | if (nargin < 1) | ||
23 | error('First argument (IM) is required'); | ||
24 | end | ||
25 | |||
26 | im_sz = size(im); | ||
27 | |||
28 | %------------------------------------------------------------ | ||
29 | %% OPTIONAL ARGS: | ||
30 | |||
31 | if (exist('filt') ~= 1) | ||
32 | filt = 'binom5'; | ||
33 | end | ||
34 | |||
35 | if isstr(filt) | ||
36 | filt = namedFilter(filt); | ||
37 | end | ||
38 | |||
39 | if ( (size(filt,1) > 1) & (size(filt,2) > 1) ) | ||
40 | error('FILT should be a 1D filter (i.e., a vector)'); | ||
41 | else | ||
42 | filt = filt(:); | ||
43 | end | ||
44 | |||
45 | max_ht = 1 + maxPyrHt(im_sz, size(filt,1)); | ||
46 | if ( (exist('ht') ~= 1) | (ht == 'auto') ) | ||
47 | ht = max_ht; | ||
48 | else | ||
49 | if (ht > max_ht) | ||
50 | error(sprintf('Cannot build pyramid higher than %d levels.',max_ht)); | ||
51 | end | ||
52 | end | ||
53 | |||
54 | if (exist('edges') ~= 1) | ||
55 | edges= 'reflect1'; | ||
56 | end | ||
57 | |||
58 | %------------------------------------------------------------ | ||
59 | |||
60 | if (ht <= 1) | ||
61 | |||
62 | pyr = im(:); | ||
63 | pind = im_sz; | ||
64 | |||
65 | else | ||
66 | |||
67 | if (im_sz(2) == 1) | ||
68 | lo2 = corrDn(im, filt, edges, [2 1], [1 1]); | ||
69 | elseif (im_sz(1) == 1) | ||
70 | lo2 = corrDn(im, filt', edges, [1 2], [1 1]); | ||
71 | else | ||
72 | lo = corrDn(im, filt', edges, [1 2], [1 1]); | ||
73 | lo2 = corrDn(lo, filt, edges, [2 1], [1 1]); | ||
74 | end | ||
75 | |||
76 | [npyr,nind] = buildGpyr(lo2, ht-1, filt, edges); | ||
77 | |||
78 | pyr = [im(:); npyr]; | ||
79 | pind = [im_sz; nind]; | ||
80 | |||
81 | end | ||
82 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildLpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildLpyr.m new file mode 100755 index 0000000..facb0f3 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildLpyr.m | |||
@@ -0,0 +1,109 @@ | |||
1 | % [PYR, INDICES] = buildLpyr(IM, HEIGHT, FILT1, FILT2, EDGES) | ||
2 | % | ||
3 | % Construct a Laplacian pyramid on matrix (or vector) IM. | ||
4 | % | ||
5 | % HEIGHT (optional) specifies the number of pyramid levels to build. Default | ||
6 | % is 1+maxPyrHt(size(IM),size(FILT)). You can also specify 'auto' to | ||
7 | % use this value. | ||
8 | % | ||
9 | % FILT1 (optional) can be a string naming a standard filter (see | ||
10 | % namedFilter), or a vector which will be used for (separable) | ||
11 | % convolution. Default = 'binom5'. FILT2 specifies the "expansion" | ||
12 | % filter (default = filt1). EDGES specifies edge-handling, and | ||
13 | % defaults to 'reflect1' (see corrDn). | ||
14 | % | ||
15 | % PYR is a vector containing the N pyramid subbands, ordered from fine | ||
16 | % to coarse. INDICES is an Nx2 matrix containing the sizes of | ||
17 | % each subband. This is compatible with the MatLab Wavelet toolbox. | ||
18 | |||
19 | % Eero Simoncelli, 6/96. | ||
20 | |||
21 | function [pyr,pind] = buildLpyr(im, ht, filt1, filt2, edges) | ||
22 | |||
23 | if (nargin < 1) | ||
24 | error('First argument (IM) is required'); | ||
25 | end | ||
26 | |||
27 | im_sz = size(im); | ||
28 | |||
29 | %------------------------------------------------------------ | ||
30 | %% OPTIONAL ARGS: | ||
31 | |||
32 | if (exist('filt1') ~= 1) | ||
33 | filt1 = 'binom5'; | ||
34 | end | ||
35 | |||
36 | if isstr(filt1) | ||
37 | filt1 = namedFilter(filt1); | ||
38 | end | ||
39 | |||
40 | if ( (size(filt1,1) > 1) & (size(filt1,2) > 1) ) | ||
41 | error('FILT1 should be a 1D filter (i.e., a vector)'); | ||
42 | else | ||
43 | filt1 = filt1(:); | ||
44 | end | ||
45 | |||
46 | if (exist('filt2') ~= 1) | ||
47 | filt2 = filt1; | ||
48 | end | ||
49 | |||
50 | if isstr(filt2) | ||
51 | filt2 = namedFilter(filt2); | ||
52 | end | ||
53 | |||
54 | if ( (size(filt2,1) > 1) & (size(filt2,2) > 1) ) | ||
55 | error('FILT2 should be a 1D filter (i.e., a vector)'); | ||
56 | else | ||
57 | filt2 = filt2(:); | ||
58 | end | ||
59 | |||
60 | max_ht = 1 + maxPyrHt(im_sz, max(size(filt1,1), size(filt2,1))); | ||
61 | if ( (exist('ht') ~= 1) | (ht == 'auto') ) | ||
62 | ht = max_ht; | ||
63 | else | ||
64 | if (ht > max_ht) | ||
65 | error(sprintf('Cannot build pyramid higher than %d levels.',max_ht)); | ||
66 | end | ||
67 | end | ||
68 | |||
69 | if (exist('edges') ~= 1) | ||
70 | edges= 'reflect1'; | ||
71 | end | ||
72 | |||
73 | %------------------------------------------------------------ | ||
74 | |||
75 | if (ht <= 1) | ||
76 | |||
77 | pyr = im(:); | ||
78 | pind = im_sz; | ||
79 | |||
80 | else | ||
81 | |||
82 | if (im_sz(2) == 1) | ||
83 | lo2 = corrDn(im, filt1, edges, [2 1], [1 1]); | ||
84 | elseif (im_sz(1) == 1) | ||
85 | lo2 = corrDn(im, filt1', edges, [1 2], [1 1]); | ||
86 | else | ||
87 | lo = corrDn(im, filt1', edges, [1 2], [1 1]); | ||
88 | int_sz = size(lo); | ||
89 | lo2 = corrDn(lo, filt1, edges, [2 1], [1 1]); | ||
90 | end | ||
91 | |||
92 | [npyr,nind] = buildLpyr(lo2, ht-1, filt1, filt2, edges); | ||
93 | |||
94 | if (im_sz(1) == 1) | ||
95 | hi2 = upConv(lo2, filt2', edges, [1 2], [1 1], im_sz); | ||
96 | elseif (im_sz(2) == 1) | ||
97 | hi2 = upConv(lo2, filt2, edges, [2 1], [1 1], im_sz); | ||
98 | else | ||
99 | hi = upConv(lo2, filt2, edges, [2 1], [1 1], int_sz); | ||
100 | hi2 = upConv(hi, filt2', edges, [1 2], [1 1], im_sz); | ||
101 | end | ||
102 | |||
103 | hi2 = im - hi2; | ||
104 | |||
105 | pyr = [hi2(:); npyr]; | ||
106 | pind = [im_sz; nind]; | ||
107 | |||
108 | end | ||
109 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildSCFpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildSCFpyr.m new file mode 100755 index 0000000..101b6d2 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildSCFpyr.m | |||
@@ -0,0 +1,90 @@ | |||
1 | % [PYR, INDICES, STEERMTX, HARMONICS] = buildSCFpyr(IM, HEIGHT, ORDER, TWIDTH) | ||
2 | % | ||
3 | % This is a modified version of buildSFpyr, that constructs a | ||
4 | % complex-valued steerable pyramid using Hilbert-transform pairs | ||
5 | % of filters. Note that the imaginary parts will *not* be steerable. | ||
6 | % | ||
7 | % To reconstruct from this representation, either call reconSFpyr | ||
8 | % on the real part of the pyramid, *or* call reconSCFpyr which will | ||
9 | % use both real and imaginary parts (forcing analyticity). | ||
10 | % | ||
11 | % Description of this transform appears in: Portilla & Simoncelli, | ||
12 | % Int'l Journal of Computer Vision, 40(1):49-71, Oct 2000. | ||
13 | % Further information: http://www.cns.nyu.edu/~eero/STEERPYR/ | ||
14 | |||
15 | % Original code: Eero Simoncelli, 5/97. | ||
16 | % Modified by Javier Portilla to return complex (quadrature pair) channels, | ||
17 | % 9/97. | ||
18 | |||
19 | function [pyr,pind,steermtx,harmonics] = buildSCFpyr(im, ht, order, twidth) | ||
20 | |||
21 | %----------------------------------------------------------------- | ||
22 | %% DEFAULTS: | ||
23 | |||
24 | max_ht = floor(log2(min(size(im)))) - 2; | ||
25 | |||
26 | if (exist('ht') ~= 1) | ||
27 | ht = max_ht; | ||
28 | else | ||
29 | if (ht > max_ht) | ||
30 | error(sprintf('Cannot build pyramid higher than %d levels.',max_ht)); | ||
31 | end | ||
32 | end | ||
33 | |||
34 | if (exist('order') ~= 1) | ||
35 | order = 3; | ||
36 | elseif ((order > 15) | (order < 0)) | ||
37 | fprintf(1,'Warning: ORDER must be an integer in the range [0,15]. Truncating.\n'); | ||
38 | order = min(max(order,0),15); | ||
39 | else | ||
40 | order = round(order); | ||
41 | end | ||
42 | nbands = order+1; | ||
43 | |||
44 | if (exist('twidth') ~= 1) | ||
45 | twidth = 1; | ||
46 | elseif (twidth <= 0) | ||
47 | fprintf(1,'Warning: TWIDTH must be positive. Setting to 1.\n'); | ||
48 | twidth = 1; | ||
49 | end | ||
50 | |||
51 | %----------------------------------------------------------------- | ||
52 | %% Steering stuff: | ||
53 | |||
54 | if (mod((nbands),2) == 0) | ||
55 | harmonics = [0:(nbands/2)-1]'*2 + 1; | ||
56 | else | ||
57 | harmonics = [0:(nbands-1)/2]'*2; | ||
58 | end | ||
59 | |||
60 | steermtx = steer2HarmMtx(harmonics, pi*[0:nbands-1]/nbands, 'even'); | ||
61 | |||
62 | %----------------------------------------------------------------- | ||
63 | |||
64 | dims = size(im); | ||
65 | ctr = ceil((dims+0.5)/2); | ||
66 | |||
67 | [xramp,yramp] = meshgrid( ([1:dims(2)]-ctr(2))./(dims(2)/2), ... | ||
68 | ([1:dims(1)]-ctr(1))./(dims(1)/2) ); | ||
69 | angle = atan2(yramp,xramp); | ||
70 | log_rad = sqrt(xramp.^2 + yramp.^2); | ||
71 | log_rad(ctr(1),ctr(2)) = log_rad(ctr(1),ctr(2)-1); | ||
72 | log_rad = log2(log_rad); | ||
73 | |||
74 | %% Radial transition function (a raised cosine in log-frequency): | ||
75 | [Xrcos,Yrcos] = rcosFn(twidth,(-twidth/2),[0 1]); | ||
76 | Yrcos = sqrt(Yrcos); | ||
77 | |||
78 | YIrcos = sqrt(1.0 - Yrcos.^2); | ||
79 | lo0mask = pointOp(log_rad, YIrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); | ||
80 | imdft = fftshift(fft2(im)); | ||
81 | lo0dft = imdft .* lo0mask; | ||
82 | |||
83 | [pyr,pind] = buildSCFpyrLevs(lo0dft, log_rad, Xrcos, Yrcos, angle, ht, nbands); | ||
84 | |||
85 | hi0mask = pointOp(log_rad, Yrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); | ||
86 | hi0dft = imdft .* hi0mask; | ||
87 | hi0 = ifft2(ifftshift(hi0dft)); | ||
88 | |||
89 | pyr = [real(hi0(:)) ; pyr]; | ||
90 | pind = [size(hi0); pind]; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildSCFpyrLevs.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildSCFpyrLevs.m new file mode 100755 index 0000000..bd75695 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildSCFpyrLevs.m | |||
@@ -0,0 +1,73 @@ | |||
1 | % [PYR, INDICES] = buildSCFpyrLevs(LODFT, LOGRAD, XRCOS, YRCOS, ANGLE, HEIGHT, NBANDS) | ||
2 | % | ||
3 | % Recursive function for constructing levels of a steerable pyramid. This | ||
4 | % is called by buildSCFpyr, and is not usually called directly. | ||
5 | |||
6 | % Original code: Eero Simoncelli, 5/97. | ||
7 | % Modified by Javier Portilla to generate complex bands in 9/97. | ||
8 | |||
9 | function [pyr,pind] = buildSCFpyrLevs(lodft,log_rad,Xrcos,Yrcos,angle,ht,nbands); | ||
10 | |||
11 | if (ht <= 0) | ||
12 | |||
13 | lo0 = ifft2(ifftshift(lodft)); | ||
14 | pyr = real(lo0(:)); | ||
15 | pind = size(lo0); | ||
16 | |||
17 | else | ||
18 | |||
19 | bands = zeros(prod(size(lodft)), nbands); | ||
20 | bind = zeros(nbands,2); | ||
21 | |||
22 | % log_rad = log_rad + 1; | ||
23 | Xrcos = Xrcos - log2(2); % shift origin of lut by 1 octave. | ||
24 | |||
25 | lutsize = 1024; | ||
26 | Xcosn = pi*[-(2*lutsize+1):(lutsize+1)]/lutsize; % [-2*pi:pi] | ||
27 | order = nbands-1; | ||
28 | %% divide by sqrt(sum_(n=0)^(N-1) cos(pi*n/N)^(2(N-1)) ) | ||
29 | %% Thanks to Patrick Teo for writing this out :) | ||
30 | const = (2^(2*order))*(factorial(order)^2)/(nbands*factorial(2*order)); | ||
31 | |||
32 | % | ||
33 | % Ycosn = sqrt(const) * (cos(Xcosn)).^order; | ||
34 | % | ||
35 | % analityc version: only take one lobe | ||
36 | alfa= mod(pi+Xcosn,2*pi)-pi; | ||
37 | Ycosn = 2*sqrt(const) * (cos(Xcosn).^order) .* (abs(alfa)<pi/2); | ||
38 | |||
39 | himask = pointOp(log_rad, Yrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); | ||
40 | |||
41 | for b = 1:nbands | ||
42 | anglemask = pointOp(angle, Ycosn, Xcosn(1)+pi*(b-1)/nbands, Xcosn(2)-Xcosn(1)); | ||
43 | banddft = ((-i)^(nbands-1)) .* lodft .* anglemask .* himask; | ||
44 | band = ifft2(ifftshift(banddft)); | ||
45 | |||
46 | % bands(:,b) = real(band(:)); | ||
47 | % analytic version: full complex value | ||
48 | bands(:,b)=band(:); | ||
49 | bind(b,:) = size(band); | ||
50 | end | ||
51 | |||
52 | dims = size(lodft); | ||
53 | ctr = ceil((dims+0.5)/2); | ||
54 | lodims = ceil((dims-0.5)/2); | ||
55 | loctr = ceil((lodims+0.5)/2); | ||
56 | lostart = ctr-loctr+1; | ||
57 | loend = lostart+lodims-1; | ||
58 | |||
59 | log_rad = log_rad(lostart(1):loend(1),lostart(2):loend(2)); | ||
60 | angle = angle(lostart(1):loend(1),lostart(2):loend(2)); | ||
61 | lodft = lodft(lostart(1):loend(1),lostart(2):loend(2)); | ||
62 | YIrcos = abs(sqrt(1.0 - Yrcos.^2)); | ||
63 | lomask = pointOp(log_rad, YIrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); | ||
64 | |||
65 | lodft = lomask .* lodft; | ||
66 | |||
67 | [npyr,nind] = buildSCFpyrLevs(lodft, log_rad, Xrcos, Yrcos, angle, ht-1, nbands); | ||
68 | |||
69 | pyr = [bands(:); npyr]; | ||
70 | pind = [bind; nind]; | ||
71 | |||
72 | end | ||
73 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildSFpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildSFpyr.m new file mode 100755 index 0000000..ae67206 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildSFpyr.m | |||
@@ -0,0 +1,102 @@ | |||
1 | % [PYR, INDICES, STEERMTX, HARMONICS] = buildSFpyr(IM, HEIGHT, ORDER, TWIDTH) | ||
2 | % | ||
3 | % Construct a steerable pyramid on matrix IM, in the Fourier domain. | ||
4 | % This is similar to buildSpyr, except that: | ||
5 | % | ||
6 | % + Reconstruction is exact (within floating point errors) | ||
7 | % + It can produce any number of orientation bands. | ||
8 | % - Typically slower, especially for non-power-of-two sizes. | ||
9 | % - Boundary-handling is circular. | ||
10 | % | ||
11 | % HEIGHT (optional) specifies the number of pyramid levels to build. Default | ||
12 | % is maxPyrHt(size(IM),size(FILT)); | ||
13 | % | ||
14 | % The squared radial functions tile the Fourier plane, with a raised-cosine | ||
15 | % falloff. Angular functions are cos(theta-k\pi/(K+1))^K, where K is | ||
16 | % the ORDER (one less than the number of orientation bands, default= 3). | ||
17 | % | ||
18 | % TWIDTH is the width of the transition region of the radial lowpass | ||
19 | % function, in octaves (default = 1, which gives a raised cosine for | ||
20 | % the bandpass filters). | ||
21 | % | ||
22 | % PYR is a vector containing the N pyramid subbands, ordered from fine | ||
23 | % to coarse. INDICES is an Nx2 matrix containing the sizes of | ||
24 | % each subband. This is compatible with the MatLab Wavelet toolbox. | ||
25 | % See the function STEER for a description of STEERMTX and HARMONICS. | ||
26 | |||
27 | % Eero Simoncelli, 5/97. | ||
28 | % See http://www.cns.nyu.edu/~eero/STEERPYR/ for more | ||
29 | % information about the Steerable Pyramid image decomposition. | ||
30 | |||
31 | function [pyr,pind,steermtx,harmonics] = buildSFpyr(im, ht, order, twidth) | ||
32 | |||
33 | %----------------------------------------------------------------- | ||
34 | %% DEFAULTS: | ||
35 | |||
36 | max_ht = floor(log2(min(size(im)))) - 2; | ||
37 | |||
38 | if (exist('ht') ~= 1) | ||
39 | ht = max_ht; | ||
40 | else | ||
41 | if (ht > max_ht) | ||
42 | error(sprintf('Cannot build pyramid higher than %d levels.',max_ht)); | ||
43 | end | ||
44 | end | ||
45 | |||
46 | if (exist('order') ~= 1) | ||
47 | order = 3; | ||
48 | elseif ((order > 15) | (order < 0)) | ||
49 | fprintf(1,'Warning: ORDER must be an integer in the range [0,15]. Truncating.\n'); | ||
50 | order = min(max(order,0),15); | ||
51 | else | ||
52 | order = round(order); | ||
53 | end | ||
54 | nbands = order+1; | ||
55 | |||
56 | if (exist('twidth') ~= 1) | ||
57 | twidth = 1; | ||
58 | elseif (twidth <= 0) | ||
59 | fprintf(1,'Warning: TWIDTH must be positive. Setting to 1.\n'); | ||
60 | twidth = 1; | ||
61 | end | ||
62 | |||
63 | %----------------------------------------------------------------- | ||
64 | %% Steering stuff: | ||
65 | |||
66 | if (mod((nbands),2) == 0) | ||
67 | harmonics = [0:(nbands/2)-1]'*2 + 1; | ||
68 | else | ||
69 | harmonics = [0:(nbands-1)/2]'*2; | ||
70 | end | ||
71 | |||
72 | steermtx = steer2HarmMtx(harmonics, pi*[0:nbands-1]/nbands, 'even'); | ||
73 | |||
74 | %----------------------------------------------------------------- | ||
75 | |||
76 | dims = size(im); | ||
77 | ctr = ceil((dims+0.5)/2); | ||
78 | |||
79 | [xramp,yramp] = meshgrid( ([1:dims(2)]-ctr(2))./(dims(2)/2), ... | ||
80 | ([1:dims(1)]-ctr(1))./(dims(1)/2) ); | ||
81 | angle = atan2(yramp,xramp); | ||
82 | log_rad = sqrt(xramp.^2 + yramp.^2); | ||
83 | log_rad(ctr(1),ctr(2)) = log_rad(ctr(1),ctr(2)-1); | ||
84 | log_rad = log2(log_rad); | ||
85 | |||
86 | %% Radial transition function (a raised cosine in log-frequency): | ||
87 | [Xrcos,Yrcos] = rcosFn(twidth,(-twidth/2),[0 1]); | ||
88 | Yrcos = sqrt(Yrcos); | ||
89 | |||
90 | YIrcos = sqrt(1.0 - Yrcos.^2); | ||
91 | lo0mask = pointOp(log_rad, YIrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); | ||
92 | imdft = fftshift(fft2(im)); | ||
93 | lo0dft = imdft .* lo0mask; | ||
94 | |||
95 | [pyr,pind] = buildSFpyrLevs(lo0dft, log_rad, Xrcos, Yrcos, angle, ht, nbands); | ||
96 | |||
97 | hi0mask = pointOp(log_rad, Yrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); | ||
98 | hi0dft = imdft .* hi0mask; | ||
99 | hi0 = ifft2(ifftshift(hi0dft)); | ||
100 | |||
101 | pyr = [real(hi0(:)) ; pyr]; | ||
102 | pind = [size(hi0); pind]; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildSFpyrLevs.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildSFpyrLevs.m new file mode 100755 index 0000000..472d861 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildSFpyrLevs.m | |||
@@ -0,0 +1,63 @@ | |||
1 | % [PYR, INDICES] = buildSFpyrLevs(LODFT, LOGRAD, XRCOS, YRCOS, ANGLE, HEIGHT, NBANDS) | ||
2 | % | ||
3 | % Recursive function for constructing levels of a steerable pyramid. This | ||
4 | % is called by buildSFpyr, and is not usually called directly. | ||
5 | |||
6 | % Eero Simoncelli, 5/97. | ||
7 | |||
8 | function [pyr,pind] = buildSFpyrLevs(lodft,log_rad,Xrcos,Yrcos,angle,ht,nbands); | ||
9 | |||
10 | if (ht <= 0) | ||
11 | |||
12 | lo0 = ifft2(ifftshift(lodft)); | ||
13 | pyr = real(lo0(:)); | ||
14 | pind = size(lo0); | ||
15 | |||
16 | else | ||
17 | |||
18 | bands = zeros(prod(size(lodft)), nbands); | ||
19 | bind = zeros(nbands,2); | ||
20 | |||
21 | % log_rad = log_rad + 1; | ||
22 | Xrcos = Xrcos - log2(2); % shift origin of lut by 1 octave. | ||
23 | |||
24 | lutsize = 1024; | ||
25 | Xcosn = pi*[-(2*lutsize+1):(lutsize+1)]/lutsize; % [-2*pi:pi] | ||
26 | order = nbands-1; | ||
27 | %% divide by sqrt(sum_(n=0)^(N-1) cos(pi*n/N)^(2(N-1)) ) | ||
28 | %% Thanks to Patrick Teo for writing this out :) | ||
29 | const = (2^(2*order))*(factorial(order)^2)/(nbands*factorial(2*order)); | ||
30 | Ycosn = sqrt(const) * (cos(Xcosn)).^order; | ||
31 | himask = pointOp(log_rad, Yrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); | ||
32 | |||
33 | for b = 1:nbands | ||
34 | anglemask = pointOp(angle, Ycosn, Xcosn(1)+pi*(b-1)/nbands, Xcosn(2)-Xcosn(1)); | ||
35 | banddft = ((-sqrt(-1))^(nbands-1)) .* lodft .* anglemask .* himask; | ||
36 | band = ifft2(ifftshift(banddft)); | ||
37 | |||
38 | bands(:,b) = real(band(:)); | ||
39 | bind(b,:) = size(band); | ||
40 | end | ||
41 | |||
42 | dims = size(lodft); | ||
43 | ctr = ceil((dims+0.5)/2); | ||
44 | lodims = ceil((dims-0.5)/2); | ||
45 | loctr = ceil((lodims+0.5)/2); | ||
46 | lostart = ctr-loctr+1; | ||
47 | loend = lostart+lodims-1; | ||
48 | |||
49 | log_rad = log_rad(lostart(1):loend(1),lostart(2):loend(2)); | ||
50 | angle = angle(lostart(1):loend(1),lostart(2):loend(2)); | ||
51 | lodft = lodft(lostart(1):loend(1),lostart(2):loend(2)); | ||
52 | YIrcos = abs(sqrt(1.0 - Yrcos.^2)); | ||
53 | lomask = pointOp(log_rad, YIrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); | ||
54 | |||
55 | lodft = lomask .* lodft; | ||
56 | |||
57 | [npyr,nind] = buildSFpyrLevs(lodft, log_rad, Xrcos, Yrcos, angle, ht-1, nbands); | ||
58 | |||
59 | pyr = [bands(:); npyr]; | ||
60 | pind = [bind; nind]; | ||
61 | |||
62 | end | ||
63 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildSpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildSpyr.m new file mode 100755 index 0000000..b2bead6 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildSpyr.m | |||
@@ -0,0 +1,61 @@ | |||
1 | % [PYR, INDICES, STEERMTX, HARMONICS] = buildSpyr(IM, HEIGHT, FILTFILE, EDGES) | ||
2 | % | ||
3 | % Construct a steerable pyramid on matrix IM. | ||
4 | % | ||
5 | % HEIGHT (optional) specifies the number of pyramid levels to build. Default | ||
6 | % is maxPyrHt(size(IM),size(FILT)). | ||
7 | % You can also specify 'auto' to use this value. | ||
8 | % | ||
9 | % FILTFILE (optional) should be a string referring to an m-file that | ||
10 | % returns the rfilters. (examples: 'sp0Filters', 'sp1Filters', | ||
11 | % 'sp3Filters','sp5Filters'. default = 'sp1Filters'). EDGES specifies | ||
12 | % edge-handling, and defaults to 'reflect1' (see corrDn). | ||
13 | % | ||
14 | % PYR is a vector containing the N pyramid subbands, ordered from fine | ||
15 | % to coarse. INDICES is an Nx2 matrix containing the sizes of | ||
16 | % each subband. This is compatible with the MatLab Wavelet toolbox. | ||
17 | % See the function STEER for a description of STEERMTX and HARMONICS. | ||
18 | |||
19 | % Eero Simoncelli, 6/96. | ||
20 | % See http://www.cis.upenn.edu/~eero/steerpyr.html for more | ||
21 | % information about the Steerable Pyramid image decomposition. | ||
22 | |||
23 | function [pyr,pind,steermtx,harmonics] = buildSpyr(im, ht, filtfile, edges) | ||
24 | |||
25 | %----------------------------------------------------------------- | ||
26 | %% DEFAULTS: | ||
27 | |||
28 | if (exist('filtfile') ~= 1) | ||
29 | filtfile = 'sp1Filters'; | ||
30 | end | ||
31 | |||
32 | if (exist('edges') ~= 1) | ||
33 | edges= 'reflect1'; | ||
34 | end | ||
35 | |||
36 | if (isstr(filtfile) & (exist(filtfile) == 2)) | ||
37 | [lo0filt,hi0filt,lofilt,bfilts,steermtx,harmonics] = eval(filtfile); | ||
38 | else | ||
39 | fprintf(1,'\nUse buildSFpyr for pyramids with arbitrary numbers of orientation bands.\n'); | ||
40 | error('FILTFILE argument must be the name of an M-file containing SPYR filters.'); | ||
41 | end | ||
42 | |||
43 | max_ht = maxPyrHt(size(im), size(lofilt,1)); | ||
44 | if ( (exist('ht') ~= 1) | (ht == 'auto') ) | ||
45 | ht = max_ht; | ||
46 | else | ||
47 | if (ht > max_ht) | ||
48 | error(sprintf('Cannot build pyramid higher than %d levels.',max_ht)); | ||
49 | end | ||
50 | end | ||
51 | |||
52 | %----------------------------------------------------------------- | ||
53 | |||
54 | hi0 = corrDn(im, hi0filt, edges); | ||
55 | lo0 = corrDn(im, lo0filt, edges); | ||
56 | |||
57 | [pyr,pind] = buildSpyrLevs(lo0, ht, lofilt, bfilts, edges); | ||
58 | |||
59 | pyr = [hi0(:) ; pyr]; | ||
60 | pind = [size(hi0); pind]; | ||
61 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildSpyrLevs.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildSpyrLevs.m new file mode 100755 index 0000000..4c00077 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildSpyrLevs.m | |||
@@ -0,0 +1,37 @@ | |||
1 | % [PYR, INDICES] = buildSpyrLevs(LOIM, HEIGHT, LOFILT, BFILTS, EDGES) | ||
2 | % | ||
3 | % Recursive function for constructing levels of a steerable pyramid. This | ||
4 | % is called by buildSpyr, and is not usually called directly. | ||
5 | |||
6 | % Eero Simoncelli, 6/96. | ||
7 | |||
8 | function [pyr,pind] = buildSpyrLevs(lo0,ht,lofilt,bfilts,edges); | ||
9 | |||
10 | if (ht <= 0) | ||
11 | |||
12 | pyr = lo0(:); | ||
13 | pind = size(lo0); | ||
14 | |||
15 | else | ||
16 | |||
17 | % Assume square filters: | ||
18 | bfiltsz = round(sqrt(size(bfilts,1))); | ||
19 | |||
20 | bands = zeros(prod(size(lo0)),size(bfilts,2)); | ||
21 | bind = zeros(size(bfilts,2),2); | ||
22 | |||
23 | for b = 1:size(bfilts,2) | ||
24 | filt = reshape(bfilts(:,b),bfiltsz,bfiltsz); | ||
25 | band = corrDn(lo0, filt, edges); | ||
26 | bands(:,b) = band(:); | ||
27 | bind(b,:) = size(band); | ||
28 | end | ||
29 | |||
30 | lo = corrDn(lo0, lofilt, edges, [2 2], [1 1]); | ||
31 | |||
32 | [npyr,nind] = buildSpyrLevs(lo, ht-1, lofilt, bfilts, edges); | ||
33 | |||
34 | pyr = [bands(:); npyr]; | ||
35 | pind = [bind; nind]; | ||
36 | |||
37 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildWpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildWpyr.m new file mode 100755 index 0000000..22ae32f --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/buildWpyr.m | |||
@@ -0,0 +1,100 @@ | |||
1 | % [PYR, INDICES] = buildWpyr(IM, HEIGHT, FILT, EDGES) | ||
2 | % | ||
3 | % Construct a separable orthonormal QMF/wavelet pyramid on matrix (or vector) IM. | ||
4 | % | ||
5 | % HEIGHT (optional) specifies the number of pyramid levels to build. Default | ||
6 | % is maxPyrHt(IM,FILT). You can also specify 'auto' to use this value. | ||
7 | % | ||
8 | % FILT (optional) can be a string naming a standard filter (see | ||
9 | % namedFilter), or a vector which will be used for (separable) | ||
10 | % convolution. Filter can be of even or odd length, but should be symmetric. | ||
11 | % Default = 'qmf9'. EDGES specifies edge-handling, and | ||
12 | % defaults to 'reflect1' (see corrDn). | ||
13 | % | ||
14 | % PYR is a vector containing the N pyramid subbands, ordered from fine | ||
15 | % to coarse. INDICES is an Nx2 matrix containing the sizes of | ||
16 | % each subband. This is compatible with the MatLab Wavelet toolbox. | ||
17 | |||
18 | % Eero Simoncelli, 6/96. | ||
19 | |||
20 | function [pyr,pind] = buildWpyr(im, ht, filt, edges) | ||
21 | |||
22 | if (nargin < 1) | ||
23 | error('First argument (IM) is required'); | ||
24 | end | ||
25 | |||
26 | %------------------------------------------------------------ | ||
27 | %% OPTIONAL ARGS: | ||
28 | |||
29 | if (exist('filt') ~= 1) | ||
30 | filt = 'qmf9'; | ||
31 | end | ||
32 | |||
33 | if (exist('edges') ~= 1) | ||
34 | edges= 'reflect1'; | ||
35 | end | ||
36 | |||
37 | if isstr(filt) | ||
38 | filt = namedFilter(filt); | ||
39 | end | ||
40 | |||
41 | if ( (size(filt,1) > 1) & (size(filt,2) > 1) ) | ||
42 | error('FILT should be a 1D filter (i.e., a vector)'); | ||
43 | else | ||
44 | filt = filt(:); | ||
45 | end | ||
46 | |||
47 | hfilt = modulateFlip(filt); | ||
48 | |||
49 | % Stagger sampling if filter is odd-length: | ||
50 | if (mod(size(filt,1),2) == 0) | ||
51 | stag = 2; | ||
52 | else | ||
53 | stag = 1; | ||
54 | end | ||
55 | |||
56 | im_sz = size(im); | ||
57 | |||
58 | max_ht = maxPyrHt(im_sz, size(filt,1)); | ||
59 | if ( (exist('ht') ~= 1) | (ht == 'auto') ) | ||
60 | ht = max_ht; | ||
61 | else | ||
62 | if (ht > max_ht) | ||
63 | error(sprintf('Cannot build pyramid higher than %d levels.',max_ht)); | ||
64 | end | ||
65 | end | ||
66 | |||
67 | if (ht <= 0) | ||
68 | |||
69 | pyr = im(:); | ||
70 | pind = im_sz; | ||
71 | |||
72 | else | ||
73 | |||
74 | if (im_sz(2) == 1) | ||
75 | lolo = corrDn(im, filt, edges, [2 1], [stag 1]); | ||
76 | hihi = corrDn(im, hfilt, edges, [2 1], [2 1]); | ||
77 | elseif (im_sz(1) == 1) | ||
78 | lolo = corrDn(im, filt', edges, [1 2], [1 stag]); | ||
79 | hihi = corrDn(im, hfilt', edges, [1 2], [1 2]); | ||
80 | else | ||
81 | lo = corrDn(im, filt, edges, [2 1], [stag 1]); | ||
82 | hi = corrDn(im, hfilt, edges, [2 1], [2 1]); | ||
83 | lolo = corrDn(lo, filt', edges, [1 2], [1 stag]); | ||
84 | lohi = corrDn(hi, filt', edges, [1 2], [1 stag]); % horizontal | ||
85 | hilo = corrDn(lo, hfilt', edges, [1 2], [1 2]); % vertical | ||
86 | hihi = corrDn(hi, hfilt', edges, [1 2], [1 2]); % diagonal | ||
87 | end | ||
88 | |||
89 | [npyr,nind] = buildWpyr(lolo, ht-1, filt, edges); | ||
90 | |||
91 | if ((im_sz(1) == 1) | (im_sz(2) == 1)) | ||
92 | pyr = [hihi(:); npyr]; | ||
93 | pind = [size(hihi); nind]; | ||
94 | else | ||
95 | pyr = [lohi(:); hilo(:); hihi(:); npyr]; | ||
96 | pind = [size(lohi); size(hilo); size(hihi); nind]; | ||
97 | end | ||
98 | |||
99 | end | ||
100 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/cconv2.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/cconv2.m new file mode 100755 index 0000000..efba438 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/cconv2.m | |||
@@ -0,0 +1,50 @@ | |||
1 | % RES = CCONV2(MTX1, MTX2, CTR) | ||
2 | % | ||
3 | % Circular convolution of two matrices. Result will be of size of | ||
4 | % LARGER vector. | ||
5 | % | ||
6 | % The origin of the smaller matrix is assumed to be its center. | ||
7 | % For even dimensions, the origin is determined by the CTR (optional) | ||
8 | % argument: | ||
9 | % CTR origin | ||
10 | % 0 DIM/2 (default) | ||
11 | % 1 (DIM/2)+1 | ||
12 | |||
13 | % Eero Simoncelli, 6/96. Modified 2/97. | ||
14 | |||
15 | function c = cconv2(a,b,ctr) | ||
16 | |||
17 | if (exist('ctr') ~= 1) | ||
18 | ctr = 0; | ||
19 | end | ||
20 | |||
21 | if (( size(a,1) >= size(b,1) ) & ( size(a,2) >= size(b,2) )) | ||
22 | large = a; small = b; | ||
23 | elseif (( size(a,1) <= size(b,1) ) & ( size(a,2) <= size(b,2) )) | ||
24 | large = b; small = a; | ||
25 | else | ||
26 | error('one arg must be larger than the other in both dimensions!'); | ||
27 | end | ||
28 | |||
29 | ly = size(large,1); | ||
30 | lx = size(large,2); | ||
31 | sy = size(small,1); | ||
32 | sx = size(small,2); | ||
33 | |||
34 | %% These values are the index of the small mtx that falls on the | ||
35 | %% border pixel of the large matrix when computing the first | ||
36 | %% convolution response sample: | ||
37 | sy2 = floor((sy+ctr+1)/2); | ||
38 | sx2 = floor((sx+ctr+1)/2); | ||
39 | |||
40 | % pad: | ||
41 | clarge = [ ... | ||
42 | large(ly-sy+sy2+1:ly,lx-sx+sx2+1:lx), large(ly-sy+sy2+1:ly,:), ... | ||
43 | large(ly-sy+sy2+1:ly,1:sx2-1); ... | ||
44 | large(:,lx-sx+sx2+1:lx), large, large(:,1:sx2-1); ... | ||
45 | large(1:sy2-1,lx-sx+sx2+1:lx), ... | ||
46 | large(1:sy2-1,:), ... | ||
47 | large(1:sy2-1,1:sx2-1) ]; | ||
48 | |||
49 | c = conv2(clarge,small,'valid'); | ||
50 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/clip.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/clip.m new file mode 100755 index 0000000..28804f3 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/clip.m | |||
@@ -0,0 +1,32 @@ | |||
1 | % [RES] = clip(IM, MINVALorRANGE, MAXVAL) | ||
2 | % | ||
3 | % Clip values of matrix IM to lie between minVal and maxVal: | ||
4 | % RES = max(min(IM,MAXVAL),MINVAL) | ||
5 | % The first argument can also specify both min and max, as a 2-vector. | ||
6 | % If only one argument is passed, the range defaults to [0,1]. | ||
7 | |||
8 | function res = clip(im, minValOrRange, maxVal) | ||
9 | |||
10 | if (exist('minValOrRange') ~= 1) | ||
11 | minVal = 0; | ||
12 | maxVal = 1; | ||
13 | elseif (length(minValOrRange) == 2) | ||
14 | minVal = minValOrRange(1); | ||
15 | maxVal = minValOrRange(2); | ||
16 | elseif (length(minValOrRange) == 1) | ||
17 | minVal = minValOrRange; | ||
18 | if (exist('maxVal') ~= 1) | ||
19 | maxVal=minVal+1; | ||
20 | end | ||
21 | else | ||
22 | error('MINVAL must be a scalar or a 2-vector'); | ||
23 | end | ||
24 | |||
25 | if ( maxVal < minVal ) | ||
26 | error('MAXVAL should be less than MINVAL'); | ||
27 | end | ||
28 | |||
29 | res = im; | ||
30 | res(find(im < minVal)) = minVal; | ||
31 | res(find(im > maxVal)) = maxVal; | ||
32 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/corrDn.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/corrDn.m new file mode 100755 index 0000000..afe09d2 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/corrDn.m | |||
@@ -0,0 +1,63 @@ | |||
1 | % RES = corrDn(IM, FILT, EDGES, STEP, START, STOP) | ||
2 | % | ||
3 | % Compute correlation of matrices IM with FILT, followed by | ||
4 | % downsampling. These arguments should be 1D or 2D matrices, and IM | ||
5 | % must be larger (in both dimensions) than FILT. The origin of filt | ||
6 | % is assumed to be floor(size(filt)/2)+1. | ||
7 | % | ||
8 | % EDGES is a string determining boundary handling: | ||
9 | % 'circular' - Circular convolution | ||
10 | % 'reflect1' - Reflect about the edge pixels | ||
11 | % 'reflect2' - Reflect, doubling the edge pixels | ||
12 | % 'repeat' - Repeat the edge pixels | ||
13 | % 'zero' - Assume values of zero outside image boundary | ||
14 | % 'extend' - Reflect and invert | ||
15 | % 'dont-compute' - Zero output when filter overhangs input boundaries | ||
16 | % | ||
17 | % Downsampling factors are determined by STEP (optional, default=[1 1]), | ||
18 | % which should be a 2-vector [y,x]. | ||
19 | % | ||
20 | % The window over which the convolution occurs is specfied by START | ||
21 | % (optional, default=[1,1], and STOP (optional, default=size(IM)). | ||
22 | % | ||
23 | % NOTE: this operation corresponds to multiplication of a signal | ||
24 | % vector by a matrix whose rows contain copies of the FILT shifted by | ||
25 | % multiples of STEP. See upConv.m for the operation corresponding to | ||
26 | % the transpose of this matrix. | ||
27 | |||
28 | % Eero Simoncelli, 6/96, revised 2/97. | ||
29 | |||
30 | function res = corrDn(im, filt, edges, step, start, stop) | ||
31 | |||
32 | %% NOTE: THIS CODE IS NOT ACTUALLY USED! (MEX FILE IS CALLED INSTEAD) | ||
33 | |||
34 | 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'); | ||
35 | |||
36 | %------------------------------------------------------------ | ||
37 | %% OPTIONAL ARGS: | ||
38 | |||
39 | if (exist('edges') == 1) | ||
40 | if (strcmp(edges,'reflect1') ~= 1) | ||
41 | warning('Using REFLECT1 edge-handling (use MEX code for other options).'); | ||
42 | end | ||
43 | end | ||
44 | |||
45 | if (exist('step') ~= 1) | ||
46 | step = [1,1]; | ||
47 | end | ||
48 | |||
49 | if (exist('start') ~= 1) | ||
50 | start = [1,1]; | ||
51 | end | ||
52 | |||
53 | if (exist('stop') ~= 1) | ||
54 | stop = size(im); | ||
55 | end | ||
56 | |||
57 | %------------------------------------------------------------ | ||
58 | |||
59 | % Reverse order of taps in filt, to do correlation instead of convolution | ||
60 | filt = filt(size(filt,1):-1:1,size(filt,2):-1:1); | ||
61 | |||
62 | tmp = rconv2(im,filt); | ||
63 | res = tmp(start(1):step(1):stop(1),start(2):step(2):stop(2)); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/einstein.pgm b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/einstein.pgm new file mode 100755 index 0000000..99b974c --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/einstein.pgm | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/entropy2.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/entropy2.m new file mode 100755 index 0000000..68a2a9f --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/entropy2.m | |||
@@ -0,0 +1,31 @@ | |||
1 | % E = ENTROPY2(MTX,BINSIZE) | ||
2 | % | ||
3 | % Compute the first-order sample entropy of MTX. Samples of VEC are | ||
4 | % first discretized. Optional argument BINSIZE controls the | ||
5 | % discretization, and defaults to 256/(max(VEC)-min(VEC)). | ||
6 | % | ||
7 | % NOTE: This is a heavily biased estimate of entropy when you | ||
8 | % don't have much data. | ||
9 | |||
10 | % Eero Simoncelli, 6/96. | ||
11 | |||
12 | function res = entropy2(mtx,binsize) | ||
13 | |||
14 | %% Ensure it's a vector, not a matrix. | ||
15 | vec = mtx(:); | ||
16 | [mn,mx] = range2(vec); | ||
17 | |||
18 | if (exist('binsize') == 1) | ||
19 | nbins = max((mx-mn)/binsize, 1); | ||
20 | else | ||
21 | nbins = 256; | ||
22 | end | ||
23 | |||
24 | [bincount,bins] = histo(vec,nbins); | ||
25 | |||
26 | %% Collect non-zero bins: | ||
27 | H = bincount(find(bincount)); | ||
28 | H = H/sum(H); | ||
29 | |||
30 | res = -sum(H .* log2(H)); | ||
31 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/factorial.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/factorial.m new file mode 100755 index 0000000..9255f43 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/factorial.m | |||
@@ -0,0 +1,16 @@ | |||
1 | %% RES = factorial(NUM) | ||
2 | % | ||
3 | % Factorial function that works on matrices (matlab's does not). | ||
4 | |||
5 | % EPS, 11/02 | ||
6 | |||
7 | function res = factorial(num) | ||
8 | |||
9 | res = ones(size(num)); | ||
10 | |||
11 | ind = find(num > 0); | ||
12 | if ( ~isempty(ind) ) | ||
13 | subNum = num(ind); | ||
14 | res(ind) = subNum .* factorial(subNum-1); | ||
15 | end | ||
16 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/feynman.pgm b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/feynman.pgm new file mode 100755 index 0000000..7d14101 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/feynman.pgm | |||
Binary files differ | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/histo.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/histo.m new file mode 100755 index 0000000..3366301 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/histo.m | |||
@@ -0,0 +1,58 @@ | |||
1 | % [N,X] = histo(MTX, nbinsOrBinsize, binCenter); | ||
2 | % | ||
3 | % Compute a histogram of (all) elements of MTX. N contains the histogram | ||
4 | % counts, X is a vector containg the centers of the histogram bins. | ||
5 | % | ||
6 | % nbinsOrBinsize (optional, default = 101) specifies either | ||
7 | % the number of histogram bins, or the negative of the binsize. | ||
8 | % | ||
9 | % binCenter (optional, default = mean2(MTX)) specifies a center position | ||
10 | % for (any one of) the histogram bins. | ||
11 | % | ||
12 | % How does this differ from MatLab's HIST function? This function: | ||
13 | % - allows uniformly spaced bins only. | ||
14 | % +/- operates on all elements of MTX, instead of columnwise. | ||
15 | % + is much faster (approximately a factor of 80 on my machine). | ||
16 | % + allows specification of number of bins OR binsize. Default=101 bins. | ||
17 | % + allows (optional) specification of binCenter. | ||
18 | |||
19 | % Eero Simoncelli, 3/97. | ||
20 | |||
21 | function [N, X] = histo(mtx, nbins, binCtr) | ||
22 | |||
23 | %% NOTE: THIS CODE IS NOT ACTUALLY USED! (MEX FILE IS CALLED INSTEAD) | ||
24 | |||
25 | 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'); | ||
26 | |||
27 | mtx = mtx(:); | ||
28 | |||
29 | %------------------------------------------------------------ | ||
30 | %% OPTIONAL ARGS: | ||
31 | |||
32 | [mn,mx] = range2(mtx); | ||
33 | |||
34 | if (exist('binCtr') ~= 1) | ||
35 | binCtr = mean(mtx); | ||
36 | end | ||
37 | |||
38 | if (exist('nbins') == 1) | ||
39 | if (nbins < 0) | ||
40 | binSize = -nbins; | ||
41 | else | ||
42 | binSize = ((mx-mn)/nbins); | ||
43 | tmpNbins = round((mx-binCtr)/binSize) - round((mn-binCtr)/binSize); | ||
44 | if (tmpNbins ~= nbins) | ||
45 | warning('Using %d bins instead of requested number (%d)',tmpNbins,nbins); | ||
46 | end | ||
47 | end | ||
48 | else | ||
49 | binSize = ((mx-mn)/101); | ||
50 | end | ||
51 | |||
52 | firstBin = binCtr + binSize*round( (mn-binCtr)/binSize ); | ||
53 | |||
54 | tmpNbins = round((mx-binCtr)/binSize) - round((mn-binCtr)/binSize); | ||
55 | |||
56 | bins = firstBin + binSize*[0:tmpNbins]; | ||
57 | |||
58 | [N, X] = hist(mtx, bins); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/histoMatch.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/histoMatch.m new file mode 100755 index 0000000..ab82782 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/histoMatch.m | |||
@@ -0,0 +1,35 @@ | |||
1 | % RES = histoMatch(MTX, N, X) | ||
2 | % | ||
3 | % Modify elements of MTX so that normalized histogram matches that | ||
4 | % specified by vectors X and N, where N contains the histogram counts | ||
5 | % and X the histogram bin positions (see histo). | ||
6 | |||
7 | % Eero Simoncelli, 7/96. | ||
8 | |||
9 | function res = histoMatch(mtx, N, X) | ||
10 | |||
11 | if ( exist('histo') == 3 ) | ||
12 | [oN, oX] = histo(mtx(:), size(X(:),1)); | ||
13 | else | ||
14 | [oN, oX] = hist(mtx(:), size(X(:),1)); | ||
15 | end | ||
16 | |||
17 | oStep = oX(2) - oX(1); | ||
18 | oC = [0, cumsum(oN)]/sum(oN); | ||
19 | oX = [oX(1)-oStep/2, oX+oStep/2]; | ||
20 | |||
21 | N = N(:)'; | ||
22 | X = X(:)'; | ||
23 | N = N + mean(N)/(1e8); %% HACK: no empty bins ensures nC strictly monotonic | ||
24 | |||
25 | nStep = X(2) - X(1); | ||
26 | nC = [0, cumsum(N)]/sum(N); | ||
27 | nX = [X(1)-nStep/2, X+nStep/2]; | ||
28 | |||
29 | nnX = interp1(nC, nX, oC, 'linear'); | ||
30 | |||
31 | if ( exist('pointOp') == 3 ) | ||
32 | res = pointOp(mtx, nnX, oX(1), oStep); | ||
33 | else | ||
34 | res = reshape(interp1(oX, nnX, mtx(:)),size(mtx,1),size(mtx,2)); | ||
35 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/ifftshift.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/ifftshift.m new file mode 100755 index 0000000..2ade297 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/ifftshift.m | |||
@@ -0,0 +1,15 @@ | |||
1 | % [RES] = ifftshift (MTX) | ||
2 | % | ||
3 | % Inverse of MatLab's FFTSHIFT. That is, | ||
4 | % ifftshift(fftshift(MTX)) = MTX | ||
5 | % for any size MTX. | ||
6 | |||
7 | % Eero Simoncelli, 2/97. | ||
8 | |||
9 | function [res] = ifftshift(mtx) | ||
10 | |||
11 | sz = size(mtx); | ||
12 | DC = ceil((sz+1)./2); % location of DC term in a matlab fft. | ||
13 | |||
14 | res = [mtx(DC(1):sz(1), DC(2):sz(2)) , mtx(DC(1):sz(1), 1:DC(2)-1); ... | ||
15 | mtx(1:DC(1)-1, DC(2):sz(2)) , mtx(1:DC(1)-1, 1:DC(2)-1)]; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/imGradient.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/imGradient.m new file mode 100755 index 0000000..23187e3 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/imGradient.m | |||
@@ -0,0 +1,48 @@ | |||
1 | % [dx, dy] = imGradient(im, edges) | ||
2 | % | ||
3 | % Compute the gradient of the image using smooth derivative filters | ||
4 | % optimized for accurate direction estimation. Coordinate system | ||
5 | % corresponds to standard pixel indexing: X axis points rightward. Y | ||
6 | % axis points downward. EDGES specify boundary handling (see corrDn | ||
7 | % for options). | ||
8 | |||
9 | % EPS, 1997. | ||
10 | % original filters from Int'l Conf Image Processing, 1994. | ||
11 | % updated filters 10/2003. | ||
12 | % Added to matlabPyrTools 10/2004. | ||
13 | |||
14 | function [dx, dy] = imGradient(im, edges) | ||
15 | |||
16 | %% 1D smoothing and differentiation kernels. | ||
17 | %% See Farid & Simoncelli, IEEE Trans Image Processing, 13(4):496-508, April 2004. | ||
18 | |||
19 | if (exist('edges') ~= 1) | ||
20 | edges = 'dont-compute'; | ||
21 | end | ||
22 | |||
23 | gp = [0.037659 0.249153 0.426375 0.249153 0.037659]'; | ||
24 | gd = [-0.109604 -0.276691 0.000000 0.276691 0.109604]'; | ||
25 | |||
26 | dx = corrDn(corrDn(im, gp, edges), gd', edges); | ||
27 | dy = corrDn(corrDn(im, gd, edges), gp', edges); | ||
28 | |||
29 | return | ||
30 | |||
31 | %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% | ||
32 | %%% TEST: | ||
33 | |||
34 | %%Make a ramp with random slope and direction | ||
35 | dir = 2*pi*rand - pi; | ||
36 | slope = 10*rand; | ||
37 | |||
38 | sz = 32 | ||
39 | im = mkRamp(sz, dir, slope); | ||
40 | [dx,dy] = imGradient(im); | ||
41 | showIm(dx + sqrt(-1)*dy); | ||
42 | |||
43 | ctr = (sz*sz/2)+sz/2; | ||
44 | slopeEst = sqrt(dx(ctr).^2 + dy(ctr).^2); | ||
45 | dirEst = atan2(dy(ctr), dx(ctr)); | ||
46 | |||
47 | [slope, slopeEst] | ||
48 | [dir, dirEst] | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/imStats.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/imStats.m new file mode 100755 index 0000000..3d79b4c --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/imStats.m | |||
@@ -0,0 +1,41 @@ | |||
1 | % imStats(IM1,IM2) | ||
2 | % | ||
3 | % Report image (matrix) statistics. | ||
4 | % When called on a single image IM1, report min, max, mean, stdev, | ||
5 | % and kurtosis. | ||
6 | % When called on two images (IM1 and IM2), report min, max, mean, | ||
7 | % stdev of the difference, and also SNR (relative to IM1). | ||
8 | |||
9 | % Eero Simoncelli, 6/96. | ||
10 | |||
11 | function [] = imStats(im1,im2) | ||
12 | |||
13 | if (~isreal(im1)) | ||
14 | error('Args must be real-valued matrices'); | ||
15 | end | ||
16 | |||
17 | if (exist('im2') == 1) | ||
18 | difference = im1 - im2; | ||
19 | [mn,mx] = range2(difference); | ||
20 | mean = mean2(difference); | ||
21 | v = var2(difference,mean); | ||
22 | if (v < realmin) | ||
23 | snr = Inf; | ||
24 | else | ||
25 | snr = 10 * log10(var2(im1)/v); | ||
26 | end | ||
27 | fprintf(1, 'Difference statistics:\n'); | ||
28 | fprintf(1, ' Range: [%c, %c]\n',mn,mx); | ||
29 | fprintf(1, ' Mean: %f, Stdev (rmse): %f, SNR (dB): %f\n',... | ||
30 | mean,sqrt(v),snr); | ||
31 | else | ||
32 | [mn,mx] = range2(im1); | ||
33 | mean = mean2(im1); | ||
34 | var = var2(im1); | ||
35 | stdev = sqrt(real(var))+sqrt(imag(var)); | ||
36 | kurt = kurt2(im1, mean, stdev^2); | ||
37 | fprintf(1, 'Image statistics:\n'); | ||
38 | fprintf(1, ' Range: [%f, %f]\n',mn,mx); | ||
39 | fprintf(1, ' Mean: %f, Stdev: %f, Kurtosis: %f\n',mean,stdev,kurt); | ||
40 | end | ||
41 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/innerProd.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/innerProd.m new file mode 100755 index 0000000..da82321 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/innerProd.m | |||
@@ -0,0 +1,12 @@ | |||
1 | % RES = innerProd(MTX) | ||
2 | % | ||
3 | % Compute (MTX' * MTX) efficiently (i.e., without copying the matrix) | ||
4 | |||
5 | function res = innerProd(mtx) | ||
6 | |||
7 | fprintf(1,['WARNING: You should compile the MEX version of' ... | ||
8 | ' "innerProd.c",\n found in the MEX subdirectory' ... | ||
9 | ' of matlabPyrTools, and put it in your matlab path.' ... | ||
10 | ' It is MUCH faster and requires less memory.\n']); | ||
11 | |||
12 | res = mtx' * mtx; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/kurt2.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/kurt2.m new file mode 100755 index 0000000..8351eb4 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/kurt2.m | |||
@@ -0,0 +1,24 @@ | |||
1 | % K = KURT2(MTX,MEAN,VAR) | ||
2 | % | ||
3 | % Sample kurtosis (fourth moment divided by squared variance) | ||
4 | % of a matrix. Kurtosis of a Gaussian distribution is 3. | ||
5 | % MEAN (optional) and VAR (optional) make the computation faster. | ||
6 | |||
7 | % Eero Simoncelli, 6/96. | ||
8 | |||
9 | function res = kurt2(mtx, mn, v) | ||
10 | |||
11 | if (exist('mn') ~= 1) | ||
12 | mn = mean(mean(mtx)); | ||
13 | end | ||
14 | |||
15 | if (exist('v') ~= 1) | ||
16 | v = var2(mtx,mn); | ||
17 | end | ||
18 | |||
19 | if (isreal(mtx)) | ||
20 | res = mean(mean(abs(mtx-mn).^4)) / (v^2); | ||
21 | else | ||
22 | res = mean(mean(real(mtx-mn).^4)) / (real(v)^2) + ... | ||
23 | i*mean(mean(imag(mtx-mn).^4)) / (imag(v)^2); | ||
24 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/lplot.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/lplot.m new file mode 100755 index 0000000..3c67d8b --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/lplot.m | |||
@@ -0,0 +1,43 @@ | |||
1 | % lplot(VEC, XRANGE) | ||
2 | % | ||
3 | % Plot VEC, a vector, in "lollipop" format. | ||
4 | % XRANGE (optional, default = [1,length(VEC)]), should be a 2-vector | ||
5 | % specifying the X positions (for labeling purposes) of the first and | ||
6 | % last sample of VEC. | ||
7 | |||
8 | % Mark Liberman, Linguistics Dept, UPenn, 1994. | ||
9 | |||
10 | function lplot(x,xrange) | ||
11 | |||
12 | if (exist('xrange') ~= 1) | ||
13 | xrange = [1,length(x)]; | ||
14 | end | ||
15 | |||
16 | msize = size(x); | ||
17 | if ( msize(2) == 1) | ||
18 | x = x'; | ||
19 | elseif (msize(1) ~= 1) | ||
20 | error('First arg must be a vector'); | ||
21 | end | ||
22 | |||
23 | if (~isreal(x)) | ||
24 | fprintf(1,'Warning: Imaginary part of signal ignored\n'); | ||
25 | x = abs(x); | ||
26 | end | ||
27 | |||
28 | N = length(x); | ||
29 | index = xrange(1) + (xrange(2)-xrange(1))*[0:(N-1)]/(N-1) | ||
30 | xinc = index(2)-index(1); | ||
31 | |||
32 | xx = [zeros(1,N);x;zeros(1,N)]; | ||
33 | indexis = [index;index;index]; | ||
34 | xdiscrete = [0 xx(:)' 0]; | ||
35 | idiscrete = [index(1)-xinc indexis(:)' index(N)+xinc]; | ||
36 | |||
37 | [mn,mx] = range2(xdiscrete); | ||
38 | ypad = (mx-mn)/12; % MAGIC NUMBER: graph padding | ||
39 | |||
40 | plot(idiscrete, xdiscrete, index, x, 'o'); | ||
41 | axis([index(1)-xinc, index(N)+xinc, mn-ypad, mx+ypad]); | ||
42 | |||
43 | return | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/lpyrHt.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/lpyrHt.m new file mode 100755 index 0000000..d6834d7 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/lpyrHt.m | |||
@@ -0,0 +1,11 @@ | |||
1 | % [HEIGHT] = lpyrHt(INDICES) | ||
2 | % | ||
3 | % Compute height of Laplacian pyramid with given its INDICES matrix. | ||
4 | % See buildLpyr.m | ||
5 | |||
6 | % Eero Simoncelli, 6/96. | ||
7 | |||
8 | function [ht] = lpyrHt(pind) | ||
9 | |||
10 | % Don't count lowpass residual band | ||
11 | ht = size(pind,1)-1; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/maxPyrHt.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/maxPyrHt.m new file mode 100755 index 0000000..84bcf29 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/maxPyrHt.m | |||
@@ -0,0 +1,25 @@ | |||
1 | % HEIGHT = maxPyrHt(IMSIZE, FILTSIZE) | ||
2 | % | ||
3 | % Compute maximum pyramid height for given image and filter sizes. | ||
4 | % Specifically: the number of corrDn operations that can be sequentially | ||
5 | % performed when subsampling by a factor of 2. | ||
6 | |||
7 | % Eero Simoncelli, 6/96. | ||
8 | |||
9 | function height = maxPyrHt(imsz, filtsz) | ||
10 | |||
11 | imsz = imsz(:); | ||
12 | filtsz = filtsz(:); | ||
13 | |||
14 | if any(imsz == 1) % 1D image | ||
15 | imsz = prod(imsz); | ||
16 | filtsz = prod(filtsz); | ||
17 | elseif any(filtsz == 1) % 2D image, 1D filter | ||
18 | filtsz = [filtsz(1); filtsz(1)]; | ||
19 | end | ||
20 | |||
21 | if any(imsz < filtsz) | ||
22 | height = 0; | ||
23 | else | ||
24 | height = 1 + maxPyrHt( floor(imsz/2), filtsz ); | ||
25 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mean2.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mean2.m new file mode 100755 index 0000000..177f7ac --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mean2.m | |||
@@ -0,0 +1,7 @@ | |||
1 | % M = MEAN2(MTX) | ||
2 | % | ||
3 | % Sample mean of a matrix. | ||
4 | |||
5 | function res = mean2(mtx) | ||
6 | |||
7 | res = mean(mean(mtx)); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkAngle.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkAngle.m new file mode 100755 index 0000000..bd54f8d --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkAngle.m | |||
@@ -0,0 +1,32 @@ | |||
1 | % IM = mkAngle(SIZE, PHASE, ORIGIN) | ||
2 | % | ||
3 | % Compute a matrix of dimension SIZE (a [Y X] 2-vector, or a scalar) | ||
4 | % containing samples of the polar angle (in radians, CW from the | ||
5 | % X-axis, ranging from -pi to pi), relative to angle PHASE (default = | ||
6 | % 0), about ORIGIN pixel (default = (size+1)/2). | ||
7 | |||
8 | % Eero Simoncelli, 6/96. | ||
9 | |||
10 | function [res] = mkAngle(sz, phase, origin) | ||
11 | |||
12 | sz = sz(:); | ||
13 | if (size(sz,1) == 1) | ||
14 | sz = [sz,sz]; | ||
15 | end | ||
16 | |||
17 | % ----------------------------------------------------------------- | ||
18 | % OPTIONAL args: | ||
19 | |||
20 | if (exist('origin') ~= 1) | ||
21 | origin = (sz+1)/2; | ||
22 | end | ||
23 | |||
24 | % ----------------------------------------------------------------- | ||
25 | |||
26 | [xramp,yramp] = meshgrid( [1:sz(2)]-origin(2), [1:sz(1)]-origin(1) ); | ||
27 | |||
28 | res = atan2(yramp,xramp); | ||
29 | |||
30 | if (exist('phase') == 1) | ||
31 | res = mod(res+(pi-phase),2*pi)-pi; | ||
32 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkAngularSine.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkAngularSine.m new file mode 100755 index 0000000..f5238cc --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkAngularSine.m | |||
@@ -0,0 +1,42 @@ | |||
1 | % IM = mkAngularSine(SIZE, HARMONIC, AMPL, PHASE, ORIGIN) | ||
2 | % | ||
3 | % Make an angular sinusoidal image: | ||
4 | % AMPL * sin( HARMONIC*theta + PHASE), | ||
5 | % where theta is the angle about the origin. | ||
6 | % SIZE specifies the matrix size, as for zeros(). | ||
7 | % AMPL (default = 1) and PHASE (default = 0) are optional. | ||
8 | |||
9 | % Eero Simoncelli, 2/97. | ||
10 | |||
11 | function [res] = mkAngularSine(sz, harmonic, ampl, ph, origin) | ||
12 | |||
13 | sz = sz(:); | ||
14 | if (size(sz,1) == 1) | ||
15 | sz = [sz,sz]; | ||
16 | end | ||
17 | |||
18 | mxsz = max(sz(1),sz(2)); | ||
19 | |||
20 | %------------------------------------------------------------ | ||
21 | %% OPTIONAL ARGS: | ||
22 | |||
23 | if (exist('harmonic') ~= 1) | ||
24 | harmonic = 1; | ||
25 | end | ||
26 | |||
27 | if (exist('ampl') ~= 1) | ||
28 | ampl = 1; | ||
29 | end | ||
30 | |||
31 | if (exist('ph') ~= 1) | ||
32 | ph = 0; | ||
33 | end | ||
34 | |||
35 | if (exist('origin') ~= 1) | ||
36 | origin = (sz+1)/2; | ||
37 | end | ||
38 | |||
39 | %------------------------------------------------------------ | ||
40 | |||
41 | res = ampl * sin(harmonic*mkAngle(sz,ph,origin) + ph); | ||
42 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkDisc.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkDisc.m new file mode 100755 index 0000000..33e7d6d --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkDisc.m | |||
@@ -0,0 +1,61 @@ | |||
1 | % IM = mkDisc(SIZE, RADIUS, ORIGIN, TWIDTH, VALS) | ||
2 | % | ||
3 | % Make a "disk" image. SIZE specifies the matrix size, as for | ||
4 | % zeros(). RADIUS (default = min(size)/4) specifies the radius of | ||
5 | % the disk. ORIGIN (default = (size+1)/2) specifies the | ||
6 | % location of the disk center. TWIDTH (in pixels, default = 2) | ||
7 | % specifies the width over which a soft threshold transition is made. | ||
8 | % VALS (default = [0,1]) should be a 2-vector containing the | ||
9 | % intensity value inside and outside the disk. | ||
10 | |||
11 | % Eero Simoncelli, 6/96. | ||
12 | |||
13 | function [res] = mkDisc(sz, rad, origin, twidth, vals) | ||
14 | |||
15 | if (nargin < 1) | ||
16 | error('Must pass at least a size argument'); | ||
17 | end | ||
18 | |||
19 | sz = sz(:); | ||
20 | if (size(sz,1) == 1) | ||
21 | sz = [sz sz]; | ||
22 | end | ||
23 | |||
24 | %------------------------------------------------------------ | ||
25 | % OPTIONAL ARGS: | ||
26 | |||
27 | if (exist('rad') ~= 1) | ||
28 | rad = min(sz(1),sz(2))/4; | ||
29 | end | ||
30 | |||
31 | if (exist('origin') ~= 1) | ||
32 | origin = (sz+1)./2; | ||
33 | end | ||
34 | |||
35 | if (exist('twidth') ~= 1) | ||
36 | twidth = 2; | ||
37 | end | ||
38 | |||
39 | if (exist('vals') ~= 1) | ||
40 | vals = [1,0]; | ||
41 | end | ||
42 | |||
43 | %------------------------------------------------------------ | ||
44 | |||
45 | res = mkR(sz,1,origin); | ||
46 | |||
47 | if (abs(twidth) < realmin) | ||
48 | res = vals(2) + (vals(1) - vals(2)) * (res <= rad); | ||
49 | else | ||
50 | [Xtbl,Ytbl] = rcosFn(twidth, rad, [vals(1), vals(2)]); | ||
51 | res = pointOp(res, Ytbl, Xtbl(1), Xtbl(2)-Xtbl(1), 0); | ||
52 | % | ||
53 | % OLD interp1 VERSION: | ||
54 | % res = res(:); | ||
55 | % Xtbl(1) = min(res); | ||
56 | % Xtbl(size(Xtbl,2)) = max(res); | ||
57 | % res = reshape(interp1(Xtbl,Ytbl,res), sz(1), sz(2)); | ||
58 | % | ||
59 | end | ||
60 | |||
61 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkFract.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkFract.m new file mode 100755 index 0000000..af95cd5 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkFract.m | |||
@@ -0,0 +1,36 @@ | |||
1 | % IM = mkFract(SIZE, FRACT_DIM) | ||
2 | % | ||
3 | % Make a matrix of dimensions SIZE (a [Y X] 2-vector, or a scalar) | ||
4 | % containing fractal (pink) noise with power spectral density of the | ||
5 | % form: 1/f^(5-2*FRACT_DIM). Image variance is normalized to 1.0. | ||
6 | % FRACT_DIM defaults to 1.0 | ||
7 | |||
8 | % Eero Simoncelli, 6/96. | ||
9 | |||
10 | %% TODO: Verify that this matches Mandelbrot defn of fractal dimension. | ||
11 | %% Make this more efficient! | ||
12 | |||
13 | function res = mkFract(dims, fract_dim) | ||
14 | |||
15 | if (exist('fract_dim') ~= 1) | ||
16 | fract_dim = 1.0; | ||
17 | end | ||
18 | |||
19 | res = randn(dims); | ||
20 | fres = fft2(res); | ||
21 | |||
22 | sz = size(res); | ||
23 | ctr = ceil((sz+1)./2); | ||
24 | |||
25 | shape = ifftshift(mkR(sz, -(2.5-fract_dim), ctr)); | ||
26 | shape(1,1) = 1; %%DC term | ||
27 | |||
28 | fres = shape .* fres; | ||
29 | fres = ifft2(fres); | ||
30 | |||
31 | if (max(max(abs(imag(fres)))) > 1e-10) | ||
32 | error('Symmetry error in creating fractal'); | ||
33 | else | ||
34 | res = real(fres); | ||
35 | res = res / sqrt(var2(res)); | ||
36 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkGaussian.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkGaussian.m new file mode 100755 index 0000000..fa8a554 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkGaussian.m | |||
@@ -0,0 +1,58 @@ | |||
1 | % IM = mkGaussian(SIZE, COVARIANCE, MEAN, AMPLITUDE) | ||
2 | % | ||
3 | % Compute a matrix with dimensions SIZE (a [Y X] 2-vector, or a | ||
4 | % scalar) containing a Gaussian function, centered at pixel position | ||
5 | % specified by MEAN (default = (size+1)/2), with given COVARIANCE (can | ||
6 | % be a scalar, 2-vector, or 2x2 matrix. Default = (min(size)/6)^2), | ||
7 | % and AMPLITUDE. AMPLITUDE='norm' (default) will produce a | ||
8 | % probability-normalized function. All but the first argument are | ||
9 | % optional. | ||
10 | |||
11 | % Eero Simoncelli, 6/96. | ||
12 | |||
13 | function [res] = mkGaussian(sz, cov, mn, ampl) | ||
14 | |||
15 | sz = sz(:); | ||
16 | if (size(sz,1) == 1) | ||
17 | sz = [sz,sz]; | ||
18 | end | ||
19 | |||
20 | %------------------------------------------------------------ | ||
21 | %% OPTIONAL ARGS: | ||
22 | |||
23 | if (exist('cov') ~= 1) | ||
24 | cov = (min(sz(1),sz(2))/6)^2; | ||
25 | end | ||
26 | |||
27 | if (exist('mn') ~= 1) | ||
28 | mn = (sz+1)/2; | ||
29 | end | ||
30 | |||
31 | if (exist('ampl') ~= 1) | ||
32 | ampl = 'norm'; | ||
33 | end | ||
34 | |||
35 | %------------------------------------------------------------ | ||
36 | |||
37 | [xramp,yramp] = meshgrid([1:sz(2)]-mn(2),[1:sz(1)]-mn(1)); | ||
38 | |||
39 | if (sum(size(cov)) == 2) % scalar | ||
40 | if (strcmp(ampl,'norm')) | ||
41 | ampl = 1/(2*pi*cov(1)); | ||
42 | end | ||
43 | e = (xramp.^2 + yramp.^2)/(-2 * cov); | ||
44 | elseif (sum(size(cov)) == 3) % a 2-vector | ||
45 | if (strcmp(ampl,'norm')) | ||
46 | ampl = 1/(2*pi*sqrt(cov(1)*cov(2))); | ||
47 | end | ||
48 | e = xramp.^2/(-2 * cov(2)) + yramp.^2/(-2 * cov(1)); | ||
49 | else | ||
50 | if (strcmp(ampl,'norm')) | ||
51 | ampl = 1/(2*pi*sqrt(det(cov))); | ||
52 | end | ||
53 | cov = -inv(cov)/2; | ||
54 | e = cov(2,2)*xramp.^2 + (cov(1,2)+cov(2,1))*(xramp.*yramp) ... | ||
55 | + cov(1,1)*yramp.^2; | ||
56 | end | ||
57 | |||
58 | res = ampl .* exp(e); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkImpulse.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkImpulse.m new file mode 100755 index 0000000..9844ee8 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkImpulse.m | |||
@@ -0,0 +1,25 @@ | |||
1 | % IM = mkImpulse(SIZE, ORIGIN, AMPLITUDE) | ||
2 | % | ||
3 | % Compute a matrix of dimension SIZE (a [Y X] 2-vector, or a scalar) | ||
4 | % containing a single non-zero entry, at position ORIGIN (defaults to | ||
5 | % ceil(size/2)), of value AMPLITUDE (defaults to 1). | ||
6 | |||
7 | % Eero Simoncelli, 6/96. | ||
8 | |||
9 | function [res] = mkImpulse(sz, origin, amplitude) | ||
10 | |||
11 | sz = sz(:)'; | ||
12 | if (size(sz,2) == 1) | ||
13 | sz = [sz sz]; | ||
14 | end | ||
15 | |||
16 | if (exist('origin') ~= 1) | ||
17 | origin = ceil(sz/2); | ||
18 | end | ||
19 | |||
20 | if (exist('amplitude') ~= 1) | ||
21 | amplitude = 1; | ||
22 | end | ||
23 | |||
24 | res = zeros(sz); | ||
25 | res(origin(1),origin(2)) = amplitude; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkR.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkR.m new file mode 100755 index 0000000..a1e8448 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkR.m | |||
@@ -0,0 +1,32 @@ | |||
1 | % IM = mkR(SIZE, EXPT, ORIGIN) | ||
2 | % | ||
3 | % Compute a matrix of dimension SIZE (a [Y X] 2-vector, or a scalar) | ||
4 | % containing samples of a radial ramp function, raised to power EXPT | ||
5 | % (default = 1), with given ORIGIN (default = (size+1)/2, [1 1] = | ||
6 | % upper left). All but the first argument are optional. | ||
7 | |||
8 | % Eero Simoncelli, 6/96. | ||
9 | |||
10 | function [res] = mkR(sz, expt, origin) | ||
11 | |||
12 | sz = sz(:); | ||
13 | if (size(sz,1) == 1) | ||
14 | sz = [sz,sz]; | ||
15 | end | ||
16 | |||
17 | % ----------------------------------------------------------------- | ||
18 | % OPTIONAL args: | ||
19 | |||
20 | if (exist('expt') ~= 1) | ||
21 | expt = 1; | ||
22 | end | ||
23 | |||
24 | if (exist('origin') ~= 1) | ||
25 | origin = (sz+1)/2; | ||
26 | end | ||
27 | |||
28 | % ----------------------------------------------------------------- | ||
29 | |||
30 | [xramp,yramp] = meshgrid( [1:sz(2)]-origin(2), [1:sz(1)]-origin(1) ); | ||
31 | |||
32 | res = (xramp.^2 + yramp.^2).^(expt/2); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkRamp.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkRamp.m new file mode 100755 index 0000000..dd37164 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkRamp.m | |||
@@ -0,0 +1,47 @@ | |||
1 | % IM = mkRamp(SIZE, DIRECTION, SLOPE, INTERCEPT, ORIGIN) | ||
2 | % | ||
3 | % Compute a matrix of dimension SIZE (a [Y X] 2-vector, or a scalar) | ||
4 | % containing samples of a ramp function, with given gradient DIRECTION | ||
5 | % (radians, CW from X-axis, default = 0), SLOPE (per pixel, default = | ||
6 | % 1), and a value of INTERCEPT (default = 0) at the ORIGIN (default = | ||
7 | % (size+1)/2, [1 1] = upper left). All but the first argument are | ||
8 | % optional. | ||
9 | |||
10 | % Eero Simoncelli, 6/96. 2/97: adjusted coordinate system. | ||
11 | |||
12 | function [res] = mkRamp(sz, dir, slope, intercept, origin) | ||
13 | |||
14 | sz = sz(:); | ||
15 | if (size(sz,1) == 1) | ||
16 | sz = [sz,sz]; | ||
17 | end | ||
18 | |||
19 | % ----------------------------------------------------------------- | ||
20 | % OPTIONAL args: | ||
21 | |||
22 | if (exist('dir') ~= 1) | ||
23 | dir = 0; | ||
24 | end | ||
25 | |||
26 | if (exist('slope') ~= 1) | ||
27 | slope = 1; | ||
28 | end | ||
29 | |||
30 | if (exist('intercept') ~= 1) | ||
31 | intercept = 0; | ||
32 | end | ||
33 | |||
34 | if (exist('origin') ~= 1) | ||
35 | origin = (sz+1)/2; | ||
36 | end | ||
37 | |||
38 | % ----------------------------------------------------------------- | ||
39 | |||
40 | xinc = slope*cos(dir); | ||
41 | yinc = slope*sin(dir); | ||
42 | |||
43 | [xramp,yramp] = meshgrid( xinc*([1:sz(2)]-origin(2)), ... | ||
44 | yinc*([1:sz(1)]-origin(1)) ); | ||
45 | |||
46 | res = intercept + xramp + yramp; | ||
47 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkSine.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkSine.m new file mode 100755 index 0000000..147eb01 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkSine.m | |||
@@ -0,0 +1,67 @@ | |||
1 | % IM = mkSine(SIZE, PERIOD, DIRECTION, AMPLITUDE, PHASE, ORIGIN) | ||
2 | % or | ||
3 | % IM = mkSine(SIZE, FREQ, AMPLITUDE, PHASE, ORIGIN) | ||
4 | % | ||
5 | % Compute a matrix of dimension SIZE (a [Y X] 2-vector, or a scalar) | ||
6 | % containing samples of a 2D sinusoid, with given PERIOD (in pixels), | ||
7 | % DIRECTION (radians, CW from X-axis, default = 0), AMPLITUDE (default | ||
8 | % = 1), and PHASE (radians, relative to ORIGIN, default = 0). ORIGIN | ||
9 | % defaults to the center of the image. | ||
10 | % | ||
11 | % In the second form, FREQ is a 2-vector of frequencies (radians/pixel). | ||
12 | |||
13 | % Eero Simoncelli, 6/96. | ||
14 | |||
15 | function [res] = mkSine(sz, per_freq, dir_amp, amp_phase, phase_orig, orig) | ||
16 | |||
17 | %------------------------------------------------------------ | ||
18 | %% OPTIONAL ARGS: | ||
19 | |||
20 | if (prod(size(per_freq)) == 2) | ||
21 | frequency = norm(per_freq); | ||
22 | direction = atan2(per_freq(1),per_freq(2)); | ||
23 | if (exist('dir_amp') == 1) | ||
24 | amplitude = dir_amp; | ||
25 | else | ||
26 | amplitude = 1; | ||
27 | end | ||
28 | if (exist('amp_phase') == 1) | ||
29 | phase = amp_phase; | ||
30 | else | ||
31 | phase = 0; | ||
32 | end | ||
33 | if (exist('phase_orig') == 1) | ||
34 | origin = phase_orig; | ||
35 | end | ||
36 | if (exist('orig') == 1) | ||
37 | error('Too many arguments for (second form) of mkSine'); | ||
38 | end | ||
39 | else | ||
40 | frequency = 2*pi/per_freq; | ||
41 | if (exist('dir_amp') == 1) | ||
42 | direction = dir_amp; | ||
43 | else | ||
44 | direction = 0; | ||
45 | end | ||
46 | if (exist('amp_phase') == 1) | ||
47 | amplitude = amp_phase; | ||
48 | else | ||
49 | amplitude = 1; | ||
50 | end | ||
51 | if (exist('phase_orig') == 1) | ||
52 | phase = phase_orig; | ||
53 | else | ||
54 | phase = 0; | ||
55 | end | ||
56 | if (exist('orig') == 1) | ||
57 | origin = orig; | ||
58 | end | ||
59 | end | ||
60 | |||
61 | %------------------------------------------------------------ | ||
62 | |||
63 | if (exist('origin') == 1) | ||
64 | res = amplitude*sin(mkRamp(sz, direction, frequency, phase, origin)); | ||
65 | else | ||
66 | res = amplitude*sin(mkRamp(sz, direction, frequency, phase)); | ||
67 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkSquare.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkSquare.m new file mode 100755 index 0000000..84ef466 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkSquare.m | |||
@@ -0,0 +1,89 @@ | |||
1 | % IM = mkSquare(SIZE, PERIOD, DIRECTION, AMPLITUDE, PHASE, ORIGIN, TWIDTH) | ||
2 | % or | ||
3 | % IM = mkSine(SIZE, FREQ, AMPLITUDE, PHASE, ORIGIN, TWIDTH) | ||
4 | % | ||
5 | % Compute a matrix of dimension SIZE (a [Y X] 2-vector, or a scalar) | ||
6 | % containing samples of a 2D square wave, with given PERIOD (in | ||
7 | % pixels), DIRECTION (radians, CW from X-axis, default = 0), AMPLITUDE | ||
8 | % (default = 1), and PHASE (radians, relative to ORIGIN, default = 0). | ||
9 | % ORIGIN defaults to the center of the image. TWIDTH specifies width | ||
10 | % of raised-cosine edges on the bars of the grating (default = | ||
11 | % min(2,period/3)). | ||
12 | % | ||
13 | % In the second form, FREQ is a 2-vector of frequencies (radians/pixel). | ||
14 | |||
15 | % Eero Simoncelli, 6/96. | ||
16 | |||
17 | % TODO: Add duty cycle. | ||
18 | |||
19 | function [res] = mkSquare(sz, per_freq, dir_amp, amp_phase, phase_orig, orig_twidth, twidth) | ||
20 | |||
21 | %------------------------------------------------------------ | ||
22 | %% OPTIONAL ARGS: | ||
23 | |||
24 | if (prod(size(per_freq)) == 2) | ||
25 | frequency = norm(per_freq); | ||
26 | direction = atan2(per_freq(1),per_freq(2)); | ||
27 | if (exist('dir_amp') == 1) | ||
28 | amplitude = dir_amp; | ||
29 | else | ||
30 | amplitude = 1; | ||
31 | end | ||
32 | if (exist('amp_phase') == 1) | ||
33 | phase = amp_phase; | ||
34 | else | ||
35 | phase = 0; | ||
36 | end | ||
37 | if (exist('phase_orig') == 1) | ||
38 | origin = phase_orig; | ||
39 | end | ||
40 | if (exist('orig_twidth') == 1) | ||
41 | transition = orig_twidth; | ||
42 | else | ||
43 | transition = min(2,2*pi/(3*frequency)); | ||
44 | end | ||
45 | if (exist('twidth') == 1) | ||
46 | error('Too many arguments for (second form) of mkSine'); | ||
47 | end | ||
48 | else | ||
49 | frequency = 2*pi/per_freq; | ||
50 | if (exist('dir_amp') == 1) | ||
51 | direction = dir_amp; | ||
52 | else | ||
53 | direction = 0; | ||
54 | end | ||
55 | if (exist('amp_phase') == 1) | ||
56 | amplitude = amp_phase; | ||
57 | else | ||
58 | amplitude = 1; | ||
59 | end | ||
60 | if (exist('phase_orig') == 1) | ||
61 | phase = phase_orig; | ||
62 | else | ||
63 | phase = 0; | ||
64 | end | ||
65 | if (exist('orig_twidth') == 1) | ||
66 | origin = orig_twidth; | ||
67 | end | ||
68 | if (exist('twidth') == 1) | ||
69 | transition = twidth; | ||
70 | else | ||
71 | transition = min(2,2*pi/(3*frequency)); | ||
72 | end | ||
73 | |||
74 | end | ||
75 | |||
76 | %------------------------------------------------------------ | ||
77 | |||
78 | if (exist('origin') == 1) | ||
79 | res = mkRamp(sz, direction, frequency, phase, origin) - pi/2; | ||
80 | else | ||
81 | res = mkRamp(sz, direction, frequency, phase) - pi/2; | ||
82 | end | ||
83 | |||
84 | [Xtbl,Ytbl] = rcosFn(transition*frequency,pi/2,[-amplitude amplitude]); | ||
85 | |||
86 | res = pointOp(abs(mod(res+pi, 2*pi)-pi),Ytbl,Xtbl(1),Xtbl(2)-Xtbl(1),0); | ||
87 | |||
88 | % OLD threshold version: | ||
89 | %res = amplitude * (mod(res,2*pi) < pi); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkZonePlate.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkZonePlate.m new file mode 100755 index 0000000..2b6a4a5 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mkZonePlate.m | |||
@@ -0,0 +1,33 @@ | |||
1 | % IM = mkZonePlate(SIZE, AMPL, PHASE) | ||
2 | % | ||
3 | % Make a "zone plate" image: | ||
4 | % AMPL * cos( r^2 + PHASE) | ||
5 | % SIZE specifies the matrix size, as for zeros(). | ||
6 | % AMPL (default = 1) and PHASE (default = 0) are optional. | ||
7 | |||
8 | % Eero Simoncelli, 6/96. | ||
9 | |||
10 | function [res] = mkZonePlate(sz, ampl, ph) | ||
11 | |||
12 | sz = sz(:); | ||
13 | if (size(sz,1) == 1) | ||
14 | sz = [sz,sz]; | ||
15 | end | ||
16 | |||
17 | mxsz = max(sz(1),sz(2)); | ||
18 | |||
19 | %------------------------------------------------------------ | ||
20 | %% OPTIONAL ARGS: | ||
21 | |||
22 | if (exist('ampl') ~= 1) | ||
23 | ampl = 1; | ||
24 | end | ||
25 | |||
26 | if (exist('ph') ~= 1) | ||
27 | ph = 0; | ||
28 | end | ||
29 | |||
30 | %------------------------------------------------------------ | ||
31 | |||
32 | res = ampl * cos( (pi/mxsz) * mkR(sz,2) + ph ); | ||
33 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mod.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mod.m new file mode 100755 index 0000000..21167e5 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/mod.m | |||
@@ -0,0 +1,14 @@ | |||
1 | % M = mod(A,B) | ||
2 | % | ||
3 | % Modulus operator: returns A mod B. | ||
4 | % Works on matrics, vectors or scalars. | ||
5 | % | ||
6 | % NOTE: This function is a Matlab-5 builtin, but was missing from Matlab-4. | ||
7 | |||
8 | % Eero Simoncelli, 7/96. | ||
9 | |||
10 | function m = mod(a,n) | ||
11 | |||
12 | m = a - n .* floor(a./n); | ||
13 | return; | ||
14 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/modulateFlip.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/modulateFlip.m new file mode 100755 index 0000000..eb27303 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/modulateFlip.m | |||
@@ -0,0 +1,19 @@ | |||
1 | % [HFILT] = modulateFlipShift(LFILT) | ||
2 | % | ||
3 | % QMF/Wavelet highpass filter construction: modulate by (-1)^n, | ||
4 | % reverse order (and shift by one, which is handled by the convolution | ||
5 | % routines). This is an extension of the original definition of QMF's | ||
6 | % (e.g., see Simoncelli90). | ||
7 | |||
8 | % Eero Simoncelli, 7/96. | ||
9 | |||
10 | function [hfilt] = modulateFlipShift(lfilt) | ||
11 | |||
12 | lfilt = lfilt(:); | ||
13 | |||
14 | sz = size(lfilt,1); | ||
15 | sz2 = ceil(sz/2); | ||
16 | |||
17 | ind = [sz:-1:1]'; | ||
18 | |||
19 | hfilt = lfilt(ind) .* (-1).^(ind-sz2); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/namedFilter.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/namedFilter.m new file mode 100755 index 0000000..0689dbc --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/namedFilter.m | |||
@@ -0,0 +1,71 @@ | |||
1 | % KERNEL = NAMED_FILTER(NAME) | ||
2 | % | ||
3 | % Some standard 1D filter kernels. These are scaled such that | ||
4 | % their L2-norm is 1.0. | ||
5 | % | ||
6 | % binomN - binomial coefficient filter of order N-1 | ||
7 | % haar: - Haar wavelet. | ||
8 | % qmf8, qmf12, qmf16 - Symmetric Quadrature Mirror Filters [Johnston80] | ||
9 | % daub2,daub3,daub4 - Daubechies wavelet [Daubechies88]. | ||
10 | % qmf5, qmf9, qmf13: - Symmetric Quadrature Mirror Filters [Simoncelli88,Simoncelli90] | ||
11 | % | ||
12 | % See bottom of file for full citations. | ||
13 | |||
14 | % Eero Simoncelli, 6/96. | ||
15 | |||
16 | function [kernel] = named_filter(name) | ||
17 | |||
18 | if strcmp(name(1:min(5,size(name,2))), 'binom') | ||
19 | kernel = sqrt(2) * binomialFilter(str2num(name(6:size(name,2)))); | ||
20 | elseif strcmp(name,'qmf5') | ||
21 | kernel = [-0.076103 0.3535534 0.8593118 0.3535534 -0.076103]'; | ||
22 | elseif strcmp(name,'qmf9') | ||
23 | kernel = [0.02807382 -0.060944743 -0.073386624 0.41472545 0.7973934 ... | ||
24 | 0.41472545 -0.073386624 -0.060944743 0.02807382]'; | ||
25 | elseif strcmp(name,'qmf13') | ||
26 | kernel = [-0.014556438 0.021651438 0.039045125 -0.09800052 ... | ||
27 | -0.057827797 0.42995453 0.7737113 0.42995453 -0.057827797 ... | ||
28 | -0.09800052 0.039045125 0.021651438 -0.014556438]'; | ||
29 | elseif strcmp(name,'qmf8') | ||
30 | kernel = sqrt(2) * [0.00938715 -0.07065183 0.06942827 0.4899808 ... | ||
31 | 0.4899808 0.06942827 -0.07065183 0.00938715 ]'; | ||
32 | elseif strcmp(name,'qmf12') | ||
33 | kernel = sqrt(2) * [-0.003809699 0.01885659 -0.002710326 -0.08469594 ... | ||
34 | 0.08846992 0.4843894 0.4843894 0.08846992 -0.08469594 -0.002710326 ... | ||
35 | 0.01885659 -0.003809699 ]'; | ||
36 | elseif strcmp(name,'qmf16') | ||
37 | kernel = sqrt(2) * [0.001050167 -0.005054526 -0.002589756 0.0276414 -0.009666376 ... | ||
38 | -0.09039223 0.09779817 0.4810284 0.4810284 0.09779817 -0.09039223 -0.009666376 ... | ||
39 | 0.0276414 -0.002589756 -0.005054526 0.001050167 ]'; | ||
40 | elseif strcmp(name,'haar') | ||
41 | kernel = [1 1]' / sqrt(2); | ||
42 | elseif strcmp(name,'daub2') | ||
43 | kernel = [0.482962913145 0.836516303738 0.224143868042 -0.129409522551]'; | ||
44 | elseif strcmp(name,'daub3') | ||
45 | kernel = [0.332670552950 0.806891509311 0.459877502118 -0.135011020010 ... | ||
46 | -0.085441273882 0.035226291882]'; | ||
47 | elseif strcmp(name,'daub4') | ||
48 | kernel = [0.230377813309 0.714846570553 0.630880767930 -0.027983769417 ... | ||
49 | -0.187034811719 0.030841381836 0.032883011667 -0.010597401785]'; | ||
50 | elseif strcmp(name,'gauss5') % for backward-compatibility | ||
51 | kernel = sqrt(2) * [0.0625 0.25 0.375 0.25 0.0625]'; | ||
52 | elseif strcmp(name,'gauss3') % for backward-compatibility | ||
53 | kernel = sqrt(2) * [0.25 0.5 0.25]'; | ||
54 | else | ||
55 | error(sprintf('Bad filter name: %s\n',name)); | ||
56 | end | ||
57 | |||
58 | % [Johnston80] - J D Johnston, "A filter family designed for use in quadrature | ||
59 | % mirror filter banks", Proc. ICASSP, pp 291-294, 1980. | ||
60 | % | ||
61 | % [Daubechies88] - I Daubechies, "Orthonormal bases of compactly supported wavelets", | ||
62 | % Commun. Pure Appl. Math, vol. 42, pp 909-996, 1988. | ||
63 | % | ||
64 | % [Simoncelli88] - E P Simoncelli, "Orthogonal sub-band image transforms", | ||
65 | % PhD Thesis, MIT Dept. of Elec. Eng. and Comp. Sci. May 1988. | ||
66 | % Also available as: MIT Media Laboratory Vision and Modeling Technical | ||
67 | % Report #100. | ||
68 | % | ||
69 | % [Simoncelli90] - E P Simoncelli and E H Adelson, "Subband image coding", | ||
70 | % Subband Transforms, chapter 4, ed. John W Woods, Kluwer Academic | ||
71 | % Publishers, Norwell, MA, 1990, pp 143--192. | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/nextFig.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/nextFig.m new file mode 100755 index 0000000..e0ac73f --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/nextFig.m | |||
@@ -0,0 +1,19 @@ | |||
1 | % nextFig (MAXFIGS, SKIP) | ||
2 | % | ||
3 | % Make figure number mod((GCF+SKIP), MAXFIGS) the current figure. | ||
4 | % MAXFIGS is optional, and defaults to 2. | ||
5 | % SKIP is optional, and defaults to 1. | ||
6 | |||
7 | % Eero Simoncelli, 2/97. | ||
8 | |||
9 | function nextFig(maxfigs, skip) | ||
10 | |||
11 | if (exist('maxfigs') ~= 1) | ||
12 | maxfigs = 2; | ||
13 | end | ||
14 | |||
15 | if (exist('skip') ~= 1) | ||
16 | skip = 1; | ||
17 | end | ||
18 | |||
19 | figure(1+mod(gcf-1+skip,maxfigs)); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pgmRead.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pgmRead.m new file mode 100755 index 0000000..86c3b62 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pgmRead.m | |||
@@ -0,0 +1,59 @@ | |||
1 | % IM = pgmRead( FILENAME ) | ||
2 | % | ||
3 | % Load a pgm image into a MatLab matrix. | ||
4 | % This format is accessible from the XV image browsing utility. | ||
5 | % Only works for 8bit gray images (raw or ascii) | ||
6 | |||
7 | % Hany Farid, Spring '96. Modified by Eero Simoncelli, 6/96. | ||
8 | |||
9 | function im = pgmRead( fname ); | ||
10 | |||
11 | [fid,msg] = fopen( fname, 'r' ); | ||
12 | |||
13 | if (fid == -1) | ||
14 | error(msg); | ||
15 | end | ||
16 | |||
17 | %%% First line contains ID string: | ||
18 | %%% "P1" = ascii bitmap, "P2" = ascii greymap, | ||
19 | %%% "P3" = ascii pixmap, "P4" = raw bitmap, | ||
20 | %%% "P5" = raw greymap, "P6" = raw pixmap | ||
21 | TheLine = fgetl(fid); | ||
22 | format = TheLine; | ||
23 | |||
24 | if ~((format(1:2) == 'P2') | (format(1:2) == 'P5')) | ||
25 | error('PGM file must be of type P2 or P5'); | ||
26 | end | ||
27 | |||
28 | %%% Any number of comment lines | ||
29 | TheLine = fgetl(fid); | ||
30 | while TheLine(1) == '#' | ||
31 | TheLine = fgetl(fid); | ||
32 | end | ||
33 | |||
34 | %%% dimensions | ||
35 | sz = sscanf(TheLine,'%d',2); | ||
36 | xdim = sz(1); | ||
37 | ydim = sz(2); | ||
38 | sz = xdim * ydim; | ||
39 | |||
40 | %%% Maximum pixel value | ||
41 | TheLine = fgetl(fid); | ||
42 | maxval = sscanf(TheLine, '%d',1); | ||
43 | |||
44 | %%im = zeros(dim,1); | ||
45 | if (format(2) == '2') | ||
46 | [im,count] = fscanf(fid,'%d',sz); | ||
47 | else | ||
48 | [im,count] = fread(fid,sz,'uchar'); | ||
49 | end | ||
50 | |||
51 | fclose(fid); | ||
52 | |||
53 | if (count == sz) | ||
54 | im = reshape( im, xdim, ydim )'; | ||
55 | else | ||
56 | fprintf(1,'Warning: File ended early!'); | ||
57 | im = reshape( [im ; zeros(sz-count,1)], xdim, ydim)'; | ||
58 | end | ||
59 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pgmWrite.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pgmWrite.m new file mode 100755 index 0000000..09c14c9 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pgmWrite.m | |||
@@ -0,0 +1,120 @@ | |||
1 | % RANGE = pgmWrite(MTX, FILENAME, RANGE, TYPE, COMMENT) | ||
2 | % | ||
3 | % Write a MatLab matrix to a pgm (graylevel image) file. | ||
4 | % This format is accessible from the XV image browsing utility. | ||
5 | % | ||
6 | % RANGE (optional) is a 2-vector specifying the values that map to | ||
7 | % black and white, respectively. Passing a value of 'auto' (default) | ||
8 | % sets RANGE=[min,max] (as in MatLab's imagesc). 'auto2' sets | ||
9 | % RANGE=[mean-2*stdev, mean+2*stdev]. 'auto3' sets | ||
10 | % RANGE=[p1-(p2-p1)/8, p2+(p2-p1)/8], where p1 is the 10th percentile | ||
11 | % value of the sorted MATRIX samples, and p2 is the 90th percentile | ||
12 | % value. | ||
13 | % | ||
14 | % TYPE (optional) should be 'raw' or 'ascii'. Defaults to 'raw'. | ||
15 | |||
16 | % Hany Farid, Spring '96. Modified by Eero Simoncelli, 6/96. | ||
17 | |||
18 | function range = pgmWrite(mtx, fname, range, type, comment ); | ||
19 | |||
20 | [fid,msg] = fopen( fname, 'w' ); | ||
21 | |||
22 | if (fid == -1) | ||
23 | error(msg); | ||
24 | end | ||
25 | |||
26 | %------------------------------------------------------------ | ||
27 | %% optional ARGS: | ||
28 | |||
29 | if (exist('range') ~= 1) | ||
30 | range = 'auto'; | ||
31 | end | ||
32 | |||
33 | if (exist('type') ~= 1) | ||
34 | type = 'raw'; | ||
35 | end | ||
36 | %------------------------------------------------------------ | ||
37 | |||
38 | %% Automatic range calculation: | ||
39 | if (strcmp(range,'auto1') | strcmp(range,'auto')) | ||
40 | [mn,mx] = range2(mtx); | ||
41 | range = [mn,mx]; | ||
42 | |||
43 | elseif strcmp(range,'auto2') | ||
44 | stdev = sqrt(var2(mtx)); | ||
45 | av = mean2(mtx); | ||
46 | range = [av-2*stdev,av+2*stdev]; % MAGIC NUMBER: 2 stdevs | ||
47 | |||
48 | elseif strcmp(range, 'auto3') | ||
49 | percentile = 0.1; % MAGIC NUMBER: 0<p<0.5 | ||
50 | [N,X] = histo(mtx); | ||
51 | binsz = X(2)-X(1); | ||
52 | N = N+1e-10; % Ensure cumsum will be monotonic for call to interp1 | ||
53 | cumN = [0, cumsum(N)]/sum(N); | ||
54 | cumX = [X(1)-binsz, X] + (binsz/2); | ||
55 | ctrRange = interp1(cumN,cumX, [percentile, 1-percentile]); | ||
56 | range = mean(ctrRange) + (ctrRange-mean(ctrRange))/(1-2*percentile); | ||
57 | |||
58 | elseif isstr(range) | ||
59 | error(sprintf('Bad RANGE argument: %s',range)) | ||
60 | |||
61 | end | ||
62 | |||
63 | if ((range(2) - range(1)) <= eps) | ||
64 | range(1) = range(1) - 0.5; | ||
65 | range(2) = range(2) + 0.5; | ||
66 | end | ||
67 | |||
68 | |||
69 | %%% First line contains ID string: | ||
70 | %%% "P1" = ascii bitmap, "P2" = ascii greymap, | ||
71 | %%% "P3" = ascii pixmap, "P4" = raw bitmap, | ||
72 | %%% "P5" = raw greymap, "P6" = raw pixmap | ||
73 | if strcmp(type,'raw') | ||
74 | fprintf(fid,'P5\n'); | ||
75 | format = 5; | ||
76 | elseif strcmp(type,'ascii') | ||
77 | fprintf(fid,'P2\n'); | ||
78 | format = 2; | ||
79 | else | ||
80 | error(sprintf('PGMWRITE: Bad type argument: %s',type)); | ||
81 | end | ||
82 | |||
83 | fprintf(fid,'# MatLab PGMWRITE file, saved %s\n',date); | ||
84 | |||
85 | if (exist('comment') == 1) | ||
86 | fprintf(fid,'# %s\n', comment); | ||
87 | end | ||
88 | |||
89 | %%% dimensions | ||
90 | fprintf(fid,'%d %d\n',size(mtx,2),size(mtx,1)); | ||
91 | |||
92 | %%% Maximum pixel value | ||
93 | fprintf(fid,'255\n'); | ||
94 | |||
95 | |||
96 | %% MatLab's "fprintf" floors when writing floats, so we compute | ||
97 | %% (mtx-r1)*255/(r2-r1)+0.5 | ||
98 | mult = (255 / (range(2)-range(1))); | ||
99 | mtx = (mult * mtx) + (0.5 - mult * range(1)); | ||
100 | |||
101 | mtx = max(-0.5+eps,min(255.5-eps,mtx)); | ||
102 | |||
103 | if (format == 2) | ||
104 | count = fprintf(fid,'%d ',mtx'); | ||
105 | elseif (format == 5) | ||
106 | count = fwrite(fid,mtx','uchar'); | ||
107 | end | ||
108 | |||
109 | fclose(fid); | ||
110 | |||
111 | if (count ~= size(mtx,1)*size(mtx,2)) | ||
112 | fprintf(1,'Warning: File output terminated early!'); | ||
113 | end | ||
114 | |||
115 | %%% TEST: | ||
116 | % foo = 257*rand(100)-1; | ||
117 | % pgmWrite(foo,'foo.pgm',[0 255]); | ||
118 | % foo2=pgmRead('foo.pgm'); | ||
119 | % size(find((foo2-round(foo))~=0)) | ||
120 | % foo(find((foo2-round(foo))~=0)) | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pixelAxes.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pixelAxes.m new file mode 100755 index 0000000..f88210d --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pixelAxes.m | |||
@@ -0,0 +1,70 @@ | |||
1 | % [ZOOM] = pixelAxes(DIMS, ZOOM) | ||
2 | % | ||
3 | % Set the axes of the current plot to cover a multiple of DIMS pixels, | ||
4 | % thereby eliminating screen aliasing artifacts when displaying an | ||
5 | % image of size DIMS. | ||
6 | % | ||
7 | % ZOOM (optional, default='same') expresses the desired number of | ||
8 | % samples displayed per screen pixel. It should be a scalar, which | ||
9 | % will be rounded to the nearest integer, or 1 over an integer. It | ||
10 | % may also be the string 'same' or 'auto', in which case the value is chosen so | ||
11 | % as to produce an image closest in size to the currently displayed | ||
12 | % image. It may also be the string 'full', in which case the image is | ||
13 | % made as large as possible while still fitting in the window. | ||
14 | |||
15 | % Eero Simoncelli, 2/97. | ||
16 | |||
17 | function [zoom] = pixelAxes(dims, zoom) | ||
18 | |||
19 | %------------------------------------------------------------ | ||
20 | %% OPTIONAL ARGS: | ||
21 | |||
22 | if (exist('zoom') ~= 1) | ||
23 | zoom = 'same'; | ||
24 | end | ||
25 | |||
26 | %% Reverse dimension order, since Figure Positions reported as (x,y). | ||
27 | dims = dims(2:-1:1); | ||
28 | |||
29 | %% Use MatLab's axis function to force square pixels, etc: | ||
30 | axis('image'); | ||
31 | ax = gca; | ||
32 | |||
33 | oldunits = get(ax,'Units'); | ||
34 | |||
35 | if strcmp(zoom,'full'); | ||
36 | set(ax,'Units','normalized'); | ||
37 | set(ax,'Position',[0 0 1 1]); | ||
38 | zoom = 'same'; | ||
39 | end | ||
40 | |||
41 | set(ax,'Units','pixels'); | ||
42 | pos = get(ax,'Position'); | ||
43 | ctr = pos(1:2)+pos(3:4)/2; | ||
44 | |||
45 | if (strcmp(zoom,'same') | strcmp(zoom,'auto')) | ||
46 | %% HACK: enlarge slightly so that floor doesn't round down | ||
47 | zoom = min( pos(3:4) ./ (dims - 1) ); | ||
48 | elseif isstr(zoom) | ||
49 | error(sprintf('Bad ZOOM argument: %s',zoom)); | ||
50 | end | ||
51 | |||
52 | %% Force zoom value to be an integer, or inverse integer. | ||
53 | if (zoom < 0.75) | ||
54 | zoom = 1/ceil(1/zoom); | ||
55 | %% Round upward, subtracting 0.5 to avoid floating point errors. | ||
56 | newsz = ceil(zoom*(dims-0.5)); | ||
57 | else | ||
58 | zoom = floor(zoom + 0.001); % Avoid floating pt errors | ||
59 | if (zoom < 1.5) % zoom=1 | ||
60 | zoom = 1; | ||
61 | newsz = dims + 0.5; | ||
62 | else | ||
63 | newsz = zoom*(dims-1) + mod(zoom,2); | ||
64 | end | ||
65 | end | ||
66 | |||
67 | set(ax,'Position', [floor(ctr-newsz/2)+0.5, newsz] ) | ||
68 | |||
69 | % Restore units | ||
70 | set(ax,'Units',oldunits); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pointOp.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pointOp.m new file mode 100755 index 0000000..890e60a --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pointOp.m | |||
@@ -0,0 +1,28 @@ | |||
1 | % RES = pointOp(IM, LUT, ORIGIN, INCREMENT, WARNINGS) | ||
2 | % | ||
3 | % Apply a point operation, specified by lookup table LUT, to image IM. | ||
4 | % LUT must be a row or column vector, and is assumed to contain | ||
5 | % (equi-spaced) samples of the function. ORIGIN specifies the | ||
6 | % abscissa associated with the first sample, and INCREMENT specifies the | ||
7 | % spacing between samples. Between-sample values are estimated via | ||
8 | % linear interpolation. If WARNINGS is non-zero, the function prints | ||
9 | % a warning whenever the lookup table is extrapolated. | ||
10 | % | ||
11 | % This function is much faster than MatLab's interp1, and allows | ||
12 | % extrapolation beyond the lookup table domain. The drawbacks are | ||
13 | % that the lookup table must be equi-spaced, and the interpolation is | ||
14 | % linear. | ||
15 | |||
16 | % Eero Simoncelli, 8/96. | ||
17 | |||
18 | function res = pointOp(im, lut, origin, increment, warnings) | ||
19 | |||
20 | %% NOTE: THIS CODE IS NOT ACTUALLY USED! (MEX FILE IS CALLED INSTEAD) | ||
21 | |||
22 | 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'); | ||
23 | |||
24 | X = origin + increment*[0:size(lut(:),1)-1]; | ||
25 | Y = lut(:); | ||
26 | |||
27 | res = reshape(interp1(X, Y, im(:), 'linear', 'extrap'),size(im)); | ||
28 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pwd2path.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pwd2path.m new file mode 100755 index 0000000..15aecf0 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pwd2path.m | |||
@@ -0,0 +1,6 @@ | |||
1 | % PWD2PATH() | ||
2 | % | ||
3 | % add current working directory (pwd) to path. | ||
4 | |||
5 | P = path; | ||
6 | path(pwd,P); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pyrBand.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pyrBand.m new file mode 100755 index 0000000..1fb6461 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pyrBand.m | |||
@@ -0,0 +1,11 @@ | |||
1 | % RES = pyrBand(PYR, INDICES, BAND_NUM) | ||
2 | % | ||
3 | % Access a subband from a pyramid (gaussian, laplacian, QMF/wavelet, | ||
4 | % or steerable). Subbands are numbered consecutively, from finest | ||
5 | % (highest spatial frequency) to coarsest (lowest spatial frequency). | ||
6 | |||
7 | % Eero Simoncelli, 6/96. | ||
8 | |||
9 | function res = pyrBand(pyr, pind, band) | ||
10 | |||
11 | res = reshape( pyr(pyrBandIndices(pind,band)), pind(band,1), pind(band,2) ); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pyrBandIndices.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pyrBandIndices.m new file mode 100755 index 0000000..f94c217 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pyrBandIndices.m | |||
@@ -0,0 +1,24 @@ | |||
1 | % RES = pyrBandIndices(INDICES, BAND_NUM) | ||
2 | % | ||
3 | % Return indices for accessing a subband from a pyramid | ||
4 | % (gaussian, laplacian, QMF/wavelet, steerable). | ||
5 | |||
6 | % Eero Simoncelli, 6/96. | ||
7 | |||
8 | function indices = pyrBandIndices(pind,band) | ||
9 | |||
10 | if ((band > size(pind,1)) | (band < 1)) | ||
11 | error(sprintf('BAND_NUM must be between 1 and number of pyramid bands (%d).', ... | ||
12 | size(pind,1))); | ||
13 | end | ||
14 | |||
15 | if (size(pind,2) ~= 2) | ||
16 | error('INDICES must be an Nx2 matrix indicating the size of the pyramid subbands'); | ||
17 | end | ||
18 | |||
19 | ind = 1; | ||
20 | for l=1:band-1 | ||
21 | ind = ind + prod(pind(l,:)); | ||
22 | end | ||
23 | |||
24 | indices = ind:ind+prod(pind(band,:))-1; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pyrLow.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pyrLow.m new file mode 100755 index 0000000..290e806 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/pyrLow.m | |||
@@ -0,0 +1,12 @@ | |||
1 | % RES = pyrLow(PYR, INDICES) | ||
2 | % | ||
3 | % Access the lowpass subband from a pyramid | ||
4 | % (gaussian, laplacian, QMF/wavelet, steerable). | ||
5 | |||
6 | % Eero Simoncelli, 6/96. | ||
7 | |||
8 | function res = pyrLow(pyr,pind) | ||
9 | |||
10 | band = size(pind,1); | ||
11 | |||
12 | res = reshape( pyr(pyrBandIndices(pind,band)), pind(band,1), pind(band,2) ); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/range2.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/range2.m new file mode 100755 index 0000000..1709a0e --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/range2.m | |||
@@ -0,0 +1,18 @@ | |||
1 | % [MIN, MAX] = range2(MTX) | ||
2 | % | ||
3 | % Compute minimum and maximum values of MTX, returning them as a 2-vector. | ||
4 | |||
5 | % Eero Simoncelli, 3/97. | ||
6 | |||
7 | function [mn, mx] = range2(mtx) | ||
8 | |||
9 | %% NOTE: THIS CODE IS NOT ACTUALLY USED! (MEX FILE IS CALLED INSTEAD) | ||
10 | |||
11 | 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'); | ||
12 | |||
13 | if (~isreal(mtx)) | ||
14 | error('MTX must be real-valued'); | ||
15 | end | ||
16 | |||
17 | mn = min(min(mtx)); | ||
18 | mx = max(max(mtx)); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/rconv2.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/rconv2.m new file mode 100755 index 0000000..0c12490 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/rconv2.m | |||
@@ -0,0 +1,50 @@ | |||
1 | % RES = RCONV2(MTX1, MTX2, CTR) | ||
2 | % | ||
3 | % Convolution of two matrices, with boundaries handled via reflection | ||
4 | % about the edge pixels. Result will be of size of LARGER matrix. | ||
5 | % | ||
6 | % The origin of the smaller matrix is assumed to be its center. | ||
7 | % For even dimensions, the origin is determined by the CTR (optional) | ||
8 | % argument: | ||
9 | % CTR origin | ||
10 | % 0 DIM/2 (default) | ||
11 | % 1 (DIM/2)+1 | ||
12 | |||
13 | % Eero Simoncelli, 6/96. | ||
14 | |||
15 | function c = rconv2(a,b,ctr) | ||
16 | |||
17 | if (exist('ctr') ~= 1) | ||
18 | ctr = 0; | ||
19 | end | ||
20 | |||
21 | if (( size(a,1) >= size(b,1) ) & ( size(a,2) >= size(b,2) )) | ||
22 | large = a; small = b; | ||
23 | elseif (( size(a,1) <= size(b,1) ) & ( size(a,2) <= size(b,2) )) | ||
24 | large = b; small = a; | ||
25 | else | ||
26 | error('one arg must be larger than the other in both dimensions!'); | ||
27 | end | ||
28 | |||
29 | ly = size(large,1); | ||
30 | lx = size(large,2); | ||
31 | sy = size(small,1); | ||
32 | sx = size(small,2); | ||
33 | |||
34 | %% These values are one less than the index of the small mtx that falls on | ||
35 | %% the border pixel of the large matrix when computing the first | ||
36 | %% convolution response sample: | ||
37 | sy2 = floor((sy+ctr-1)/2); | ||
38 | sx2 = floor((sx+ctr-1)/2); | ||
39 | |||
40 | % pad with reflected copies | ||
41 | clarge = [ | ||
42 | large(sy-sy2:-1:2,sx-sx2:-1:2), large(sy-sy2:-1:2,:), ... | ||
43 | large(sy-sy2:-1:2,lx-1:-1:lx-sx2); ... | ||
44 | large(:,sx-sx2:-1:2), large, large(:,lx-1:-1:lx-sx2); ... | ||
45 | large(ly-1:-1:ly-sy2,sx-sx2:-1:2), ... | ||
46 | large(ly-1:-1:ly-sy2,:), ... | ||
47 | large(ly-1:-1:ly-sy2,lx-1:-1:lx-sx2) ]; | ||
48 | |||
49 | c = conv2(clarge,small,'valid'); | ||
50 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/rcosFn.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/rcosFn.m new file mode 100755 index 0000000..5dac344 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/rcosFn.m | |||
@@ -0,0 +1,45 @@ | |||
1 | % [X, Y] = rcosFn(WIDTH, POSITION, VALUES) | ||
2 | % | ||
3 | % Return a lookup table (suitable for use by INTERP1) | ||
4 | % containing a "raised cosine" soft threshold function: | ||
5 | % | ||
6 | % Y = VALUES(1) + (VALUES(2)-VALUES(1)) * | ||
7 | % cos^2( PI/2 * (X - POSITION + WIDTH)/WIDTH ) | ||
8 | % | ||
9 | % WIDTH is the width of the region over which the transition occurs | ||
10 | % (default = 1). POSITION is the location of the center of the | ||
11 | % threshold (default = 0). VALUES (default = [0,1]) specifies the | ||
12 | % values to the left and right of the transition. | ||
13 | |||
14 | % Eero Simoncelli, 7/96. | ||
15 | |||
16 | function [X, Y] = rcosFn(width,position,values) | ||
17 | |||
18 | %------------------------------------------------------------ | ||
19 | % OPTIONAL ARGS: | ||
20 | |||
21 | if (exist('width') ~= 1) | ||
22 | width = 1; | ||
23 | end | ||
24 | |||
25 | if (exist('position') ~= 1) | ||
26 | position = 0; | ||
27 | end | ||
28 | |||
29 | if (exist('values') ~= 1) | ||
30 | values = [0,1]; | ||
31 | end | ||
32 | |||
33 | %------------------------------------------------------------ | ||
34 | |||
35 | sz = 256; %% arbitrary! | ||
36 | |||
37 | X = pi * [-sz-1:1] / (2*sz); | ||
38 | |||
39 | Y = values(1) + (values(2)-values(1)) * cos(X).^2; | ||
40 | |||
41 | % Make sure end values are repeated, for extrapolation... | ||
42 | Y(1) = Y(2); | ||
43 | Y(sz+3) = Y(sz+2); | ||
44 | |||
45 | X = position + (2*width/pi) * (X + pi/4); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/reconLpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/reconLpyr.m new file mode 100755 index 0000000..cddcc12 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/reconLpyr.m | |||
@@ -0,0 +1,83 @@ | |||
1 | % RES = reconLpyr(PYR, INDICES, LEVS, FILT2, EDGES) | ||
2 | % | ||
3 | % Reconstruct image from Laplacian pyramid, as created by buildLpyr. | ||
4 | % | ||
5 | % PYR is a vector containing the N pyramid subbands, ordered from fine | ||
6 | % to coarse. INDICES is an Nx2 matrix containing the sizes of | ||
7 | % each subband. This is compatible with the MatLab Wavelet toolbox. | ||
8 | % | ||
9 | % LEVS (optional) should be a list of levels to include, or the string | ||
10 | % 'all' (default). The finest scale is number 1. The lowpass band | ||
11 | % corresponds to lpyrHt(INDICES)+1. | ||
12 | % | ||
13 | % FILT2 (optional) can be a string naming a standard filter (see | ||
14 | % namedFilter), or a vector which will be used for (separable) | ||
15 | % convolution. Default = 'binom5'. EDGES specifies edge-handling, | ||
16 | % and defaults to 'reflect1' (see corrDn). | ||
17 | |||
18 | % Eero Simoncelli, 6/96 | ||
19 | |||
20 | function res = reconLpyr(pyr, ind, levs, filt2, edges) | ||
21 | |||
22 | if (nargin < 2) | ||
23 | error('First two arguments (PYR, INDICES) are required'); | ||
24 | end | ||
25 | |||
26 | %%------------------------------------------------------------ | ||
27 | %% DEFAULTS: | ||
28 | |||
29 | if (exist('levs') ~= 1) | ||
30 | levs = 'all'; | ||
31 | end | ||
32 | |||
33 | if (exist('filt2') ~= 1) | ||
34 | filt2 = 'binom5'; | ||
35 | end | ||
36 | |||
37 | if (exist('edges') ~= 1) | ||
38 | edges= 'reflect1'; | ||
39 | end | ||
40 | %%------------------------------------------------------------ | ||
41 | |||
42 | maxLev = 1+lpyrHt(ind); | ||
43 | if strcmp(levs,'all') | ||
44 | levs = [1:maxLev]'; | ||
45 | else | ||
46 | if (any(levs > maxLev)) | ||
47 | error(sprintf('Level numbers must be in the range [1, %d].', maxLev)); | ||
48 | end | ||
49 | levs = levs(:); | ||
50 | end | ||
51 | |||
52 | if isstr(filt2) | ||
53 | filt2 = namedFilter(filt2); | ||
54 | end | ||
55 | |||
56 | filt2 = filt2(:); | ||
57 | res_sz = ind(1,:); | ||
58 | |||
59 | if any(levs > 1) | ||
60 | |||
61 | int_sz = [ind(1,1), ind(2,2)]; | ||
62 | |||
63 | nres = reconLpyr( pyr(prod(res_sz)+1:size(pyr,1)), ... | ||
64 | ind(2:size(ind,1),:), levs-1, filt2, edges); | ||
65 | |||
66 | if (res_sz(1) == 1) | ||
67 | res = upConv(nres, filt2', edges, [1 2], [1 1], res_sz); | ||
68 | elseif (res_sz(2) == 1) | ||
69 | res = upConv(nres, filt2, edges, [2 1], [1 1], res_sz); | ||
70 | else | ||
71 | hi = upConv(nres, filt2, edges, [2 1], [1 1], int_sz); | ||
72 | res = upConv(hi, filt2', edges, [1 2], [1 1], res_sz); | ||
73 | end | ||
74 | |||
75 | else | ||
76 | |||
77 | res = zeros(res_sz); | ||
78 | |||
79 | end | ||
80 | |||
81 | if any(levs == 1) | ||
82 | res = res + pyrBand(pyr,ind,1); | ||
83 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/reconSCFpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/reconSCFpyr.m new file mode 100755 index 0000000..a86f03d --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/reconSCFpyr.m | |||
@@ -0,0 +1,87 @@ | |||
1 | % RES = reconSCFpyr(PYR, INDICES, LEVS, BANDS, TWIDTH) | ||
2 | % | ||
3 | % The inverse of buildSCFpyr: Reconstruct image from its complex steerable pyramid representation, | ||
4 | % in the Fourier domain. | ||
5 | % | ||
6 | % The image is reconstructed by forcing the complex subbands to be analytic | ||
7 | % (zero on half of the 2D Fourier plane, as they are supossed to be unless | ||
8 | % they have being modified), and reconstructing from the real part of those | ||
9 | % analytic subbands. That is equivalent to compute the Hilbert transforms of | ||
10 | % the imaginary parts of the subbands, average them with their real | ||
11 | % counterparts, and then reconstructing from the resulting real subbands. | ||
12 | % | ||
13 | % PYR is a vector containing the N pyramid subbands, ordered from fine | ||
14 | % to coarse. INDICES is an Nx2 matrix containing the sizes of | ||
15 | % each subband. This is compatible with the MatLab Wavelet toolbox. | ||
16 | % | ||
17 | % LEVS (optional) should be a list of levels to include, or the string | ||
18 | % 'all' (default). 0 corresonds to the residual highpass subband. | ||
19 | % 1 corresponds to the finest oriented scale. The lowpass band | ||
20 | % corresponds to number spyrHt(INDICES)+1. | ||
21 | % | ||
22 | % BANDS (optional) should be a list of bands to include, or the string | ||
23 | % 'all' (default). 1 = vertical, rest proceeding anti-clockwise. | ||
24 | % | ||
25 | % TWIDTH is the width of the transition region of the radial lowpass | ||
26 | % function, in octaves (default = 1, which gives a raised cosine for | ||
27 | % the bandpass filters). | ||
28 | |||
29 | % Javier Portilla, 7/04, basing on Eero Simoncelli's Matlab Pyrtools code | ||
30 | % and our common code on texture synthesis (textureSynthesis.m). | ||
31 | |||
32 | function res = reconSCFpyr(pyr, indices, levs, bands, twidth) | ||
33 | |||
34 | %%------------------------------------------------------------ | ||
35 | %% DEFAULTS: | ||
36 | |||
37 | if ~exist('levs'), | ||
38 | levs = 'all'; | ||
39 | end | ||
40 | |||
41 | if ~exist('bands') | ||
42 | bands = 'all'; | ||
43 | end | ||
44 | |||
45 | if ~exist('twidth'), | ||
46 | twidth = 1; | ||
47 | elseif (twidth <= 0) | ||
48 | fprintf(1,'Warning: TWIDTH must be positive. Setting to 1.\n'); | ||
49 | twidth = 1; | ||
50 | end | ||
51 | |||
52 | %%------------------------------------------------------------ | ||
53 | |||
54 | |||
55 | pind = indices; | ||
56 | Nsc = log2(pind(1,1)/pind(end,1)); | ||
57 | Nor = (size(pind,1)-2)/Nsc; | ||
58 | |||
59 | for nsc = 1:Nsc, | ||
60 | firstBnum = (nsc-1)*Nor+2; | ||
61 | |||
62 | %% Re-create analytic subbands | ||
63 | dims = pind(firstBnum,:); | ||
64 | ctr = ceil((dims+0.5)/2); | ||
65 | ang = mkAngle(dims, 0, ctr); | ||
66 | ang(ctr(1),ctr(2)) = -pi/2; | ||
67 | for nor = 1:Nor, | ||
68 | nband = (nsc-1)*Nor+nor+1; | ||
69 | ind = pyrBandIndices(pind,nband); | ||
70 | ch = pyrBand(pyr, pind, nband); | ||
71 | ang0 = pi*(nor-1)/Nor; | ||
72 | xang = mod(ang-ang0+pi, 2*pi) - pi; | ||
73 | amask = 2*(abs(xang) < pi/2) + (abs(xang) == pi/2); | ||
74 | amask(ctr(1),ctr(2)) = 1; | ||
75 | amask(:,1) = 1; | ||
76 | amask(1,:) = 1; | ||
77 | amask = fftshift(amask); | ||
78 | ch = ifft2(amask.*fft2(ch)); % "Analytic" version | ||
79 | %f = 1.000008; % With this factor the reconstruction SNR goes up around 6 dB! | ||
80 | f = 1; | ||
81 | ch = f*0.5*real(ch); % real part | ||
82 | pyr(ind) = ch; | ||
83 | end % nor | ||
84 | end % nsc | ||
85 | |||
86 | res = reconSFpyr(pyr, indices, levs, bands, twidth); | ||
87 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/reconSFpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/reconSFpyr.m new file mode 100755 index 0000000..0e3109e --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/reconSFpyr.m | |||
@@ -0,0 +1,108 @@ | |||
1 | % RES = reconSFpyr(PYR, INDICES, LEVS, BANDS, TWIDTH) | ||
2 | % | ||
3 | % Reconstruct image from its steerable pyramid representation, in the Fourier | ||
4 | % domain, as created by buildSFpyr. | ||
5 | % | ||
6 | % PYR is a vector containing the N pyramid subbands, ordered from fine | ||
7 | % to coarse. INDICES is an Nx2 matrix containing the sizes of | ||
8 | % each subband. This is compatible with the MatLab Wavelet toolbox. | ||
9 | % | ||
10 | % LEVS (optional) should be a list of levels to include, or the string | ||
11 | % 'all' (default). 0 corresonds to the residual highpass subband. | ||
12 | % 1 corresponds to the finest oriented scale. The lowpass band | ||
13 | % corresponds to number spyrHt(INDICES)+1. | ||
14 | % | ||
15 | % BANDS (optional) should be a list of bands to include, or the string | ||
16 | % 'all' (default). 1 = vertical, rest proceeding anti-clockwise. | ||
17 | % | ||
18 | % TWIDTH is the width of the transition region of the radial lowpass | ||
19 | % function, in octaves (default = 1, which gives a raised cosine for | ||
20 | % the bandpass filters). | ||
21 | |||
22 | %%% MODIFIED VERSION, 7/04, uses different lookup table for radial frequency! | ||
23 | |||
24 | % Eero Simoncelli, 5/97. | ||
25 | |||
26 | function res = reconSFpyr(pyr, pind, levs, bands, twidth) | ||
27 | |||
28 | %%------------------------------------------------------------ | ||
29 | %% DEFAULTS: | ||
30 | |||
31 | if (exist('levs') ~= 1) | ||
32 | levs = 'all'; | ||
33 | end | ||
34 | |||
35 | if (exist('bands') ~= 1) | ||
36 | bands = 'all'; | ||
37 | end | ||
38 | |||
39 | if (exist('twidth') ~= 1) | ||
40 | twidth = 1; | ||
41 | elseif (twidth <= 0) | ||
42 | fprintf(1,'Warning: TWIDTH must be positive. Setting to 1.\n'); | ||
43 | twidth = 1; | ||
44 | end | ||
45 | |||
46 | %%------------------------------------------------------------ | ||
47 | |||
48 | nbands = spyrNumBands(pind); | ||
49 | |||
50 | maxLev = 1+spyrHt(pind); | ||
51 | if strcmp(levs,'all') | ||
52 | levs = [0:maxLev]'; | ||
53 | else | ||
54 | if (any(levs > maxLev) | any(levs < 0)) | ||
55 | error(sprintf('Level numbers must be in the range [0, %d].', maxLev)); | ||
56 | end | ||
57 | levs = levs(:); | ||
58 | end | ||
59 | |||
60 | if strcmp(bands,'all') | ||
61 | bands = [1:nbands]'; | ||
62 | else | ||
63 | if (any(bands < 1) | any(bands > nbands)) | ||
64 | error(sprintf('Band numbers must be in the range [1,3].', nbands)); | ||
65 | end | ||
66 | bands = bands(:); | ||
67 | end | ||
68 | |||
69 | %---------------------------------------------------------------------- | ||
70 | |||
71 | dims = pind(1,:); | ||
72 | ctr = ceil((dims+0.5)/2); | ||
73 | |||
74 | [xramp,yramp] = meshgrid( ([1:dims(2)]-ctr(2))./(dims(2)/2), ... | ||
75 | ([1:dims(1)]-ctr(1))./(dims(1)/2) ); | ||
76 | angle = atan2(yramp,xramp); | ||
77 | log_rad = sqrt(xramp.^2 + yramp.^2); | ||
78 | log_rad(ctr(1),ctr(2)) = log_rad(ctr(1),ctr(2)-1); | ||
79 | log_rad = log2(log_rad); | ||
80 | |||
81 | %% Radial transition function (a raised cosine in log-frequency): | ||
82 | [Xrcos,Yrcos] = rcosFn(twidth,(-twidth/2),[0 1]); | ||
83 | Yrcos = sqrt(Yrcos); | ||
84 | YIrcos = sqrt(abs(1.0 - Yrcos.^2)); | ||
85 | |||
86 | if (size(pind,1) == 2) | ||
87 | if (any(levs==1)) | ||
88 | resdft = fftshift(fft2(pyrBand(pyr,pind,2))); | ||
89 | else | ||
90 | resdft = zeros(pind(2,:)); | ||
91 | end | ||
92 | else | ||
93 | resdft = reconSFpyrLevs(pyr(1+prod(pind(1,:)):size(pyr,1)), ... | ||
94 | pind(2:size(pind,1),:), ... | ||
95 | log_rad, Xrcos, Yrcos, angle, nbands, levs, bands); | ||
96 | end | ||
97 | |||
98 | lo0mask = pointOp(log_rad, YIrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); | ||
99 | resdft = resdft .* lo0mask; | ||
100 | |||
101 | %% residual highpass subband | ||
102 | if any(levs == 0) | ||
103 | hi0mask = pointOp(log_rad, Yrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); | ||
104 | hidft = fftshift(fft2(subMtx(pyr, pind(1,:)))); | ||
105 | resdft = resdft + hidft .* hi0mask; | ||
106 | end | ||
107 | |||
108 | res = real(ifft2(ifftshift(resdft))); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/reconSFpyrLevs.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/reconSFpyrLevs.m new file mode 100755 index 0000000..420f278 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/reconSFpyrLevs.m | |||
@@ -0,0 +1,69 @@ | |||
1 | % RESDFT = reconSFpyrLevs(PYR,INDICES,LOGRAD,XRCOS,YRCOS,ANGLE,NBANDS,LEVS,BANDS) | ||
2 | % | ||
3 | % Recursive function for reconstructing levels of a steerable pyramid | ||
4 | % representation. This is called by reconSFpyr, and is not usually | ||
5 | % called directly. | ||
6 | |||
7 | % Eero Simoncelli, 5/97. | ||
8 | |||
9 | function resdft = reconSFpyrLevs(pyr,pind,log_rad,Xrcos,Yrcos,angle,nbands,levs,bands); | ||
10 | |||
11 | lo_ind = nbands+1; | ||
12 | dims = pind(1,:); | ||
13 | ctr = ceil((dims+0.5)/2); | ||
14 | |||
15 | % log_rad = log_rad + 1; | ||
16 | Xrcos = Xrcos - log2(2); % shift origin of lut by 1 octave. | ||
17 | |||
18 | if any(levs > 1) | ||
19 | |||
20 | lodims = ceil((dims-0.5)/2); | ||
21 | loctr = ceil((lodims+0.5)/2); | ||
22 | lostart = ctr-loctr+1; | ||
23 | loend = lostart+lodims-1; | ||
24 | nlog_rad = log_rad(lostart(1):loend(1),lostart(2):loend(2)); | ||
25 | nangle = angle(lostart(1):loend(1),lostart(2):loend(2)); | ||
26 | |||
27 | if (size(pind,1) > lo_ind) | ||
28 | nresdft = reconSFpyrLevs( pyr(1+sum(prod(pind(1:lo_ind-1,:)')):size(pyr,1)),... | ||
29 | pind(lo_ind:size(pind,1),:), ... | ||
30 | nlog_rad, Xrcos, Yrcos, nangle, nbands,levs-1, bands); | ||
31 | else | ||
32 | nresdft = fftshift(fft2(pyrBand(pyr,pind,lo_ind))); | ||
33 | end | ||
34 | |||
35 | YIrcos = sqrt(abs(1.0 - Yrcos.^2)); | ||
36 | lomask = pointOp(nlog_rad, YIrcos, Xrcos(1), Xrcos(2)-Xrcos(1), 0); | ||
37 | |||
38 | resdft = zeros(dims); | ||
39 | resdft(lostart(1):loend(1),lostart(2):loend(2)) = nresdft .* lomask; | ||
40 | |||
41 | else | ||
42 | |||
43 | resdft = zeros(dims); | ||
44 | |||
45 | end | ||
46 | |||
47 | |||
48 | if any(levs == 1) | ||
49 | |||
50 | lutsize = 1024; | ||
51 | Xcosn = pi*[-(2*lutsize+1):(lutsize+1)]/lutsize; % [-2*pi:pi] | ||
52 | order = nbands-1; | ||
53 | %% divide by sqrt(sum_(n=0)^(N-1) cos(pi*n/N)^(2(N-1)) ) | ||
54 | const = (2^(2*order))*(factorial(order)^2)/(nbands*factorial(2*order)); | ||
55 | Ycosn = sqrt(const) * (cos(Xcosn)).^order; | ||
56 | himask = pointOp(log_rad, Yrcos, Xrcos(1), Xrcos(2)-Xrcos(1),0); | ||
57 | |||
58 | ind = 1; | ||
59 | for b = 1:nbands | ||
60 | if any(bands == b) | ||
61 | anglemask = pointOp(angle,Ycosn,Xcosn(1)+pi*(b-1)/nbands,Xcosn(2)-Xcosn(1)); | ||
62 | band = reshape(pyr(ind:ind+prod(dims)-1), dims(1), dims(2)); | ||
63 | banddft = fftshift(fft2(band)); | ||
64 | resdft = resdft + (sqrt(-1))^(nbands-1) * banddft.*anglemask.*himask; | ||
65 | end | ||
66 | ind = ind + prod(dims); | ||
67 | end | ||
68 | end | ||
69 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/reconSpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/reconSpyr.m new file mode 100755 index 0000000..270009d --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/reconSpyr.m | |||
@@ -0,0 +1,96 @@ | |||
1 | % RES = reconSpyr(PYR, INDICES, FILTFILE, EDGES, LEVS, BANDS) | ||
2 | % | ||
3 | % Reconstruct image from its steerable pyramid representation, as created | ||
4 | % by buildSpyr. | ||
5 | % | ||
6 | % PYR is a vector containing the N pyramid subbands, ordered from fine | ||
7 | % to coarse. INDICES is an Nx2 matrix containing the sizes of | ||
8 | % each subband. This is compatible with the MatLab Wavelet toolbox. | ||
9 | % | ||
10 | % FILTFILE (optional) should be a string referring to an m-file that returns | ||
11 | % the rfilters. examples: sp0Filters, sp1Filters, sp3Filters | ||
12 | % (default = 'sp1Filters'). | ||
13 | % EDGES specifies edge-handling, and defaults to 'reflect1' (see | ||
14 | % corrDn). | ||
15 | % | ||
16 | % LEVS (optional) should be a list of levels to include, or the string | ||
17 | % 'all' (default). 0 corresonds to the residual highpass subband. | ||
18 | % 1 corresponds to the finest oriented scale. The lowpass band | ||
19 | % corresponds to number spyrHt(INDICES)+1. | ||
20 | % | ||
21 | % BANDS (optional) should be a list of bands to include, or the string | ||
22 | % 'all' (default). 1 = vertical, rest proceeding anti-clockwise. | ||
23 | |||
24 | % Eero Simoncelli, 6/96. | ||
25 | |||
26 | function res = reconSpyr(pyr, pind, filtfile, edges, levs, bands) | ||
27 | |||
28 | %%------------------------------------------------------------ | ||
29 | %% DEFAULTS: | ||
30 | |||
31 | if (exist('filtfile') ~= 1) | ||
32 | filtfile = 'sp1Filters'; | ||
33 | end | ||
34 | |||
35 | if (exist('edges') ~= 1) | ||
36 | edges= 'reflect1'; | ||
37 | end | ||
38 | |||
39 | if (exist('levs') ~= 1) | ||
40 | levs = 'all'; | ||
41 | end | ||
42 | |||
43 | if (exist('bands') ~= 1) | ||
44 | bands = 'all'; | ||
45 | end | ||
46 | |||
47 | %%------------------------------------------------------------ | ||
48 | |||
49 | if (isstr(filtfile) & (exist(filtfile) == 2)) | ||
50 | [lo0filt,hi0filt,lofilt,bfilts,steermtx,harmonics] = eval(filtfile); | ||
51 | nbands = spyrNumBands(pind); | ||
52 | if ((nbands > 0) & (size(bfilts,2) ~= nbands)) | ||
53 | error('Number of pyramid bands is inconsistent with filter file'); | ||
54 | end | ||
55 | else | ||
56 | error('filtfile argument must be the name of an M-file containing SPYR filters.'); | ||
57 | end | ||
58 | |||
59 | maxLev = 1+spyrHt(pind); | ||
60 | if strcmp(levs,'all') | ||
61 | levs = [0:maxLev]'; | ||
62 | else | ||
63 | if (any(levs > maxLev) | any(levs < 0)) | ||
64 | error(sprintf('Level numbers must be in the range [0, %d].', maxLev)); | ||
65 | end | ||
66 | levs = levs(:); | ||
67 | end | ||
68 | |||
69 | if strcmp(bands,'all') | ||
70 | bands = [1:nbands]'; | ||
71 | else | ||
72 | if (any(bands < 1) | any(bands > nbands)) | ||
73 | error(sprintf('Band numbers must be in the range [1,3].', nbands)); | ||
74 | end | ||
75 | bands = bands(:); | ||
76 | end | ||
77 | |||
78 | if (spyrHt(pind) == 0) | ||
79 | if (any(levs==1)) | ||
80 | res1 = pyrBand(pyr,pind,2); | ||
81 | else | ||
82 | res1 = zeros(pind(2,:)); | ||
83 | end | ||
84 | else | ||
85 | res1 = reconSpyrLevs(pyr(1+prod(pind(1,:)):size(pyr,1)), ... | ||
86 | pind(2:size(pind,1),:), ... | ||
87 | lofilt, bfilts, edges, levs, bands); | ||
88 | end | ||
89 | |||
90 | res = upConv(res1, lo0filt, edges); | ||
91 | |||
92 | %% residual highpass subband | ||
93 | if any(levs == 0) | ||
94 | upConv( subMtx(pyr, pind(1,:)), hi0filt, edges, [1 1], [1 1], size(res), res); | ||
95 | end | ||
96 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/reconSpyrLevs.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/reconSpyrLevs.m new file mode 100755 index 0000000..f8e456c --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/reconSpyrLevs.m | |||
@@ -0,0 +1,46 @@ | |||
1 | % RES = reconSpyrLevs(PYR,INDICES,LOFILT,BFILTS,EDGES,LEVS,BANDS) | ||
2 | % | ||
3 | % Recursive function for reconstructing levels of a steerable pyramid | ||
4 | % representation. This is called by reconSpyr, and is not usually | ||
5 | % called directly. | ||
6 | |||
7 | % Eero Simoncelli, 6/96. | ||
8 | |||
9 | function res = reconSpyrLevs(pyr,pind,lofilt,bfilts,edges,levs,bands); | ||
10 | |||
11 | nbands = size(bfilts,2); | ||
12 | lo_ind = nbands+1; | ||
13 | res_sz = pind(1,:); | ||
14 | |||
15 | % Assume square filters: | ||
16 | bfiltsz = round(sqrt(size(bfilts,1))); | ||
17 | |||
18 | if any(levs > 1) | ||
19 | |||
20 | if (size(pind,1) > lo_ind) | ||
21 | nres = reconSpyrLevs( pyr(1+sum(prod(pind(1:lo_ind-1,:)')):size(pyr,1)), ... | ||
22 | pind(lo_ind:size(pind,1),:), ... | ||
23 | lofilt, bfilts, edges, levs-1, bands); | ||
24 | else | ||
25 | nres = pyrBand(pyr,pind,lo_ind); % lowpass subband | ||
26 | end | ||
27 | |||
28 | res = upConv(nres, lofilt, edges, [2 2], [1 1], res_sz); | ||
29 | |||
30 | else | ||
31 | |||
32 | res = zeros(res_sz); | ||
33 | |||
34 | end | ||
35 | |||
36 | if any(levs == 1) | ||
37 | ind = 1; | ||
38 | for b = 1:nbands | ||
39 | if any(bands == b) | ||
40 | bfilt = reshape(bfilts(:,b), bfiltsz, bfiltsz); | ||
41 | upConv(reshape(pyr(ind:ind+prod(res_sz)-1), res_sz(1), res_sz(2)), ... | ||
42 | bfilt, edges, [1 1], [1 1], res_sz, res); | ||
43 | end | ||
44 | ind = ind + prod(res_sz); | ||
45 | end | ||
46 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/reconWpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/reconWpyr.m new file mode 100755 index 0000000..fc31226 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/reconWpyr.m | |||
@@ -0,0 +1,148 @@ | |||
1 | % RES = reconWpyr(PYR, INDICES, FILT, EDGES, LEVS, BANDS) | ||
2 | % | ||
3 | % Reconstruct image from its separable orthonormal QMF/wavelet pyramid | ||
4 | % representation, as created by buildWpyr. | ||
5 | % | ||
6 | % PYR is a vector containing the N pyramid subbands, ordered from fine | ||
7 | % to coarse. INDICES is an Nx2 matrix containing the sizes of | ||
8 | % each subband. This is compatible with the MatLab Wavelet toolbox. | ||
9 | % | ||
10 | % FILT (optional) can be a string naming a standard filter (see | ||
11 | % namedFilter), or a vector which will be used for (separable) | ||
12 | % convolution. Default = 'qmf9'. EDGES specifies edge-handling, | ||
13 | % and defaults to 'reflect1' (see corrDn). | ||
14 | % | ||
15 | % LEVS (optional) should be a vector of levels to include, or the string | ||
16 | % 'all' (default). 1 corresponds to the finest scale. The lowpass band | ||
17 | % corresponds to wpyrHt(INDICES)+1. | ||
18 | % | ||
19 | % BANDS (optional) should be a vector of bands to include, or the string | ||
20 | % 'all' (default). 1=horizontal, 2=vertical, 3=diagonal. This is only used | ||
21 | % for pyramids of 2D images. | ||
22 | |||
23 | % Eero Simoncelli, 6/96. | ||
24 | |||
25 | function res = reconWpyr(pyr, ind, filt, edges, levs, bands) | ||
26 | |||
27 | if (nargin < 2) | ||
28 | error('First two arguments (PYR INDICES) are required'); | ||
29 | end | ||
30 | |||
31 | %%------------------------------------------------------------ | ||
32 | %% OPTIONAL ARGS: | ||
33 | |||
34 | if (exist('filt') ~= 1) | ||
35 | filt = 'qmf9'; | ||
36 | end | ||
37 | |||
38 | if (exist('edges') ~= 1) | ||
39 | edges= 'reflect1'; | ||
40 | end | ||
41 | |||
42 | if (exist('levs') ~= 1) | ||
43 | levs = 'all'; | ||
44 | end | ||
45 | |||
46 | if (exist('bands') ~= 1) | ||
47 | bands = 'all'; | ||
48 | end | ||
49 | |||
50 | %%------------------------------------------------------------ | ||
51 | |||
52 | maxLev = 1+wpyrHt(ind); | ||
53 | if strcmp(levs,'all') | ||
54 | levs = [1:maxLev]'; | ||
55 | else | ||
56 | if (any(levs > maxLev)) | ||
57 | error(sprintf('Level numbers must be in the range [1, %d].', maxLev)); | ||
58 | end | ||
59 | levs = levs(:); | ||
60 | end | ||
61 | |||
62 | if strcmp(bands,'all') | ||
63 | bands = [1:3]'; | ||
64 | else | ||
65 | if (any(bands < 1) | any(bands > 3)) | ||
66 | error('Band numbers must be in the range [1,3].'); | ||
67 | end | ||
68 | bands = bands(:); | ||
69 | end | ||
70 | |||
71 | if isstr(filt) | ||
72 | filt = namedFilter(filt); | ||
73 | end | ||
74 | |||
75 | filt = filt(:); | ||
76 | hfilt = modulateFlip(filt); | ||
77 | |||
78 | %% For odd-length filters, stagger the sampling lattices: | ||
79 | if (mod(size(filt,1),2) == 0) | ||
80 | stag = 2; | ||
81 | else | ||
82 | stag = 1; | ||
83 | end | ||
84 | |||
85 | %% Compute size of result image: assumes critical sampling (boundaries correct) | ||
86 | res_sz = ind(1,:); | ||
87 | if (res_sz(1) == 1) | ||
88 | loind = 2; | ||
89 | res_sz(2) = sum(ind(:,2)); | ||
90 | elseif (res_sz(2) == 1) | ||
91 | loind = 2; | ||
92 | res_sz(1) = sum(ind(:,1)); | ||
93 | else | ||
94 | loind = 4; | ||
95 | res_sz = ind(1,:) + ind(2,:); %%horizontal + vertical bands. | ||
96 | hres_sz = [ind(1,1), res_sz(2)]; | ||
97 | lres_sz = [ind(2,1), res_sz(2)]; | ||
98 | end | ||
99 | |||
100 | |||
101 | %% First, recursively collapse coarser scales: | ||
102 | if any(levs > 1) | ||
103 | |||
104 | if (size(ind,1) > loind) | ||
105 | nres = reconWpyr( pyr(1+sum(prod(ind(1:loind-1,:)')):size(pyr,1)), ... | ||
106 | ind(loind:size(ind,1),:), filt, edges, levs-1, bands); | ||
107 | else | ||
108 | nres = pyrBand(pyr, ind, loind); % lowpass subband | ||
109 | end | ||
110 | |||
111 | if (res_sz(1) == 1) | ||
112 | res = upConv(nres, filt', edges, [1 2], [1 stag], res_sz); | ||
113 | elseif (res_sz(2) == 1) | ||
114 | res = upConv(nres, filt, edges, [2 1], [stag 1], res_sz); | ||
115 | else | ||
116 | ires = upConv(nres, filt', edges, [1 2], [1 stag], lres_sz); | ||
117 | res = upConv(ires, filt, edges, [2 1], [stag 1], res_sz); | ||
118 | end | ||
119 | |||
120 | else | ||
121 | |||
122 | res = zeros(res_sz); | ||
123 | |||
124 | end | ||
125 | |||
126 | |||
127 | %% Add in reconstructed bands from this level: | ||
128 | if any(levs == 1) | ||
129 | if (res_sz(1) == 1) | ||
130 | upConv(pyrBand(pyr,ind,1), hfilt', edges, [1 2], [1 2], res_sz, res); | ||
131 | elseif (res_sz(2) == 1) | ||
132 | upConv(pyrBand(pyr,ind,1), hfilt, edges, [2 1], [2 1], res_sz, res); | ||
133 | else | ||
134 | if any(bands == 1) % horizontal | ||
135 | ires = upConv(pyrBand(pyr,ind,1),filt',edges,[1 2],[1 stag],hres_sz); | ||
136 | upConv(ires,hfilt,edges,[2 1],[2 1],res_sz,res); %destructively modify res | ||
137 | end | ||
138 | if any(bands == 2) % vertical | ||
139 | ires = upConv(pyrBand(pyr,ind,2),hfilt',edges,[1 2],[1 2],lres_sz); | ||
140 | upConv(ires,filt,edges,[2 1],[stag 1],res_sz,res); %destructively modify res | ||
141 | end | ||
142 | if any(bands == 3) % diagonal | ||
143 | ires = upConv(pyrBand(pyr,ind,3),hfilt',edges,[1 2],[1 2],hres_sz); | ||
144 | upConv(ires,hfilt,edges,[2 1],[2 1],res_sz,res); %destructively modify res | ||
145 | end | ||
146 | end | ||
147 | end | ||
148 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/setPyrBand.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/setPyrBand.m new file mode 100755 index 0000000..baa9f77 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/setPyrBand.m | |||
@@ -0,0 +1,32 @@ | |||
1 | % NEWPYR = setPyrBand(PYR, INDICES, BAND, BAND_NUM) | ||
2 | % | ||
3 | % Insert an image (BAND) into a pyramid (gaussian, laplacian, QMF/wavelet, | ||
4 | % or steerable). Subbands are numbered consecutively, from finest | ||
5 | % (highest spatial frequency) to coarsest (lowest spatial frequency). | ||
6 | |||
7 | % Eero Simoncelli, 1/03. | ||
8 | |||
9 | function pyr = pyrBand(pyr, pind, band, bandNum) | ||
10 | |||
11 | %% Check: PIND a valid index matrix? | ||
12 | if ( ~(ndims(pind) == 2) | ~(size(pind,2) == 2) | ~all(pind==round(pind)) ) | ||
13 | pind | ||
14 | error('pyrTools:badArg',... | ||
15 | 'PIND argument is not an Nbands X 2 matrix of integers'); | ||
16 | end | ||
17 | |||
18 | %% Check: PIND consistent with size of PYR? | ||
19 | if ( length(pyr) ~= sum(prod(pind,2)) ) | ||
20 | error('pyrTools:badPyr',... | ||
21 | 'Pyramid data vector length is inconsistent with index matrix PIND'); | ||
22 | end | ||
23 | |||
24 | %% Check: size of BAND consistent with desired BANDNUM? | ||
25 | if (~all(size(band) == pind(bandNum,:))) | ||
26 | size(band) | ||
27 | pind(bandNum,:) | ||
28 | error('pyrTools:badArg',... | ||
29 | 'size of BAND to be inserted is inconsistent with BAND_NUM'); | ||
30 | end | ||
31 | |||
32 | pyr(pyrBandIndices(pind,bandNum)) = vectify(band); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/shift.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/shift.m new file mode 100755 index 0000000..497297e --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/shift.m | |||
@@ -0,0 +1,15 @@ | |||
1 | % [RES] = shift(MTX, OFFSET) | ||
2 | % | ||
3 | % Circular shift 2D matrix samples by OFFSET (a [Y,X] 2-vector), | ||
4 | % such that RES(POS) = MTX(POS-OFFSET). | ||
5 | |||
6 | function res = shift(mtx, offset) | ||
7 | |||
8 | dims = size(mtx); | ||
9 | |||
10 | offset = mod(-offset,dims); | ||
11 | |||
12 | res = [ mtx(offset(1)+1:dims(1), offset(2)+1:dims(2)), ... | ||
13 | mtx(offset(1)+1:dims(1), 1:offset(2)); ... | ||
14 | mtx(1:offset(1), offset(2)+1:dims(2)), ... | ||
15 | mtx(1:offset(1), 1:offset(2)) ]; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/showIm.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/showIm.m new file mode 100755 index 0000000..a9e2bd1 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/showIm.m | |||
@@ -0,0 +1,221 @@ | |||
1 | % RANGE = showIm (MATRIX, RANGE, ZOOM, LABEL, NSHADES ) | ||
2 | % | ||
3 | % Display a MatLab MATRIX as a grayscale image in the current figure, | ||
4 | % inside the current axes. If MATRIX is complex, the real and imaginary | ||
5 | % parts are shown side-by-side, with the same grayscale mapping. | ||
6 | % | ||
7 | % If MATRIX is a string, it should be the name of a variable bound to a | ||
8 | % MATRIX in the base (global) environment. This matrix is displayed as an | ||
9 | % image, with the title set to the string. | ||
10 | % | ||
11 | % RANGE (optional) is a 2-vector specifying the values that map to | ||
12 | % black and white, respectively. Passing a value of 'auto' (default) | ||
13 | % sets RANGE=[min,max] (as in MatLab's imagesc). 'auto2' sets | ||
14 | % RANGE=[mean-2*stdev, mean+2*stdev]. 'auto3' sets | ||
15 | % RANGE=[p1-(p2-p1)/8, p2+(p2-p1)/8], where p1 is the 10th percentile | ||
16 | % value of the sorted MATRIX samples, and p2 is the 90th percentile | ||
17 | % value. | ||
18 | % | ||
19 | % ZOOM specifies the number of matrix samples per screen pixel. It | ||
20 | % will be rounded to an integer, or 1 divided by an integer. A value | ||
21 | % of 'same' or 'auto' (default) causes the zoom value to be chosen | ||
22 | % automatically to fit the image into the current axes. A value of | ||
23 | % 'full' fills the axis region (leaving no room for labels). See | ||
24 | % pixelAxes.m. | ||
25 | % | ||
26 | % If LABEL (optional, default = 1, unless zoom='full') is non-zero, the range | ||
27 | % of values that are mapped into the gray colormap and the dimensions | ||
28 | % (size) of the matrix and zoom factor are printed below the image. If label | ||
29 | % is a string, it is used as a title. | ||
30 | % | ||
31 | % NSHADES (optional) specifies the number of gray shades, and defaults | ||
32 | % to the size of the current colormap. | ||
33 | |||
34 | % Eero Simoncelli, 6/96. | ||
35 | |||
36 | %%TODO: should use "newplot" | ||
37 | |||
38 | function range = showIm( im, range, zoom, label, nshades ); | ||
39 | |||
40 | %------------------------------------------------------------ | ||
41 | %% OPTIONAL ARGS: | ||
42 | |||
43 | if (nargin < 1) | ||
44 | error('Requires at least one input argument.'); | ||
45 | end | ||
46 | |||
47 | MLv = version; | ||
48 | |||
49 | if isstr(im) | ||
50 | if (strcmp(MLv(1),'4')) | ||
51 | error('Cannot pass string arg for MATRIX in MatLab version 4.x'); | ||
52 | end | ||
53 | label = im; | ||
54 | im = evalin('base',im); | ||
55 | end | ||
56 | |||
57 | if (exist('range') ~= 1) | ||
58 | range = 'auto1'; | ||
59 | end | ||
60 | |||
61 | if (exist('nshades') ~= 1) | ||
62 | nshades = size(colormap,1); | ||
63 | end | ||
64 | nshades = max( nshades, 2 ); | ||
65 | |||
66 | if (exist('zoom') ~= 1) | ||
67 | zoom = 'auto'; | ||
68 | end | ||
69 | |||
70 | if (exist('label') ~= 1) | ||
71 | if strcmp(zoom,'full') | ||
72 | label = 0; % no labeling | ||
73 | else | ||
74 | label = 1; % just print grayrange & dims | ||
75 | end | ||
76 | end | ||
77 | |||
78 | %------------------------------------------------------------ | ||
79 | |||
80 | %% Automatic range calculation: | ||
81 | if (strcmp(range,'auto1') | strcmp(range,'auto')) | ||
82 | if isreal(im) | ||
83 | [mn,mx] = range2(im); | ||
84 | else | ||
85 | [mn1,mx1] = range2(real(im)); | ||
86 | [mn2,mx2] = range2(imag(im)); | ||
87 | mn = min(mn1,mn2); | ||
88 | mx = max(mx1,mx2); | ||
89 | end | ||
90 | if any(size(im)==1) | ||
91 | pad = (mx-mn)/12; % MAGIC NUMBER: graph padding | ||
92 | range = [mn-pad, mx+pad]; | ||
93 | else | ||
94 | range = [mn,mx]; | ||
95 | end | ||
96 | |||
97 | elseif strcmp(range,'auto2') | ||
98 | if isreal(im) | ||
99 | stdev = sqrt(var2(im)); | ||
100 | av = mean2(im); | ||
101 | else | ||
102 | stdev = sqrt((var2(real(im)) + var2(imag(im)))/2); | ||
103 | av = (mean2(real(im)) + mean2(imag(im)))/2; | ||
104 | end | ||
105 | range = [av-2*stdev,av+2*stdev]; % MAGIC NUMBER: 2 stdevs | ||
106 | |||
107 | elseif strcmp(range, 'auto3') | ||
108 | percentile = 0.1; % MAGIC NUMBER: 0<p<0.5 | ||
109 | [N,X] = histo(im); | ||
110 | binsz = X(2)-X(1); | ||
111 | N = N+1e-10; % Ensure cumsum will be monotonic for call to interp1 | ||
112 | cumN = [0, cumsum(N)]/sum(N); | ||
113 | cumX = [X(1)-binsz, X] + (binsz/2); | ||
114 | ctrRange = interp1(cumN,cumX, [percentile, 1-percentile]); | ||
115 | range = mean(ctrRange) + (ctrRange-mean(ctrRange))/(1-2*percentile); | ||
116 | |||
117 | elseif isstr(range) | ||
118 | error(sprintf('Bad RANGE argument: %s',range)) | ||
119 | |||
120 | end | ||
121 | |||
122 | if ((range(2) - range(1)) <= eps) | ||
123 | range(1) = range(1) - 0.5; | ||
124 | range(2) = range(2) + 0.5; | ||
125 | end | ||
126 | |||
127 | |||
128 | if isreal(im) | ||
129 | factor=1; | ||
130 | else | ||
131 | factor = 1+sqrt(-1); | ||
132 | end | ||
133 | |||
134 | xlbl_offset = 0; % default value | ||
135 | |||
136 | if (~any(size(im)==1)) | ||
137 | %% MatLab's "image" rounds when mapping to the colormap, so we compute | ||
138 | %% (im-r1)*(nshades-1)/(r2-r1) + 1.5 | ||
139 | mult = ((nshades-1) / (range(2)-range(1))); | ||
140 | d_im = (mult * im) + factor*(1.5 - range(1)*mult); | ||
141 | end | ||
142 | |||
143 | if isreal(im) | ||
144 | if (any(size(im)==1)) | ||
145 | hh = plot( im); | ||
146 | axis([1, prod(size(im)), range]); | ||
147 | else | ||
148 | hh = image( d_im ); | ||
149 | axis('off'); | ||
150 | zoom = pixelAxes(size(d_im),zoom); | ||
151 | end | ||
152 | else | ||
153 | if (any(size(im)==1)) | ||
154 | subplot(2,1,1); | ||
155 | hh = plot(real(im)); | ||
156 | axis([1, prod(size(im)), range]); | ||
157 | subplot(2,1,2); | ||
158 | hh = plot(imag(im)); | ||
159 | axis([1, prod(size(im)), range]); | ||
160 | else | ||
161 | subplot(1,2,1); | ||
162 | hh = image(real(d_im)); | ||
163 | axis('off'); zoom = pixelAxes(size(d_im),zoom); | ||
164 | ax = gca; orig_units = get(ax,'Units'); | ||
165 | set(ax,'Units','points'); | ||
166 | pos1 = get(ax,'Position'); | ||
167 | set(ax,'Units',orig_units); | ||
168 | subplot(1,2,2); | ||
169 | hh = image(imag(d_im)); | ||
170 | axis('off'); zoom = pixelAxes(size(d_im),zoom); | ||
171 | ax = gca; orig_units = get(ax,'Units'); | ||
172 | set(ax,'Units','points'); | ||
173 | pos2 = get(ax,'Position'); | ||
174 | set(ax,'Units',orig_units); | ||
175 | xlbl_offset = (pos1(1)-pos2(1))/2; | ||
176 | end | ||
177 | end | ||
178 | |||
179 | if ~any(size(im)==1) | ||
180 | colormap(gray(nshades)); | ||
181 | end | ||
182 | |||
183 | if ((label ~= 0)) | ||
184 | if isstr(label) | ||
185 | title(label); | ||
186 | h = get(gca,'Title'); | ||
187 | orig_units = get(h,'Units'); | ||
188 | set(h,'Units','points'); | ||
189 | pos = get(h,'Position'); | ||
190 | pos(1:2) = pos(1:2) + [xlbl_offset, -3]; % MAGIC NUMBER: y pixel offset | ||
191 | set(h,'Position',pos); | ||
192 | set(h,'Units',orig_units); | ||
193 | end | ||
194 | |||
195 | if (~any(size(im)==1)) | ||
196 | if (zoom > 1) | ||
197 | zformat = sprintf('* %d',round(zoom)); | ||
198 | else | ||
199 | zformat = sprintf('/ %d',round(1/zoom)); | ||
200 | end | ||
201 | if isreal(im) | ||
202 | format=[' Range: [%.3g, %.3g] \n Dims: [%d, %d] ', zformat]; | ||
203 | else | ||
204 | format=['Range: [%.3g, %.3g] ---- Dims: [%d, %d]', zformat]; | ||
205 | end | ||
206 | xlabel(sprintf(format, range(1), range(2), size(im,1), size(im,2))); | ||
207 | h = get(gca,'Xlabel'); | ||
208 | set(h,'FontSize', 9); % MAGIC NUMBER: font size!!! | ||
209 | |||
210 | orig_units = get(h,'Units'); | ||
211 | set(h,'Units','points'); | ||
212 | pos = get(h,'Position'); | ||
213 | pos(1:2) = pos(1:2) + [xlbl_offset, 10]; % MAGIC NUMBER: y offset in points | ||
214 | set(h,'Position',pos); | ||
215 | set(h,'Units',orig_units); | ||
216 | |||
217 | set(h,'Visible','on'); % axis('image') turned the xlabel off... | ||
218 | end | ||
219 | end | ||
220 | |||
221 | return; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/showLpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/showLpyr.m new file mode 100755 index 0000000..0d85f9d --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/showLpyr.m | |||
@@ -0,0 +1,202 @@ | |||
1 | % RANGE = showLpyr (PYR, INDICES, RANGE, GAP, LEVEL_SCALE_FACTOR) | ||
2 | % | ||
3 | % Display a Laplacian (or Gaussian) pyramid, specified by PYR and | ||
4 | % INDICES (see buildLpyr), in the current figure. | ||
5 | % | ||
6 | % RANGE is a 2-vector specifying the values that map to black and | ||
7 | % white, respectively. These values are scaled by | ||
8 | % LEVEL_SCALE_FACTOR^(lev-1) for bands at each level. Passing a value | ||
9 | % of 'auto1' sets RANGE to the min and max values of MATRIX. 'auto2' | ||
10 | % sets RANGE to 3 standard deviations below and above 0.0. In both of | ||
11 | % these cases, the lowpass band is independently scaled. A value of | ||
12 | % 'indep1' sets the range of each subband independently, as in a call | ||
13 | % to showIm(subband,'auto1'). Similarly, 'indep2' causes each subband | ||
14 | % to be scaled independently as if by showIm(subband,'indep2'). | ||
15 | % The default value for RANGE is 'auto1' for 1D images, and 'auto2' for | ||
16 | % 2D images. | ||
17 | % | ||
18 | % GAP (optional, default=1) specifies the gap in pixels to leave | ||
19 | % between subbands (2D images only). | ||
20 | % | ||
21 | % LEVEL_SCALE_FACTOR indicates the relative scaling between pyramid | ||
22 | % levels. This should be set to the sum of the kernel taps of the | ||
23 | % lowpass filter used to construct the pyramid (default assumes | ||
24 | % L2-normalalized filters, using a value of 2 for 2D images, sqrt(2) for | ||
25 | % 1D images). | ||
26 | |||
27 | % Eero Simoncelli, 2/97. | ||
28 | |||
29 | function [range] = showLpyr(pyr, pind, range, gap, scale); | ||
30 | |||
31 | % Determine 1D or 2D pyramid: | ||
32 | if ((pind(1,1) == 1) | (pind(1,2) ==1)) | ||
33 | oned = 1; | ||
34 | else | ||
35 | oned = 0; | ||
36 | end | ||
37 | |||
38 | %------------------------------------------------------------ | ||
39 | %% OPTIONAL ARGS: | ||
40 | |||
41 | if (exist('range') ~= 1) | ||
42 | if (oned==1) | ||
43 | range = 'auto1'; | ||
44 | else | ||
45 | range = 'auto2'; | ||
46 | end | ||
47 | end | ||
48 | |||
49 | if (exist('gap') ~= 1) | ||
50 | gap = 1; | ||
51 | end | ||
52 | |||
53 | if (exist('scale') ~= 1) | ||
54 | if (oned == 1) | ||
55 | scale = sqrt(2); | ||
56 | else | ||
57 | scale = 2; | ||
58 | end | ||
59 | end | ||
60 | |||
61 | %------------------------------------------------------------ | ||
62 | |||
63 | nind = size(pind,1); | ||
64 | |||
65 | %% Auto range calculations: | ||
66 | if strcmp(range,'auto1') | ||
67 | range = zeros(nind,1); | ||
68 | mn = 0.0; mx = 0.0; | ||
69 | for bnum = 1:(nind-1) | ||
70 | band = pyrBand(pyr,pind,bnum)/(scale^(bnum-1)); | ||
71 | range(bnum) = scale^(bnum-1); | ||
72 | [bmn,bmx] = range2(band); | ||
73 | mn = min(mn, bmn); mx = max(mx, bmx); | ||
74 | end | ||
75 | if (oned == 1) | ||
76 | pad = (mx-mn)/12; % *** MAGIC NUMBER!! | ||
77 | mn = mn-pad; mx = mx+pad; | ||
78 | end | ||
79 | range = range * [mn mx]; % outer product | ||
80 | band = pyrLow(pyr,pind); | ||
81 | [mn,mx] = range2(band); | ||
82 | if (oned == 1) | ||
83 | pad = (mx-mn)/12; % *** MAGIC NUMBER!! | ||
84 | mn = mn-pad; mx = mx+pad; | ||
85 | end | ||
86 | range(nind,:) = [mn, mx]; | ||
87 | |||
88 | elseif strcmp(range,'indep1') | ||
89 | range = zeros(nind,2); | ||
90 | for bnum = 1:nind | ||
91 | band = pyrBand(pyr,pind,bnum); | ||
92 | [mn,mx] = range2(band); | ||
93 | if (oned == 1) | ||
94 | pad = (mx-mn)/12; % *** MAGIC NUMBER!! | ||
95 | mn = mn-pad; mx = mx+pad; | ||
96 | end | ||
97 | range(bnum,:) = [mn mx]; | ||
98 | end | ||
99 | |||
100 | elseif strcmp(range,'auto2') | ||
101 | range = zeros(nind,1); | ||
102 | sqsum = 0; numpixels = 0; | ||
103 | for bnum = 1:(nind-1) | ||
104 | band = pyrBand(pyr,pind,bnum)/(scale^(bnum-1)); | ||
105 | sqsum = sqsum + sum(sum(band.^2)); | ||
106 | numpixels = numpixels + prod(size(band)); | ||
107 | range(bnum) = scale^(bnum-1); | ||
108 | end | ||
109 | stdev = sqrt(sqsum/(numpixels-1)); | ||
110 | range = range * [ -3*stdev 3*stdev ]; % outer product | ||
111 | band = pyrLow(pyr,pind); | ||
112 | av = mean2(band); stdev = sqrt(var2(band)); | ||
113 | range(nind,:) = [av-2*stdev,av+2*stdev]; | ||
114 | |||
115 | elseif strcmp(range,'indep2') | ||
116 | range = zeros(nind,2); | ||
117 | for bnum = 1:(nind-1) | ||
118 | band = pyrBand(pyr,pind,bnum); | ||
119 | stdev = sqrt(var2(band)); | ||
120 | range(bnum,:) = [ -3*stdev 3*stdev ]; | ||
121 | end | ||
122 | band = pyrLow(pyr,pind); | ||
123 | av = mean2(band); stdev = sqrt(var2(band)); | ||
124 | range(nind,:) = [av-2*stdev,av+2*stdev]; | ||
125 | |||
126 | elseif isstr(range) | ||
127 | error(sprintf('Bad RANGE argument: %s',range)) | ||
128 | |||
129 | elseif ((size(range,1) == 1) & (size(range,2) == 2)) | ||
130 | scales = scale.^[0:nind-1]; | ||
131 | range = scales(:) * range; % outer product | ||
132 | band = pyrLow(pyr,pind); | ||
133 | range(nind,:) = range(nind,:) + mean2(band) - mean(range(nind,:)); | ||
134 | |||
135 | end | ||
136 | |||
137 | %% Clear Figure | ||
138 | clf; | ||
139 | |||
140 | if (oned == 1) | ||
141 | |||
142 | %%%%% 1D signal: | ||
143 | for bnum=1:nind | ||
144 | band = pyrBand(pyr,pind,bnum); | ||
145 | subplot(nind,1,nind-bnum+1); | ||
146 | plot(band); | ||
147 | axis([1, prod(size(band)), range(bnum,:)]); | ||
148 | end | ||
149 | |||
150 | else | ||
151 | |||
152 | %%%%% 2D signal: | ||
153 | colormap(gray); | ||
154 | cmap = get(gcf,'Colormap'); | ||
155 | nshades = size(cmap,1); | ||
156 | |||
157 | % Find background color index: | ||
158 | clr = get(gcf,'Color'); | ||
159 | bg = 1; | ||
160 | dist = norm(cmap(bg,:)-clr); | ||
161 | for n = 1:nshades | ||
162 | ndist = norm(cmap(n,:)-clr); | ||
163 | if (ndist < dist) | ||
164 | dist = ndist; | ||
165 | bg = n; | ||
166 | end | ||
167 | end | ||
168 | |||
169 | %% Compute positions of subbands: | ||
170 | llpos = ones(nind,2); | ||
171 | dir = [-1 -1]; | ||
172 | ctr = [pind(1,1)+1+gap 1]; | ||
173 | sz = [0 0]; | ||
174 | for bnum = 1:nind | ||
175 | prevsz = sz; | ||
176 | sz = pind(bnum,:); | ||
177 | |||
178 | % Determine center position of new band: | ||
179 | ctr = ctr + gap*dir/2 + dir.* floor((prevsz+(dir>0))/2); | ||
180 | dir = dir * [0 -1; 1 0]; % ccw rotation | ||
181 | ctr = ctr + gap*dir/2 + dir.* floor((sz+(dir<0))/2); | ||
182 | llpos(bnum,:) = ctr - floor(sz./2); | ||
183 | end | ||
184 | |||
185 | %% Make position list positive, and allocate appropriate image: | ||
186 | llpos = llpos - ones(nind,1)*min(llpos) + 1; | ||
187 | urpos = llpos + pind - 1; | ||
188 | d_im = bg + zeros(max(urpos)); | ||
189 | |||
190 | %% Paste bands into image, (im-r1)*(nshades-1)/(r2-r1) + 1.5 | ||
191 | for bnum=1:nind | ||
192 | mult = (nshades-1) / (range(bnum,2)-range(bnum,1)); | ||
193 | d_im(llpos(bnum,1):urpos(bnum,1), llpos(bnum,2):urpos(bnum,2)) = ... | ||
194 | mult*pyrBand(pyr,pind,bnum) + (1.5-mult*range(bnum,1)); | ||
195 | end | ||
196 | |||
197 | hh = image(d_im); | ||
198 | axis('off'); | ||
199 | pixelAxes(size(d_im),'full'); | ||
200 | set(hh,'UserData',range); | ||
201 | |||
202 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/showSpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/showSpyr.m new file mode 100755 index 0000000..da85715 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/showSpyr.m | |||
@@ -0,0 +1,188 @@ | |||
1 | % RANGE = showSpyr (PYR, INDICES, RANGE, GAP, LEVEL_SCALE_FACTOR) | ||
2 | % | ||
3 | % Display a steerable pyramid, specified by PYR and INDICES | ||
4 | % (see buildSpyr), in the current figure. The highpass band is not shown. | ||
5 | % | ||
6 | % RANGE is a 2-vector specifying the values that map to black and | ||
7 | % white, respectively. These values are scaled by | ||
8 | % LEVEL_SCALE_FACTOR^(lev-1) for bands at each level. Passing a value | ||
9 | % of 'auto1' sets RANGE to the min and max values of MATRIX. 'auto2' | ||
10 | % sets RANGE to 3 standard deviations below and above 0.0. In both of | ||
11 | % these cases, the lowpass band is independently scaled. A value of | ||
12 | % 'indep1' sets the range of each subband independently, as in a call | ||
13 | % to showIm(subband,'auto1'). Similarly, 'indep2' causes each subband | ||
14 | % to be scaled independently as if by showIm(subband,'indep2'). | ||
15 | % The default value for RANGE is 'auto2'. | ||
16 | % | ||
17 | % GAP (optional, default=1) specifies the gap in pixels to leave | ||
18 | % between subbands. | ||
19 | % | ||
20 | % LEVEL_SCALE_FACTOR indicates the relative scaling between pyramid | ||
21 | % levels. This should be set to the sum of the kernel taps of the | ||
22 | % lowpass filter used to construct the pyramid (default is 2, which is | ||
23 | % correct for L2-normalized filters. | ||
24 | |||
25 | % Eero Simoncelli, 2/97. | ||
26 | |||
27 | function [range] = showSpyr(pyr, pind, range, gap, scale); | ||
28 | |||
29 | nbands = spyrNumBands(pind); | ||
30 | |||
31 | %------------------------------------------------------------ | ||
32 | %% OPTIONAL ARGS: | ||
33 | |||
34 | if (exist('range') ~= 1) | ||
35 | range = 'auto2'; | ||
36 | end | ||
37 | |||
38 | if (exist('gap') ~= 1) | ||
39 | gap = 1; | ||
40 | end | ||
41 | |||
42 | if (exist('scale') ~= 1) | ||
43 | scale = 2; | ||
44 | end | ||
45 | |||
46 | %------------------------------------------------------------ | ||
47 | |||
48 | ht = spyrHt(pind); | ||
49 | nind = size(pind,1); | ||
50 | |||
51 | %% Auto range calculations: | ||
52 | if strcmp(range,'auto1') | ||
53 | range = ones(nind,1); | ||
54 | band = spyrHigh(pyr,pind); | ||
55 | [mn,mx] = range2(band); | ||
56 | for lnum = 1:ht | ||
57 | for bnum = 1:nbands | ||
58 | band = spyrBand(pyr,pind,lnum,bnum)/(scale^(lnum-1)); | ||
59 | range((lnum-1)*nbands+bnum+1) = scale^(lnum-1); | ||
60 | [bmn,bmx] = range2(band); | ||
61 | mn = min(mn, bmn); | ||
62 | mx = max(mx, bmx); | ||
63 | end | ||
64 | end | ||
65 | range = range * [mn mx]; % outer product | ||
66 | band = pyrLow(pyr,pind); | ||
67 | [mn,mx] = range2(band); | ||
68 | range(nind,:) = [mn, mx]; | ||
69 | |||
70 | elseif strcmp(range,'indep1') | ||
71 | range = zeros(nind,2); | ||
72 | for bnum = 1:nind | ||
73 | band = pyrBand(pyr,pind,bnum); | ||
74 | [mn,mx] = range2(band); | ||
75 | range(bnum,:) = [mn mx]; | ||
76 | end | ||
77 | |||
78 | elseif strcmp(range,'auto2') | ||
79 | range = ones(nind,1); | ||
80 | band = spyrHigh(pyr,pind); | ||
81 | sqsum = sum(sum(band.^2)); numpixels = prod(size(band)); | ||
82 | for lnum = 1:ht | ||
83 | for bnum = 1:nbands | ||
84 | band = spyrBand(pyr,pind,lnum,bnum)/(scale^(lnum-1)); | ||
85 | sqsum = sqsum + sum(sum(band.^2)); | ||
86 | numpixels = numpixels + prod(size(band)); | ||
87 | range((lnum-1)*nbands+bnum+1) = scale^(lnum-1); | ||
88 | end | ||
89 | end | ||
90 | stdev = sqrt(sqsum/(numpixels-1)); | ||
91 | range = range * [ -3*stdev 3*stdev ]; % outer product | ||
92 | band = pyrLow(pyr,pind); | ||
93 | av = mean2(band); stdev = sqrt(var2(band)); | ||
94 | range(nind,:) = [av-2*stdev,av+2*stdev]; | ||
95 | |||
96 | elseif strcmp(range,'indep2') | ||
97 | range = zeros(nind,2); | ||
98 | for bnum = 1:(nind-1) | ||
99 | band = pyrBand(pyr,pind,bnum); | ||
100 | stdev = sqrt(var2(band)); | ||
101 | range(bnum,:) = [ -3*stdev 3*stdev ]; | ||
102 | end | ||
103 | band = pyrLow(pyr,pind); | ||
104 | av = mean2(band); stdev = sqrt(var2(band)); | ||
105 | range(nind,:) = [av-2*stdev,av+2*stdev]; | ||
106 | |||
107 | elseif isstr(range) | ||
108 | error(sprintf('Bad RANGE argument: %s',range)) | ||
109 | |||
110 | elseif ((size(range,1) == 1) & (size(range,2) == 2)) | ||
111 | scales = scale.^[0:(ht-1)]; | ||
112 | scales = ones(nbands,1) * scales; %outer product | ||
113 | scales = [1; scales(:); scale^ht]; %tack on highpass and lowpass | ||
114 | range = scales * range; % outer product | ||
115 | band = pyrLow(pyr,pind); | ||
116 | range(nind,:) = range(nind,:) + mean2(band) - mean(range(nind,:)); | ||
117 | |||
118 | end | ||
119 | |||
120 | % CLEAR FIGURE: | ||
121 | clf; | ||
122 | |||
123 | colormap(gray); | ||
124 | cmap = get(gcf,'Colormap'); | ||
125 | nshades = size(cmap,1); | ||
126 | |||
127 | % Find background color index: | ||
128 | clr = get(gcf,'Color'); | ||
129 | bg = 1; | ||
130 | dist = norm(cmap(bg,:)-clr); | ||
131 | for n = 1:nshades | ||
132 | ndist = norm(cmap(n,:)-clr); | ||
133 | if (ndist < dist) | ||
134 | dist = ndist; | ||
135 | bg = n; | ||
136 | end | ||
137 | end | ||
138 | |||
139 | %% Compute positions of subbands: | ||
140 | llpos = ones(nind,2); | ||
141 | |||
142 | if (nbands == 2) | ||
143 | ncols = 1; nrows = 2; | ||
144 | else | ||
145 | ncols = ceil((nbands+1)/2); nrows = ceil(nbands/2); | ||
146 | end | ||
147 | relpos = [ (1-nrows):0, zeros(1,(ncols-1)); ... | ||
148 | zeros(1,nrows), -1:-1:(1-ncols) ]'; | ||
149 | if (nbands > 1) | ||
150 | mvpos = [-1 -1]; | ||
151 | else | ||
152 | mvpos = [0 -1]; | ||
153 | end | ||
154 | basepos = [0 0]; | ||
155 | |||
156 | for lnum = 1:ht | ||
157 | ind1 = (lnum-1)*nbands + 2; | ||
158 | sz = pind(ind1,:)+gap; | ||
159 | basepos = basepos + mvpos .* sz; | ||
160 | if (nbands < 5) % to align edges... | ||
161 | sz = sz + gap*(ht-lnum+1); | ||
162 | end | ||
163 | llpos(ind1:ind1+nbands-1,:) = relpos * diag(sz) + ones(nbands,1)*basepos; | ||
164 | end | ||
165 | |||
166 | % lowpass band | ||
167 | sz = pind(nind-1,:)+gap; | ||
168 | basepos = basepos + mvpos .* sz; | ||
169 | llpos(nind,:) = basepos; | ||
170 | |||
171 | %% Make position list positive, and allocate appropriate image: | ||
172 | llpos = llpos - ones(nind,1)*min(llpos) + 1; | ||
173 | llpos(1,:) = [1 1]; | ||
174 | urpos = llpos + pind - 1; | ||
175 | d_im = bg + zeros(max(urpos)); | ||
176 | |||
177 | %% Paste bands into image, (im-r1)*(nshades-1)/(r2-r1) + 1.5 | ||
178 | for bnum=2:nind | ||
179 | mult = (nshades-1) / (range(bnum,2)-range(bnum,1)); | ||
180 | d_im(llpos(bnum,1):urpos(bnum,1), llpos(bnum,2):urpos(bnum,2)) = ... | ||
181 | mult*pyrBand(pyr,pind,bnum) + (1.5-mult*range(bnum,1)); | ||
182 | end | ||
183 | |||
184 | hh = image(d_im); | ||
185 | axis('off'); | ||
186 | pixelAxes(size(d_im),'full'); | ||
187 | set(hh,'UserData',range); | ||
188 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/showWpyr.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/showWpyr.m new file mode 100755 index 0000000..510e395 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/showWpyr.m | |||
@@ -0,0 +1,204 @@ | |||
1 | % RANGE = showWpyr (PYR, INDICES, RANGE, GAP, LEVEL_SCALE_FACTOR) | ||
2 | % | ||
3 | % Display a separable QMF/wavelet pyramid, specified by PYR and INDICES | ||
4 | % (see buildWpyr), in the current figure. | ||
5 | % | ||
6 | % RANGE is a 2-vector specifying the values that map to black and | ||
7 | % white, respectively. These values are scaled by | ||
8 | % LEVEL_SCALE_FACTOR^(lev-1) for bands at each level. Passing a value | ||
9 | % of 'auto1' sets RANGE to the min and max values of MATRIX. 'auto2' | ||
10 | % sets RANGE to 3 standard deviations below and above 0.0. In both of | ||
11 | % these cases, the lowpass band is independently scaled. A value of | ||
12 | % 'indep1' sets the range of each subband independently, as in a call | ||
13 | % to showIm(subband,'auto1'). Similarly, 'indep2' causes each subband | ||
14 | % to be scaled independently as if by showIm(subband,'indep2'). | ||
15 | % The default value for RANGE is 'auto1' for 1D images, and 'auto2' for | ||
16 | % 2D images. | ||
17 | % | ||
18 | % GAP (optional, default=1) specifies the gap in pixels to leave | ||
19 | % between subbands (2D images only). | ||
20 | % | ||
21 | % LEVEL_SCALE_FACTOR indicates the relative scaling between pyramid | ||
22 | % levels. This should be set to the sum of the kernel taps of the | ||
23 | % lowpass filter used to construct the pyramid (default assumes | ||
24 | % L2-normalized filters, using a value of 2 for 2D images, sqrt(2) for | ||
25 | % 1D images). | ||
26 | |||
27 | % Eero Simoncelli, 2/97. | ||
28 | |||
29 | function [range] = showWpyr(pyr, pind, range, gap, scale); | ||
30 | |||
31 | % Determine 1D or 2D pyramid: | ||
32 | if ((pind(1,1) == 1) | (pind(1,2) ==1)) | ||
33 | nbands = 1; | ||
34 | else | ||
35 | nbands = 3; | ||
36 | end | ||
37 | |||
38 | %------------------------------------------------------------ | ||
39 | %% OPTIONAL ARGS: | ||
40 | |||
41 | if (exist('range') ~= 1) | ||
42 | if (nbands==1) | ||
43 | range = 'auto1'; | ||
44 | else | ||
45 | range = 'auto2'; | ||
46 | end | ||
47 | end | ||
48 | |||
49 | if (exist('gap') ~= 1) | ||
50 | gap = 1; | ||
51 | end | ||
52 | |||
53 | if (exist('scale') ~= 1) | ||
54 | if (nbands == 1) | ||
55 | scale = sqrt(2); | ||
56 | else | ||
57 | scale = 2; | ||
58 | end | ||
59 | end | ||
60 | |||
61 | %------------------------------------------------------------ | ||
62 | |||
63 | ht = wpyrHt(pind); | ||
64 | nind = size(pind,1); | ||
65 | |||
66 | %% Auto range calculations: | ||
67 | if strcmp(range,'auto1') | ||
68 | range = zeros(nind,1); | ||
69 | mn = 0.0; mx = 0.0; | ||
70 | for lnum = 1:ht | ||
71 | for bnum = 1:nbands | ||
72 | band = wpyrBand(pyr,pind,lnum,bnum)/(scale^(lnum-1)); | ||
73 | range((lnum-1)*nbands+bnum) = scale^(lnum-1); | ||
74 | [bmn,bmx] = range2(band); | ||
75 | mn = min(mn, bmn); mx = max(mx, bmx); | ||
76 | end | ||
77 | end | ||
78 | if (nbands == 1) | ||
79 | pad = (mx-mn)/12; % *** MAGIC NUMBER!! | ||
80 | mn = mn-pad; mx = mx+pad; | ||
81 | end | ||
82 | range = range * [mn mx]; % outer product | ||
83 | band = pyrLow(pyr,pind); | ||
84 | [mn,mx] = range2(band); | ||
85 | if (nbands == 1) | ||
86 | pad = (mx-mn)/12; % *** MAGIC NUMBER!! | ||
87 | mn = mn-pad; mx = mx+pad; | ||
88 | end | ||
89 | range(nind,:) = [mn, mx]; | ||
90 | |||
91 | elseif strcmp(range,'indep1') | ||
92 | range = zeros(nind,2); | ||
93 | for bnum = 1:nind | ||
94 | band = pyrBand(pyr,pind,bnum); | ||
95 | [mn,mx] = range2(band); | ||
96 | if (nbands == 1) | ||
97 | pad = (mx-mn)/12; % *** MAGIC NUMBER!! | ||
98 | mn = mn-pad; mx = mx+pad; | ||
99 | end | ||
100 | range(bnum,:) = [mn mx]; | ||
101 | end | ||
102 | |||
103 | elseif strcmp(range,'auto2') | ||
104 | range = zeros(nind,1); | ||
105 | sqsum = 0; numpixels = 0; | ||
106 | for lnum = 1:ht | ||
107 | for bnum = 1:nbands | ||
108 | band = wpyrBand(pyr,pind,lnum,bnum)/(scale^(lnum-1)); | ||
109 | sqsum = sqsum + sum(sum(band.^2)); | ||
110 | numpixels = numpixels + prod(size(band)); | ||
111 | range((lnum-1)*nbands+bnum) = scale^(lnum-1); | ||
112 | end | ||
113 | end | ||
114 | stdev = sqrt(sqsum/(numpixels-1)); | ||
115 | range = range * [ -3*stdev 3*stdev ]; % outer product | ||
116 | band = pyrLow(pyr,pind); | ||
117 | av = mean2(band); stdev = sqrt(var2(band)); | ||
118 | range(nind,:) = [av-2*stdev,av+2*stdev]; | ||
119 | |||
120 | elseif strcmp(range,'indep2') | ||
121 | range = zeros(nind,2); | ||
122 | for bnum = 1:(nind-1) | ||
123 | band = pyrBand(pyr,pind,bnum); | ||
124 | stdev = sqrt(var2(band)); | ||
125 | range(bnum,:) = [ -3*stdev 3*stdev ]; | ||
126 | end | ||
127 | band = pyrLow(pyr,pind); | ||
128 | av = mean2(band); stdev = sqrt(var2(band)); | ||
129 | range(nind,:) = [av-2*stdev,av+2*stdev]; | ||
130 | |||
131 | elseif isstr(range) | ||
132 | error(sprintf('Bad RANGE argument: %s',range)) | ||
133 | |||
134 | elseif ((size(range,1) == 1) & (size(range,2) == 2)) | ||
135 | scales = scale.^[0:ht]; | ||
136 | if (nbands ~= 1) | ||
137 | scales = [scales; scales; scales]; | ||
138 | end | ||
139 | range = scales(:) * range; % outer product | ||
140 | band = pyrLow(pyr,pind); | ||
141 | range(nind,:) = range(nind,:) + mean2(band) - mean(range(nind,:)); | ||
142 | |||
143 | end | ||
144 | |||
145 | % CLEAR FIGURE: | ||
146 | clf; | ||
147 | |||
148 | if (nbands == 1) | ||
149 | |||
150 | %%%%% 1D signal: | ||
151 | for bnum=1:nind | ||
152 | band = pyrBand(pyr,pind,bnum); | ||
153 | subplot(nind,1,nind-bnum+1); | ||
154 | plot(band); | ||
155 | axis([1, prod(size(band)), range(bnum,:)]); | ||
156 | end | ||
157 | |||
158 | else | ||
159 | |||
160 | %%%%% 2D signal: | ||
161 | colormap(gray); | ||
162 | cmap = get(gcf,'Colormap'); | ||
163 | nshades = size(cmap,1); | ||
164 | |||
165 | % Find background color index: | ||
166 | clr = get(gcf,'Color'); | ||
167 | bg = 1; | ||
168 | dist = norm(cmap(bg,:)-clr); | ||
169 | for n = 1:nshades | ||
170 | ndist = norm(cmap(n,:)-clr); | ||
171 | if (ndist < dist) | ||
172 | dist = ndist; | ||
173 | bg = n; | ||
174 | end | ||
175 | end | ||
176 | |||
177 | %% Compute positions of subbands: | ||
178 | llpos = ones(nind,2); | ||
179 | for lnum = 1:ht | ||
180 | ind1 = nbands*(lnum-1) + 1; | ||
181 | xpos = pind(ind1,2) + 1 + gap*(ht-lnum+1); | ||
182 | ypos = pind(ind1+1,1) + 1 + gap*(ht-lnum+1); | ||
183 | llpos(ind1:ind1+2,:) = [ypos 1; 1 xpos; ypos xpos]; | ||
184 | end | ||
185 | llpos(nind,:) = [1 1]; %lowpass | ||
186 | |||
187 | %% Make position list positive, and allocate appropriate image: | ||
188 | llpos = llpos - ones(nind,1)*min(llpos) + 1; | ||
189 | urpos = llpos + pind - 1; | ||
190 | d_im = bg + zeros(max(urpos)); | ||
191 | |||
192 | %% Paste bands into image, (im-r1)*(nshades-1)/(r2-r1) + 1.5 | ||
193 | for bnum=1:nind | ||
194 | mult = (nshades-1) / (range(bnum,2)-range(bnum,1)); | ||
195 | d_im(llpos(bnum,1):urpos(bnum,1), llpos(bnum,2):urpos(bnum,2)) = ... | ||
196 | mult*pyrBand(pyr,pind,bnum) + (1.5-mult*range(bnum,1)); | ||
197 | end | ||
198 | |||
199 | hh = image(d_im); | ||
200 | axis('off'); | ||
201 | pixelAxes(size(d_im),'full'); | ||
202 | set(hh,'UserData',range); | ||
203 | |||
204 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/skew2.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/skew2.m new file mode 100755 index 0000000..623d6ca --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/skew2.m | |||
@@ -0,0 +1,21 @@ | |||
1 | % S = SKEW2(MTX,MEAN,VAR) | ||
2 | % | ||
3 | % Sample skew (third moment divided by variance^3/2) of a matrix. | ||
4 | % MEAN (optional) and VAR (optional) make the computation faster. | ||
5 | |||
6 | function res = skew2(mtx, mn, v) | ||
7 | |||
8 | if (exist('mn') ~= 1) | ||
9 | mn = mean2(mtx); | ||
10 | end | ||
11 | |||
12 | if (exist('v') ~= 1) | ||
13 | v = var2(mtx,mn); | ||
14 | end | ||
15 | |||
16 | if (isreal(mtx)) | ||
17 | res = mean(mean((mtx-mn).^3)) / (v^(3/2)); | ||
18 | else | ||
19 | res = mean(mean(real(mtx-mn).^3)) / (real(v)^(3/2)) + ... | ||
20 | i * mean(mean(imag(mtx-mn).^3)) / (imag(v)^(3/2)); | ||
21 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/sp0Filters.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/sp0Filters.m new file mode 100755 index 0000000..6b25e36 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/sp0Filters.m | |||
@@ -0,0 +1,72 @@ | |||
1 | % Steerable pyramid filters. Transform described in: | ||
2 | % | ||
3 | % @INPROCEEDINGS{Simoncelli95b, | ||
4 | % TITLE = "The Steerable Pyramid: A Flexible Architecture for | ||
5 | % Multi-Scale Derivative Computation", | ||
6 | % AUTHOR = "E P Simoncelli and W T Freeman", | ||
7 | % BOOKTITLE = "Second Int'l Conf on Image Processing", | ||
8 | % ADDRESS = "Washington, DC", MONTH = "October", YEAR = 1995 } | ||
9 | % | ||
10 | % Filter kernel design described in: | ||
11 | % | ||
12 | %@INPROCEEDINGS{Karasaridis96, | ||
13 | % TITLE = "A Filter Design Technique for | ||
14 | % Steerable Pyramid Image Transforms", | ||
15 | % AUTHOR = "A Karasaridis and E P Simoncelli", | ||
16 | % BOOKTITLE = "ICASSP", ADDRESS = "Atlanta, GA", | ||
17 | % MONTH = "May", YEAR = 1996 } | ||
18 | |||
19 | % Eero Simoncelli, 6/96. | ||
20 | |||
21 | function [lo0filt,hi0filt,lofilt,bfilts,mtx,harmonics] = sp0Filters(); | ||
22 | |||
23 | harmonics = [ 0 ]; | ||
24 | |||
25 | lo0filt = [ ... | ||
26 | -4.514000e-04 -1.137100e-04 -3.725800e-04 -3.743860e-03 -3.725800e-04 -1.137100e-04 -4.514000e-04 | ||
27 | -1.137100e-04 -6.119520e-03 -1.344160e-02 -7.563200e-03 -1.344160e-02 -6.119520e-03 -1.137100e-04 | ||
28 | -3.725800e-04 -1.344160e-02 6.441488e-02 1.524935e-01 6.441488e-02 -1.344160e-02 -3.725800e-04 | ||
29 | -3.743860e-03 -7.563200e-03 1.524935e-01 3.153017e-01 1.524935e-01 -7.563200e-03 -3.743860e-03 | ||
30 | -3.725800e-04 -1.344160e-02 6.441488e-02 1.524935e-01 6.441488e-02 -1.344160e-02 -3.725800e-04 | ||
31 | -1.137100e-04 -6.119520e-03 -1.344160e-02 -7.563200e-03 -1.344160e-02 -6.119520e-03 -1.137100e-04 | ||
32 | -4.514000e-04 -1.137100e-04 -3.725800e-04 -3.743860e-03 -3.725800e-04 -1.137100e-04 -4.514000e-04]; | ||
33 | |||
34 | lofilt = [ ... | ||
35 | -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 | ||
36 | -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 | ||
37 | -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 | ||
38 | 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 | ||
39 | -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 | ||
40 | -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 | ||
41 | -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 | ||
42 | -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 | ||
43 | -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 | ||
44 | 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 | ||
45 | -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 | ||
46 | -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 | ||
47 | -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]; | ||
48 | |||
49 | mtx = [ 1.000000 ]; | ||
50 | |||
51 | hi0filt = [... | ||
52 | 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 | ||
53 | -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 | ||
54 | -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 | ||
55 | -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 | ||
56 | -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 | ||
57 | -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 | ||
58 | -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 | ||
59 | -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 | ||
60 | 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 ]; | ||
61 | |||
62 | bfilts = [ ... | ||
63 | -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 ... | ||
64 | -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 ... | ||
65 | -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 ... | ||
66 | -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 ... | ||
67 | -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 ... | ||
68 | -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 ... | ||
69 | -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 ... | ||
70 | -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 ... | ||
71 | -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 ]'; | ||
72 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/sp1Filters.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/sp1Filters.m new file mode 100755 index 0000000..215e651 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/sp1Filters.m | |||
@@ -0,0 +1,91 @@ | |||
1 | % Steerable pyramid filters. Transform described in: | ||
2 | % | ||
3 | % @INPROCEEDINGS{Simoncelli95b, | ||
4 | % TITLE = "The Steerable Pyramid: A Flexible Architecture for | ||
5 | % Multi-Scale Derivative Computation", | ||
6 | % AUTHOR = "E P Simoncelli and W T Freeman", | ||
7 | % BOOKTITLE = "Second Int'l Conf on Image Processing", | ||
8 | % ADDRESS = "Washington, DC", MONTH = "October", YEAR = 1995 } | ||
9 | % | ||
10 | % Filter kernel design described in: | ||
11 | % | ||
12 | %@INPROCEEDINGS{Karasaridis96, | ||
13 | % TITLE = "A Filter Design Technique for | ||
14 | % Steerable Pyramid Image Transforms", | ||
15 | % AUTHOR = "A Karasaridis and E P Simoncelli", | ||
16 | % BOOKTITLE = "ICASSP", ADDRESS = "Atlanta, GA", | ||
17 | % MONTH = "May", YEAR = 1996 } | ||
18 | |||
19 | % Eero Simoncelli, 6/96. | ||
20 | |||
21 | function [lo0filt,hi0filt,lofilt,bfilts,mtx,harmonics] = sp1Filters(); | ||
22 | |||
23 | harmonics = [ 1 ]; | ||
24 | |||
25 | %% filters only contain first harmonic. | ||
26 | mtx = eye(2); | ||
27 | |||
28 | lo0filt = [ ... | ||
29 | -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 | ||
30 | -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 | ||
31 | -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 | ||
32 | -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 | ||
33 | 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 | ||
34 | -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 | ||
35 | -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 | ||
36 | -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 | ||
37 | -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 | ||
38 | ]; | ||
39 | |||
40 | lofilt = [ ... | ||
41 | -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 ; ... | ||
42 | 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 ; ... | ||
43 | -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 ; ... | ||
44 | -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 ; ... | ||
45 | -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 ; ... | ||
46 | -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 ; ... | ||
47 | -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 ; ... | ||
48 | -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 ; ... | ||
49 | 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 ; ... | ||
50 | -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 ; ... | ||
51 | -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 ; ... | ||
52 | -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 ; ... | ||
53 | -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 ; ... | ||
54 | -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 ; ... | ||
55 | -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 ; ... | ||
56 | 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 ; ... | ||
57 | -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 ]; | ||
58 | |||
59 | hi0filt = [... | ||
60 | -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 ; ... | ||
61 | -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 ; ... | ||
62 | -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 ; ... | ||
63 | -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 ; ... | ||
64 | -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 ; ... | ||
65 | -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 ; ... | ||
66 | -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 ; ... | ||
67 | -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 ; ... | ||
68 | -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 ]; | ||
69 | |||
70 | bfilts = -[ ... | ||
71 | 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 ... | ||
72 | -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 ... | ||
73 | -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 ... | ||
74 | -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 ... | ||
75 | 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 ... | ||
76 | 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 ... | ||
77 | 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 ... | ||
78 | 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 ... | ||
79 | -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; ... | ||
80 | ... | ||
81 | -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 ... | ||
82 | 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 ... | ||
83 | 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 ... | ||
84 | 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 ... | ||
85 | 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 ... | ||
86 | 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 ... | ||
87 | 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 ... | ||
88 | 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 ... | ||
89 | -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 ... | ||
90 | ]'; | ||
91 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/sp3Filters.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/sp3Filters.m new file mode 100755 index 0000000..c9cfaaf --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/sp3Filters.m | |||
@@ -0,0 +1,121 @@ | |||
1 | % Steerable pyramid filters. Transform described in: | ||
2 | % | ||
3 | % @INPROCEEDINGS{Simoncelli95b, | ||
4 | % TITLE = "The Steerable Pyramid: A Flexible Architecture for | ||
5 | % Multi-Scale Derivative Computation", | ||
6 | % AUTHOR = "E P Simoncelli and W T Freeman", | ||
7 | % BOOKTITLE = "Second Int'l Conf on Image Processing", | ||
8 | % ADDRESS = "Washington, DC", MONTH = "October", YEAR = 1995 } | ||
9 | % | ||
10 | % Filter kernel design described in: | ||
11 | % | ||
12 | %@INPROCEEDINGS{Karasaridis96, | ||
13 | % TITLE = "A Filter Design Technique for | ||
14 | % Steerable Pyramid Image Transforms", | ||
15 | % AUTHOR = "A Karasaridis and E P Simoncelli", | ||
16 | % BOOKTITLE = "ICASSP", ADDRESS = "Atlanta, GA", | ||
17 | % MONTH = "May", YEAR = 1996 } | ||
18 | |||
19 | % Eero Simoncelli, 6/96. | ||
20 | |||
21 | function [lo0filt,hi0filt,lofilt,bfilts,mtx,harmonics] = sp3Filters(); | ||
22 | |||
23 | harmonics = [1 3]; | ||
24 | |||
25 | mtx = [ ... | ||
26 | 0.5000 0.3536 0 -0.3536 | ||
27 | -0.0000 0.3536 0.5000 0.3536 | ||
28 | 0.5000 -0.3536 0 0.3536 | ||
29 | -0.0000 0.3536 -0.5000 0.3536]; | ||
30 | |||
31 | hi0filt = [ | ||
32 | -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 | ||
33 | -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 | ||
34 | -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 | ||
35 | 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 | ||
36 | 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 | ||
37 | 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 | ||
38 | 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 | ||
39 | 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 | ||
40 | 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 | ||
41 | 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 | ||
42 | 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 | ||
43 | 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 | ||
44 | -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 | ||
45 | -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 | ||
46 | -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 | ||
47 | ]; | ||
48 | |||
49 | lo0filt = [ | ||
50 | -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 | ||
51 | -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 | ||
52 | -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 | ||
53 | -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 | ||
54 | 2.5240099058E-3 1.1076199589E-3 -3.2971370965E-2 0.1811603010 0.4376249909 0.1811603010 -3.2971370965E-2 1.1076199589E-3 2.5240099058E-3 | ||
55 | -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 | ||
56 | -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 | ||
57 | -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 | ||
58 | -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 | ||
59 | ]; | ||
60 | |||
61 | lofilt = [ | ||
62 | -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 | ||
63 | 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 | ||
64 | -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 | ||
65 | -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 | ||
66 | -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 | ||
67 | -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 | ||
68 | -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 | ||
69 | -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 | ||
70 | 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 | ||
71 | -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 | ||
72 | -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 | ||
73 | -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 | ||
74 | -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 | ||
75 | -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 | ||
76 | -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 | ||
77 | 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 | ||
78 | -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 | ||
79 | ]; | ||
80 | |||
81 | bfilts = [... | ||
82 | -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 ... | ||
83 | 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 ... | ||
84 | 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 ... | ||
85 | 7.4700999539E-4 -3.6522001028E-4 -2.2522680461E-2 -0.1105690673 -0.1768419296 -0.1105690673 -2.2522680461E-2 -3.6522001028E-4 7.4700999539E-4 ... | ||
86 | 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 0.0000000000 ... | ||
87 | -7.4700999539E-4 3.6522001028E-4 2.2522680461E-2 0.1105690673 0.1768419296 0.1105690673 2.2522680461E-2 3.6522001028E-4 -7.4700999539E-4 ... | ||
88 | -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 ... | ||
89 | -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 ... | ||
90 | 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; ... | ||
91 | ... | ||
92 | 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 ... | ||
93 | 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 ... | ||
94 | 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 ... | ||
95 | -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 ... | ||
96 | -4.6670897864E-3 2.0865600090E-3 2.4427289143E-2 0.1510555595 0.0000000000 -0.1510555595 -2.4427289143E-2 -2.0865600090E-3 4.6670897864E-3 ... | ||
97 | -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 ... | ||
98 | -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 ... | ||
99 | -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 ... | ||
100 | 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; ... | ||
101 | ... | ||
102 | 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 ... | ||
103 | -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 ... | ||
104 | -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 ... | ||
105 | -1.3955879956E-2 2.8760801069E-3 -3.9442278445E-2 0.1105690673 0.0000000000 -0.1105690673 3.9442278445E-2 -2.8760801069E-3 1.3955879956E-2 ... | ||
106 | -1.4179450460E-2 -8.5267601535E-3 -5.3605638444E-2 0.1768419296 0.0000000000 -0.1768419296 5.3605638444E-2 8.5267601535E-3 1.4179450460E-2 ... | ||
107 | -1.3955879956E-2 2.8760801069E-3 -3.9442278445E-2 0.1105690673 0.0000000000 -0.1105690673 3.9442278445E-2 -2.8760801069E-3 1.3955879956E-2 ... | ||
108 | -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 ... | ||
109 | -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 ... | ||
110 | 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; ... | ||
111 | ... | ||
112 | 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 ... | ||
113 | -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 ... | ||
114 | -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 ... | ||
115 | -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 ... | ||
116 | -4.6670897864E-3 2.0865600090E-3 2.4427289143E-2 0.1510555595 0.0000000000 -0.1510555595 -2.4427289143E-2 -2.0865600090E-3 4.6670897864E-3 ... | ||
117 | -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 ... | ||
118 | 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 ... | ||
119 | 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 ... | ||
120 | 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 ... | ||
121 | ]'; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/sp5Filters.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/sp5Filters.m new file mode 100755 index 0000000..4cddcfd --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/sp5Filters.m | |||
@@ -0,0 +1,110 @@ | |||
1 | % Steerable pyramid filters. Transform described in: | ||
2 | % | ||
3 | % @INPROCEEDINGS{Simoncelli95b, | ||
4 | % TITLE = "The Steerable Pyramid: A Flexible Architecture for | ||
5 | % Multi-Scale Derivative Computation", | ||
6 | % AUTHOR = "E P Simoncelli and W T Freeman", | ||
7 | % BOOKTITLE = "Second Int'l Conf on Image Processing", | ||
8 | % ADDRESS = "Washington, DC", MONTH = "October", YEAR = 1995 } | ||
9 | % | ||
10 | % Filter kernel design described in: | ||
11 | % | ||
12 | %@INPROCEEDINGS{Karasaridis96, | ||
13 | % TITLE = "A Filter Design Technique for | ||
14 | % Steerable Pyramid Image Transforms", | ||
15 | % AUTHOR = "A Karasaridis and E P Simoncelli", | ||
16 | % BOOKTITLE = "ICASSP", ADDRESS = "Atlanta, GA", | ||
17 | % MONTH = "May", YEAR = 1996 } | ||
18 | |||
19 | % Eero Simoncelli, 6/96. | ||
20 | |||
21 | function [lo0filt,hi0filt,lofilt,bfilts,mtx,harmonics] = sp5Filters(); | ||
22 | |||
23 | harmonics = [1 3 5]; | ||
24 | |||
25 | mtx = [ ... | ||
26 | 0.3333 0.2887 0.1667 0.0000 -0.1667 -0.2887 | ||
27 | 0.0000 0.1667 0.2887 0.3333 0.2887 0.1667 | ||
28 | 0.3333 -0.0000 -0.3333 -0.0000 0.3333 -0.0000 | ||
29 | 0.0000 0.3333 0.0000 -0.3333 0.0000 0.3333 | ||
30 | 0.3333 -0.2887 0.1667 -0.0000 -0.1667 0.2887 | ||
31 | -0.0000 0.1667 -0.2887 0.3333 -0.2887 0.1667]; | ||
32 | |||
33 | hi0filt = [ | ||
34 | -0.00033429 -0.00113093 -0.00171484 -0.00133542 -0.00080639 -0.00133542 -0.00171484 -0.00113093 -0.00033429 | ||
35 | -0.00113093 -0.00350017 -0.00243812 0.00631653 0.01261227 0.00631653 -0.00243812 -0.00350017 -0.00113093 | ||
36 | -0.00171484 -0.00243812 -0.00290081 -0.00673482 -0.00981051 -0.00673482 -0.00290081 -0.00243812 -0.00171484 | ||
37 | -0.00133542 0.00631653 -0.00673482 -0.07027679 -0.11435863 -0.07027679 -0.00673482 0.00631653 -0.00133542 | ||
38 | -0.00080639 0.01261227 -0.00981051 -0.11435863 0.81380200 -0.11435863 -0.00981051 0.01261227 -0.00080639 | ||
39 | -0.00133542 0.00631653 -0.00673482 -0.07027679 -0.11435863 -0.07027679 -0.00673482 0.00631653 -0.00133542 | ||
40 | -0.00171484 -0.00243812 -0.00290081 -0.00673482 -0.00981051 -0.00673482 -0.00290081 -0.00243812 -0.00171484 | ||
41 | -0.00113093 -0.00350017 -0.00243812 0.00631653 0.01261227 0.00631653 -0.00243812 -0.00350017 -0.00113093 | ||
42 | -0.00033429 -0.00113093 -0.00171484 -0.00133542 -0.00080639 -0.00133542 -0.00171484 -0.00113093 -0.00033429]; | ||
43 | |||
44 | |||
45 | lo0filt = [ | ||
46 | 0.00341614 -0.01551246 -0.03848215 -0.01551246 0.00341614 | ||
47 | -0.01551246 0.05586982 0.15925570 0.05586982 -0.01551246 | ||
48 | -0.03848215 0.15925570 0.40304148 0.15925570 -0.03848215 | ||
49 | -0.01551246 0.05586982 0.15925570 0.05586982 -0.01551246 | ||
50 | 0.00341614 -0.01551246 -0.03848215 -0.01551246 0.00341614]; | ||
51 | |||
52 | lofilt = 2*[ | ||
53 | 0.00085404 -0.00244917 -0.00387812 -0.00944432 -0.00962054 -0.00944432 -0.00387812 -0.00244917 0.00085404 | ||
54 | -0.00244917 -0.00523281 -0.00661117 0.00410600 0.01002988 0.00410600 -0.00661117 -0.00523281 -0.00244917 | ||
55 | -0.00387812 -0.00661117 0.01396746 0.03277038 0.03981393 0.03277038 0.01396746 -0.00661117 -0.00387812 | ||
56 | -0.00944432 0.00410600 0.03277038 0.06426333 0.08169618 0.06426333 0.03277038 0.00410600 -0.00944432 | ||
57 | -0.00962054 0.01002988 0.03981393 0.08169618 0.10096540 0.08169618 0.03981393 0.01002988 -0.00962054 | ||
58 | -0.00944432 0.00410600 0.03277038 0.06426333 0.08169618 0.06426333 0.03277038 0.00410600 -0.00944432 | ||
59 | -0.00387812 -0.00661117 0.01396746 0.03277038 0.03981393 0.03277038 0.01396746 -0.00661117 -0.00387812 | ||
60 | -0.00244917 -0.00523281 -0.00661117 0.00410600 0.01002988 0.00410600 -0.00661117 -0.00523281 -0.00244917 | ||
61 | 0.00085404 -0.00244917 -0.00387812 -0.00944432 -0.00962054 -0.00944432 -0.00387812 -0.00244917 0.00085404]; | ||
62 | |||
63 | bfilts = [... | ||
64 | 0.00277643 0.00496194 0.01026699 0.01455399 0.01026699 0.00496194 0.00277643 ... | ||
65 | -0.00986904 -0.00893064 0.01189859 0.02755155 0.01189859 -0.00893064 -0.00986904 ... | ||
66 | -0.01021852 -0.03075356 -0.08226445 -0.11732297 -0.08226445 -0.03075356 -0.01021852 ... | ||
67 | 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 0.00000000 ... | ||
68 | 0.01021852 0.03075356 0.08226445 0.11732297 0.08226445 0.03075356 0.01021852 ... | ||
69 | 0.00986904 0.00893064 -0.01189859 -0.02755155 -0.01189859 0.00893064 0.00986904 ... | ||
70 | -0.00277643 -0.00496194 -0.01026699 -0.01455399 -0.01026699 -0.00496194 -0.00277643; | ||
71 | ... | ||
72 | -0.00343249 -0.00640815 -0.00073141 0.01124321 0.00182078 0.00285723 0.01166982 ... | ||
73 | -0.00358461 -0.01977507 -0.04084211 -0.00228219 0.03930573 0.01161195 0.00128000 ... | ||
74 | 0.01047717 0.01486305 -0.04819057 -0.12227230 -0.05394139 0.00853965 -0.00459034 ... | ||
75 | 0.00790407 0.04435647 0.09454202 -0.00000000 -0.09454202 -0.04435647 -0.00790407 ... | ||
76 | 0.00459034 -0.00853965 0.05394139 0.12227230 0.04819057 -0.01486305 -0.01047717 ... | ||
77 | -0.00128000 -0.01161195 -0.03930573 0.00228219 0.04084211 0.01977507 0.00358461 ... | ||
78 | -0.01166982 -0.00285723 -0.00182078 -0.01124321 0.00073141 0.00640815 0.00343249; | ||
79 | ... | ||
80 | 0.00343249 0.00358461 -0.01047717 -0.00790407 -0.00459034 0.00128000 0.01166982 ... | ||
81 | 0.00640815 0.01977507 -0.01486305 -0.04435647 0.00853965 0.01161195 0.00285723 ... | ||
82 | 0.00073141 0.04084211 0.04819057 -0.09454202 -0.05394139 0.03930573 0.00182078 ... | ||
83 | -0.01124321 0.00228219 0.12227230 -0.00000000 -0.12227230 -0.00228219 0.01124321 ... | ||
84 | -0.00182078 -0.03930573 0.05394139 0.09454202 -0.04819057 -0.04084211 -0.00073141 ... | ||
85 | -0.00285723 -0.01161195 -0.00853965 0.04435647 0.01486305 -0.01977507 -0.00640815 ... | ||
86 | -0.01166982 -0.00128000 0.00459034 0.00790407 0.01047717 -0.00358461 -0.00343249; | ||
87 | ... | ||
88 | -0.00277643 0.00986904 0.01021852 -0.00000000 -0.01021852 -0.00986904 0.00277643 ... | ||
89 | -0.00496194 0.00893064 0.03075356 -0.00000000 -0.03075356 -0.00893064 0.00496194 ... | ||
90 | -0.01026699 -0.01189859 0.08226445 -0.00000000 -0.08226445 0.01189859 0.01026699 ... | ||
91 | -0.01455399 -0.02755155 0.11732297 -0.00000000 -0.11732297 0.02755155 0.01455399 ... | ||
92 | -0.01026699 -0.01189859 0.08226445 -0.00000000 -0.08226445 0.01189859 0.01026699 ... | ||
93 | -0.00496194 0.00893064 0.03075356 -0.00000000 -0.03075356 -0.00893064 0.00496194 ... | ||
94 | -0.00277643 0.00986904 0.01021852 -0.00000000 -0.01021852 -0.00986904 0.00277643; | ||
95 | ... | ||
96 | -0.01166982 -0.00128000 0.00459034 0.00790407 0.01047717 -0.00358461 -0.00343249 ... | ||
97 | -0.00285723 -0.01161195 -0.00853965 0.04435647 0.01486305 -0.01977507 -0.00640815 ... | ||
98 | -0.00182078 -0.03930573 0.05394139 0.09454202 -0.04819057 -0.04084211 -0.00073141 ... | ||
99 | -0.01124321 0.00228219 0.12227230 -0.00000000 -0.12227230 -0.00228219 0.01124321 ... | ||
100 | 0.00073141 0.04084211 0.04819057 -0.09454202 -0.05394139 0.03930573 0.00182078 ... | ||
101 | 0.00640815 0.01977507 -0.01486305 -0.04435647 0.00853965 0.01161195 0.00285723 ... | ||
102 | 0.00343249 0.00358461 -0.01047717 -0.00790407 -0.00459034 0.00128000 0.01166982; | ||
103 | ... | ||
104 | -0.01166982 -0.00285723 -0.00182078 -0.01124321 0.00073141 0.00640815 0.00343249 ... | ||
105 | -0.00128000 -0.01161195 -0.03930573 0.00228219 0.04084211 0.01977507 0.00358461 ... | ||
106 | 0.00459034 -0.00853965 0.05394139 0.12227230 0.04819057 -0.01486305 -0.01047717 ... | ||
107 | 0.00790407 0.04435647 0.09454202 -0.00000000 -0.09454202 -0.04435647 -0.00790407 ... | ||
108 | 0.01047717 0.01486305 -0.04819057 -0.12227230 -0.05394139 0.00853965 -0.00459034 ... | ||
109 | -0.00358461 -0.01977507 -0.04084211 -0.00228219 0.03930573 0.01161195 0.00128000 ... | ||
110 | -0.00343249 -0.00640815 -0.00073141 0.01124321 0.00182078 0.00285723 0.01166982]'; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/spyrBand.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/spyrBand.m new file mode 100755 index 0000000..474a8dc --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/spyrBand.m | |||
@@ -0,0 +1,34 @@ | |||
1 | % [LEV,IND] = spyrBand(PYR,INDICES,LEVEL,BAND) | ||
2 | % | ||
3 | % Access a band from a steerable pyramid. | ||
4 | % | ||
5 | % LEVEL indicates the scale (finest = 1, coarsest = spyrHt(INDICES)). | ||
6 | % | ||
7 | % BAND (optional, default=1) indicates which subband | ||
8 | % (1 = vertical, rest proceeding anti-clockwise). | ||
9 | |||
10 | % Eero Simoncelli, 6/96. | ||
11 | |||
12 | function res = spyrBand(pyr,pind,level,band) | ||
13 | |||
14 | if (exist('level') ~= 1) | ||
15 | level = 1; | ||
16 | end | ||
17 | |||
18 | if (exist('band') ~= 1) | ||
19 | band = 1; | ||
20 | end | ||
21 | |||
22 | nbands = spyrNumBands(pind); | ||
23 | if ((band > nbands) | (band < 1)) | ||
24 | error(sprintf('Bad band number (%d) should be in range [1,%d].', band, nbands)); | ||
25 | end | ||
26 | |||
27 | maxLev = spyrHt(pind); | ||
28 | if ((level > maxLev) | (level < 1)) | ||
29 | error(sprintf('Bad level number (%d), should be in range [1,%d].', level, maxLev)); | ||
30 | end | ||
31 | |||
32 | firstband = 1 + band + nbands*(level-1); | ||
33 | res = pyrBand(pyr, pind, firstband); | ||
34 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/spyrHigh.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/spyrHigh.m new file mode 100755 index 0000000..f91b466 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/spyrHigh.m | |||
@@ -0,0 +1,10 @@ | |||
1 | % RES = spyrHigh(PYR, INDICES) | ||
2 | % | ||
3 | % Access the highpass residual band from a steerable pyramid. | ||
4 | |||
5 | % Eero Simoncelli, 6/96. | ||
6 | |||
7 | function res = spyrHigh(pyr,pind) | ||
8 | |||
9 | res = pyrBand(pyr, pind, 1); | ||
10 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/spyrHt.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/spyrHt.m new file mode 100755 index 0000000..8706b9e --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/spyrHt.m | |||
@@ -0,0 +1,16 @@ | |||
1 | % [HEIGHT] = spyrHt(INDICES) | ||
2 | % | ||
3 | % Compute height of steerable pyramid with given index matrix. | ||
4 | |||
5 | % Eero Simoncelli, 6/96. | ||
6 | |||
7 | function [ht] = spyrHt(pind) | ||
8 | |||
9 | nbands = spyrNumBands(pind); | ||
10 | |||
11 | % Don't count lowpass, or highpass residual bands | ||
12 | if (size(pind,1) > 2) | ||
13 | ht = (size(pind,1)-2)/nbands; | ||
14 | else | ||
15 | ht = 0; | ||
16 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/spyrLev.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/spyrLev.m new file mode 100755 index 0000000..5cb4a85 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/spyrLev.m | |||
@@ -0,0 +1,24 @@ | |||
1 | % [LEV,IND] = spyrLev(PYR,INDICES,LEVEL) | ||
2 | % | ||
3 | % Access a level from a steerable pyramid. | ||
4 | % Return as an SxB matrix, B = number of bands, S = total size of a band. | ||
5 | % Also returns an Bx2 matrix containing dimensions of the subbands. | ||
6 | |||
7 | % Eero Simoncelli, 6/96. | ||
8 | |||
9 | function [lev,ind] = spyrLev(pyr,pind,level) | ||
10 | |||
11 | nbands = spyrNumBands(pind); | ||
12 | |||
13 | if ((level > spyrHt(pind)) | (level < 1)) | ||
14 | error(sprintf('Level number must be in the range [1, %d].', spyrHt(pind))); | ||
15 | end | ||
16 | |||
17 | firstband = 2 + nbands*(level-1); | ||
18 | firstind = 1; | ||
19 | for l=1:firstband-1 | ||
20 | firstind = firstind + prod(pind(l,:)); | ||
21 | end | ||
22 | |||
23 | ind = pind(firstband:firstband+nbands-1,:); | ||
24 | lev = pyr(firstind:firstind+sum(prod(ind'))-1); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/spyrNumBands.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/spyrNumBands.m new file mode 100755 index 0000000..68aec3f --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/spyrNumBands.m | |||
@@ -0,0 +1,20 @@ | |||
1 | % [NBANDS] = spyrNumBands(INDICES) | ||
2 | % | ||
3 | % Compute number of orientation bands in a steerable pyramid with | ||
4 | % given index matrix. If the pyramid contains only the highpass and | ||
5 | % lowpass bands (i.e., zero levels), returns 0. | ||
6 | |||
7 | % Eero Simoncelli, 2/97. | ||
8 | |||
9 | function [nbands] = spyrNumBands(pind) | ||
10 | |||
11 | if (size(pind,1) == 2) | ||
12 | nbands = 0; | ||
13 | else | ||
14 | % Count number of orientation bands: | ||
15 | b = 3; | ||
16 | while ((b <= size(pind,1)) & all( pind(b,:) == pind(2,:)) ) | ||
17 | b = b+1; | ||
18 | end | ||
19 | nbands = b-2; | ||
20 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/steer.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/steer.m new file mode 100755 index 0000000..8f9c2ac --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/steer.m | |||
@@ -0,0 +1,68 @@ | |||
1 | % RES = STEER(BASIS, ANGLE, HARMONICS, STEERMTX) | ||
2 | % | ||
3 | % Steer BASIS to the specfied ANGLE. | ||
4 | % | ||
5 | % BASIS should be a matrix whose columns are vectorized rotated copies of a | ||
6 | % steerable function, or the responses of a set of steerable filters. | ||
7 | % | ||
8 | % ANGLE can be a scalar, or a column vector the size of the basis. | ||
9 | % | ||
10 | % HARMONICS (optional, default is N even or odd low frequencies, as for | ||
11 | % derivative filters) should be a list of harmonic numbers indicating | ||
12 | % the angular harmonic content of the basis. | ||
13 | % | ||
14 | % STEERMTX (optional, default assumes cosine phase harmonic components, | ||
15 | % and filter positions at 2pi*n/N) should be a matrix which maps | ||
16 | % the filters onto Fourier series components (ordered [cos0 cos1 sin1 | ||
17 | % cos2 sin2 ... sinN]). See steer2HarmMtx.m | ||
18 | |||
19 | % Eero Simoncelli, 7/96. | ||
20 | |||
21 | function res = steer(basis,angle,harmonics,steermtx) | ||
22 | |||
23 | num = size(basis,2); | ||
24 | |||
25 | if ( any(size(angle) ~= [size(basis,1) 1]) & any(size(angle) ~= [1 1]) ) | ||
26 | error('ANGLE must be a scalar, or a column vector the size of the basis elements'); | ||
27 | end | ||
28 | |||
29 | %% If HARMONICS are not passed, assume derivatives. | ||
30 | if (exist('harmonics') ~= 1) | ||
31 | if (mod(num,2) == 0) | ||
32 | harmonics = [0:(num/2)-1]'*2 + 1; | ||
33 | else | ||
34 | harmonics = [0:(num-1)/2]'*2; | ||
35 | end | ||
36 | else | ||
37 | harmonics = harmonics(:); | ||
38 | if ((2*size(harmonics,1)-any(harmonics == 0)) ~= num) | ||
39 | error('harmonics list is incompatible with basis size'); | ||
40 | end | ||
41 | end | ||
42 | |||
43 | %% If STEERMTX not passed, assume evenly distributed cosine-phase filters: | ||
44 | if (exist('steermtx') ~= 1) | ||
45 | steermtx = steer2HarmMtx(harmonics, pi*[0:num-1]/num, 'even'); | ||
46 | end | ||
47 | |||
48 | steervect = zeros(size(angle,1),num); | ||
49 | arg = angle * harmonics(find(harmonics~=0))'; | ||
50 | if (all(harmonics)) | ||
51 | steervect(:, 1:2:num) = cos(arg); | ||
52 | steervect(:, 2:2:num) = sin(arg); | ||
53 | else | ||
54 | steervect(:, 1) = ones(size(arg,1),1); | ||
55 | steervect(:, 2:2:num) = cos(arg); | ||
56 | steervect(:, 3:2:num) = sin(arg); | ||
57 | end | ||
58 | |||
59 | steervect = steervect * steermtx; | ||
60 | |||
61 | if (size(steervect,1) > 1) | ||
62 | tmp = basis' .* steervect'; | ||
63 | res = sum(tmp)'; | ||
64 | else | ||
65 | res = basis * steervect'; | ||
66 | end | ||
67 | |||
68 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/steer2HarmMtx.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/steer2HarmMtx.m new file mode 100755 index 0000000..1f3e80e --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/steer2HarmMtx.m | |||
@@ -0,0 +1,71 @@ | |||
1 | % MTX = steer2HarmMtx(HARMONICS, ANGLES, REL_PHASES) | ||
2 | % | ||
3 | % Compute a steering matrix (maps a directional basis set onto the | ||
4 | % angular Fourier harmonics). HARMONICS is a vector specifying the | ||
5 | % angular harmonics contained in the steerable basis/filters. ANGLES | ||
6 | % (optional) is a vector specifying the angular position of each filter. | ||
7 | % REL_PHASES (optional, default = 'even') specifies whether the harmonics | ||
8 | % are cosine or sine phase aligned about those positions. | ||
9 | % The result matrix is suitable for passing to the function STEER. | ||
10 | |||
11 | % Eero Simoncelli, 7/96. | ||
12 | |||
13 | function mtx = steer2HarmMtx(harmonics, angles, evenorodd) | ||
14 | |||
15 | %%================================================================= | ||
16 | %%% Optional Parameters: | ||
17 | |||
18 | if (exist('evenorodd') ~= 1) | ||
19 | evenorodd = 'even'; | ||
20 | end | ||
21 | |||
22 | % Make HARMONICS a row vector | ||
23 | harmonics = harmonics(:)'; | ||
24 | |||
25 | numh = 2*size(harmonics,2) - any(harmonics == 0); | ||
26 | |||
27 | if (exist('angles') ~= 1) | ||
28 | angles = pi * [0:numh-1]'/numh; | ||
29 | else | ||
30 | angles = angles(:); | ||
31 | end | ||
32 | |||
33 | %%================================================================= | ||
34 | |||
35 | if isstr(evenorodd) | ||
36 | if strcmp(evenorodd,'even') | ||
37 | evenorodd = 0; | ||
38 | elseif strcmp(evenorodd,'odd') | ||
39 | evenorodd = 1; | ||
40 | else | ||
41 | error('EVEN_OR_ODD should be the string EVEN or ODD'); | ||
42 | end | ||
43 | end | ||
44 | |||
45 | %% Compute inverse matrix, which maps Fourier components onto | ||
46 | %% steerable basis. | ||
47 | imtx = zeros(size(angles,1),numh); | ||
48 | col = 1; | ||
49 | for h=harmonics | ||
50 | args = h*angles; | ||
51 | if (h == 0) | ||
52 | imtx(:,col) = ones(size(angles)); | ||
53 | col = col+1; | ||
54 | elseif evenorodd | ||
55 | imtx(:,col) = sin(args); | ||
56 | imtx(:,col+1) = -cos(args); | ||
57 | col = col+2; | ||
58 | else | ||
59 | imtx(:,col) = cos(args); | ||
60 | imtx(:,col+1) = sin(args); | ||
61 | col = col+2; | ||
62 | end | ||
63 | end | ||
64 | |||
65 | r = rank(imtx); | ||
66 | if (( r ~= numh ) & ( r ~= size(angles,1) )) | ||
67 | fprintf(2,'WARNING: matrix is not full rank'); | ||
68 | end | ||
69 | |||
70 | mtx = pinv(imtx); | ||
71 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/subMtx.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/subMtx.m new file mode 100755 index 0000000..ea3c2ea --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/subMtx.m | |||
@@ -0,0 +1,21 @@ | |||
1 | % MTX = subMtx(VEC, DIMENSIONS, START_INDEX) | ||
2 | % | ||
3 | % Reshape a portion of VEC starting from START_INDEX (optional, | ||
4 | % default=1) to the given dimensions. | ||
5 | |||
6 | % Eero Simoncelli, 6/96. | ||
7 | |||
8 | function mtx = subMtx(vec, sz, offset) | ||
9 | |||
10 | if (exist('offset') ~= 1) | ||
11 | offset = 1; | ||
12 | end | ||
13 | |||
14 | vec = vec(:); | ||
15 | sz = sz(:); | ||
16 | |||
17 | if (size(sz,1) ~= 2) | ||
18 | error('DIMENSIONS must be a 2-vector.'); | ||
19 | end | ||
20 | |||
21 | mtx = reshape( vec(offset:offset+prod(sz)-1), sz(1), sz(2) ); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/upBlur.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/upBlur.m new file mode 100755 index 0000000..948c2e1 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/upBlur.m | |||
@@ -0,0 +1,52 @@ | |||
1 | % RES = upBlur(IM, LEVELS, FILT) | ||
2 | % | ||
3 | % Upsample and blur an image. The blurring is done with filter | ||
4 | % kernel specified by FILT (default = 'binom5'), which can be a string | ||
5 | % (to be passed to namedFilter), a vector (applied separably as a 1D | ||
6 | % convolution kernel in X and Y), or a matrix (applied as a 2D | ||
7 | % convolution kernel). The downsampling is always by 2 in each | ||
8 | % direction. | ||
9 | % | ||
10 | % The procedure is applied recursively LEVELS times (default=1). | ||
11 | |||
12 | % Eero Simoncelli, 4/97. | ||
13 | |||
14 | function res = upBlur(im, nlevs, filt) | ||
15 | |||
16 | %------------------------------------------------------------ | ||
17 | %% OPTIONAL ARGS: | ||
18 | |||
19 | if (exist('nlevs') ~= 1) | ||
20 | nlevs = 1; | ||
21 | end | ||
22 | |||
23 | if (exist('filt') ~= 1) | ||
24 | filt = 'binom5'; | ||
25 | end | ||
26 | |||
27 | %------------------------------------------------------------ | ||
28 | |||
29 | if isstr(filt) | ||
30 | filt = namedFilter(filt); | ||
31 | end | ||
32 | |||
33 | if nlevs > 1 | ||
34 | im = upBlur(im,nlevs-1,filt); | ||
35 | end | ||
36 | |||
37 | if (nlevs >= 1) | ||
38 | if (any(size(im)==1)) | ||
39 | if (size(im,1)==1) | ||
40 | filt = filt'; | ||
41 | end | ||
42 | res = upConv(im,filt,'reflect1',(size(im)~=1)+1); | ||
43 | elseif (any(size(filt)==1)) | ||
44 | filt = filt(:); | ||
45 | res = upConv(im,filt,'reflect1',[2 1]); | ||
46 | res = upConv(res,filt','reflect1',[1 2]); | ||
47 | else | ||
48 | res = upConv(im,filt,'reflect1',[2 2]); | ||
49 | end | ||
50 | else | ||
51 | res = im; | ||
52 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/upConv.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/upConv.m new file mode 100755 index 0000000..4d1ffd9 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/upConv.m | |||
@@ -0,0 +1,80 @@ | |||
1 | % RES = upConv(IM, FILT, EDGES, STEP, START, STOP, RES) | ||
2 | % | ||
3 | % Upsample matrix IM, followed by convolution with matrix FILT. These | ||
4 | % arguments should be 1D or 2D matrices, and IM must be larger (in | ||
5 | % both dimensions) than FILT. The origin of filt | ||
6 | % is assumed to be floor(size(filt)/2)+1. | ||
7 | % | ||
8 | % EDGES is a string determining boundary handling: | ||
9 | % 'circular' - Circular convolution | ||
10 | % 'reflect1' - Reflect about the edge pixels | ||
11 | % 'reflect2' - Reflect, doubling the edge pixels | ||
12 | % 'repeat' - Repeat the edge pixels | ||
13 | % 'zero' - Assume values of zero outside image boundary | ||
14 | % 'extend' - Reflect and invert | ||
15 | % 'dont-compute' - Zero output when filter overhangs OUTPUT boundaries | ||
16 | % | ||
17 | % Upsampling factors are determined by STEP (optional, default=[1 1]), | ||
18 | % a 2-vector [y,x]. | ||
19 | % | ||
20 | % The window over which the convolution occurs is specfied by START | ||
21 | % (optional, default=[1,1], and STOP (optional, default = | ||
22 | % step .* (size(IM) + floor((start-1)./step))). | ||
23 | % | ||
24 | % RES is an optional result matrix. The convolution result will be | ||
25 | % destructively added into this matrix. If this argument is passed, the | ||
26 | % result matrix will not be returned. DO NOT USE THIS ARGUMENT IF | ||
27 | % YOU DO NOT UNDERSTAND WHAT THIS MEANS!! | ||
28 | % | ||
29 | % NOTE: this operation corresponds to multiplication of a signal | ||
30 | % vector by a matrix whose columns contain copies of the time-reversed | ||
31 | % (or space-reversed) FILT shifted by multiples of STEP. See corrDn.m | ||
32 | % for the operation corresponding to the transpose of this matrix. | ||
33 | |||
34 | % Eero Simoncelli, 6/96. revised 2/97. | ||
35 | |||
36 | function result = upConv(im,filt,edges,step,start,stop,res) | ||
37 | |||
38 | %% THIS CODE IS NOT ACTUALLY USED! (MEX FILE IS CALLED INSTEAD) | ||
39 | |||
40 | 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'); | ||
41 | |||
42 | %------------------------------------------------------------ | ||
43 | %% OPTIONAL ARGS: | ||
44 | |||
45 | if (exist('edges') == 1) | ||
46 | if (strcmp(edges,'reflect1') ~= 1) | ||
47 | warning('Using REFLECT1 edge-handling (use MEX code for other options).'); | ||
48 | end | ||
49 | end | ||
50 | |||
51 | if (exist('step') ~= 1) | ||
52 | step = [1,1]; | ||
53 | end | ||
54 | |||
55 | if (exist('start') ~= 1) | ||
56 | start = [1,1]; | ||
57 | end | ||
58 | |||
59 | % A multiple of step | ||
60 | if (exist('stop') ~= 1) | ||
61 | stop = step .* (floor((start-ones(size(start)))./step)+size(im)) | ||
62 | end | ||
63 | |||
64 | if ( ceil((stop(1)+1-start(1)) / step(1)) ~= size(im,1) ) | ||
65 | error('Bad Y result dimension'); | ||
66 | end | ||
67 | if ( ceil((stop(2)+1-start(2)) / step(2)) ~= size(im,2) ) | ||
68 | error('Bad X result dimension'); | ||
69 | end | ||
70 | |||
71 | if (exist('res') ~= 1) | ||
72 | res = zeros(stop-start+1); | ||
73 | end | ||
74 | |||
75 | %------------------------------------------------------------ | ||
76 | |||
77 | tmp = zeros(size(res)); | ||
78 | tmp(start(1):step(1):stop(1),start(2):step(2):stop(2)) = im; | ||
79 | |||
80 | result = rconv2(tmp,filt) + res; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/var2.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/var2.m new file mode 100755 index 0000000..6957eff --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/var2.m | |||
@@ -0,0 +1,17 @@ | |||
1 | % V = VAR2(MTX,MEAN) | ||
2 | % | ||
3 | % Sample variance of a matrix. | ||
4 | % Passing MEAN (optional) makes the calculation faster. | ||
5 | |||
6 | function res = var2(mtx, mn) | ||
7 | |||
8 | if (exist('mn') ~= 1) | ||
9 | mn = mean2(mtx); | ||
10 | end | ||
11 | |||
12 | if (isreal(mtx)) | ||
13 | res = sum(sum(abs(mtx-mn).^2)) / max((prod(size(mtx)) - 1),1); | ||
14 | else | ||
15 | res = sum(sum(real(mtx-mn).^2)) + i*sum(sum(imag(mtx-mn).^2)); | ||
16 | res = res / max((prod(size(mtx)) - 1),1); | ||
17 | end | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/vectify.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/vectify.m new file mode 100755 index 0000000..3664223 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/vectify.m | |||
@@ -0,0 +1,8 @@ | |||
1 | % [VEC] = columnize(MTX) | ||
2 | % | ||
3 | % Pack elements of MTX into a column vector. Just provides a | ||
4 | % function-call notatoin for the operation MTX(:) | ||
5 | |||
6 | function vec = columnize(mtx) | ||
7 | |||
8 | vec = mtx(:); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/wpyrBand.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/wpyrBand.m new file mode 100755 index 0000000..c027cca --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/wpyrBand.m | |||
@@ -0,0 +1,39 @@ | |||
1 | % RES = wpyrBand(PYR, INDICES, LEVEL, BAND) | ||
2 | % | ||
3 | % Access a subband from a separable QMF/wavelet pyramid. | ||
4 | % | ||
5 | % LEVEL (optional, default=1) indicates the scale (finest = 1, | ||
6 | % coarsest = wpyrHt(INDICES)). | ||
7 | % | ||
8 | % BAND (optional, default=1) indicates which subband (1=horizontal, | ||
9 | % 2=vertical, 3=diagonal). | ||
10 | |||
11 | % Eero Simoncelli, 6/96. | ||
12 | |||
13 | function im = wpyrBand(pyr,pind,level,band) | ||
14 | |||
15 | if (exist('level') ~= 1) | ||
16 | level = 1; | ||
17 | end | ||
18 | |||
19 | if (exist('band') ~= 1) | ||
20 | band = 1; | ||
21 | end | ||
22 | |||
23 | if ((pind(1,1) == 1) | (pind(1,2) ==1)) | ||
24 | nbands = 1; | ||
25 | else | ||
26 | nbands = 3; | ||
27 | end | ||
28 | |||
29 | if ((band > nbands) | (band < 1)) | ||
30 | error(sprintf('Bad band number (%d) should be in range [1,%d].', band, nbands)); | ||
31 | end | ||
32 | |||
33 | maxLev = wpyrHt(pind); | ||
34 | if ((level > maxLev) | (level < 1)) | ||
35 | error(sprintf('Bad level number (%d), should be in range [1,%d].', level, maxLev)); | ||
36 | end | ||
37 | |||
38 | band = band + nbands*(level-1); | ||
39 | im = pyrBand(pyr,pind,band); | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/wpyrHt.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/wpyrHt.m new file mode 100755 index 0000000..476be83 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/wpyrHt.m | |||
@@ -0,0 +1,15 @@ | |||
1 | % [HEIGHT] = wpyrHt(INDICES) | ||
2 | % | ||
3 | % Compute height of separable QMF/wavelet pyramid with given index matrix. | ||
4 | |||
5 | % Eero Simoncelli, 6/96. | ||
6 | |||
7 | function [ht] = wpyrHt(pind) | ||
8 | |||
9 | if ((pind(1,1) == 1) | (pind(1,2) ==1)) | ||
10 | nbands = 1; | ||
11 | else | ||
12 | nbands = 3; | ||
13 | end | ||
14 | |||
15 | ht = (size(pind,1)-1)/nbands; | ||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/wpyrLev.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/wpyrLev.m new file mode 100755 index 0000000..18f30ae --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/wpyrLev.m | |||
@@ -0,0 +1,30 @@ | |||
1 | % [LEV,IND] = wpyrLev(PYR,INDICES,LEVEL) | ||
2 | % | ||
3 | % Access a level from a separable QMF/wavelet pyramid. | ||
4 | % Return as an SxB matrix, B = number of bands, S = total size of a band. | ||
5 | % Also returns an Bx2 matrix containing dimensions of the subbands. | ||
6 | |||
7 | % Eero Simoncelli, 6/96. | ||
8 | |||
9 | function [lev,ind] = wpyrLev(pyr,pind,level) | ||
10 | |||
11 | if ((pind(1,1) == 1) | (pind(1,2) ==1)) | ||
12 | nbands = 1; | ||
13 | else | ||
14 | nbands = 3; | ||
15 | end | ||
16 | |||
17 | if ((level > wpyrHt(pind)) | (level < 1)) | ||
18 | error(sprintf('Level number must be in the range [1, %d].', wpyrHt(pind))); | ||
19 | end | ||
20 | |||
21 | firstband = 1 + nbands*(level-1) | ||
22 | firstind = 1; | ||
23 | for l=1:firstband-1 | ||
24 | firstind = firstind + prod(pind(l,:)); | ||
25 | end | ||
26 | |||
27 | |||
28 | ind = pind(firstband:firstband+nbands-1,:); | ||
29 | lev = pyr(firstind:firstind+sum(prod(ind'))-1); | ||
30 | |||
diff --git a/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/zconv2.m b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/zconv2.m new file mode 100755 index 0000000..f678d89 --- /dev/null +++ b/SD-VBS/benchmarks/texture_synthesis/src/matlabPyrTools/zconv2.m | |||
@@ -0,0 +1,41 @@ | |||
1 | % RES = ZCONV2(MTX1, MTX2, CTR) | ||
2 | % | ||
3 | % Convolution of two matrices, with boundaries handled as if the larger mtx | ||
4 | % lies in a sea of zeros. Result will be of size of LARGER vector. | ||
5 | % | ||
6 | % The origin of the smaller matrix is assumed to be its center. | ||
7 | % For even dimensions, the origin is determined by the CTR (optional) | ||
8 | % argument: | ||
9 | % CTR origin | ||
10 | % 0 DIM/2 (default) | ||
11 | % 1 (DIM/2)+1 (behaves like conv2(mtx1,mtx2,'same')) | ||
12 | |||
13 | % Eero Simoncelli, 2/97. | ||
14 | |||
15 | function c = zconv2(a,b,ctr) | ||
16 | |||
17 | if (exist('ctr') ~= 1) | ||
18 | ctr = 0; | ||
19 | end | ||
20 | |||
21 | if (( size(a,1) >= size(b,1) ) & ( size(a,2) >= size(b,2) )) | ||
22 | large = a; small = b; | ||
23 | elseif (( size(a,1) <= size(b,1) ) & ( size(a,2) <= size(b,2) )) | ||
24 | large = b; small = a; | ||
25 | else | ||
26 | error('one arg must be larger than the other in both dimensions!'); | ||
27 | end | ||
28 | |||
29 | ly = size(large,1); | ||
30 | lx = size(large,2); | ||
31 | sy = size(small,1); | ||
32 | sx = size(small,2); | ||
33 | |||
34 | %% These values are the index of the small mtx that falls on the | ||
35 | %% border pixel of the large matrix when computing the first | ||
36 | %% convolution response sample: | ||
37 | sy2 = floor((sy+ctr+1)/2); | ||
38 | sx2 = floor((sx+ctr+1)/2); | ||
39 | |||
40 | clarge = conv2(large,small); | ||
41 | c = clarge(sy2:ly+sy2-1, sx2:lx+sx2-1); | ||