-
Notifications
You must be signed in to change notification settings - Fork 1
/
Curvature_Segmentation.m
760 lines (662 loc) · 92.5 KB
/
Curvature_Segmentation.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
% Johannes Ulén and Carl Olsson 2013
% Perform image segmentation with curvature prior
classdef Curvature_Segmentation < handle
properties
lambda = 1; % Regularization strength
max_iter = 1000;
max_relgap = 1e-14;
verbose = false;
patch_size = 2; % one dimension of the square.
end
properties (SetAccess = protected)
unary; %w x h x 2.
imsz;
L;
e;
lb;
PE;
end
methods(Access = protected)
function [cost, labels] = curvature_cost_patch(self)
if (self.patch_size == 2)
cost = pi*[0 2 2 0 2 0 8 2 2 8 0 2 0 2 2 0]/4;
labels = 0:15;
elseif (self.patch_size == 3)
% Cached.
labels = [0;1;2;3;4;5;6;7;8;9;11;15;19;22;23;25;27;31;32;36;38;39;47;52;54;55;59;62;63;64;65;71;72;73;75;77;79;88;89;91;95;111;127;128;155;182;191;192;200;201;203;207;208;216;217;218;219;223;248;251;255;256;260;263;288;292;293;294;295;303;304;308;310;311;319;320;329;356;383;384;400;416;420;422;423;432;434;436;438;439;440;446;447;448;449;452;456;457;459;464;472;473;475;479;480;484;486;488;489;492;496;500;502;503;504;505;506;507;508;509;510;511];
cost = [4.74665586412012e-13 2.31175707560525e-12 1.57079632671734 0.785398163347302 2.36681582185423e-12 5.62762173761887e-11 0.785398163366235 1.46455202258514e-12 5.39698441619308e-11 0.785398163364975 1.21397764082815e-12 9.62953267082454e-11 6.51969048299928e-11 2.29157206058773e-10 3.25586009988298e-11 2.27179905484183e-11 8.41028647125783e-11 5.12858447184361e-11 1.57079632449927 0.785398163172558 1.18078183116234e-12 1.81313775325564e-11 1.08099545450313e-10 1.07965503110842e-09 2.57533097495002e-10 3.23262516316258e-11 1.57079632677028 1.24984110059611e-09 1.39928950336030e-12 2.26791718500147e-12 6.45053292930566e-11 2.73183535479453e-11 0.785398163366782 1.41726981102130e-12 7.89479982818799e-11 2.05688608547329e-10 1.75551815461859e-10 2.71374569701175e-11 3.95520273679606e-11 3.36128161814208e-11 7.95727711189633e-13 3.70515718313491e-11 0.785398163302294 5.50979361512596e-11 4.67512207934020e-11 7.51555716294874e-11 4.63319911679205e-11 0.785398163366618 1.20158900232196e-12 5.17666641838962e-11 1.57079632666189 1.57079632679483 3.72571546753579e-11 6.30240391658767e-11 3.18377206418416e-11 1.57079632673601 1.44657171492414e-12 0.785398163319641 1.57079632674548 1.57079632670277 1.20698012991495e-12 1.58277142140777e-12 2.10963518912367e-11 3.18533861295306e-11 0.785398163339574 1.44053970266856e-12 9.29575405501449e-11 2.83921177601033e-11 4.68828753132821e-11 9.92448311625324e-11 2.99147721801031e-11 4.67102133602215e-11 2.26004414703420e-10 7.98400599702371e-13 0.785398163380430 3.17558823708557e-09 3.22232516174583e-09 3.14892330060493e-09 1.57079632663411 0.785398163365713 1.57079632673016 9.57530122535562e-13 1.38552153189179e-11 3.49944443345232e-11 4.18267287277484e-11 9.18257772726891e-11 7.01971939167582e-11 5.94640336252258e-11 1.42330182330335e-12 0.785398163370170 2.29896805870153e-09 2.25106497531895e-09 1.20863723364745e-12 2.53877076763103e-12 4.11264723490883e-11 5.10429695108129e-11 1.32446349593758e-11 6.52526248925831e-11 1.57079632669902 2.63463844433343e-11 3.20021839830112e-11 8.15693350431000e-13 0.785398163346853 7.20577194426511e-11 5.16211460140352e-11 6.45188172136217e-11 5.66668106405385e-11 2.82174936988427e-11 3.26375568192543e-11 6.76377253774476e-11 3.33242867661493e-11 9.62420996453603e-13 0.785398163385181 1.57079632674212 3.25070758327647e-13 0.785398163385376 1.57079632671566 1.21134025488083e-12 0.785398163347415 1.57079632359436 1.57788054742355e-12 4.74665586385542e-13];
% Calculate the values above using this function
%[cost, labels] = curvature_cost_3x3(self);
elseif (self.patch_size == 5)
% Cached
% 2422 << 2^(25) = 33554432
cost =[2.56803625006409e-17,1.10166461075360e-17,1.57079632679417,2.85973570544701e-17,3.23121722442219e-14,0.785398163396713,0.392699081698150,3.95092604261076e-14,1.82630034140483e-14,2.04601882202027e-14,1.53703666426661e-13,1.10075612904563e-17,1.52845527810948e-14,6.28749275988809e-14,2.86434095505550e-17,1.17809724509588,0.392699081698614,2.18013571595565e-14,2.57400875877039e-17,1.99729687788248e-14,2.86878926516412e-17,4.77337580543170e-17,2.86335095172195e-17,1.94878989254620e-14,2.25158415856928e-14,2.00462407699467e-14,3.07153074240831e-14,3.12004204989383e-14,2.36018177865112e-14,7.51355157781869e-14,2.91918359620431e-14,0.392699081696742,0.785398163395204,0.392699081698615,2.31728090007459e-13,2.86005093315654e-17,2.00627344069824e-14,2.24511588468489e-13,1.47067822225944e-14,0.392699081693747,3.23815129212013e-14,2.96317746183761e-14,1.99101498873016e-14,2.03985318456370e-14,9.50329507427391e-14,4.42864949441009e-14,4.00353186545110e-14,2.92856164571978e-14,2.52062928272462e-14,2.83173210125913e-14,5.47249495370935e-14,1.88286570190260e-14,3.71017835874520e-14,5.91242352999870e-14,1.56462345285107e-13,2.88347762444439e-14,1.43562332691875e-14,4.30974114053652e-14,2.76608535464698e-14,1.66133327898190e-13,2.27112779247741e-14,6.58427208725461e-14,5.03417790464288e-14,2.67030115561934e-14,1.95846035107383e-14,2.06872505318428e-14,1.75446685411951e-14,0.785398163395821,2.85695240492101e-17,5.78541090056152e-14,4.76300696874623e-17,0.392699081698892,2.86467708273478e-17,5.01458240940290e-14,1.75098511668149e-14,3.71029713201962e-14,7.44414616934996e-14,1.17813223562139e-12,3.71121544841163e-14,2.53924560874870e-14,3.50294717164951e-14,0.785398163390905,2.71213232651667e-14,2.86492382296174e-17,1.35664933759852e-14,1.06311844311895e-13,2.10206811523810e-14,2.25246575935298e-14,3.27301940140821e-12,5.03259317666564e-14,5.00330889647504e-14,3.11652487061077e-13,3.28375207045620e-14,3.77079595955640e-14,1.42148629820215e-14,1.28458189803080e-12,4.13864939648802e-14,3.36319100896309e-14,1.17809724509742,2.57329348845486e-17,1.57079632679490,1.89387417123521e-13,9.06737900929009e-14,2.86762682230949e-17,2.44940305536193e-13,2.63229006146654e-14,7.26336544875772e-14,3.11315145513826e-14,1.77778188727011e-14,2.14790873149473e-14,3.19170299442359e-14,2.38622944748671e-17,4.24783129119080e-14,1.58270109596829e-14,1.46567885997739e-13,1.89224408096553e-14,3.28369059002970e-14,1.68208305151617e-14,1.02111581135517e-12,3.71854815005721e-14,1.99732292360147e-13,2.87119800198880e-17,1.27120599195068e-12,2.49980421979663e-14,1.88355487104369e-14,1.76001571108609e-14,0.392699081698283,4.33512554904320e-14,1.09582295927164e-13,1.95866889349221e-14,3.30013669779478e-14,1.66666170585566e-14,6.22756525719868e-14,5.74269409280262e-14,3.40834323523132e-13,9.30001390418455e-14,2.23756138062309e-14,2.64809410483401e-14,4.29177131257745e-14,1.10531615572964e-13,1.98190515720706e-14,2.59079883981864e-14,4.70451438399968e-14,3.00043984466984e-14,4.57252557562805e-14,1.50494077150322e-12,8.77013676463499e-14,1.74385293184555e-13,2.86710483653212e-17,4.82444369240472e-14,4.53383975936667e-14,0.785398163391145,2.02629660727028e-14,1.66534732064704e-14,2.94015263602354e-14,2.98556244709036e-14,3.83480395024853e-14,1.74855182178803e-14,5.67181409049730e-14,1.13797640327183e-13,1.71058780696876e-14,4.21971437070724e-14,6.60513268071252e-14,3.53115390275625e-14,2.00511747969591e-13,1.47294764921257e-13,1.71634981158355e-14,1.84183890004706e-14,2.92425082845089e-14,0.785398163398185,1.25133663707317e-13,5.83459978966471e-14,2.46165697162453e-14,2.04755443284441e-12,2.74869152381845e-13,8.71149321094793e-14,1.95225417664132e-14,2.39226420073331e-14,2.59218851248888e-14,4.71341876829665e-14,2.83602876347992e-14,4.57690137965934e-14,2.01610369108535e-14,6.05393630955621e-14,2.27493461887032e-14,1.80169817600601e-13,3.79102427382472e-14,2.04809321026147e-14,2.08758614705946e-14,2.04267841260905e-13,1.63966097741449e-14,2.07855609400450e-14,3.33629503960029e-14,4.55101946865686e-14,3.82913726240923e-14,6.17321305590237e-14,3.20466557678296e-14,4.95654232069951e-14,2.22978847107833e-14,2.22019763294077e-14,3.37403057950363e-14,4.23454868010222e-14,2.03707881406836e-14,1.78228733000029e-14,7.13383466422007e-14,6.18094430589274e-14,0.392699081702381,2.86148887146010e-17,2.50027331870673e-14,2.43844398377951e-14,7.02277495735853e-14,4.97166103718501e-14,2.63767971953677e-14,7.12436997558752e-14,2.11540179942650e-14,0.392699081694740,2.38674489536160e-17,6.67957960944131e-14,4.41541812969370e-14,5.65745818289142e-14,5.02647854215493e-14,2.31953951659370e-14,5.96946222948399e-14,4.55110336049516e-14,1.81188597400469e-14,1.44734966020027e-14,1.03198612691364e-13,3.90360315569338e-14,2.86503335480149e-17,3.25923808265570e-14,2.74404517909490e-14,4.72483827010076e-14,2.55412546924036e-14,3.33504025325886e-14,0.392699081697692,5.56494676300285e-14,3.99877267482777e-14,1.52753579723768e-13,1.33270010988543e-13,5.81056901880607e-14,2.75028325977634e-13,1.64903833481424e-13,1.69643018070528e-14,1.17809724509806,1.51759040554606e-14,3.46359945898636e-14,2.86480673991316e-17,1.90484690441424e-14,1.58429491564196e-13,3.43904372829431e-14,1.74013560637681e-14,4.66280222275913e-14,4.78513106066781e-14,6.28038905454847e-14,6.73876994085082e-14,1.82012288076109e-14,2.33951928406473e-14,4.49495214440998e-14,1.00922688089553e-13,2.00376818945119e-14,5.15039970305193e-13,1.48614355409300e-14,1.96855750809932e-14,2.29826534100439e-14,1.91333505209058e-12,5.96838906210767e-14,4.67899451938149e-14,2.51507372607071e-14,7.55400136332690e-13,4.41032195661795e-14,1.46828705599227e-13,3.51090542550297e-14,2.57233796314167e-17,2.62580115352376e-14,0.785398163393067,2.35360134410026e-14,1.54176675023273e-14,4.38729927734275e-14,2.86843108494008e-17,7.79145062991962e-14,3.60471552169483e-13,2.45376051665435e-14,3.15471659228861e-14,3.60143459966418e-14,2.05722120720591e-14,1.95264768434003e-14,2.76960628631029e-14,1.84157144399920e-14,1.89655041022384e-14,2.89129555630415e-14,6.20064895676523e-14,8.10694783705727e-14,1.96655624244333e-14,7.38847118444666e-14,3.34703443981459e-14,1.26667834659668e-13,1.52962280590738e-14,2.38932414002556e-17,3.40900234690473e-14,2.52807407568481e-14,1.79345437418869e-13,2.49180256469149e-14,3.25222256327383e-13,0.785398163397451,3.37014266362979e-14,1.54815489317336e-13,1.93965489142020e-14,2.14411685643016e-14,2.25343631968278e-14,1.24684939785367e-13,2.35342267325209e-14,3.42247467731585e-14,1.72398318136183e-14,2.48982663063397e-14,2.87075362312297e-17,3.39985987491479e-14,5.36171749153310e-14,1.86598887642981e-14,1.52538682014136e-13,2.78407092261492e-13,1.14997369393241e-13,5.73439927802280e-14,1.88669433671074e-14,1.87114083391467e-14,1.62268788096865e-13,3.33401624977584e-14,2.94232924170144e-14,4.83625618022153e-14,2.23664305780880e-14,3.42168854942636e-14,5.30819556859421e-14,6.36161219882195e-14,0.392699081700517,1.70510409965324e-14,1.15415428393367e-13,2.00990617515271e-13,4.08887696322900e-14,1.15925751428280e-13,3.61645956140008e-14,4.56871479143569e-14,1.67162496636669e-14,1.88720597126419e-14,7.67859160950595e-12,2.19204670988498e-14,5.58665669666807e-14,4.31031534863307e-14,2.95926176865460e-14,2.86617033278685e-17,3.09672358309194e-14,1.74091609377341e-14,5.92721673572406e-14,2.71366188462313e-14,2.34073095363353e-14,2.70120637411222e-14,2.14261664399187e-14,2.13491245456771e-14,8.43185598401161e-14,6.46930648023804e-13,1.51148783444353e-14,4.72369011123062e-14,1.01743485914139e-12,2.84402971138699e-14,1.72256153730659e-14,2.42604255171074e-14,9.29276430561402e-14,4.42814374469610e-14,4.24796196283019e-14,1.68030488673101e-14,1.50255712860471e-13,2.11834370894814e-14,2.80852003103399e-14,7.80866460550014e-14,8.43778341442854e-14,3.95592140858113e-14,3.19920752249537e-14,5.49848904868101e-14,3.03897419436156e-14,8.27035276688309e-14,5.86857748381045e-14,2.66573838352509e-14,5.24911199715741e-14,4.78553347360300e-14,2.28622852781285e-14,5.71170490634498e-14,2.15320301587557e-14,1.53526032462342e-14,1.80695147804290e-14,4.79865468500624e-14,2.73366270884520e-14,1.03943158461374e-13,1.77719617921496e-14,1.83800529080865e-14,2.18446678530332e-14,6.99624679266603e-14,2.91683139983389e-14,1.17809724509692,6.84968170287191e-14,7.67146338654704e-14,2.07434150647216e-13,8.03718647714654e-12,3.79133908549478e-14,2.39740759323338e-13,1.66192546265459e-14,4.54105281489686e-14,0.785398163399291,4.33304510567320e-14,1.19100624446108e-13,4.93973380922878e-13,2.85771505012800e-17,4.69642423501881e-14,3.79451026158168e-14,2.38108909501560e-14,3.35499106851923e-14,1.90746628906769e-14,2.15774551614597e-14,1.43094401583083e-14,3.01542661531400e-14,4.70009764539515e-14,0.785398163397910,3.33599826230548e-14,5.30667510874037e-14,1.82122205586684e-14,1.72166174603230e-13,6.09726141890137e-14,1.16054374031588e-13,3.85363738565972e-14,4.58013018401590e-14,4.47361429963420e-14,2.39709293505333e-17,2.67738357226131e-14,2.64075643148657e-14,1.49539188790681e-14,3.29997542303957e-14,1.66653350415949e-14,0.785398163396068,3.10716285322094e-14,3.55297630158810e-14,2.45396972996403e-14,1.95650329539366e-14,1.09464680418840e-12,6.71138551698844e-14,3.46483100912283e-12,1.65862808983324e-14,2.34293299811250e-14,3.17573438547399e-14,2.10541244611150e-14,2.00599410543335e-14,2.86555865190392e-17,2.32426534492136e-14,4.26165252509181e-14,1.57848041613390e-14,0.392699081698414,6.91053319671476e-14,6.88140404152497e-14,2.58942141423978e-14,1.80731933453994e-14,1.74242258176166e-13,3.21141850932598e-14,6.82248943383614e-14,0.392699081698700,1.17809724509904,1.82439752609646e-14,3.45937891925827e-14,1.23316110739758e-13,3.52537231579722e-14,2.83202813104892e-14,9.14175203411506e-14,2.97539336347556e-14,2.09593529817463e-13,1.49217783446179e-14,6.44735530757969e-14,2.86556552193830e-17,3.60853313722652e-14,1.05134474393467e-13,1.73205616477567e-13,3.00468719686554e-14,3.33252869729417e-14,4.44541057431827e-14,3.53949071452717e-14,4.04362727959462e-14,1.77241219157545e-14,2.33992175111175e-14,2.70214916398165e-14,2.16269916716023e-14,1.37558810193839e-12,2.17553127401249e-14,3.80334381025138e-14,0.785398163395464,3.15454182883874e-14,4.29135072769396e-14,3.43995159741586e-14,2.39925007157613e-14,2.20108181385727e-14,6.47730794389429e-14,2.84660111900528e-14,4.72902460894007e-14,2.38634083031786e-14,1.91389078959762e-14,6.09299365292472e-14,2.80820259072871e-14,4.22346396715545e-14,3.63425333304149e-14,2.30197948592231e-14,5.90377061269991e-14,5.06415112734260e-14,2.57178051439619e-17,1.10211327929484e-17,2.41880638928306e-14,2.17060863098794e-14,2.08559220604384e-14,3.38390704854284e-14,2.65163243976736e-14,4.09095897213655e-14,2.55794814162079e-14,2.92667510324608e-14,1.49996774603712e-14,5.83455152290048e-14,7.09132789703676e-14,6.31648897478192e-14,3.17447910805921e-13,3.21325324474120e-14,3.95648340495343e-14,5.99097354353388e-14,1.91000434649688e-14,2.27429210064912e-14,1.77848795281987e-14,1.50983587983579e-14,1.75861814673669e-14,2.86532153284671e-17,9.67273467730021e-13,2.22204146407019e-14,2.09752048607360e-13,2.90280415459282e-14,2.50194119149287e-14,1.84581928138802e-14,0.392699081698881,9.33877848392211e-14,2.57309585388272e-17,3.03884922068085e-14,3.51521666804868e-14,8.41269871031418e-14,8.30762878962894e-14,3.06116399857587e-14,0.392699081698022,0.392699081698117,2.32123544414348e-14,1.18236672606442e-13,4.03188930732483e-14,2.19997137580471e-14,5.40033038449777e-14,2.07288809507359e-14,1.65605594351785e-13,3.03434549230963e-14,2.50651254727394e-14,3.37171643107617e-14,2.85701508736425e-17,6.69542881139016e-14,3.87378292809746e-14,7.01847536610928e-14,1.33202045065041e-12,1.87382542398538e-14,5.60521841478978e-14,1.79052043189389e-14,3.83071558342026e-14,2.40730699479654e-14,4.56304330204817e-14,1.96982882556645e-14,2.01669884159331e-14,4.32590503767030e-14,1.16883079525544e-12,1.59613549013556e-14,1.62336873406057e-14,5.89609373061631e-13,3.10569993225988e-14,4.01857419407143e-14,2.62222612397180e-14,1.71188211057407e-14,8.16268288347246e-14,1.57595763472212e-14,2.85793281072287e-17,2.99309669127410e-14,1.80315254003075e-14,3.21892004903719e-14,1.13302103827316e-13,1.04159928992389e-13,4.20948047785334e-14,1.92376761990796e-14,2.03954498366682e-14,2.23191027286246e-14,3.07668996742190e-14,3.23719282483614e-14,1.76945100920927e-13,1.10697222492038e-13,1.77722271887194e-13,2.43769436629808e-14,2.77265174950912e-14,1.08916513698167e-13,3.81259249482726e-14,4.70027351939962e-14,0.392699081698329,1.92998190800001e-14,2.59657252887786e-14,2.38859932181474e-17,2.38244076558937e-14,2.13743812420467e-14,1.88778427673011e-14,1.63942126751564e-14,1.68666744388987e-14,0.392699081699301,1.97041697969419e-14,2.82412980149360e-14,1.60371096493659e-14,2.98758575322064e-14,3.90118172286847e-14,2.02903460766031e-14,7.54921915986272e-14,3.08864058598703e-14,1.88904988431552e-14,3.02852633789876e-14,1.90646232989895e-14,2.10875005706525e-14,2.67997158554332e-14,7.18602396053695e-14,2.86180419582719e-17,1.14863374168309e-13,2.28074629056401e-14,1.95631870680879e-14,2.55816188874876e-14,1.78453751194999e-14,1.70519261538205e-14,2.03409226769917e-14,2.72317475806699e-14,2.02072310963239e-14,2.26032583442222e-14,1.63368634993942e-13,0.392699081698311,3.08292538161373e-14,3.89931319199412e-14,2.04698517089181e-14,9.07642401092301e-14,3.62694641614847e-14,2.47248217853563e-14,0.785398163397222,2.41433054370463e-14,4.82698980882068e-14,1.34539086360235e-13,3.15926093604216e-14,1.62637420570024e-13,0.785398163397009,6.37729721679811e-14,2.86925213615136e-17,1.11403014991074e-13,1.48239859613969e-13,2.68810690453099e-14,9.76196864348300e-14,3.01408412392213e-14,2.06754745612971e-14,3.48743727203540e-14,3.18371413900268e-14,3.98793105984314e-14,8.17623584969083e-14,3.55569169735246e-14,4.76949650836047e-17,2.17136594663866e-14,3.46210063267918e-14,4.82124167159288e-14,2.97605471200717e-14,2.16923562100518e-14,5.01386429885619e-14,5.80397840298149e-14,1.48879392052617e-14,7.96781999786642e-14,2.42588173889558e-13,2.86503716912950e-17,1.02256562205493e-13,2.76316459734981e-14,2.94355065326970e-14,1.17809724509582,1.96609631918797e-14,2.12684889936211e-14,2.15440234965724e-14,1.79437560862316e-13,1.71670680030900e-14,1.54564736834956e-14,1.80055388841249e-14,1.71533524875422e-14,1.75213010004920e-14,3.10395250034286e-14,5.33136418647635e-14,3.76417670887934e-14,1.66344302973221e-13,1.96349540849228,1.78921878633945e-14,0.785398163397766,0.392699081698127,2.86493444580813e-17,3.86265510810389e-14,3.00135160384604e-14,3.53909053917292e-13,1.83034756519225e-14,2.42173497699502e-14,1.86101839537392e-14,4.27271350570983e-14,4.37690660338850e-14,2.35619449019114,4.96399467288901e-13,2.30884191305448e-14,1.11289828604734e-13,1.94334409986315e-14,2.26427340872336e-13,1.83211997178189e-14,2.55235291170448e-14,2.73043571693700e-14,2.57316399059104e-17,4.45442227070773e-13,4.58018514613768e-14,4.52068954015590e-14,2.28793490191965e-14,2.67449571966607e-14,2.39849529381944e-13,1.47612700805444e-13,6.28890150111614e-14,0.785398163397034,2.83871814212117e-14,5.86174534986890e-14,7.82612011288229e-14,4.98905063061283e-14,1.69960132151422e-14,4.73276137335353e-14,3.95822396326063e-14,2.12140518912564e-14,0.392699081698205,2.04829793570014e-14,2.85729936575574e-17,3.63056160610757e-14,0.392699081697053,2.65286156784765e-14,1.09255170200996e-13,1.31808806259238e-13,1.53892665525835e-13,1.87952031215918e-14,1.42404563791498e-13,6.95024766922604e-14,4.97028857531590e-13,3.84774500316193e-14,3.85138937222320e-13,1.63298663275143e-14,1.04018838211025e-13,0.392699081697539,3.14701738412155e-14,2.82022075839294e-14,1.22337368350397e-13,2.43543741905401e-14,6.00907632210281e-14,1.15216722338287e-13,1.17809724510162,2.37680779154295e-13,8.08978280179864e-14,2.97078506735414e-14,1.83893382254648e-14,2.40340807841963e-14,2.85788393135628e-17,2.01939219903146e-13,2.41059735565307e-14,1.81117748079099e-14,3.13852778832782e-14,8.82942752562982e-14,2.03896376245645e-14,6.15300830633466e-14,3.23593920393274e-14,2.26897204522753e-14,0.392699081698644,2.11085417142134e-13,2.47854583343731e-14,2.75640657664824e-14,2.63037819459989e-14,2.32188422121128e-14,2.52443839381753e-14,1.61079937550248e-14,6.24395124450232e-14,2.12524356440425e-14,2.39167864888302e-17,3.95277846699646e-14,0.392699081698577,2.06656032333069e-14,4.49404179462289e-14,2.87444729434338e-14,2.29871732929061e-14,1.43176853878988e-13,1.20518250056438e-13,3.33310077105019e-14,3.35264591728487e-14,1.81566982844299e-14,1.95400183500420e-14,2.34508456365418e-14,1.17809724508875,1.93453483620837e-13,6.15790182526094e-13,2.01911927384763e-14,2.85715664381393e-17,2.09873867634413e-14,8.04389303017772e-14,2.19956547038114e-14,6.94503124719858e-14,1.17809724509534,2.48224352410046e-14,5.68054701229135e-14,2.15176816212593e-14,2.17398080952610e-14,2.37725341411110e-14,1.84378351502000e-14,1.24589945920866e-13,4.11486218631636e-14,1.77868183753575e-14,1.99100376080154e-14,3.52908916509452e-13,6.29262018946187e-14,4.15430535827434e-14,2.57167576614403e-14,2.45801354970677e-14,1.90821402831404e-14,4.75131627054650e-14,5.67446657885554e-14,1.79902958226134e-13,2.31742232984150e-14,1.77434040777521e-13,3.61662392523285e-14,9.87463640874417e-14,1.09889063247982e-13,2.52334269941025e-14,2.43536013114913e-14,9.95464416634863e-14,2.01642369592325e-14,3.08402254201047e-13,5.62779786992021e-14,8.28713882753461e-14,3.42181348692049e-14,3.11567812703197e-13,3.93238702032948e-14,2.22103381632499e-13,1.00922003785160e-13,1.95063636434376e-14,4.32401971617465e-14,2.79167848329826e-14,1.52866450864778e-14,3.56189164290041e-14,2.15234562836671e-14,2.40802355301733e-14,3.77582363765201e-14,2.46916278675833e-14,9.39405487311057e-13,1.76842314164404e-14,1.15740105013104e-13,0.392699081699904,2.86879423974876e-17,3.52435135370221e-14,1.88688458421783e-14,4.50920213851776e-14,7.00456360917319e-14,1.57147026022705e-13,2.52646025318307e-14,6.76738483049188e-14,2.26052751776848e-14,3.24437481831519e-14,2.21252748845470e-12,5.89219293043715e-14,2.09635297397352e-14,2.06414454225996e-14,2.13761736064689e-13,1.05985386694978e-12,1.92703302450879e-13,0.392699081696418,2.39259778249017e-17,2.12464680724142e-14,2.55028070927642e-14,2.18387171175418e-14,6.99365466941566e-14,2.64591845654271e-14,8.57456694751804e-14,1.50579677207700e-13,3.15687478098248e-13,6.95811499472851e-14,2.53969393081432e-13,6.02312929422224e-14,3.61055807265187e-14,3.61927440146649e-14,8.69466766369249e-14,5.47618075180296e-14,1.50934163690723e-14,2.75347408066298e-14,2.86510473564916e-17,9.10589191565050e-14,6.70838956171249e-14,0.392699081698387,1.81682869596103e-14,2.41565342100791e-14,3.61423066956329e-14,4.74817633528256e-14,1.02437356515887e-13,2.24474745629662e-14,1.46900519493479e-14,2.44924019303051e-13,4.86567275369000e-14,3.05646424210740e-14,3.03317105633818e-13,2.25870180015093e-14,3.02385242102235e-14,1.67567513193795e-14,4.38762195720908e-14,2.94369816354048e-14,1.47551235942137e-13,3.87766338911201e-14,7.06108244988194e-13,2.40485800162935e-14,1.85586711108871e-14,2.41564715673656e-13,2.18224177348256e-14,3.46429708676266e-14,2.86478438821216e-17,2.04153503643078e-14,3.31646294134279e-14,4.45700895773487e-14,5.40378991403498e-14,2.67736869343018e-14,3.78257803550413e-14,4.14317777976839e-14,4.25296479333010e-14,2.39974548841227e-14,4.19536386926889e-14,4.28183717011745e-14,6.65006511159447e-14,3.63077557103892e-13,1.61469565425942e-13,1.19895039262276e-13,2.77301166445319e-14,1.75463384922286e-14,1.82726923697161e-14,2.81717062153576e-14,5.04021473829850e-14,3.53041077154957e-14,2.57252698465025e-17,3.04246501619045e-14,2.68561428449862e-14,0.392699081698745,3.48765138263429e-14,3.63039063762276e-14,1.54574806725481e-13,3.45303516702183e-13,2.13650026098420e-14,7.85149919791046e-14,5.81308042794879e-14,2.28255590740821e-14,2.87414103051220e-14,3.53498224269131e-14,2.92766099098836e-14,2.68728348171363e-13,1.44479921088430e-14,2.86823243630933e-17,2.92165976431482e-14,0.392699081697160,2.27104507729190e-14,2.26931822079468e-14,0.785398163396854,3.19413297428605e-14,4.49147757772703e-14,3.06117729454262e-14,3.33667979488155e-14,4.27589729761939e-14,1.65947165611411e-13,3.52366831423571e-14,1.21084879097493e-13,1.66675444637068e-14,5.05721899397550e-14,1.84334212799296e-14,1.17809724510105,1.82405096249759e-14,2.79914140298582e-14,2.15366325097413e-14,2.90178030346096e-14,5.57405661534248e-14,2.03154694341851e-14,2.86866150289779e-17,0.392699081696709,2.14620832989692e-14,2.12164914889236e-14,2.37160184035310e-14,2.81597680923121e-14,2.56359199835494e-14,4.40292539530300e-14,2.01403612838056e-14,4.03531981262979e-14,2.06848597297667e-14,2.40771397849786e-14,1.92637698686782e-14,2.86243804724561e-14,4.77274717412662e-17,1.55294646096055e-14,3.09144472599659e-14,4.66653651730951e-13,1.60964483827366e-14,3.03533790441314e-14,5.36089487265619e-14,1.61501160162209e-14,6.65464859712878e-14,2.66226868873173e-14,2.86272650737120e-14,4.23996613376748e-14,1.02679672509555e-13,6.04668364010557e-13,3.88361038575479e-14,9.20512332095871e-14,2.14501609143402e-14,5.03216827612239e-14,1.91471186806906e-14,2.86206440408831e-17,7.24847498606726e-14,1.70182572428603e-13,1.79058652800889e-14,6.85754620983399e-14,1.97228213488452e-14,6.76943380325332e-14,5.18629117885405e-14,1.16922174139525e-13,2.32446012565609e-14,6.25864559129807e-14,1.40057619378478e-12,2.49462065193037e-14,6.80724956474547e-14,2.22485939254338e-14,0.785398163397349,2.82891638519552e-14,2.74889357188961,1.71716226338064e-14,1.95749948832778e-14,1.77575075298557e-14,1.93730081910626e-14,4.70331692056902e-14,2.62497417223847e-14,3.00388653693521e-14,3.42786514598172e-14,6.57859060315748e-14,6.10514648128100e-14,4.12694446298804e-14,5.70406133799068e-14,2.02439694654442e-14,1.63056988624202e-14,2.17094891954092e-13,2.87240845595582e-14,1.01193630839254e-13,1.81287484441291e-14,1.79064359525622e-14,8.20633938609441e-13,1.86419404034414e-14,0.392699081698895,2.37363803131034e-14,2.23727588694296e-14,2.99954870284633e-14,2.03597367755465e-14,1.79847153637621e-14,2.92052000715952e-14,1.08091729957038e-13,7.77570599949241e-14,4.66321464254022e-14,4.33645354006182e-13,9.34785200026780e-13,2.78983912115685e-14,1.63942205984481e-14,4.58469973907130e-14,3.97382095281559e-14,1.70391394916482e-14,1.81440296850485e-14,2.47662148009321e-14,1.83024303811090e-14,2.04138921923199e-14,4.96022922079932e-14,2.50015250773750e-14,6.34457156507544e-14,4.27738042177931e-14,2.09664193851384e-14,3.09813144874673e-14,1.05873857382065e-13,3.35453629735962e-14,2.86890176846241e-17,3.42712437481438e-14,2.56825975798838e-14,2.94368474990212e-14,3.34447126550235e-14,5.16322941243803e-13,2.00406140102758e-14,1.67598914226904e-14,2.97188179137639e-13,2.05390060638394e-14,2.65385915772439e-14,2.08241314079164e-14,3.80265144439326e-14,4.33085842533352e-14,5.47504366297464e-14,2.12773465128941e-13,6.05063375596051e-14,2.19727328717521e-14,1.92602566931075e-14,3.29181935743673e-14,5.50476263312221e-14,2.15251002445436e-14,1.67126105207027e-14,2.39117015806711e-17,0.392699081698555,3.39674107387510e-14,2.62834403919455e-14,1.71059397905445e-14,4.59652651994871e-14,6.74412572251972e-14,2.16777997292756e-14,3.52298058170054e-14,2.75884505214415e-14,4.90197558623393e-14,2.20865001134325e-13,1.77069350608982e-14,1.78851374032728e-14,1.50753992958344e-14,2.34247057024783e-13,7.38032962070548e-14,4.38366931558709e-14,4.49325488378110e-14,8.59438053291766e-14,2.05920656356664e-14,1.19082722260011e-13,2.86577719443792e-17,2.73436369099139e-14,2.18646286452395e-14,5.67872865430004e-14,1.20225449186747e-13,7.20566581351687e-14,7.88180965341399e-14,2.33945124007251e-14,1.58910636421551e-14,2.27514395180066e-14,7.23409922330393e-14,4.09780306651780e-14,0.392699081697771,3.43798208339658e-14,4.55972283367979e-14,1.68051241758892e-14,1.88779014323590e-14,4.47460956315594e-14,1.98992921821031e-14,9.17703432179388e-14,1.44086192131728e-13,1.66089053585609e-14,1.35383861400289e-14,2.75609592332369e-14,2.61411544062772e-14,2.86541680810440e-17,1.80381953120463e-14,1.17809724509542,2.17584480800128e-14,1.97048670502923e-14,1.90777771036224e-14,7.42090280370536e-14,2.37364249469809e-14,2.02227530778725e-14,5.94427681452738e-14,2.42050826502400e-14,1.58597468077224e-14,4.24132558430062e-14,1.09085482014966e-13,2.95030638059493e-14,5.04095714708959e-14,2.28984051205288e-14,3.04993855618172e-14,2.76711202230040e-14,3.12487410974210e-14,1.87022418394133e-14,2.57263389563406e-17,4.63895272582272e-14,8.81651100742073e-14,1.50936697641174e-14,2.60174242422098e-13,4.12633561778126e-14,4.91805630348893e-14,7.45250371290625e-14,2.26077119718457e-13,1.95036796897544e-14,2.42733705582980e-14,2.86840895282513e-17,2.50783298375335e-14,1.30266741699111e-13,4.41463347371266e-14,3.03124350204343e-14,7.49487099558003e-14,2.49361702718428e-14,1.99286414682260e-14,3.32347145132798e-14,2.25646158541743e-14,1.74381438861424e-13,1.84572850759960e-14,7.54868486733561e-14,7.27283332050017e-14,5.31834763592508e-14,2.18066548113069e-14,5.43319096382299e-14,3.55870738474274e-14,1.64124523647080e-14,4.93168101580193e-14,3.42231986045532e-14,1.52996082221667e-14,0.392699081696371,1.77242801812680e-14,1.06651360494642e-13,1.93001124749146e-14,1.10235636717973e-17,1.10358285539638e-17,2.57730765000750e-14,2.24508146357297e-14,2.20214758340194e-14,3.48072992814925e-13,1.50878021163051e-13,1.37320306420699e-14,2.15082982545958e-14,5.42017061217001e-14,4.43014577033591e-14,3.03771747735783e-13,7.09233696563941e-14,6.00899028132941e-14,5.27549570161118e-14,8.90661033908689e-14,3.04850275603019e-14,7.87230620308760e-14,1.63734214003747e-14,1.02494860681050e-13,1.94484736546645e-14,4.47389591663158e-14,2.09156224410322e-13,4.11089474179325e-14,1.73591189842677e-14,1.83866211536283e-14,2.51258570281542e-14,2.86693603107740e-17,1.74982838420709e-14,4.82139025529955e-13,6.27201614055985e-14,3.24010782880263e-13,1.19923310367972e-13,2.16525023867499e-14,2.16054941569284e-14,1.86937893361095e-14,6.90043527206179e-14,3.89040899482505e-13,2.57229901472356e-17,2.67979577006705e-14,5.52205494835741e-14,1.69895798565471e-14,2.27308815034531e-14,2.46467755002779e-14,2.34438611358927e-14,4.15655150435424e-14,3.37589495365065e-14,1.41583662550424e-14,3.96643484368507e-13,3.41067438832186e-14,3.65030995328965e-14,3.25978310797275e-14,6.21720059375391e-14,1.13713228649502e-13,3.24130552315369e-14,7.39338568281050e-14,1.97837173557791e-14,2.57972310672391e-14,2.36991250050462e-14,2.87305688993630e-17,0.785398163397158,2.54336094324434e-14,4.97345073736441e-14,1.66566914460374e-14,2.65648347282278e-14,5.29470551792969e-14,2.70438831621070e-14,1.99924118889110e-14,2.60330270718925e-14,2.20001621254562e-14,1.78044781089231e-14,2.88617839007721e-14,1.83491572319906e-14,2.68524006869002e-14,1.17809724509598,3.45399237650791e-14,2.86931841819614e-14,4.21871423170800e-14,4.11284909730388e-14,2.06184951376210e-14,2.29043478901029e-14,3.08459747194825e-14,7.28049162802908e-14,2.58771330621767e-14,2.86967971460737e-17,1.68305854635055e-14,2.85037679684077e-14,8.24494806018360e-14,2.21454774276932e-14,1.79597289327137e-13,3.72596115677480e-14,2.37753272893430e-14,1.71788149711066e-14,1.97657477269069e-14,3.19055805737024e-14,1.75596774202315e-14,4.90870381984370e-14,1.90654538300583e-14,3.11328794542716e-14,1.21505271514079e-14,4.05621791536548e-14,3.52640960134260e-14,6.59967467598597e-14,1.70335511832871e-14,2.01277761820901e-14,2.11968070019124e-14,2.39664611634548e-17,5.16422109764157e-14,7.44205670621126e-14,1.55970761201859e-14,5.37772758131568e-14,7.26639102643122e-14,1.77272405040072e-14,3.01458751962485e-14,2.21963701262995e-14,3.58438737949721e-14,2.44867468013869e-14,2.03473597142788e-14,2.24616509547137e-13,4.09292214220527e-14,2.47022799008003e-13,1.57937621477099e-14,1.34742302733203e-13,1.52225573614295e-14,1.98613220115324e-14,3.17127245215063e-14,4.75892587184822e-14,1.91290252640976e-14,2.02031791095840e-14,2.86622202504463e-17,2.84336286285911e-14,5.34969112972983e-14,5.43993012080769e-14,2.11938598659961e-14,1.72684433313041e-14,1.76544956102722e-14,1.75884185418139e-13,3.18782054887867e-14,3.12463708960842e-14,4.06285082680628e-14,1.85177371819110e-13,2.24650088093297e-14,9.62015474546534e-14,1.15213167178363e-13,4.83055406404789e-14,4.11324048489602e-14,4.09874491464986e-14,3.10615284847214e-14,3.41160856856977e-14,3.43772464503327e-14,3.89110274137014e-14,2.41845896345180e-14,1.76393377375769e-14,2.25519006901595e-14,3.30880169538658e-14,1.66788140481756e-14,1.07066560720314e-13,2.64636236262811e-13,3.94256134145960e-13,1.02815367204248e-13,1.41665302784329e-13,3.73383239066638e-13,4.41688915593443e-13,2.76273798030598e-14,6.11688947190823e-14,6.28280113971547e-14,2.64121587457521e-14,1.88481508586904e-14,1.77048408299680e-14,3.41396046882762e-14,1.49559052200814e-14,3.00994537905710e-14,3.87336946143917e-14,9.28801731654063e-14,4.91679326809402e-14,4.77148749774100e-14,0.392699081697644,1.65450494560362e-14,1.25767372920133e-13,3.66278767005606e-14,2.21654711537983e-14,4.70224943126286e-14,3.38872411478867e-14,1.63221891333478e-14,1.90562094787353e-14,1.72287181844510e-14,0.392699081696464,5.49441681595889e-14,1.70887115833526e-14,3.05646521215762e-14,3.98606130808381e-14,2.32855726336603e-14,2.06842221395580e-14,3.13805335841445e-14,1.71123750575280e-13,9.93033152965859e-14,1.11981072015613e-12,2.86957871137132e-17,2.01448755076150e-14,2.71001497695594e-14,1.95644346947701e-14,4.48706326327610e-14,2.32070137659270e-14,2.93875522239550e-14,6.30497937493779e-14,2.17598375329245e-14,2.31944592027246e-14,4.97448738899734e-14,1.71516618290115e-14,1.76367118775765e-14,5.58805092468140e-14,3.58341378694947e-14,4.15833135988753e-14,2.00975703815914e-14,2.12955778698573e-14,2.72236531504503e-14,4.75575131688006e-17,1.48188138204931e-14,1.82398913322576e-14,2.56420443796909e-14,3.78375414166491e-13,3.75211359829006e-14,2.34219330149801e-14,2.90669522604179e-14,1.44342324834187e-13,8.63695460881105e-14,2.06150567858229e-14,5.27898498437180e-13,1.67232683527764e-14,1.02232380925798e-13,2.86727007783502e-17,3.10229958958155e-14,7.02728610072152e-14,2.89287794522141e-14,4.15200535555042e-14,2.53212318818923e-14,2.86836734797736e-14,1.17809724509613,2.65953332181904e-13,1.78570339666863e-13,9.51517854051365e-13,3.83255894230970e-14,1.78316045232230e-14,2.77025564431608e-14,3.46931061972342e-14,1.76614957760549e-14,9.00571693200687e-14,1.72240121754820e-14,8.47853577865090e-14,8.96516395309508e-14,2.72002649895898e-13,2.89964963896519e-14,1.96349540848984,1.17691881153597e-12,2.86710677124063e-17,1.74504367035211e-14,1.23804503680221e-14,3.49857772877413e-14,5.71483214356968e-14,4.54124189123536e-13,3.05628564465471e-14,2.82203507539499e-14,2.04552111144589e-14,1.17809724509859,2.74094084275837e-14,3.14079462872440e-14,0.392699081698107,1.66961451278782e-14,2.99962855566768e-14,4.61067938559390e-14,1.39531047016487e-14,2.57230644662632e-17,6.64402700203861e-14,1.29122928418628e-14,6.35591203749324e-14,3.27683564325853e-14,3.05298921495626e-14,5.03366249689214e-14,6.58980425376370e-14,1.39334082290747e-14,2.46487559134306e-14,1.29624920611716e-13,3.69190547050087e-13,5.57516146912844e-14,6.40920385131233e-14,3.94944649857383e-14,1.91124790107493e-14,3.80239568054594e-14,5.84287450328356e-14,4.24425132678528e-14,1.48136166870613e-13,1.90083752909879e-13,2.18805860143736e-13,2.87307631482451e-17,4.38736487510728e-14,5.10802142800704e-14,0.392699081698252,1.52508743453670e-13,5.78625567899700e-14,2.63530249509535e-14,6.30002452232995e-14,2.54441285071665e-14,1.01640316259991e-12,4.05813924567205e-14,1.17809724509955,7.44692416864529e-14,0.785398163394804,7.93193178415549e-14,1.21590249713260e-13,5.67198771074479e-14,5.33113534059576e-14,4.15348447263756e-13,3.32097496897478e-14,1.73494100240511e-14,1.76270695345185e-14,4.21858647859446e-13,4.59420487377524e-14,5.83688850757970e-13,4.23228230405899e-14,5.87280665426350e-14,2.20178601062223e-13,2.86923680760200e-17,3.39249073211942e-13,1.25970949129075e-13,1.64654396035583e-14,3.66652673676649e-14,1.66844150795567e-14,2.10190184809247e-14,0.392699081702788,1.92109525952037e-14,2.59068250171483e-14,3.11183260924445e-14,2.43898185774534e-13,2.38385379718096e-14,2.05652612393669e-14,7.18989954393627e-14,4.25199180474569e-14,1.52794217950709e-14,2.08214062207531e-14,2.38482676918807e-17,0.392699081698570,2.68128096771286e-14,1.58772790575949e-14,2.14098419719423e-14,2.14083818877713e-14,4.96688389866559e-14,1.92352561623081e-14,2.86393914152953e-14,1.85701856939748e-14,1.31415461414038e-15,4.82488776534279e-14,2.88130158167841e-14,4.61904650886586e-14,5.05639971357369e-14,1.13256117389771e-12,3.31961447157478e-14,3.08379748406598e-14,2.86609993684401e-17,0.392699081698520,3.24911037439025e-14,2.68003733532452e-13,9.47723571303035e-14,6.35434962412440e-14,5.01708376808921e-14,1.66261511096461e-14,1.64280605680093e-14,2.32827797032483e-14,2.07922864157803e-14,1.07646459355739e-13,4.03886241477079e-14,8.09886684764378e-14,1.51191306684259e-13,1.65842779230272e-13,2.07565788635394e-14,2.65193759214956e-14,3.62976832429227e-14,5.67107437258679e-14,8.83465967810963e-14,4.63444772781973e-14,2.14721510875635e-14,1.91250107511856e-14,2.46096718151895e-14,2.48722079579478e-14,2.65549984030056e-14,0.785398163397305,2.42413128726423e-14,5.28260584321730e-14,1.95974913504638e-13,4.19145625742965e-12,7.01244973223617e-14,2.46042822061452e-14,3.41437079099241e-14,2.56091575286803e-14,1.06201485934267e-13,2.38385985599486e-13,3.27703595780312e-14,6.27208889801202e-14,1.89801180839838e-14,2.57179554718293e-14,1.57079632679309,0.392699081695471,2.38590719114782e-14,2.17032769872033e-14,1.66479101279840e-14,1.81555139031269e-13,4.31835824787603e-14,2.65951284346578e-14,2.35806116089073e-14,2.22707507635952e-14,2.38893811522696e-14,2.15055296222265e-14,3.00508579363916e-14,2.86913309807827e-17,5.71581005236654e-14,3.74659352968309e-13,1.48874360507855e-14,3.53536736859343e-14,3.26218241840794e-14,1.51322638173120e-14,8.28697256993387e-14,4.46049561282238e-14,1.82467481976618e-12,1.88808300636763e-14,4.23268273921309e-14,6.04607295669202e-14,3.87774769589202e-13,3.22422015896415e-14,2.93896354853070e-14,0.392699081701395,3.65803574769817e-14,2.38193478636367e-17,2.15809777821923e-14,1.94256550413789e-13,2.51437217705247e-14,2.13211241354828e-14,9.26590045253112e-14,3.29400293082140e-14,2.41900480909679e-14,1.15630256021052e-13,3.88174296937449e-14,2.81629635344453e-14,9.05872788315268e-14,1.77354157368479e-14,1.71755972701764e-14,2.02971010841339e-14,2.93729288928327e-14,4.36172231007390e-14,1.90588585401308e-14,1.11641188020865e-13,2.75983472311586e-14,2.86708635055752e-17,2.59159532279189e-14,1.03671016975075e-13,1.70345223349515e-13,3.05776539959168e-14,1.95744050800298e-14,1.84655043198860e-14,2.45846363073681e-14,2.18001209295878e-14,9.51269445178586e-14,2.69903122789629e-14,2.02623058128210e-14,3.43671420154270e-14,1.68624299228339e-14,7.60809571086995e-13,4.49890374166216e-14,3.03530230005218e-14,1.16361219288432e-13,4.17744324261237e-14,2.90536577086386e-14,2.74520035325021e-14,2.12557223879420e-14,1.88414527030764e-14,1.97612237120836e-14,4.90624991593785e-14,3.51966042524129e-14,0.392699081697295,0.785398163399869,2.86629138910188e-17,5.69531828738037e-14,1.91856904334967e-14,1.73867596867009e-14,2.22451146066758e-14,6.38588945520841e-14,5.28043594662816e-14,1.93040077862406e-14,1.71569714159700e-14,3.56842006053578e-14,5.16621259380986e-14,2.35619449019084,1.93028180831393e-14,2.44324205043113e-14,1.99849049300527e-14,3.45639923132711e-13,4.06044119336125e-14,6.64348043092003e-14,1.78424536983541e-14,4.14063216661946e-14,2.57338636886464e-17,8.94357920627243e-14,1.30506146236147e-14,4.78372731035547e-14,3.67418003964745e-13,5.97220110971243e-14,2.28631961479512e-14,3.53059961718068e-14,7.12871582240439e-14,0.785398163396769,1.71788948836892e-13,3.31107546445736e-14,1.72173900026110e-14,3.67485319712684e-14,5.12968826481581e-13,1.20418997466367e-12,2.48094720838865e-14,3.50871675835560e-14,2.86137516347655e-17,3.96598017523286e-14,0.785398163397088,4.25421933599704e-14,2.30668188387315e-14,1.82545618108007e-14,4.75762929283966e-14,2.46403364152407e-14,1.60602746538233e-14,2.81579514229221e-13,2.64792853218534e-14,2.87441188462061e-14,7.40660295677140e-14,1.08936505101472e-13,2.09564096406607e-14,1.57374720521022e-14,1.02885478049554e-13,2.57620255331220e-14,5.04937088869181e-13,2.41941408879816e-14,2.41643271411080e-14,3.62270650209525e-14,2.85772888698809e-17,3.17225505202575e-14,1.98134275260174e-14,4.51358119238917e-14,2.15761561616037e-13,2.15836451963215e-14,1.94581359540751e-14,8.09738618685615e-14,3.71064806830846e-14,2.08341695409355e-14,1.17809724509860,4.76319522723320e-17,2.65596667498468e-14,2.23835247290424e-14,9.90704525224127e-14,2.59766705274186e-14,4.49110113686462e-14,1.39260058880265e-14,1.90452634091019e-14,1.74055161206469e-14,3.09024308063026e-14,2.84983497890879e-14,1.75284971355852e-14,2.86640644004476e-17,4.27560752756025e-14,4.54329185707211e-14,2.27676906646676e-14,3.76766819506610e-14,2.00478136949045e-14,1.64668495834350e-14,1.59905256975799e-14,4.46309558872061e-14,1.54280726588480e-14,2.39719912193315e-13,1.88983427561692e-12,8.01949327289720e-14,5.45847250591938e-14,1.19725844347206e-13,1.66584415710865e-14,2.76007883577011e-14,3.71400870804672e-14,5.11815927425753e-14,2.23923045317655e-14,2.93427733723008e-13,2.21108170612535e-14,1.04626603453899e-13,3.39806857988463e-14,6.26132631333135e-14,2.96420190503692e-14,2.39579801120068e-14,2.86902357185017e-17,3.53539742624309e-14,8.72917417899468e-14,5.46141426014949e-14,3.22901110185362e-14,1.82769879080388e-14,4.36514999500575e-14,3.18025306317281e-14,4.64340030977774e-14,1.57058354880384e-14,1.76555141800937e-13,2.10580725315844e-14,2.65343039300691e-14,4.33145155204847e-14,2.07661291325417e-14,1.81419318902881e-14,5.54358148299069e-14,2.24156282875757e-14,1.82876418417395e-14,2.15306114798857e-14,7.00766860968922e-14,2.41501671784135e-17,1.54485403825276e-14,2.01302905442056e-14,1.10675849659888e-13,2.00166481256591e-14,1.74932864336055e-14,3.30550316744887e-14,2.76176703040384e-14,4.00177648229404e-14,1.07317582307785e-13,1.97510751266455e-13,0.392699081698517,3.79548462943030e-14,2.79598696756679e-13,1.82719467945035e-14,2.73730176822533e-14,9.24916894917040e-13,1.53630648389435e-13,9.42336189999874e-14,3.55919736370000e-14,1.52424717539733e-13,1.96349540849292,4.57957545225652e-14,2.86724174624775e-17,2.05418065882218e-14,3.54697138664029e-14,2.26010447439435e-14,0.785398163397127,1.57079632679493,4.11282903831516e-13,3.06415943038090e-14,6.36403701160507e-14,1.76504935854740e-14,1.87080308108696e-14,2.55322713507367e-14,2.94839353316771e-14,7.23660719940929e-14,1.11766438644636e-13,3.02324038846378e-14,2.08661114278583e-14,4.39687517472954e-14,3.37870315578652e-14,2.59318326353346e-14,8.21198132304731e-14,1.31094769588216e-13,2.25833503153856e-14,2.86616424144373e-14,2.86612491190007e-17,1.76816688224445e-14,2.27772124581067e-14,1.24143956382879e-13,2.84720105091186e-14,2.49427965294479e-14,1.16403165544296e-13,1.87613167701266e-14,1.73517599224466e-14,1.64944348606959e-14,8.09406137735086e-14,2.19234162877741e-13,0.392699081697827,3.83952790450546e-14,9.68497880586032e-14,5.11363368342517e-14,1.67958903036650e-14,2.13154181656168e-14,2.57342889454103e-17,0.392699081698552,7.83914254761903e-14,1.63674200945891e-14,0.785398163398627,3.34771643218160e-14,1.82258333119014e-14,0.785398163394560,3.01059961096358e-14,2.86133252837443e-17,1.35344960373506e-13,1.31057053875630e-13,2.33779902554912e-14,1.47423880711696e-14,2.54732518719886e-14,1.51472807196644e-14,9.34162961478790e-14,2.40144738588480e-14,3.04300494072307e-13,3.78355520320144e-14,1.09638766196901e-13,1.60930044734092e-14,2.49157353198183e-14,2.25748243781148e-14,1.66609699116108e-14,1.17809724509497,1.95475875913094e-14,4.70492918399039e-14,2.12206367599102e-14,1.79081562618215e-14,4.23342290314197e-14,1.10145808276998e-17,2.57273216029593e-17,3.20781910814580e-14,1.70236654692948e-14,1.98793081082652e-14,1.81704253259640e-14,3.03733852768454e-14,3.50786239041528e-14,1.85327108053956e-14,4.46326037474327e-13,2.00189913195489e-14,4.14266046825372e-14,1.44994411723191e-11,2.18447941388524e-14,2.02252203910859e-12,1.06565453967281e-13,2.59815468036585e-14,6.92952063487273e-14,5.16538891916097e-14,4.12195679650788e-14,1.61884126543516e-14,4.53208106394322e-14,3.83057118842800e-14,1.51080884985852e-13,3.24340640340109e-13,1.61043348008058e-13,2.14326005846843e-14,1.98542817441629e-14,8.02604211667987e-14,2.92255674664349e-14,2.51350892032235e-14,2.28585911868358e-14,1.91246713857602e-14,2.66438238578962e-13,3.18616574234863e-14,2.85976496441915e-17,5.69238684534212e-14,1.75624270182572e-14,2.07808834536982e-14,4.38033798333874e-14,3.07819274341570e-14,2.83843624628896e-14,8.17804094108030e-14,3.87927348345644e-14,4.23832416083609e-14,2.59570209880128e-14,1.68377977926367e-14,3.72147417598823e-14,2.95758668458801e-14,6.73099802626346e-14,4.47739461578934e-14,0.392699081696449,1.91425987872690e-14,3.12145372463003e-14,1.95852937667870e-14,1.74277964012976e-14,1.92683088018201e-14,3.95904802755812e-14,8.42284789583361e-13,2.86024909603577e-17,9.47301524870494e-14,9.18071275570012e-14,3.98219290295526e-14,3.73255464081404e-13,3.47837048349911e-14,2.87142292747876e-14,2.00269072236807e-14,7.25432410139160e-14,2.00058203868360e-14,3.14730031378735e-14,1.54298029617932e-14,1.87780829654748e-14,5.10217825790377e-14,2.91530818175664e-14,1.18975820884816e-13,1.74523106520537e-14,2.29801004711715e-14,2.05934032536281e-14,2.39060461918828e-17,1.93402674213114e-14,1.56310685108031e-13,5.05566127143935e-14,1.70707437929151e-14,1.76016913755682e-14,4.73752698711186e-14,1.97598664174727e-14,1.83996293902415e-14,8.09317056312965e-14,7.36527185740674e-14,5.41802595620110e-14,3.36030547938569e-14,6.03411365295794e-14,1.66066534512249e-14,5.04773959775113e-14,3.48235363402363e-14,7.96951768696194e-14,2.22646638873711e-14,7.92510493435743e-14,2.86667215141723e-17,1.59111376158820e-14,1.87883691151563e-13,0.392699081699048,0.785398163397264,6.29010814608875e-14,5.28511008161917e-14,5.01584395809059e-14,1.76393939370936e-14,2.66764237235719e-14,1.69816660238952e-14,3.76843098143348e-14,1.95308540879356e-14,1.17809724509379,2.90927636252676e-14,2.67540083304575e-14,9.99170122709680e-14,1.70835627966216e-14,1.70304883259017e-14,1.70434472767935e-14,2.90041968982140e-14,2.04371069895605e-14,3.95004906532725e-14,4.38035734345186e-14,5.21284370570097e-14,3.54777263936960e-14,1.83525619636530e-14,4.91822129854840e-14,4.82995792577772e-14,1.70964752022283e-14,2.80499937866305e-14,1.65392575041577e-14,1.68032378150282e-13,1.55677773598833e-14,4.80176913347583e-14,4.72724399673815e-14,3.54641573551360e-14,5.06128602606835e-14,2.76087137831601e-14,2.03445731777661e-14,4.35795056659012e-13,2.58733720552553e-14,2.08428222953728e-14,4.39297359282385e-14,2.66274697680418e-14,2.77456427204306e-14,1.96580672513218e-14,2.24483922114823e-14,2.13750589723966e-14,3.43540388563101e-14,2.74731284726592e-14,1.67745448883772e-14,3.64232891635663e-14,1.79429218068093e-14,5.14695727024818e-14,2.89567617848673e-14,2.41461460355764e-14,1.74693381347581e-14,3.08454871201998e-13,4.01970485689029e-14,1.35804997558047e-14,2.86794209297345e-17,1.47804289438141e-14,2.05759516608963e-14,2.97344572048133e-14,2.02991680825593e-14,5.11053285633518e-14,5.13475575943323e-14,9.11939269617105e-14,3.69298533644059e-14,1.90672303695305e-14,1.82761667570042e-13,3.97260431358574e-14,2.44225101646480e-14,0.392699081674918,2.33497862902619e-14,1.85596843065058e-14,3.38517297413008e-13,5.96713993633378e-14,2.39010041648416e-14,3.04004914388041e-14,1.64758779182988e-14,1.90249521169342e-14,2.33851442510313e-14,1.78048101091194e-14,4.83987036256091e-14,2.26545016756687e-14,1.70691472803206e-14,2.97664819743158e-14,1.92668906078718e-14,1.26056959653202e-14,3.46644810123016e-14,3.90981771217969e-14,1.71054983975217e-14,2.86803315281090e-17,2.82945211149288e-14,1.62127161544932e-14,5.38103526944891e-14,2.11369673556216e-14,1.48263402823445e-14,1.53082520694068e-14,4.63320528954002e-14,1.98755872202477e-12,2.08440616292840e-12,2.61088429497780e-14,3.45798314256120e-14,1.51350406606767e-14,2.79966107827249e-14,2.85413428111787e-14,1.91106690063930e-14,1.08349658563939e-13,2.41494450943694e-17,2.40778016141125e-14,1.53820168213280e-13,3.28578283544725e-14,2.74749499988660e-14,1.47603070687399e-12,1.92347413725155e-14,4.38150858563773e-14,5.05967034474961e-14,0.392699081698324,6.83580379998259e-14,8.70003377125860e-14,2.23548331423154e-14,0.392699081697665,6.73856043351721e-14,5.64570707969550e-14,1.86600862561509e-14,3.79397293307166e-14,4.22815121818333e-14,2.86640524274576e-17,1.99298019884341e-14,0.392699081698521,1.70958240404156e-14,2.61415784825195e-14,1.57079632679373,2.57264797998695e-17,1.18367230267789e-13,2.50001615295629e-14,1.64236781526361e-13,2.82296299603117e-14,3.35556519207275e-14,2.62399596220053e-14,3.49130264657580e-14,1.68286911255922e-11,3.19560983166620e-14,4.05939160739976e-14,2.32154261061095e-14,3.74803972779168e-14,6.16921240657879e-14,3.22969719338136e-14,2.34894833382738e-14,2.25244674405139e-14,1.23791397942782e-14,2.11687926575039e-13,8.66562186015845e-14,5.96813870875051e-14,1.78084196120438e-14,2.40353730406072e-14,3.46516284301288e-14,1.58283169198916e-13,6.64114915743698e-14,2.85982841154503e-17,3.49053588186776e-14,9.94864404735265e-14,4.17516670524984e-14,6.84720004305761e-14,2.24862355449955e-14,0.392699081698280,3.19113860770611e-14,0.392699081698567,2.41379568661383e-14,2.54994543003023e-14,2.59508712458424e-14,2.84794200328087e-14,2.32745091371828e-14,1.23057538288927e-12,2.05653571590757e-14,2.35619449019137,4.66668102822339e-14,2.86035013026333e-17,2.50732765006727e-14,0.785398163397085,2.91906204649041e-14,2.70044025784915e-14,2.19251970520480e-14,1.94173496387467e-14,1.17809724509849,1.95468499329778e-14,5.00014915578787e-14,1.61736531778437e-14,1.55537658879839e-13,2.38495682187732e-17,2.27122919874719e-14,1.51315018999444e-14,2.48679348695912e-14,4.38211010555117e-13,1.78558710637379e-13,1.78472745013159e-14,2.41354614480485e-14,2.16547738340824e-14,2.86623746704608e-17,2.32992992086258e-14,4.96304638746889e-14,1.88387040256768e-14,1.41836636192963e-11,5.40105197634782e-14,2.13746014728748e-14,1.93357261276933e-14,2.09673234100285e-14,5.69921312552292e-14,1.42298780305145e-11,1.88406182918454e-14,2.21197830421700e-14,2.89475542418976e-13,1.03324706767218e-13,4.84002212130886e-14,1.58951672847604e-14,1.71206253930641e-14,2.91399600714426e-14,2.83743632878284e-14,4.42548971211832e-14,1.86232106127115e-14,2.01500355578059e-14,5.23203919199941e-14,3.30651830527988e-14,3.18029520587694e-14,7.77288865900117e-14,2.13415690859883e-14,1.86731659658348e-14,1.80705030075879e-14,2.48069922216132e-14,3.50734023034784e-14,4.60892595914292e-14,7.26682708636471e-14,1.69428478755560e-13,1.51342428771559e-13,1.33103825029599e-13,2.79752703724614e-14,1.17809724509375,2.58364733717339e-14,2.45787828707023e-14,1.72028859483223e-14,2.40727816082747e-14,2.42922091057396e-14,1.59704668798440e-14,3.07848334734786e-14,5.80694945697254e-14,1.51603836779962e-14,6.94237134047781e-14,4.98458314899620e-14,1.90089679214384e-14,3.99071604220237e-14,4.64556036245488e-14,3.95655246156852e-13,1.61734014645215e-14,1.82927049005782e-13,5.18380488662153e-14,2.01366798206398e-14,1.38407882771082e-14,2.86794071448635e-17,2.09741586488571e-14,5.77830435190229e-14,2.11959719842763e-12,3.77846787504649e-14,1.26242650672851e-13,1.59339081108150e-14,2.37126605068044e-11,2.18004713346820e-14,1.55680899340557e-13,3.35149860927598e-14,1.60507647096431e-14,0.785398163397208,8.26323642326285e-14,2.31177680473471e-12,2.91415524556691e-14,2.50537856934524e-14,1.13738173316917e-13,2.20217173787586e-14,2.31157774487551e-14,9.05344517466666e-13,4.96377686064137e-13,7.60385323824112e-13,1.19471833467425e-14,2.38260712871381e-13,1.17809724509299,5.62310002777774e-14,2.86809497007947e-17,1.54483417928769e-14,2.14079845836561e-14,5.08723449852405e-14,2.47908367053933e-14,3.88511024714410e-14,3.76121939088410e-14,3.28616815664155e-14,1.57079632679330,3.47755521032467e-14,2.36324836565899e-17,1.45571184831883e-14,2.07604205122082e-14,8.62154908463800e-14,3.56086401329281e-14,2.58602121009352e-14,5.48237889134939e-14,2.18153258822501e-14,2.86604928930060e-17,5.43328463891509e-14,0.785398163396891,2.13084734731897e-14,2.57304343440626e-17,2.61678611117062e-14,3.84138425175902e-14,1.76006863780461e-14,6.66749304369598e-14,1.43465961068004e-14,2.34675651946199e-14,1.19693769106633e-13,6.19418782103670e-14,1.18741158463648e-14,1.71136299051790e-13,0.785398163397107,3.44024293266358e-14,7.59107979555386e-14,3.94014159455389e-14,1.60781159163361e-14,2.86806944097800e-17,5.00900061259989e-14,1.08005566455887e-13,7.58271714093128e-14,2.35626479824583e-14,0.785398163396740,3.36103568766857e-14,2.08084212736298e-14,1.94739498006547e-14,3.24762204297069e-14,4.91858905009819e-14,2.86853281521305e-17,1.82640738523748e-14,4.76949511346759e-17,1.58456541609395e-14,2.86578807471550e-17,1.57079632679427,6.05295691317841e-14,4.23750184466075e-14,4.00605886314850e-14,5.38886321253604e-14,2.78745782926415e-14,1.72049297314043e-13,4.69313033295684e-14,0.785398163394675,3.37039875742136e-14,1.00133266844870e-13,2.38099756218816e-14,3.73307000052678e-14,0.392699081696310,0.392699081698253,1.97562947830732e-13,2.13011031904568e-14,3.02030677262072e-14,1.63113730538057e-11,1.80783295179621e-14,1.42500452245627e-13,2.07346991427609e-14,2.99864135134597e-14,1.46004228453987e-14,1.14629627807664e-13,2.75071734442527e-14,3.32149087076689e-14,5.13895426282682e-14,3.42551169421222e-14,2.45904325520684e-14,0.785398163396041,1.35998117655058e-14,2.86795799976164e-17,2.41736687466664e-14,4.07563551552475e-14,0.785398163395197,0.392699081696436,6.23443784721532e-14,1.66170199090829e-14,7.19103795143524e-14,1.72910238243058e-13,4.92097194977927e-14,1.77557355350560e-14,2.23181359474930e-14,4.77350624978189e-14,2.86799845102163e-17,4.75537115898867e-17,2.86633209096215e-17,3.21367174915948e-13,2.57299715006893e-17,2.00816269738417e-14,0.392699081698605,2.40624209706146e-14,2.86879943724150e-17,3.16779060249135e-14,3.81839504638940e-14,1.10273931762358e-17,2.11309423128156e-14,6.12815336656087e-14,0.785398163399224,2.81348121846238e-14,0.392699081684334,2.10187147599785e-14,9.65855255892862e-14,2.86729912842166e-17,1.57079632679426,1.10338657833710e-17,2.56803625006409e-17];
labels = [0;1;2;3;4;6;7;8;12;14;15;16;17;19;24;25;28;30;31;32;33;35;39;51;57;63;66;67;70;71;96;97;99;103;110;111;127;132;134;140;142;195;199;207;220;222;223;225;227;231;239;255;264;268;280;284;391;399;408;412;414;415;479;483;487;495;511;512;528;531;536;537;540;543;561;571;575;639;768;782;784;792;796;798;799;831;912;920;924;926;927;984;988;990;991;999;1007;1020;1022;1023;1024;1056;1057;1059;1063;1075;1087;1120;1121;1123;1126;1127;1135;1143;1151;1248;1249;1251;1255;1263;1278;1279;1655;1663;1855;2047;2115;2118;2119;2145;2147;2151;2252;2254;2255;2287;3072;3104;3169;3171;3175;3311;3548;3552;3555;3559;3567;3582;3583;4095;4230;4236;4238;4291;4295;4303;4504;4508;4510;4575;6241;6371;6375;6383;6655;7064;7132;7134;7135;7167;7200;7265;7395;7399;7407;7679;8191;8460;8472;8476;8582;8590;8606;8976;8984;8988;9118;12515;12775;12783;12799;13072;13208;13212;13214;13279;13311;15359;15456;15587;15847;15855;15871;16383;16384;16896;16912;16920;16921;16924;16927;17023;17152;17164;17168;17176;17180;17181;17182;17183;17213;17215;17280;17295;17296;17304;17308;17310;17311;17407;17979;18303;18431;20479;24576;25031;25088;25360;25368;25372;25502;25536;25551;25560;25564;25566;25567;25599;26623;29184;29456;29592;29596;29598;29663;29695;31488;31640;31708;31710;31711;31743;31969;32227;32231;32656;32728;32732;32743;32751;32764;32766;32767;32768;33792;33824;33825;33890;33891;33895;33907;34047;34427;34815;35840;35872;35937;35939;35943;36032;36046;36064;36065;36067;36071;36076;36078;36079;36095;36351;36607;36863;39936;39968;40033;40163;40167;40175;40447;40924;40928;40935;40943;40958;40959;52991;53247;59391;65535;67683;67782;67815;68641;68707;68839;72092;72158;72191;73215;98304;99328;101409;101475;101607;105983;113560;113664;113760;113891;114151;114159;114175;114652;114654;114656;114671;114686;114687;131071;135366;135564;135630;137315;137447;137711;144152;144284;144350;146431;199712;203875;204007;204271;212991;226064;228252;228318;228351;229375;230400;232480;236643;236775;237039;245759;262143;270732;271128;271260;274631;274895;275423;287248;287512;287644;291807;400481;408807;409071;409599;418304;422680;422812;422878;424959;425983;491519;494592;498785;507111;507375;507903;524287;524288;540672;541184;541200;541448;541464;541465;541468;541499;541599;541695;544767;548864;549248;549262;549376;549648;549656;549660;549760;549766;549774;549776;549784;549788;549790;549791;549823;549855;549887;550847;550911;552960;553447;553472;553744;553880;553884;553886;553951;553952;553967;553980;553982;553983;557055;575355;585727;589823;655359;786432;800995;802816;811536;811800;811932;816095;817152;817639;817647;817920;818072;818140;818142;818143;818144;818159;818174;818175;819199;851967;933888;942592;946968;947100;947166;949247;950271;1007616;1012496;1014684;1014750;1014783;1015807;1023008;1031264;1031395;1044992;1047296;1047448;1047777;1048035;1048039;1048047;1048464;1048536;1048540;1048542;1048551;1048559;1048572;1048574;1048575;1048576;1048577;1048592;1048600;1048607;1048609;1048611;1048615;1048687;1049104;1049112;1049116;1049374;1049599;1049703;1049855;1052159;1065496;1065756;1065887;1074143;1081343;1081344;1081345;1081347;1081360;1081368;1081375;1081880;1082368;1082400;1082401;1082403;1082407;1082417;1082425;1082431;1082467;1082471;1082623;1082929;1082937;1083199;1083391;1084480;1084512;1084513;1084515;1084518;1084519;1084527;1084535;1084543;1084655;1085055;1089535;1098524;1098655;1099321;1099581;1101695;1107967;1114111;1146880;1147904;1148928;1149952;1149984;1149985;1150049;1150051;1150148;1150182;1150183;1150191;1150199;1150463;1150711;1150975;1153024;1153500;1154048;1154080;1154145;1154275;1154279;1154287;1154432;1154520;1154526;1154528;1154531;1154535;1154543;1154556;1154558;1154559;1155071;1163263;1167359;1171455;1179647;1277952;1278976;1281056;1285219;1285351;1285615;1294335;1309592;1309696;1309921;1310183;1310684;1310688;1310703;1310718;1310719;1590040;1598366;1602559;1623865;1631134;1632191;1695743;1699839;1703935;1866751;1900543;2097151;2097152;2162688;2165859;2169038;2170095;2196512;2198627;2202863;2300366;2306968;2309086;2310143;2334191;2342911;3145728;3145731;3145744;3145759;3145761;3146256;3146264;3146751;3146855;3149311;3162908;3178495;3178496;3178497;3178512;3178520;3178527;3178531;3178607;3179024;3179036;3179294;3179519;3179520;3179536;3179553;3179555;3179619;3179623;3179775;3180056;3180060;3180543;3181807;3186687;3195416;3195807;3196700;3204063;3205119;3211263;3211264;3213312;3244032;3245056;3245088;3245089;3245091;3245095;3245104;3245119;3245624;3245887;3246080;3246144;3247104;3247136;3247137;3247168;3247170;3247200;3247201;3247202;3247203;3247207;3247215;3247219;3247231;3247335;3247343;3247615;3247731;3247739;3247743;3248127;3250304;3251392;3251404;3251424;3251425;3251427;3251431;3251438;3251439;3251455;3251711;3251967;3260415;3262268;3264123;3264383;3264511;3268351;3276799;3342336;3346432;3357596;3375104;3376128;3378208;3381248;3381640;3382272;3382304;3382369;3382371;3382499;3382503;3382732;3382764;3382766;3382767;3382783;3383295;3387392;3390208;3390428;3390464;3390560;3390691;3390951;3390959;3390975;3391376;3391448;3391454;3391456;3391463;3391471;3391484;3391486;3391487;3399679;3407871;3633936;3637248;3640320;3644513;3652839;3653103;3653631;3668888;3668956;3668992;3669475;3669980;3669984;3669999;3670014;3670015;3695518;3719960;3729310;3732479;3788667;3794879;3796991;3801087;3923967;3932159;3997695;4194303;4194304;4325376;4331719;4338076;4340191;4394081;4397287;4398311;4406783;4600732;4612880;4617116;4619231;4668415;4685823;6291456;6356992;6359040;6390784;6392865;6422528;6426624;6490176;6492288;6495463;6502878;6524001;6528231;6536703;6692864;6714136;6765534;6779800;6781918;6799359;6815743;7234048;7304088;7306206;7307263;7340031;7340032;7372800;7372801;7372816;7372831;7372839;7373336;7373823;7373824;7373857;7373923;7376111;7380991;7389720;7389980;7405567;7405568;7407616;7438336;7439360;7439361;7439363;7439376;7439384;7439391;7439392;7439393;7439395;7439463;7439615;7439888;7439900;7440158;7440383;7440384;7441408;7441440;7441441;7441457;7441465;7441507;7441511;7441639;7441647;7441919;7441977;7442431;7446015;7454719;7456280;7456671;7458621;7458815;7464959;7471103;7536640;7540736;7542916;7549184;7569408;7570432;7571520;7572512;7572544;7572576;7572577;7572579;7572583;7572591;7572593;7572607;7573113;7573119;7575552;7575680;7575748;7576576;7576608;7576673;7576675;7576768;7576772;7576774;7576800;7576801;7576803;7576806;7576807;7576815;7576823;7576831;7577071;7577087;7577335;7577343;7577599;7584152;7585152;7585244;7585248;7585251;7585255;7585263;7585278;7585279;7585791;7589759;7593727;7593983;7602175;7733248;7811856;7823360;7830428;7831552;7834624;7838817;7843840;7846808;7846912;7847008;7847139;7847143;7847399;7847407;7847896;7847900;7847934;7847935;7860736;7863040;7863260;7863296;7863521;7863783;7864208;7864280;7864286;7864288;7864303;7864316;7864318;7864319;7922590;7980824;7991295;7995391;8118271;8126463;8352528;8355840;8363040;8371427;8387480;8387584;8388079;8388572;8388574;8388576;8388583;8388606;8388607;8388608;8650752;8663438;8676120;8680350;8788195;8794574;8796655;8813567;9191936;9200408;9204638;9335774;9337855;12582912;12713984;12718080;12781568;12786787;12815392;12845056;12853248;12980352;12984576;12990927;13005724;13049059;13056495;13057519;13081827;13090287;13107199;13385728;13394448;13525776;13530012;13532127;13597695;13598719;13631487;14680064;14778368;14811136;14815232;14878720;14879776;14882882;14912544;14916707;15081472;15085832;15098368;15143040;15145154;15151496;15154671;15170526;15171583;15178979;15187439;15466496;15622656;15627032;15692696;15694814;15728639;15728640;15826944;15826945;15826960;15826975;15826979;15827055;15827480;15827967;15827968;15830049;15830115;15830247;15834623;15843327;15844124;15859711;15925248;15927296;15929344;15958016;15959040;15960064;15961088;15961120;15961121;15961123;15961127;15961136;15961144;15961151;15961185;15961187;15961191;15961327;15961599;15961648;15961660;15961919;15962111;15964160;15965184;15965216;15965250;15965281;15965282;15965283;15965299;15965415;15965423;15965679;15965695;15965819;15966207;15974399;15978040;15978495;15982591;15990783;16121856;16199936;16202124;16216848;16220160;16223232;16226432;16227425;16227520;16227552;16227553;16227554;16227555;16227559;16227567;16227571;16227583;16228095;16232448;16234888;16234956;16235520;16235616;16235747;16235751;16235904;16235980;16235982;16236000;16236003;16236007;16236012;16236014;16236015;16236031;16236543;16251648;16251800;16252892;16252896;16252903;16252911;16252924;16252926;16252927;16662528;16736256;16741136;16743324;16744448;16751648;16759904;16760035;16773632;16775936;16776088;16776156;16776192;16776417;16776675;16776679;16776687;16777104;16777176;16777180;16777182;16777184;16777199;16777212;16777214;16777215;16777216;16777217;16777219;16777232;16777247;16777249;16777251;16777255;16777327;16777744;16777752;16777756;16778014;16778239;16778275;16778343;16778495;16780799;16794396;16794527;16802783;16809983;16811107;16813295;16818175;16891903;17301504;17301505;17301507;17301520;17301528;17301535;17301539;17302631;17302783;17317888;17318400;17318416;17318417;17318419;17318424;17318428;17318431;17318449;17318451;17318527;17318680;17318684;17318815;17318911;17319475;17319543;17321983;17326336;17326848;17326860;17326864;17326872;17326876;17326877;17326878;17326879;17326911;17327006;17327999;17331199;17334271;17337583;17352307;17354495;17432575;17563648;17571840;17575936;17576391;17580032;17588224;17588612;17588736;17588752;17589008;17589016;17589132;17589148;17589149;17589150;17589181;17589215;17589247;17590271;17592320;17592512;17592771;17592783;17592832;17593104;17593240;17593244;17593246;17593280;17593287;17593295;17593304;17593308;17593310;17593311;17593343;17594367;17595391;17596415;17625087;17627135;17629183;17694720;17710307;17711104;17719808;17724184;17724316;17724382;17726463;17726464;17726951;17727376;17727452;17727456;17727471;17727486;17727487;17825791;17825792;17859617;17861735;17927399;17931775;18087935;18366992;18375452;18382848;18383905;18399760;18402935;18409277;18411391;18456063;18468599;18472959;18637724;18641887;18671549;18674655;18675711;18739199;18743295;18776063;18874367;19922944;19955712;19956736;20022304;20024419;20028655;20159983;20168703;20447232;20464144;20472604;20496912;20497936;20505372;20548707;20563504;20569855;20574079;20701183;20709375;20739039;20767644;20772863;20836351;20840447;20971519;24216576;24218657;24349793;24354023;24362495;24740864;24757776;24759857;24766236;24874081;24878311;24890993;24903679;25165823;25165824;25165825;25165848;25165855;25165857;25165859;25166352;25166847;25166951;25183004;25191391;25198591;25201903;25427968;25436160;25559040;25563136;25573607;25631841;25690112;25690113;25690115;25690128;25690143;25690145;25690151;25690223;25690648;25690910;25691135;25691171;25691391;25693695;25706496;25706497;25706531;25706535;25707024;25707032;25707288;25707292;25707423;25707519;25707623;25710591;25715614;25719807;25722879;25724003;25731071;25742575;25821183;25952256;25960448;25960704;25964672;25968640;25969152;25969153;25969168;25969176;25969180;25969183;25969187;25969279;25970279;25976832;25977088;25977096;25977344;25977360;25977600;25977608;25977616;25977624;25977625;25977628;25977630;25977631;25977657;25977659;25977663;25977756;25977758;25977823;25977855;25978683;25978751;25978879;25981312;25981318;25981824;25981838;25981840;25981848;25981852;25981854;25981855;25981887;25981919;25982911;25983999;25985023;26005247;26011515;26013695;26017791;26083328;26089472;26095616;26095810;26097760;26098151;26099712;26108416;26112000;26112454;26112512;26112784;26112792;26112920;26112924;26112966;26112974;26112990;26112991;26113023;26114047;26114048;26114273;26114531;26114543;26114816;26114968;26115036;26115038;26115039;26115040;26115047;26115055;26115068;26115070;26115071;26116095;26146815;26148863;26148864;26164451;26164711;26173440;26178320;26180508;26180574;26180607;26180608;26181095;26181592;26181600;26181615;26181630;26181631;26214399;26214400;26247168;26248225;26250343;26320383;26738688;26755072;26772513;26774631;26788897;26840295;26861567;27017728;27026200;27030430;27051553;27058968;27062143;27064255;27127807;27131903;27161566;27163647;27195391;27197439;27262975;28868608;28886016;28935200;28937315;28941551;28953699;29147648;29156120;29157144;29160350;29214240;29216355;29222712;29229055;29360127;29360128;29556736;29622272;29630464;29753344;29757440;29759552;29765764;29821952;29825121;29834471;29858913;29884416;29884417;29884432;29884447;29884451;29884956;29885439;29885475;29885543;29900800;29901328;29901592;29909918;29914111;29917183;29920495;30146560;30154752;30162944;30162945;30162947;30162960;30162968;30162975;30162977;30162983;30163055;30163456;30163472;30163480;30163740;30163871;30163967;30164003;30164223;30167039;30171136;30171648;30171664;30171665;30171667;30171699;30171928;30171932;30172060;30172062;30172127;30172159;30172791;30173183;30176223;30178303;30179327;30196835;30207999;30212095;30277632;30286080;30289920;30290048;30290308;30292163;30294016;30302464;30302720;30302976;30302992;30302993;30303000;30303004;30303006;30303007;30303027;30303039;30304127;30306304;30306688;30306692;30306700;30306816;30307088;30307096;30307200;30307212;30307216;30307224;30307228;30307229;30307230;30307231;30307261;30307263;30307294;30307295;30307327;30308287;30308351;30308544;30308807;30309312;30309327;30309336;30309340;30309342;30309343;30309375;30310399;30341119;30343167;30343168;30349312;30350368;30357731;30358624;30359015;30367744;30372624;30373888;30374371;30374375;30374656;30374808;30374812;30374876;30374878;30374895;30374911;30374912;30375137;30375395;30375407;30375824;30375900;30375904;30375911;30375919;30375934;30375935;30375936;30391523;30405120;30407576;30407680;30408167;30408175;30408670;30408672;30408687;30408700;30408703;31211520;31220240;31244288;31245345;31247463;31254065;31351568;31355804;31357919;31384336;31385393;31388572;31391743;31457279;31457280;31653888;31687680;31850496;31854592;31858688;31922240;31923297;31930566;31951872;31956065;31964391;32243712;32243713;32243728;32243743;32243747;32244248;32244510;32244735;32244839;32260096;32268816;32269080;32269212;32273375;32275455;32276479;32374784;32382976;32387072;32391168;32399360;32399872;32399873;32399875;32399888;32399896;32399900;32399903;32399905;32399911;32399999;32400144;32400152;32400156;32400286;32400351;32400383;32400931;32401407;32403456;32403720;32403968;32404232;32404240;32404248;32404249;32404283;32404380;32404382;32404446;32404447;32404479;32405503;32406527;32407551;32440320;32446464;32452736;32454850;32455110;32455776;32455907;32464896;32469376;32469776;32469888;32469896;32469904;32469912;32469913;32469916;32469918;32469919;32469951;32471040;32471232;32471494;32471502;32471808;32471960;32471964;32472000;32472006;32472014;32472024;32472028;32472030;32472031;32472063;32472551;32473056;32473063;32473071;32473084;32473086;32473087;32473088;32480288;32488544;32488675;32488935;32502272;32504576;32504728;32504832;32505057;32505315;32505319;32505327;32505744;32505816;32505820;32505822;32505824;32505831;32505839;32505854;32505855;32505856;32505857;32505859;32505872;32505880;32505889;32505891;32505895;32505967;32506384;32506392;32506396;32506654;32506983;32507135;32509439;32523036;32523167;32531423;32538624;32539648;32539681;32539747;32541935;32546815;32604160;32605184;32607265;32607331;32607463;32611839;32620543;32702464;32735232;32736256;32736257;32736272;32736287;32736288;32736289;32736291;32736359;32736511;32736784;32736792;32737279;32738336;32742499;32742631;32742895;32751615;32753436;32767999;32899072;32964608;32968704;32979076;32997376;33000448;33000449;33000451;33000464;33000479;33000480;33000545;33000547;33000551;33000687;33000959;33000984;33001471;33003520;33003584;33004544;33004576;33004608;33004640;33004641;33004643;33004647;33004655;33004657;33004665;33004671;33004771;33004775;33004783;33005055;33005169;33005183;33005567;33009664;33012736;33012832;33012932;33012963;33012966;33012967;33012983;33013231;33013247;33013759;33030143;33030144;33046528;33047056;33047320;33055646;33059839;33062912;33128448;33129472;33131553;33131619;33131751;33136127;33144832;33145360;33145624;33153950;33262624;33266787;33266919;33267183;33279008;33279536;33279800;33283171;33283303;33283699;33292288;33308672;33317392;33317656;33317788;33321951;33324031;33325056;33326080;33326113;33326179;33328367;33341440;33350160;33350424;33350556;33354719;33408000;33410081;33410147;33410279;33416720;33416984;33417116;33418801;33418867;33419065;33423360;33439744;33439745;33439760;33439775;33439777;33439779;33440256;33440272;33440280;33440540;33440671;33440767;33440871;33448448;33452824;33452956;33453022;33455103;33456127;33481216;33482240;33482273;33482339;33485592;33485724;33485790;33486616;33486649;33486748;33488896;33495040;33501184;33501440;33513472;33513473;33513488;33513496;33513503;33513507;33513984;33514256;33514264;33514268;33514398;33514463;33514495;33517568;33517824;33518080;33518336;33518352;33518353;33518355;33518360;33518364;33518366;33518367;33518385;33518399;33518488;33518492;33518494;33518559;33518591;33519616;33520004;33520384;33520524;33520536;33520540;33520541;33520606;33520607;33520639;33521663;33521664;33521665;33521667;33521680;33521688;33521699;33521703;33521775;33522200;33522204;33522462;33522688;33522720;33522721;33522723;33522791;33522943;33524736;33524768;33524833;33524835;33524839;33524975;33525247;33527808;33528832;33528864;33528865;33528867;33528871;33528880;33528895;33528929;33529059;33529063;33529071;33529343;33529400;33529855;33533952;33536000;33536128;33536452;33537024;33537120;33537121;33537123;33537127;33537135;33537136;33537151;33537216;33537218;33537248;33537249;33537250;33537251;33537255;33537263;33537267;33537279;33537408;33537504;33537507;33537510;33537511;33537519;33537535;33538047;33538048;33538560;33538576;33538584;33538844;33538975;33539072;33541120;33541152;33541217;33541219;33541223;33541359;33541632;33541648;33541656;33541916;33545313;33545443;33545447;33545455;33545825;33545841;33545849;33545955;33545959;33545971;33546240;33546752;33547024;33547032;33547036;33547166;33547231;33547264;33547296;33547297;33547299;33547367;33547776;33548048;33548056;33548060;33548190;33549856;33549921;33549923;33549927;33550128;33550136;33550140;33550193;33550195;33550201;33550336;33550848;33550849;33550864;33550872;33550876;33550879;33550883;33551120;33551256;33551260;33551262;33551327;33551359;33552144;33552176;33552177;33552179;33552280;33552284;33552286;33552312;33552313;33552316;33552384;33552576;33552768;33552776;33553152;33553153;33553168;33553176;33553180;33553182;33553183;33553280;33553288;33553296;33553304;33553305;33553308;33553310;33553311;33553344;33553356;33553368;33553372;33553374;33553375;33553407;33553408;33553409;33553411;33553424;33553432;33553440;33553441;33553443;33553447;33553504;33553505;33553507;33553511;33553519;33553600;33553632;33553633;33553635;33553639;33553647;33553649;33553663;33553792;33553856;33553860;33553870;33553888;33553891;33553894;33553895;33553900;33553903;33553919;33553920;33553936;33553944;33553948;33553952;33554016;33554017;33554019;33554023;33554032;33554040;33554147;33554151;33554163;33554167;33554176;33554192;33554200;33554204;33554206;33554208;33554209;33554211;33554224;33554232;33554236;33554289;33554291;33554297;33554299;33554304;33554320;33554321;33554328;33554332;33554334;33554335;33554360;33554361;33554364;33554365;33554368;33554374;33554380;33554392;33554396;33554398;33554399;33554400;33554401;33554403;33554406;33554407;33554412;33554414;33554415;33554416;33554417;33554419;33554423;33554424;33554425;33554427;33554428;33554429;33554430;33554431];
% Calculate the values above using this function
%[cost,labels] = curvature_cost_5x5(self);
end
cost = cost*self.lambda;
end
end
methods
function self = Curvature_Segmentation(unary, patch_size, lambda)
if nargin > 1
self.patch_size = patch_size;
end
if nargin > 2
self.lambda = lambda;
end
% Add appropriate path
my_name = mfilename('fullpath');
my_path = fileparts(my_name);
addpath([my_path filesep 'include']);
self.unary = unary;
self.imsz = [size(unary,1) size(unary,2)];
self.L = zeros(self.imsz);
self.e = nan;
self.lb = nan;
end
function display(self)
imagesc(self.L);
colormap gray; axis equal;
rel_gap = abs(self.e - self.lb)/self.e;
title(sprintf('Energy: %g Lower bound: %g Rel.gap: %g', self.e,self.lb, rel_gap));
end
% L: labelling
% e: energy
% lb: lower bound
function [L,e,lb] = solve(self)
% Get cost for each configuration in labels
[cost, labels] = curvature_cost_patch(self);
% Setup Partial enumeration object
self.PE = Partial_Enumeration(self.unary, self.patch_size, labels);
% Add the curvature cost
self.PE.add_patch_cost(cost);
% Add TRW-S settings
self.PE.max_iter = self.max_iter;
self.PE.max_relgap = self.max_relgap;
self.PE.verbose = self.verbose;
% Optimize
[L,e,lb] = self.PE.solve();
self.L = L;
self.e = e;
self.lb = lb;
end
function self = set.patch_size(self,value)
if (value == 2 || value == 3 || value == 5)
self.patch_size = value;
else
error('Only patch_size \in {2,3,5} supported, right now');
end
end
function self = set.max_iter(self,value)
if (value < 0)
error('max_iter must be non-negative')
else
self.max_iter = value;
end
end
function self = set.max_relgap(self,value)
if (value < 0)
error('max_relgap weight must be non-negative')
else
self.max_relgap = value;
end
end
function self = set.lambda(self,value)
if (value < 0)
error('Curvature weight must be non-negative')
else
self.lambda = value;
end
end
%% Below are two functions which generate the curvature cost for 3x3 and
% 5x5 patches. The result of them are always and thus the cached results
% are stored. The functions are included in order to provide better reproducibility
% of our paper.
function [curvature_cost_patch,alllabels] = curvature_cost_3x3(self)
patch_costs = [];
labels = cell(0);
%%
patch = zeros(5,5);
patch(1,1) = 1;
patch(2,1:2) = 1;
patch(3,1:3) = 1;
this_patch_cost = 3*pi/4;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%%
patch = zeros(5,5);
patch(1,1:3) = 1;
patch(2,1:3) = 1;
patch(3,1:3) = 1;
%Add rotated patches
this_patch_cost = pi/2;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%%
patch = zeros(5,5);
patch(1,1:5) = 1;
patch(2,1:4) = 1;
patch(3,1:3) = 1;
this_patch_cost = pi/4;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%%
patch = zeros(5,5);
patch(1,1:5) = 1;
patch(2,1:5) = 1;
patch(3,1:5) = 1;
this_patch_cost = 0;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%%
patch = zeros(5,5);
patch(1,1:5) = 1;
patch(2,2:4) = 1;
patch(3,3) = 1;
this_patch_cost = pi/2;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%%
patch = zeros(5,5);
patch(1,1:5) = 1;
patch(2,2:4) = 1;
patch(3,3) = 1;
this_patch_cost = pi/2;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%%
patch = zeros(5,5);
patch(1,1) = 1;
patch(2,1:2) = 1;
patch(3,1:3) = 1;
patch(4,1:4) = 1;
patch(5,1:5) = 1;
this_patch_cost = 0;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%%
patch = zeros(5,5);
this_patch_cost = 0;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%% Setup equation system
alllabels = [];
for i = 1:length(labels)
alllabels = [alllabels; bin2dec(labels{i})];
end
alllabels = unique(alllabels);
nrvals = length(unique(alllabels));
labelnrs = unique(alllabels);
A = zeros(length(labels),nrvals);
for i = 1:size(A,1)
[ulab,I,J] = unique(bin2dec(labels{i}));
coeffs = accumarray(J,1);
[mem,loc] = ismember(ulab, alllabels);
A(i,loc) = coeffs;
end
b=patch_costs';
c = rand(size(A,2),1);
options = optimset('diagnostics','off');
x = linprog(c,[],[],A,b,zeros(size(A,2),1),[],[],options);
% Sparse
curvature_cost_patch = x';
function [labels,patch_costs] = extract_subpatches(patch,this_patch_cost)
binlabels = [];
patch_costs = [];
labels = cell(0);
for i = 1:3
for j = 1:3;
subpatch = patch(i:(i+2),j:(j+2));
binvals = subpatch';
binvals = binvals(end:-1:1);
binlabels = [binlabels; num2str(binvals,-6)];
end
end
%% Add rotated, reflected and inverted patches
labels{end+1} = binlabels;
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = reflectpatch(binlabels);
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = rotatepatch90deg(binlabels);
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = reflectpatch(rotatepatch90deg(binlabels));
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = rotatepatch90deg(rotatepatch90deg(binlabels));
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = reflectpatch(rotatepatch90deg(rotatepatch90deg(binlabels)));
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = rotatepatch90deg(rotatepatch90deg(rotatepatch90deg(binlabels)));
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = reflectpatch(rotatepatch90deg(rotatepatch90deg(rotatepatch90deg(binlabels))));
patch_costs = [patch_costs this_patch_cost];
%% Add inverted patches
binlabels = invertpatch(binlabels);
labels{end+1} = binlabels;
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = reflectpatch(binlabels);
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = rotatepatch90deg(binlabels);
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = reflectpatch(rotatepatch90deg(binlabels));
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = rotatepatch90deg(rotatepatch90deg(binlabels));
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = reflectpatch(rotatepatch90deg(rotatepatch90deg(binlabels)));
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = rotatepatch90deg(rotatepatch90deg(rotatepatch90deg(binlabels)));
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = reflectpatch(rotatepatch90deg(rotatepatch90deg(rotatepatch90deg(binlabels))));
patch_costs = [patch_costs this_patch_cost];
function rotpatchbin = rotatepatch90deg(ibin)
rotpatchbin = ibin(:,[3 6 9 2 5 8 1 4 7]);
end
function invpatchbin = invertpatch(ibin)
invpatchbin = ibin;
invpatchbin(ibin == '0') = '1';
invpatchbin(ibin == '1') = '0';
end
function reflectedpatchbin = reflectpatch(ibin)
reflectedpatchbin = ibin(:,[7 8 9 4 5 6 1 2 3]);
end
end
end
function [curvature_cost_patch,alllabels] = curvature_cost_5x5(self)
patch_costs = [];
labels = cell(0);
%1
%%
%Create "training" patch.
patch = zeros(9,16);
patch(1,1:4) = 1;
patch(2,1:6) = 1;
patch(3,1:8) = 1;
patch(4,1:10) = 1;
patch(5,1:12) = 1;
this_patch_cost = 7*pi/8;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%2
%%
%Create "training" patch.
patch = zeros(12,12);
patch(1,1) = 1;
patch(2,1:2) = 1;
patch(3,1:3) = 1;
patch(4,1:4) = 1;
patch(5,1:5) = 1;
patch(6,1:6) = 1;
patch(7,1:7) = 1;
patch(8,1:8) = 1;
this_patch_cost = 3*pi/4;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%3
%%
%Create "training" patch.
patch = zeros(12,11);
patch(1,1:3) = 1;
patch(2,1:3) = 1;
patch(3,1:4) = 1;
patch(4,1:4) = 1;
patch(5,1:5) = 1;
patch(6,1:5) = 1;
patch(7,1:6) = 1;
patch(8,1:6) = 1;
this_patch_cost = 5*pi/8;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%4
%%
%Create "training" patch.
patch = zeros(8,9);
patch(1:4,1:5) = 1;
this_patch_cost = pi/2;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%5
%%
%Create "training" patch.
patch = zeros(10,10);
patch(1,1:6) = 1;
patch(2,1:6) = 1;
patch(3,1:5) = 1;
patch(4,1:5) = 1;
patch(5,1:4) = 1;
patch(6,1:4) = 1;
this_patch_cost = 3*pi/8;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%6
%%
%Create "training" patch.
patch = zeros(10,9);
patch(1,1:9) = 1;
patch(2,1:8) = 1;
patch(3,1:7) = 1;
patch(4,1:6) = 1;
patch(5,1:5) = 1;
patch(6,1:4) = 1;
this_patch_cost = pi/4;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%7
%%
%Create "training" patch.
patch = zeros(10,8);
patch(1,1:10) = 1;
patch(2,1:8) = 1;
patch(3,1:6) = 1;
patch(4,1:4) = 1;
this_patch_cost = pi/8;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%8
%%
%Create "training" patch.
patch = zeros(9,5);
patch(1:5,1:5) = 1;
this_patch_cost = 0;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%9
%%
%Create "training" patch.
patch = zeros(17,17);
patch(1,1) = 1;
patch(2,1:2) = 1;
patch(3,1:3) = 1;
patch(4,1:4) = 1;
patch(5,1:5) = 1;
patch(6,1:6) = 1;
patch(7,1:7) = 1;
patch(8,2:8) = 1;
patch(9,4:9) = 1;
patch(10,6:10) = 1;
patch(11,8:11) = 1;
patch(12,10:12) = 1;
patch(13,12:13) = 1;
this_patch_cost = 7*pi/8;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%10
%%
%Create "training" patch.
patch = zeros(14,16);
patch(1,1:8) = 1;
patch(2,1:8) = 1;
patch(3,1:9) = 1;
patch(4,1:9) = 1;
patch(5,1:10) = 1;
patch(6,3:10) = 1;
patch(7,5:11) = 1;
patch(8,7:11) = 1;
patch(9,9:12) = 1;
patch(10,11:12) = 1;
this_patch_cost = 3*pi/4;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%11
%%
%Create "training" patch.
patch = zeros(10,13);
patch(1,1:11) = 1;
patch(2,1:11) = 1;
patch(3,2:10) = 1;
patch(4,4:10) = 1;
patch(5,6:9) = 1;
patch(6,8:9) = 1;
this_patch_cost = pi/2;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%12
%%
%Create "training" patch.
patch = zeros(10,11);
patch(1,:) = 1;
patch(2,1:10) = 1;
patch(3,1:9) = 1;
patch(4,1:8) = 1;
patch(5,3:7) = 1;
patch(6,5:6) = 1;
this_patch_cost = 3*pi/4;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%13
%%
%Create "training" patch.
patch = zeros(10,9);
patch(1:4,1:9) = 1;
patch(5,2:8) = 1;
patch(6,4:6) = 1;
this_patch_cost = pi/4;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%14
%%
%Create "training" patch.
patch = zeros(10,5);
patch(1:4,1:5) = 1;
patch(5,3:5) = 1;
patch(6,5) = 1;
this_patch_cost = 0;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%15
%%
%Create "training" patch.
patch = zeros(10,15);
patch(1,:) = 1;
patch(2,3:end) = 1;
patch(3,5:end) = 1;
patch(4,7:end) = 1;
patch(5,9:end) = 1;
patch(6,11:end) = 1;
patch(7,12:end) = 1;
patch(8,13:end) = 1;
patch(9,14:end) = 1;
patch(10,15) = 1;
this_patch_cost = pi/8;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%16
%%
%Create "training" patch.
patch = zeros(15,15);
patch(1,:) = 1;
patch(2,3:end) = 1;
patch(3,5:end) = 1;
patch(4,7:end) = 1;
patch(5,9:end) = 1;
patch(6,11:end) = 1;
patch(7,11:end) = 1;
patch(8,12:end) = 1;
patch(9,12:end) = 1;
patch(10:11,13:end) = 1;
patch(12:13,14:end) = 1;
patch(14:15,end) = 1;
this_patch_cost = pi/4;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%17
%%
%Create "training" patch.
patch = zeros(12,14);
patch(1,1:2) = 1;
patch(2,1:4) = 1;
patch(3,1:6) = 1;
patch(4,1:8) = 1;
patch(5,1:10) = 1;
patch(6,1:9) = 1;
patch(7,1:8) = 1;
patch(8,1:7) = 1;
patch(9,1:6) = 1;
patch(10,1:5) = 1;
patch(11,1:4) = 1;
patch(12,1:3) = 1;
this_patch_cost = 5*pi/8;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%18
%%
%Create "training" patch.
patch = zeros(11,14);
patch(1,1:2) = 1;
patch(2,1:4) = 1;
patch(3,1:6) = 1;
patch(4,1:8) = 1;
patch(5,1:10) = 1;
patch(6,1:8) = 1;
patch(7,1:6) = 1;
patch(8,1:4) = 1;
patch(9,1:2) = 1;
this_patch_cost = 3*pi/4;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%19
%%
%Create "training" patch.
patch = zeros(10,11);
patch(1,1:11) = 1;
patch(2,2:10) = 1;
patch(3,3:9) = 1;
patch(4,4:8) = 1;
patch(5,5:7) = 1;
patch(6,6) = 1;
this_patch_cost = pi/2;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%20
%%
%Create "training" patch.
patch = zeros(10,5);
patch(1:4,:) = 1;
patch(5,2:5) = 1;
patch(6,3:5) = 1;
patch(7,4:5) = 1;
patch(8,5) = 1;
this_patch_cost = 0;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%Empty patch
%%
patch = zeros(5,5);
this_patch_cost = 0;
[new_labels,new_patch_costs] = extract_subpatches(patch,this_patch_cost);
labels = [labels new_labels];
patch_costs = [patch_costs new_patch_costs];
%%
%setup equation system
alllabels = [];
for i = 1:length(labels)
alllabels = [alllabels; bin2dec(labels{i}(:,end:-1:1))];
end
alllabels = unique(alllabels);
nrvals = length(unique(alllabels));
labelnrs = unique(alllabels);
A = zeros(length(labels),nrvals);
for i = 1:size(A,1)
[ulab,I,J] = unique(bin2dec(labels{i}));
coeffs = accumarray(J,1);
[mem,loc] = ismember(ulab, alllabels);
A(i,loc) = coeffs;
end
b=patch_costs';
c = rand(size(A,2),1);
options = optimset('diagnostics','off');
[x,cval,info] = linprog(c,[],[],A,b,zeros(size(A,2),1),[],[],options);
curvature_cost_patch = x';
function [labels,patch_costs] = extract_subpatches(patch,this_patch_cost)
% figure(1);
% imagesc(patch);
% axis equal
%Extract all subpatches
binlabels = [];
patch_costs = [];
labels = cell(0);
for i = 1:size(patch,1)-5+1;
for j = 1:size(patch,2)-5+1;
subpatch = patch(i:(i+4),j:(j+4));
binvals = subpatch';
binlabels = [binlabels; num2str(binvals(:)',-6)];
end
end
%Add rotated, reflected and inverted patches
labels{end+1} = binlabels;
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = reflectpatch(binlabels);
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = rotatepatch90deg(binlabels);
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = reflectpatch(rotatepatch90deg(binlabels));
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = rotatepatch90deg(rotatepatch90deg(binlabels));
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = reflectpatch(rotatepatch90deg(rotatepatch90deg(binlabels)));
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = rotatepatch90deg(rotatepatch90deg(rotatepatch90deg(binlabels)));
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = reflectpatch(rotatepatch90deg(rotatepatch90deg(rotatepatch90deg(binlabels))));
patch_costs = [patch_costs this_patch_cost];
%Add inverted patches
binlabels = invertpatch(binlabels);
labels{end+1} = binlabels;
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = reflectpatch(binlabels);
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = rotatepatch90deg(binlabels);
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = reflectpatch(rotatepatch90deg(binlabels));
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = rotatepatch90deg(rotatepatch90deg(binlabels));
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = reflectpatch(rotatepatch90deg(rotatepatch90deg(binlabels)));
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = rotatepatch90deg(rotatepatch90deg(rotatepatch90deg(binlabels)));
patch_costs = [patch_costs this_patch_cost];
labels{end+1} = reflectpatch(rotatepatch90deg(rotatepatch90deg(rotatepatch90deg(binlabels))));
patch_costs = [patch_costs this_patch_cost];
end
function rotpatchbin = rotatepatch90deg(ibin)
rotpatchbin = ibin(:,[5 10 15 20 25 4 9 14 19 24 3 8 13 18 23 2 7 12 17 22 1 6 11 16 21]);
end
function invpatchbin = invertpatch(ibin)
invpatchbin = ibin;
invpatchbin(ibin == '0') = '1';
invpatchbin(ibin == '1') = '0';
end
function reflectedpatchbin = reflectpatch(ibin)
reflectedpatchbin = ibin(:,[21 22 23 24 25 16 17 18 19 20 11 12 13 14 15 6 7 8 9 10 1 2 3 4 5]);
end
end
end
end