In[]:=
countries=CountryData["Countries"];flags=CountryData[#,"Flag"]&/@countries;colorLengths=Length@DominantColors[#]&/@flags;positions=Flatten@Position[colorLengths,_?(#==2&)];For[i=1,i<=Length[positions],i+=1,country=countries[[positions[[i]]]];flag=CountryData[country,"Flag"];m=ImageData@ColorNegate@Binarize@flag;colors=DominantColors[flag];{u,r,v}=SmithDecomposition[m];If[Total@Diagonal@r>10,Continue[]];Print["doing ",country," , ",Total@Diagonal@r>10];cr=ColorRules->Thread[{0,1}->colors];u=Inverse[u];v=Inverse[v];decomp=Sum[ArrayPlot[Dot[u[[All,{j}]],v[[{j}]]],cr],{j,Min[Total@Diagonal@r,9]}];Print[flag,"=",decomp];]
doing , False
=
+
doing , False
=
+
doing , False
=
+
doing , False
=
+
+
+
+
+
+
+
+
doing , False
=
+
+
+
+
doing , False
=
+
doing , False
=
+
doing , False
=
+
doing , False
=
+
doing , False
=
+
doing , False
=
+
doing , False
=
+
doing , False
=
+
+
doing , False
=
+
+
+
+
doing , False
=
+
+
+
doing , False
=
+
Select country
Select country
In[]:=
countries={"Greece","Finland","Denmark","Switzerland","Tonga","Georgia"};For[i=1,i<=Length[countries],i+=1,country=countries[[i]];flag=CountryData[country,"Flag"];m=ImageData@ColorNegate@Binarize@flag;colors=DominantColors[flag];{u,r,v}=SmithDecomposition[m];If[Total@Diagonal@r>10,Continue[]];Print[country];cr=ColorRules->Thread[{0,1}->colors];u=Inverse[u];v=Inverse[v];decomp=Sum[ArrayPlot[Dot[u[[All,{j}]],v[[{j}]]],cr],{j,Min[Total@Diagonal@r,9]}];Print[flag,"=",decomp];]
Greece
=
+
+
+
+
Finland
=
+