you are viewing a single comment's thread
view the rest of the comments
[–] 149 points 11 months ago* (last edited 11 months ago) (20 children)

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.

  • source
  • hideshow 20 child comments
  • [–] 66 points 11 months ago (2 children)

    Well you gotta share that ranking now...

  • source
  • parent
  • hideshow 2 child comments
  • [–] 20 points 11 months ago (2 children)

    How are you defining the entropy of a flag?

  • source
  • parent
  • hideshow 2 child comments
  • [–] 18 points 11 months ago (2 children)

    How do you rate entropy? Is the script open source so we can see it?

  • source
  • parent
  • hideshow 2 child comments
  • [–] 2 points 11 months ago (1 child)

    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.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 2 points 11 months ago*

    I see, thank you that's interessing;

    Btw there is gitlab as github alternative but i think that making another gh account is just better then. Another solution is making here a spoiler with the code in it

  • source
  • parent
  • [–] 6 points 11 months ago (1 child)

    Hmm. It seems weird that any tricolour flags would have different entropies, but I don't know how you would otherwise do a multichannel entropy.

    I was imagining a kolmogorov-esque doodad

  • source
  • parent
  • hideshow 1 child comment
  • [–] 2 points 11 months ago (1 child)

    I also love flags, flags are so beautiful (except the flag of Haiti, fuck you Haiti with your MS paint looking flag)

  • source
  • parent
  • hideshow 1 child comment
  • load more comments (-1 replies)