-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathLayeredBDMTextureDescriptor.nb
4314 lines (4207 loc) · 228 KB
/
LayeredBDMTextureDescriptor.nb
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
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
(* Content-type: application/vnd.wolfram.mathematica *)
(*** Wolfram Notebook File ***)
(* http://www.wolfram.com/nb *)
(* CreatedBy='Mathematica 10.2' *)
(*CacheID: 234*)
(* Internal cache information:
NotebookFileLineBreakTest
NotebookFileLineBreakTest
NotebookDataPosition[ 158, 7]
NotebookDataLength[ 233019, 4306]
NotebookOptionsPosition[ 225507, 4171]
NotebookOutlinePosition[ 226048, 4192]
CellTagsIndexPosition[ 226005, 4189]
WindowFrame->Normal*)
(* Beginning of Notebook Content *)
Notebook[{
Cell[CellGroupData[{
Cell["\<\
Layered BDM as a Texture and Weighted Network Descriptor to Estimate \
Kolmogorov Complexity\
\>", "Title",
CellChangeTimes->{{3.702658224906883*^9, 3.7026582452357883`*^9}, {
3.7381804809937735`*^9, 3.7381804880094385`*^9}, {3.738180786704887*^9,
3.738180787123165*^9}},ExpressionUUID->"dddfd1a9-e133-4c3f-91d3-\
d2815eafc8f9"],
Cell[TextData[StyleBox["September 3rd, 2016",
FontWeight->"Bold"]], "Text",
CellChangeTimes->{{3.738180132727944*^9, 3.7381801694451847`*^9}, {
3.738180448385622*^9,
3.7381804529156265`*^9}},ExpressionUUID->"f7ae7a78-3db5-447b-9217-\
ca2cc37f4227"],
Cell[TextData[StyleBox["Author: Antonio Rueda-Toicen",
FontWeight->"Bold"]], "Text",
CellChangeTimes->{{3.702658263715016*^9, 3.702658305761551*^9}, {
3.7381801529032526`*^9,
3.7381801544262657`*^9}},ExpressionUUID->"b11b4ffb-495e-42a2-ab91-\
8e6b892342ba"],
Cell["[email protected]", "Text",
CellChangeTimes->{{3.702658263715016*^9, 3.702658305761551*^9}, {
3.7381818636500483`*^9, 3.73818187016438*^9},
3.7755727738368826`*^9},ExpressionUUID->"47077172-ebf2-4464-99be-\
e0117b97565c"],
Cell["\<\
A layered version of the Block Decomposition Method[1], serves as a \
descriptor of both weighted networks and grayscale or color images. This \
descriptor provides an estimate of Kolmogorov Complexity that\
\[CloseCurlyQuote]s sensitive to morphological perturbative [2]. To estimate \
the complexity of a grayscale texture, we quantize it and aggregate the \
estimated Kolmogorov complexity values of binary 4 x 4 squares, estimated \
through the Coding Theorem Method [3, 4]. \
\>", "Text",
CellChangeTimes->{{3.738180183723551*^9, 3.7381802350767546`*^9}, {
3.7381804992138777`*^9, 3.73818053077374*^9}, {3.7381806893494215`*^9,
3.73818069154888*^9}, {3.7381814536200047`*^9, 3.7381815823595657`*^9}, {
3.738181622500882*^9, 3.738181643676784*^9},
3.738181826553296*^9},ExpressionUUID->"117eb5da-764a-4743-8a65-\
88fafadd1e4c"],
Cell[CellGroupData[{
Cell[BoxData[{
RowBox[{"Clear", "[", "\"\<Global`*\>\"", "]"}], "\n",
RowBox[{"SetDirectory", "[",
RowBox[{"NotebookDirectory", "[", "]"}], "]"}]}], "Code",
CellChangeTimes->{{3.702581308892174*^9, 3.7025813279789352`*^9},
3.70266081083092*^9},
CellLabel->"In[4]:=",ExpressionUUID->"c03f16c9-c63f-43e2-9d86-5dc7179acca6"],
Cell[BoxData["\<\"C:\\\\Users\\\\Antonio Rueda \
Toicen\\\\Documents\\\\Python\\\\EstimationKolmogorovComplexityImages\\\\\
ImageAnalysisWithAlgorithmicInformation\"\>"], "Output",
CellChangeTimes->{
3.7025781102023425`*^9, 3.702581259016983*^9, 3.7025813341247053`*^9,
3.7025817854849463`*^9, 3.7025833941649504`*^9, 3.7025838254289055`*^9,
3.702587972501516*^9, 3.7025927848075047`*^9, {3.702660801914589*^9,
3.7026608171231403`*^9}, {3.738180709875848*^9, 3.738180710114991*^9},
3.738180805374921*^9, {3.77557261270301*^9, 3.7755726207964563`*^9}},
CellLabel->"Out[5]=",ExpressionUUID->"190307df-ce37-49fd-a844-2e7a36863ae5"]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"data", " ", "=", " ",
RowBox[{"Import", "[",
RowBox[{"\"\<fourByFourCTMs.csv\>\"", ",", " ", "\"\<CSV\>\"", ",", " ",
RowBox[{"\"\<Numeric\>\"", " ", "\[Rule]", " ", "False"}]}],
"]"}]}]], "Code",
CellChangeTimes->{{3.7025789897066145`*^9, 3.702579024039155*^9}, {
3.7025791220932193`*^9, 3.7025791661810627`*^9}, {3.7025792740431523`*^9,
3.7025792745382886`*^9}},
CellLabel->"In[6]:=",ExpressionUUID->"bb20656a-421d-4328-9b8a-66ae889815f6"],
Cell[BoxData[
InterpretationBox[
TagBox[
FrameBox[GridBox[{
{
ItemBox[
TagBox[
RowBox[{"{",
RowBox[{
RowBox[{"{",
RowBox[{"\<\"0000000000000000\"\>",
",", "\<\"22.006706292292176\"\>"}], "}"}], ",",
RowBox[{"{",
RowBox[{"\<\"0000000000000001\"\>",
",", "\<\"23.347935957593144\"\>"}], "}"}], ",",
RowBox[{"{",
RowBox[{"\<\"0000000000000010\"\>",
",", "\<\"24.325701071360243\"\>"}], "}"}], ",",
TemplateBox[{"65530"},
"OutputSizeLimit`Skeleton"], ",",
RowBox[{"{",
RowBox[{"\<\"1111111111111101\"\>",
",", "\<\"24.325701071360243\"\>"}], "}"}], ",",
RowBox[{"{",
RowBox[{"\<\"1111111111111110\"\>",
",", "\<\"23.347935957593144\"\>"}], "}"}], ",",
RowBox[{"{",
RowBox[{"\<\"1111111111111111\"\>",
",", "\<\"22.006706292292176\"\>"}], "}"}]}], "}"}],
Short[#, 5]& ],
BaseStyle->{Deployed -> False},
StripOnInput->False]},
{GridBox[{
{
PaneBox[
TagBox[
TooltipBox[
StyleBox[
StyleBox[
DynamicBox[ToBoxes[
FEPrivate`FrontEndResource[
"FEStrings", "sizeBriefExplanation"], StandardForm],
ImageSizeCache->{95., {4., 13.}}],
StripOnInput->False,
DynamicUpdating->True,
LineSpacing->{1, 2},
LineIndent->0,
LinebreakAdjustments->{1., 100, 0, 0, 0}], "OSLText",
StripOnInput->False],
StyleBox[
DynamicBox[
ToBoxes[
FEPrivate`FrontEndResource["FEStrings", "sizeExplanation"],
StandardForm]], DynamicUpdating -> True, LineIndent -> 0,
LinebreakAdjustments -> {1., 100, 0, 0, 0},
LineSpacing -> {1, 2}, StripOnInput -> False]],
Annotation[#,
Style[
Dynamic[
FEPrivate`FrontEndResource["FEStrings", "sizeExplanation"]],
DynamicUpdating -> True, LineIndent -> 0,
LinebreakAdjustments -> {1., 100, 0, 0, 0},
LineSpacing -> {1, 2}], "Tooltip"]& ],
Alignment->Center,
BaselinePosition->Baseline,
ImageSize->{Automatic, {25, Full}}],
ButtonBox[
PaneSelectorBox[{False->
StyleBox[
StyleBox[
DynamicBox[ToBoxes[
FEPrivate`FrontEndResource["FEStrings", "sizeShowLess"],
StandardForm],
ImageSizeCache->{74., {1., 13.}}],
StripOnInput->False,
DynamicUpdating->True,
LineSpacing->{1, 2},
LineIndent->0,
LinebreakAdjustments->{1., 100, 0, 0, 0}], "OSLControl",
StripOnInput->False], True->
StyleBox[
StyleBox[
DynamicBox[ToBoxes[
FEPrivate`FrontEndResource["FEStrings", "sizeShowLess"],
StandardForm]],
StripOnInput->False,
DynamicUpdating->True,
LineSpacing->{1, 2},
LineIndent->0,
LinebreakAdjustments->{1., 100, 0, 0, 0}], "OSLControlActive",
StripOnInput->False]}, Dynamic[
CurrentValue["MouseOver"]],
Alignment->Center,
FrameMargins->0,
ImageSize->{Automatic, {25, Full}}],
Appearance->None,
BaselinePosition->Baseline,
ButtonFunction:>OutputSizeLimit`ButtonFunction[
OutputSizeLimit`Defer, 6, 16512797987789787041, 5/2],
Enabled->True,
Evaluator->Automatic,
Method->"Queued"],
ButtonBox[
PaneSelectorBox[{False->
StyleBox[
StyleBox[
DynamicBox[ToBoxes[
FEPrivate`FrontEndResource["FEStrings", "sizeShowMore"],
StandardForm],
ImageSizeCache->{88., {1., 13.}}],
StripOnInput->False,
DynamicUpdating->True,
LineSpacing->{1, 2},
LineIndent->0,
LinebreakAdjustments->{1., 100, 0, 0, 0}], "OSLControl",
StripOnInput->False], True->
StyleBox[
StyleBox[
DynamicBox[ToBoxes[
FEPrivate`FrontEndResource["FEStrings", "sizeShowMore"],
StandardForm]],
StripOnInput->False,
DynamicUpdating->True,
LineSpacing->{1, 2},
LineIndent->0,
LinebreakAdjustments->{1., 100, 0, 0, 0}], "OSLControlActive",
StripOnInput->False]}, Dynamic[
CurrentValue["MouseOver"]],
Alignment->Center,
FrameMargins->0,
ImageSize->{Automatic, {25, Full}}],
Appearance->None,
BaselinePosition->Baseline,
ButtonFunction:>OutputSizeLimit`ButtonFunction[
OutputSizeLimit`Defer, 6, 16512797987789787041, 5 2],
Enabled->True,
Evaluator->Automatic,
Method->"Queued"],
ButtonBox[
PaneSelectorBox[{False->
StyleBox[
StyleBox[
DynamicBox[ToBoxes[
FEPrivate`FrontEndResource["FEStrings", "sizeShowAll"],
StandardForm],
ImageSizeCache->{65., {1., 13.}}],
StripOnInput->False,
DynamicUpdating->True,
LineSpacing->{1, 2},
LineIndent->0,
LinebreakAdjustments->{1., 100, 0, 0, 0}], "OSLControl",
StripOnInput->False], True->
StyleBox[
StyleBox[
DynamicBox[ToBoxes[
FEPrivate`FrontEndResource["FEStrings", "sizeShowAll"],
StandardForm]],
StripOnInput->False,
DynamicUpdating->True,
LineSpacing->{1, 2},
LineIndent->0,
LinebreakAdjustments->{1., 100, 0, 0, 0}], "OSLControlActive",
StripOnInput->False]}, Dynamic[
CurrentValue["MouseOver"]],
Alignment->Center,
FrameMargins->0,
ImageSize->{Automatic, {25, Full}}],
Appearance->None,
BaselinePosition->Baseline,
ButtonFunction:>OutputSizeLimit`ButtonFunction[
OutputSizeLimit`Defer, 6, 16512797987789787041, Infinity],
Enabled->True,
Evaluator->Automatic,
Method->"Queued"],
ButtonBox[
PaneSelectorBox[{False->
StyleBox[
StyleBox[
DynamicBox[ToBoxes[
FEPrivate`FrontEndResource["FEStrings", "sizeChangeLimit"],
StandardForm],
ImageSizeCache->{115., {1., 13.}}],
StripOnInput->False,
DynamicUpdating->True,
LineSpacing->{1, 2},
LineIndent->0,
LinebreakAdjustments->{1., 100, 0, 0, 0}], "OSLControl",
StripOnInput->False], True->
StyleBox[
StyleBox[
DynamicBox[ToBoxes[
FEPrivate`FrontEndResource["FEStrings", "sizeChangeLimit"],
StandardForm]],
StripOnInput->False,
DynamicUpdating->True,
LineSpacing->{1, 2},
LineIndent->0,
LinebreakAdjustments->{1., 100, 0, 0, 0}], "OSLControlActive",
StripOnInput->False]}, Dynamic[
CurrentValue["MouseOver"]],
Alignment->Center,
FrameMargins->0,
ImageSize->{Automatic, {25, Full}}],
Appearance->None,
BaselinePosition->Baseline,
ButtonFunction:>FrontEndExecute[{
FrontEnd`SetOptions[
FrontEnd`$FrontEnd,
FrontEnd`PreferencesSettings -> {"Page" -> "Advanced"}],
FrontEnd`FrontEndToken["PreferencesDialog"]}],
Evaluator->None,
Method->"Preemptive"]}
},
AutoDelete->False,
FrameStyle->GrayLevel[0.85],
GridBoxDividers->{"Columns" -> {False, {True}}},
GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{Automatic}}},
GridBoxSpacings->{"Columns" -> {{2}}}]}
},
DefaultBaseStyle->"Column",
GridBoxAlignment->{"Columns" -> {{Left}}, "Rows" -> {{Baseline}}},
GridBoxDividers->{"Columns" -> {{False}}, "Rows" -> {{False}}},
GridBoxItemSize->{"Columns" -> {{Automatic}}, "Rows" -> {{1.}}},
GridBoxSpacings->{"Columns" -> {
Offset[0.27999999999999997`], {
Offset[0.5599999999999999]},
Offset[0.27999999999999997`]}, "Rows" -> {
Offset[0.2],
Offset[1.2], {
Offset[0.4]},
Offset[0.2]}}],
BaseStyle->"OutputSizeLimit",
FrameMargins->{{12, 12}, {0, 15}},
FrameStyle->GrayLevel[0.85],
RoundingRadius->5,
StripOnInput->False],
Deploy,
DefaultBaseStyle->"Deploy"],
If[16512797987789787041 === $SessionID,
Out[6], Message[
MessageName[Syntax, "noinfoker"]]; Missing["NotAvailable"];
Null]]], "Output",
CellChangeTimes->{{3.7025790000625305`*^9, 3.702579026110534*^9}, {
3.7025791387980394`*^9, 3.7025791680580997`*^9}, 3.7025792800863805`*^9,
3.702581261767098*^9, 3.7025813356882477`*^9, 3.7025817870289583`*^9,
3.702583396781271*^9, 3.70258382709597*^9, 3.702587974330695*^9,
3.702592787932627*^9, {3.702660798049218*^9, 3.7026608215305204`*^9}, {
3.7381807100419426`*^9, 3.7381807101900434`*^9}, 3.738180807593392*^9, {
3.7755726206433525`*^9, 3.775572621225005*^9}},
CellLabel->"Out[6]=",ExpressionUUID->"52869283-2e53-4c04-a1e7-83edaa16d787"]
}, Open ]],
Cell[BoxData[
RowBox[{
RowBox[{"fourByFourCTMs", " ", "=", " ",
RowBox[{"Transpose", "@",
RowBox[{"{",
RowBox[{
RowBox[{"data", "[",
RowBox[{"[",
RowBox[{"All", ",", " ", "1"}], "]"}], "]"}], ",", " ",
RowBox[{"ToExpression", " ", "/@", " ",
RowBox[{"data", "[",
RowBox[{"[",
RowBox[{"All", ",", " ", "2"}], "]"}], "]"}]}]}], " ", "}"}]}]}],
";"}]], "Input",
CellChangeTimes->{{3.7025791708179812`*^9, 3.7025792998303976`*^9}},
CellLabel->"In[7]:=",ExpressionUUID->"77ce1eec-e800-46c3-b467-9c83f900a95a"],
Cell[BoxData[
RowBox[{
RowBox[{"Table", "[", "\[IndentingNewLine]",
RowBox[{
RowBox[{"(",
RowBox[{
RowBox[{"CTM", "[",
RowBox[{"fourByFourCTMs", "[",
RowBox[{"[",
RowBox[{"i", ",", " ", "1"}], "]"}], "]"}], "]"}], " ", "=", " ",
RowBox[{"fourByFourCTMs", "[",
RowBox[{"[",
RowBox[{"i", ",", " ", "2"}], "]"}], "]"}]}], ")"}], ",", " ",
RowBox[{"{",
RowBox[{"i", ",", " ", "1", ",", " ", "65536", ",", " ", "1"}], " ",
"}"}]}], "]"}], ";"}]], "Input",
CellChangeTimes->{{3.7025815775072856`*^9, 3.7025817091721163`*^9}},
CellLabel->"In[8]:=",ExpressionUUID->"b04b0fc0-0152-42a4-9cb9-ea829c67024d"],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"CTM", "[", "\"\<0000000000000000\>\"", "]"}]], "Input",
CellChangeTimes->{{3.702581800564692*^9, 3.702581809258424*^9}},
CellLabel->"In[9]:=",ExpressionUUID->"80eb4bef-7648-4d74-b2b1-f0da647ec483"],
Cell[BoxData["22.006706292292176`"], "Output",
CellChangeTimes->{3.702581809964508*^9, 3.702583398255947*^9,
3.702583828271805*^9, 3.7025879754557447`*^9, 3.7025927898623943`*^9,
3.7381807116009784`*^9, 3.7381808099169464`*^9, 3.7755726239943724`*^9},
CellLabel->"Out[9]=",ExpressionUUID->"a0f67235-309b-4507-9270-52471e001595"]
}, Open ]],
Cell[BoxData[
RowBox[{"Clear", "[",
RowBox[{"data", ",", " ", "fourByFourCTMs"}], "]"}]], "Input",
CellChangeTimes->{{3.702581714610825*^9, 3.7025817543605742`*^9}},
CellLabel->"In[10]:=",ExpressionUUID->"32d19c2c-2923-40ca-9198-441298b95b5d"],
Cell[TextData[{
StyleBox["\[OpenCurlyDoubleQuote]Layered BDM\[CloseCurlyDoubleQuote] works \
through the binary quantization of a texture\[CloseCurlyQuote]s digital \
levels. The examples below quantize textures using 256 digital levels (byte \
resolution);",
FontWeight->"Bold"],
" ",
Cell[BoxData[
FormBox[
SuperscriptBox["2", "16"], TraditionalForm]],ExpressionUUID->
"d96e7688-1ac7-49f0-84b5-f87d16e7d589"],
", ",
Cell[BoxData[
FormBox[
SuperscriptBox["2", "32"], TraditionalForm]],ExpressionUUID->
"7ca56a94-0933-4226-86f0-04c09cfc4f63"],
", etc. quantizations are obviously also possible. ",
StyleBox[" ",
FontWeight->"Bold"]
}], "Text",
CellChangeTimes->{{3.7026616053540044`*^9, 3.7026617235772867`*^9}, {
3.7026617548685274`*^9, 3.702661807163501*^9}, {3.7026618456454425`*^9,
3.702661950332081*^9}},ExpressionUUID->"c580495b-a303-4c47-a57e-\
4c123686c5f3"],
Cell[BoxData[
RowBox[{
RowBox[{"layerDecomposition", "[", "image_", "]"}], ":=",
"\[IndentingNewLine]", " ",
RowBox[{"Module", "[",
RowBox[{
RowBox[{"{",
RowBox[{
"getLayers", ",", " ", "getBlocks", ",", " ", "blockCount", ",", " ",
"stringifiedBlocks"}], "}"}], ",", " ", "\[IndentingNewLine]",
RowBox[{
RowBox[{
RowBox[{"getLayers", "[", "imag_", "]"}], " ", ":=",
RowBox[{"ParallelTable", "[",
RowBox[{
RowBox[{"Unitize", "[", " ",
RowBox[{
RowBox[{"ImageData", "[",
RowBox[{
RowBox[{"ColorConvert", "[",
RowBox[{"imag", ",", " ", "\"\<Grayscale\>\""}], "]"}], ",",
" ", "\"\<Byte\>\""}], "]"}], ",", " ", "i"}], "]"}], ",", " ",
RowBox[{"{",
RowBox[{"i", ",", " ", "1", ",", " ", "255", ",", " ", "1"}],
"}"}]}], "]"}]}], ";", "\[IndentingNewLine]",
RowBox[{
RowBox[{"getBlocks", "[", "layers_", "]"}], ":=", " ",
RowBox[{"Nest", "[",
RowBox[{
RowBox[{
RowBox[{"Flatten", "[",
RowBox[{"#", ",", " ", "1"}], "]"}], "&"}], ",", " ",
RowBox[{
RowBox[{
RowBox[{"Partition", "[",
RowBox[{"#", ",", " ",
RowBox[{"{",
RowBox[{"4", ",", " ", "4"}], "}"}], ",", "1"}], "]"}], "&"}],
" ", "/@", " ", "layers"}], ",", " ", "2"}], "]"}]}], ";",
"\[IndentingNewLine]",
RowBox[{"blockCount", " ", "=", " ",
RowBox[{"Tally", "[",
RowBox[{"getBlocks", "[",
RowBox[{"getLayers", "[", "image", "]"}], "]"}], " ", "]"}]}], ";",
" ", "\[IndentingNewLine]",
RowBox[{"stringifiedBlocks", " ", "=", " ",
RowBox[{"StringJoin", " ", "/@", " ",
RowBox[{"Map", "[",
RowBox[{"ToString", ",", " ",
RowBox[{"(",
RowBox[{"Flatten", " ", "/@", " ",
RowBox[{"blockCount", "[",
RowBox[{"[",
RowBox[{"All", ",", " ", "1"}], "]"}], "]"}]}], ")"}], ",", " ",
RowBox[{"{", "2", "}"}]}], "]"}]}]}], ";", " ",
"\[IndentingNewLine]",
RowBox[{
RowBox[{"Total", "[",
RowBox[{"CTM", " ", "/@", " ", "stringifiedBlocks"}], "]"}], " ", "+",
" ",
RowBox[{"Total", "[",
RowBox[{"Log2", "[",
RowBox[{"blockCount", "[",
RowBox[{"[",
RowBox[{"All", ",", " ", "2"}], "]"}], "]"}], "]"}], "]"}]}]}]}],
"\[IndentingNewLine]", "]"}]}]], "Input",
CellChangeTimes->{{3.702582637881093*^9, 3.702582648557334*^9}, {
3.7025827372144985`*^9, 3.702582742629773*^9}, {3.702582779976116*^9,
3.7025827959504447`*^9}, {3.7025828313992534`*^9,
3.7025828321512384`*^9}, {3.702584361439926*^9, 3.7025844414336987`*^9}, {
3.70258447265285*^9, 3.7025844806600404`*^9}, {3.7025848007337255`*^9,
3.7025848236497755`*^9}, {3.7025865243503585`*^9, 3.702586528356394*^9}, {
3.7025868072708883`*^9, 3.702586815244869*^9}, {3.702586919971115*^9,
3.702586998478453*^9}, {3.7025870358082037`*^9, 3.702587051470017*^9},
3.7025871303924017`*^9, {3.702587531389391*^9, 3.702587540075317*^9}, {
3.70258770260102*^9, 3.7025878263486404`*^9}, {3.7025878603667336`*^9,
3.7025879535436563`*^9}},
CellLabel->"In[11]:=",ExpressionUUID->"3edc8cf0-b8aa-4af1-b9b8-54efb1d6edc8"],
Cell[CellGroupData[{
Cell["Layered BDM as a Texture Descriptor", "Section",
CellChangeTimes->{{3.702594511997779*^9, 3.7025945190459146`*^9}, {
3.70266134130486*^9,
3.70266135302308*^9}},ExpressionUUID->"0af9bf82-3288-440e-9d53-\
36a8205b03f2"],
Cell[BoxData[
RowBox[{
RowBox[{"woodTextures", " ", "=", " ",
RowBox[{"(",
RowBox[{
RowBox[{
RowBox[{
RowBox[{
RowBox[{"Image", "[",
RowBox[{
RowBox[{"ColorConvert", "[",
RowBox[{"#", ",", "\"\<Grayscale\>\""}], "]"}], ",", " ",
"\"\<Byte\>\""}], "]"}], "&"}], " ", "/@", " ",
RowBox[{"ImageResize", "[",
RowBox[{"#", ",", " ",
RowBox[{"{",
RowBox[{"128", ",", " ", "128"}], "}"}]}], "]"}]}], "&"}], " ", "/@",
RowBox[{"(", " ",
RowBox[{
RowBox[{
RowBox[{"ExampleData", "[", "#", "]"}], "&"}], " ", "/@", " ",
RowBox[{"{",
RowBox[{
RowBox[{"{",
RowBox[{"\"\<Texture\>\"", ",", "\"\<Wood\>\""}], "}"}], ",",
RowBox[{"{",
RowBox[{"\"\<Texture\>\"", ",", "\"\<Wood2\>\""}], "}"}], ",",
RowBox[{"{",
RowBox[{"\"\<Texture\>\"", ",", "\"\<Wood3\>\""}], "}"}]}], "}"}]}],
")"}]}], ")"}]}], ";"}]], "Input",
CellChangeTimes->{{3.7025819652240934`*^9, 3.7025819755585203`*^9}, {
3.7025820182019515`*^9, 3.702582070318453*^9}, {3.702582278372367*^9,
3.70258230166439*^9}, {3.702582996451344*^9, 3.702583006962539*^9}, {
3.7025850147460923`*^9, 3.7025850226502438`*^9}, 3.7025944981622505`*^9},
CellLabel->"In[12]:=",ExpressionUUID->"b20b9288-2711-445c-8b8d-d7fae3715087"],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"smallWT", " ", "=", " ",
RowBox[{"ImageResize", "[",
RowBox[{
RowBox[{"woodTextures", "[",
RowBox[{"[", "1", "]"}], "]"}], " ", ",", " ",
RowBox[{"{",
RowBox[{"15", ",", " ", "15"}], "}"}]}], "]"}]}]], "Input",
CellChangeTimes->{{3.702582331502595*^9, 3.702582444704757*^9},
3.702584085941397*^9, {3.7025862800310144`*^9, 3.7025863032507815`*^9}, {
3.7025863529385223`*^9, 3.702586367904025*^9}},
CellLabel->"In[13]:=",ExpressionUUID->"614f24a4-fd86-4a62-8166-1f1eb435a6e4"],
Cell[BoxData[
GraphicsBox[
TagBox[RasterBox[
RawArray["UnsignedInteger8",{{183, 172, 185, 186, 185, 179, 177, 187, 198,
186, 188, 184, 189, 191, 189}, {185, 171, 182, 187, 191, 184, 177, 192,
197, 185, 186, 186, 181, 182, 175}, {188, 176, 181, 181, 190, 181, 180,
193, 195, 183, 186, 184, 178, 173, 172}, {189, 175, 184, 188, 188, 179,
181, 192, 195, 174, 184, 182, 177, 167, 180}, {192, 171, 186, 192, 187,
180, 182, 190, 186, 178, 184, 181, 173, 167, 179}, {193, 174, 182, 188,
182, 179, 179, 189, 181, 184, 187, 177, 170, 163, 187}, {191, 173, 180,
191, 182, 173, 178, 188, 183, 184, 187, 175, 172, 166, 185}, {190, 177,
177, 189, 176, 167, 172, 186, 186, 184, 184, 171, 172, 172, 186}, {188,
176, 175, 190, 173, 159, 171, 182, 176, 181, 179, 175, 170, 173, 195}, {
188, 175, 175, 188, 171, 155, 169, 168, 167, 185, 175, 172, 165, 171,
197}, {188, 174, 176, 190, 170, 164, 167, 166, 170, 184, 176, 168, 161,
169, 196}, {184, 170, 177, 190, 174, 171, 153, 157, 173, 183, 174, 167,
167, 180, 191}, {184, 164, 176, 179, 173, 183, 160, 148, 175, 182, 171,
169, 182, 186, 196}, {185, 164, 179, 185, 179, 188, 174, 153, 181, 186,
185, 177, 189, 187, 200}, {169, 145, 164, 166, 165, 171, 161, 152, 163,
165, 174, 163, 166, 173, 180}}], {{0, 15}, {15, 0}}, {0, 255},
ColorFunction->GrayLevel],
BoxForm`ImageTag[
"Byte", ColorSpace -> "Grayscale", Interleaving -> None, MetaInformation ->
Association[
"Exif" -> Association[
"NewSubfileType" -> "Primary image", "ImageWidth" -> 512,
"ImageLength" -> 512, "BitsPerSample" -> 8, "Compression" ->
"Uncompressed", "PhotometricInterpretation" -> "Black Is Zero",
"StripOffsets" -> 8, "SamplesPerPixel" -> 1, "StripByteCounts" ->
262144, "PlanarConfiguration" -> 1]]],
Selectable->False],
DefaultBaseStyle->"ImageGraphics",
ImageSizeRaw->{15, 15},
PlotRange->{{0, 15}, {0, 15}}]], "Output",
CellChangeTimes->{
3.7025834000343437`*^9, 3.7025838287767086`*^9, 3.7025840864277463`*^9,
3.702585056057967*^9, 3.7025863036697445`*^9, {3.7025863570500298`*^9,
3.702586368304433*^9}, 3.70258797568427*^9, 3.7025927945657053`*^9,
3.738180725394496*^9, 3.738180810425276*^9, 3.7755726383529224`*^9},
CellLabel->"Out[13]=",ExpressionUUID->"1b6a7c1a-f3c8-40db-8621-581b744cb1b1"]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData[
RowBox[{"layerDecomposition", "[", "smallWT", "]"}]], "Input",
CellLabel->"In[14]:=",ExpressionUUID->"041bed7d-ff7b-45f3-aedf-02d776bcb059"],
Cell[BoxData["28364.824273798466`"], "Output",
CellChangeTimes->{3.702587834721075*^9, 3.7025879759460006`*^9,
3.702592798136161*^9, 3.7381807257157106`*^9, 3.73818081075249*^9,
3.775572641202444*^9},
CellLabel->"Out[14]=",ExpressionUUID->"9dd86be3-5e10-4029-81ed-688443238dee"]
}, Open ]],
Cell[CellGroupData[{
Cell[BoxData["woodTextures"], "Input",
CellChangeTimes->{{3.7025932399115777`*^9, 3.702593254560603*^9}},
CellLabel->"In[15]:=",ExpressionUUID->"509cd0a8-1056-4568-81e3-d68f7eb7710c"],
Cell[BoxData[
RowBox[{"{",
RowBox[{
GraphicsBox[
TagBox[RasterBox[CompressedData["
1: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
"], {{0, 128}, {128, 0}}, {0, 255},
ColorFunction->GrayLevel],
BoxForm`ImageTag[
"Byte", ColorSpace -> "Grayscale", Interleaving -> None, MetaInformation ->
Association[
"Exif" -> Association[
"NewSubfileType" -> "Primary image", "ImageWidth" -> 512,
"ImageLength" -> 512, "BitsPerSample" -> 8, "Compression" ->
"Uncompressed", "PhotometricInterpretation" -> "Black Is Zero",
"StripOffsets" -> 8, "SamplesPerPixel" -> 1, "StripByteCounts" ->
262144, "PlanarConfiguration" -> 1]]],
Selectable->False],
DefaultBaseStyle->"ImageGraphics",
ImageSizeRaw->{128, 128},
PlotRange->{{0, 128}, {0, 128}}], ",",
GraphicsBox[
TagBox[RasterBox[CompressedData["
1:eJwst2dQGoq2Nnznznvfe8895+ze0mOqvffeC6KCqBQVAUEERASRoiAgIAoq
YKGJFey99xJ77yUxJqb3nWT3Hr/9znw/1ppZM8+P9fx5igmGEp3yn//xH/+R
+T9/r2g0049GQ7Mhn/x9xKZnEvDpOGxYOh2Hx9FcMf8Pxv//Z3L4zjCUYOlF
scHLhFxodi11I36uQrMSlGQkVz5tKF/o03FknakGwFGXSW4V16GX6qJdQqBU
1rO3IMuBLU/2sm9Xng6OH3drft/q+G4X2NOMfUp9WCkePRgTqQcIqFEqbXl6
OkOzwRi9rx3+fQd6e3jkHWSgqXEteu6wp7zlVtvJWHyKfyAWQJ0zcMKLmpNP
4vplBU9zmLPRulcNif0LHWxuFWUMs1N2o5gpsVUhAdhqdGGp9WEVbDukfWeB
dSA7HRh5P9X869bI4xnfaiP8W/7ERE9x2/vWuH4syoglHQwegntOGN2zy29/
3kWsTK4eJS9UdN2OOX4jlo7v9D81JpP9I6IDw1oMQpS2LeM4ckYk+bEJPe7d
/ftzaK2qj5w5lNQJuWu43NWsdtNGovA5JGGx7W1i7EmYumaRMYY/7Zv4bclw
2lb0djVKWQl/xhr4cZdf9stkcCUKraJmitt2QhZeMqu6X039tBk/NXq0wlkZ
WVwpfPZeXDQ12vdrMyPTwQMT6SxsZKbyyU07oMFsw7fdjFX30T/eRfLL+7Hi
/YQl0L0+k6oFRWAjlsmWcgVcl0MyfDWYsrvJ6Q37fXT2j+2CD82yh4sAlR61
FdX9cjS3+MkhPhuI15CLWwfHwzcPSHXt7Zj3a/LthttGv6F3T7cfv7lbPCKu
GHvViE3ws0emOaW2Z6SxHfXz2KG0kZ9b0sa8en5/E8SoMsIZj1lzgRPGC61r
BUkDJVpcTpWQ5bOXmdTvV7i9JllL+GVu7adj2V8TFSejQQ1VyHUPw+2W0qpv
H9NwUH4xpfFko99naY3c11sQ8mC69+7YDu9M19ufnty6bzB0x9E77rSkMm1s
gbFmUTUkhfS6fDpvH9P3pp7W6Fr107soqUocKHjUvxm91nmlaJgvK63qDUle
bqO479FjWx11mwOKNexfjx//8Ej553DJ8VqYXgraCR6aUtYZn+1L6CC6Aak+
3N/1HNugNnbmBj+cmnqytV/p3Dr+645ygF9fB+bLu4+qq+KcsAGXAM08fZEp
nadbyJnc4WXP+7R99y5SWiQBld6/PU1/MW9XOpQvj+NWIqj76RKP7nD0RMTQ
YV/xZsYvfzz/8bH4w3Duxm5adzr2Yeh8q26weW0Npo9K6IG1bEwtetSvE4yt
CcHPJvZ6JreN6ZWG3s1yrTyVj5eJy14WM6RWuGiIO4fcwbmSSdT3x6/eTkxr
86j//s/k0jwFoPDBWhf1ZN++ZKKj2VHQm4WvsNUHa0NwHYnz67PFa8S93x7M
veR8MArvrKbWS7nr5G/bSvYG1bej2+KR+/gVQ9NBQGmXqKeWGPHo1htW4z0G
VZy7tt5TIgiklum4xS+nBGXmAKzIJjuuOcUkDaodxgw8yMod9pa/PQrtyCoP
1z/f0yFuHzmrVxcUVpXrJGCqeQ+0Oh2hEW5urkv6MvKf3i59JTvtLrg3EdMt
KB8jPO/O+XY96xg8mIE+oHRJ++Y85EOySg05aGHrT0z9O58kWuF3e6MVbDeK
oCxb9vhxrvi6t4xphwa14W1xvqX99MZnLEIHyHCyGzHKKk3uur1Rg1tfdS0b
mS2xquqJTCmyqI7jCFDS0YWDXu5OB/fBAfv7ih97xQ/bYN2S5cmA8VbGt9up
rxATAtJtcTO/r98uf662UhXjd6t0F6M9cICqF78byM7JtRDKKsuk6zusogu2
hSkOwIhioUe2r3Egu/1JHmkKMvZwP2gut5bStrDWQ9+Z9DRUjOk8G6QMYbmz
nMzjZpZWGjaGCh7tlh5t074bezeofJSDq098NOi1W4978hj1NLSlVrCr16XX
9tgpDpsq1aCw/dQ9CrXjOl03ecKFhcqssmiVlaLKbXEpFJBPCoF7EWiRNSGK
vsLRHjR/PKh3ezR3kzA032e8oyHfPw7qr+zOgk4TZIUMRymwUMBSljYZpppf
nYiP7zGe79ydrfy9laD03Bvz2O8iP3iacft6/X7N1sQAVt2TpZ3TMLrjo++Q
H+HLZs9I2Dnr6aGMGncAWK6UNj/TVqHgvKQAoneyhtsaIO9UzJV5Ktr9+yYm
Rt4QO/cbBd2Z2vt7oT36dm7SKJKuQLroAjqkJQLjXvHm1tx+yf1t7GHn6uLE
iyEGwX2ryXS0M+v4YfbejaZ12tKt1QR5W6+Ya5AMMyHT7B+Sc1bcBnOjK5DR
Ko2/a5CqvKj2Xm1LAdaQ5IFwTddk1MQbddzJRpBe7zVaXVv5FDNy1M7YY7RN
HYRX14+XoroQDcWs6GLbIXG5rOwob+mtYan7+wnY8djC4PzuQleo41Ll5/3d
BW+2alcv9e/FG+YXQhR6OQyx1NSVE94M2YkjLCCqxT7pQECqNt7Pp7OsOG9W
X9EQUZiEyw/N5cVW4IYqMqd0HmUieKOqjPO0ZG16kH6UVdc75TTWOqnENqNX
s8XAcgsDUVwpXiat/1kz++v30/QnMwvNXVMzRyibwZbr07OKZ1tT62ZT+/lD
k7PB3RpaMPhbXjs9Su3UA6VtcNRqCDvMDZCfbBe9JmAWLLd1DURwYLA4Ug8X
oGN35yI2tJe5anwlWVzzuGNHVYN5VDugmYCsbE/z0BrSMTkd0Ow+lJcmlmzT