

That really depends on the algorithm used. Ideally it takes colous and spacial information into account. I’ll keep you posted on the ranking.


That really depends on the algorithm used. Ideally it takes colous and spacial information into account. I’ll keep you posted on the ranking.


I tried different definitions and settled on spectral entropy. This one uses fourier transform and (I think) this takes the spacial relation of the pixels into account, as opposed to the more common Shannon definition. I’d like to share it but am not sure on how to do that: were I to use GitHub I would doxx myself.


Their previous version was indeed without the coat of arms. Much cooler I think. During that time the Liechtenstein flag was identical, but they (Liechtenstein) changed it upon discovery.


Simplicity I suppose. Colour combination. In my opinion if i can draw it from memory it’s a good flag.


I owe it to the community. Since I don’t have it anymore I am coding it up again. Allow me some time - it’s weekend and I have family to look after.


I see a flag. I like flags. Especially the Japanese flags. I don’t specifically care for Japan, but the flag is one of my favourites. I prefer flags with low entropy: so I wrote a script once that ranks the nations flags by entropy so I could quantify my preference. Thanks for letting me infodump a bit.
Edit: Due to people aski g for it: here is the top ten of my ranking:
Nations' flag entropy ranking (n=208).
Image source: Wikimedia.
0 white_field -1.439759075204976e-10
1 Indonesia 3.3274441922278752
2 Germany 3.391689777286108
3 South_Ossetia 3.8174437373506778
4 Monaco 3.9718936201427066
5 Poland 3.9719290780440133
6 Austria 4.372592975412404
7 Ukraine 4.405280849871184
8 Hungary 4.4465472496385985
9 Albania 4.6134257669087395
10 Mauritius 4.707109405551959
11 Luxembourg 4.721346585737304
Here’s how I defined the entropy value for each flag:
def color_weighted_spectral_entropy(image):
b_channel, g_channel, r_channel = cv2.split(image)
# Calculate spectral entropy for each channel
def channel_spectral_entropy(channel):
f_transform = np.fft.fft2(channel)
f_shifted = np.fft.fftshift(f_transform)
magnitude_spectrum = np.abs(f_shifted)
if np.sum(magnitude_spectrum) > 0:
normalized = magnitude_spectrum / np.sum(magnitude_spectrum)
else:
normalized = magnitude_spectrum
# Entropy calculation with color channel weighting
epsilon = 1e-10
entropy = -np.sum(normalized * np.log2(normalized + epsilon))
return entropy
weighted_entropy = (
0.333 * channel_spectral_entropy(b_channel) +
0.333 * channel_spectral_entropy(g_channel) +
0.333 * channel_spectral_entropy(r_channel)
)
return float(weighted_entropy)
“White_field” is just an array that holds zeroes. I use this as a sanity check. Code is on github. I can send DM to whomever is interested. I guess it can also be searched for.
Yes! And weirder that bicolour banded flags are not consistently on top. I suspect some float errors. I just know that using the typical Shannon style does even worse. I might add some filter that calculates a differential or something.