Histogram Normalisation#

This example shows how to normalise any greyscale histogram.

Histogram normalisation?#

The first thing is to understand what is the process of histogram normalisation and why is it important. When dealing with tomography data, the greyscale usually ranges between 0 and 65535, but the values of the different phases differ between materials, scanning conditions, noise, structural changes on the material along the test, etc. In order to compare different scans, it is usefull to set the values of the different phases to known values that remain constant along the test. Histogram normalisation simply refers to the shift/transformation of the original histogram into one where the peak values of the phases are predefined. Several functions in spam requiere the input of normalised greyscale images, such as spam.label.localDetection() or spam.label.fixUndersegmentation(). Additionally, setting the peaks of the histogram to a predefined values enables an easy selection of the binarisation threshold: if the void peak is set at 0.25 and the solid peak is set at 0.75, the selection of 0.5 as the binarisation threshold can be considered as an objective choise.

Load data and normalise the histogram#

For this example we will be working with the snow dataset. Let’s load it and find the peaks of the histogram. The findHistogramPeaks requieres an initial (arbitrary) greylevel value guess that should lie between peak phase 1 and peak phase 2. This can be selected easily by looking at the histogram of the image with spam.plotting.plotGreyLevelHistogram().

import spam.datasets
import spam.helpers
import spam.plotting

snow = spam.datasets.loadSnow()
peaks, _, _ = spam.helpers.findHistogramPeaks(snow, valley1=25000)

# We plot the histogram
spam.plotting.plotGreyLevelHistogram(snow, showGraph=True)
plot histogramNorm
([np.float64(128.0), np.float64(384.0), np.float64(640.0), np.float64(896.0), np.float64(1152.0), np.float64(1408.0), np.float64(1664.0), np.float64(1920.0), np.float64(2176.0), np.float64(2432.0), np.float64(2688.0), np.float64(2944.0), np.float64(3200.0), np.float64(3456.0), np.float64(3712.0), np.float64(3968.0), np.float64(4224.0), np.float64(4480.0), np.float64(4736.0), np.float64(4992.0), np.float64(5248.0), np.float64(5504.0), np.float64(5760.0), np.float64(6016.0), np.float64(6272.0), np.float64(6528.0), np.float64(6784.0), np.float64(7040.0), np.float64(7296.0), np.float64(7552.0), np.float64(7808.0), np.float64(8064.0), np.float64(8320.0), np.float64(8576.0), np.float64(8832.0), np.float64(9088.0), np.float64(9344.0), np.float64(9600.0), np.float64(9856.0), np.float64(10112.0), np.float64(10368.0), np.float64(10624.0), np.float64(10880.0), np.float64(11136.0), np.float64(11392.0), np.float64(11648.0), np.float64(11904.0), np.float64(12160.0), np.float64(12416.0), np.float64(12672.0), np.float64(12928.0), np.float64(13184.0), np.float64(13440.0), np.float64(13696.0), np.float64(13952.0), np.float64(14208.0), np.float64(14464.0), np.float64(14720.0), np.float64(14976.0), np.float64(15232.0), np.float64(15488.0), np.float64(15744.0), np.float64(16000.0), np.float64(16256.0), np.float64(16512.0), np.float64(16768.0), np.float64(17024.0), np.float64(17280.0), np.float64(17536.0), np.float64(17792.0), np.float64(18048.0), np.float64(18304.0), np.float64(18560.0), np.float64(18816.0), np.float64(19072.0), np.float64(19328.0), np.float64(19584.0), np.float64(19840.0), np.float64(20096.0), np.float64(20352.0), np.float64(20608.0), np.float64(20864.0), np.float64(21120.0), np.float64(21376.0), np.float64(21632.0), np.float64(21888.0), np.float64(22144.0), np.float64(22400.0), np.float64(22656.0), np.float64(22912.0), np.float64(23168.0), np.float64(23424.0), np.float64(23680.0), np.float64(23936.0), np.float64(24192.0), np.float64(24448.0), np.float64(24704.0), np.float64(24960.0), np.float64(25216.0), np.float64(25472.0), np.float64(25728.0), np.float64(25984.0), np.float64(26240.0), np.float64(26496.0), np.float64(26752.0), np.float64(27008.0), np.float64(27264.0), np.float64(27520.0), np.float64(27776.0), np.float64(28032.0), np.float64(28288.0), np.float64(28544.0), np.float64(28800.0), np.float64(29056.0), np.float64(29312.0), np.float64(29568.0), np.float64(29824.0), np.float64(30080.0), np.float64(30336.0), np.float64(30592.0), np.float64(30848.0), np.float64(31104.0), np.float64(31360.0), np.float64(31616.0), np.float64(31872.0), np.float64(32128.0), np.float64(32384.0), np.float64(32640.0), np.float64(32896.0), np.float64(33152.0), np.float64(33408.0), np.float64(33664.0), np.float64(33920.0), np.float64(34176.0), np.float64(34432.0), np.float64(34688.0), np.float64(34944.0), np.float64(35200.0), np.float64(35456.0), np.float64(35712.0), np.float64(35968.0), np.float64(36224.0), np.float64(36480.0), np.float64(36736.0), np.float64(36992.0), np.float64(37248.0), np.float64(37504.0), np.float64(37760.0), np.float64(38016.0), np.float64(38272.0), np.float64(38528.0), np.float64(38784.0), np.float64(39040.0), np.float64(39296.0), np.float64(39552.0), np.float64(39808.0), np.float64(40064.0), np.float64(40320.0), np.float64(40576.0), np.float64(40832.0), np.float64(41088.0), np.float64(41344.0), np.float64(41600.0), np.float64(41856.0), np.float64(42112.0), np.float64(42368.0), np.float64(42624.0), np.float64(42880.0), np.float64(43136.0), np.float64(43392.0), np.float64(43648.0), np.float64(43904.0), np.float64(44160.0), np.float64(44416.0), np.float64(44672.0), np.float64(44928.0), np.float64(45184.0), np.float64(45440.0), np.float64(45696.0), np.float64(45952.0), np.float64(46208.0), np.float64(46464.0), np.float64(46720.0), np.float64(46976.0), np.float64(47232.0), np.float64(47488.0), np.float64(47744.0), np.float64(48000.0), np.float64(48256.0), np.float64(48512.0), np.float64(48768.0), np.float64(49024.0), np.float64(49280.0), np.float64(49536.0), np.float64(49792.0), np.float64(50048.0), np.float64(50304.0), np.float64(50560.0), np.float64(50816.0), np.float64(51072.0), np.float64(51328.0), np.float64(51584.0), np.float64(51840.0), np.float64(52096.0), np.float64(52352.0), np.float64(52608.0), np.float64(52864.0), np.float64(53120.0), np.float64(53376.0), np.float64(53632.0), np.float64(53888.0), np.float64(54144.0), np.float64(54400.0), np.float64(54656.0), np.float64(54912.0), np.float64(55168.0), np.float64(55424.0), np.float64(55680.0), np.float64(55936.0), np.float64(56192.0), np.float64(56448.0), np.float64(56704.0), np.float64(56960.0), np.float64(57216.0), np.float64(57472.0), np.float64(57728.0), np.float64(57984.0), np.float64(58240.0), np.float64(58496.0), np.float64(58752.0), np.float64(59008.0), np.float64(59264.0), np.float64(59520.0), np.float64(59776.0), np.float64(60032.0), np.float64(60288.0), np.float64(60544.0), np.float64(60800.0), np.float64(61056.0), np.float64(61312.0), np.float64(61568.0), np.float64(61824.0), np.float64(62080.0), np.float64(62336.0), np.float64(62592.0), np.float64(62848.0), np.float64(63104.0), np.float64(63360.0), np.float64(63616.0), np.float64(63872.0), np.float64(64128.0), np.float64(64384.0), np.float64(64640.0), np.float64(64896.0), np.float64(65152.0), np.float64(65408.0)], array([    0.,   256.,   512.,   768.,  1024.,  1280.,  1536.,  1792.,
        2048.,  2304.,  2560.,  2816.,  3072.,  3328.,  3584.,  3840.,
        4096.,  4352.,  4608.,  4864.,  5120.,  5376.,  5632.,  5888.,
        6144.,  6400.,  6656.,  6912.,  7168.,  7424.,  7680.,  7936.,
        8192.,  8448.,  8704.,  8960.,  9216.,  9472.,  9728.,  9984.,
       10240., 10496., 10752., 11008., 11264., 11520., 11776., 12032.,
       12288., 12544., 12800., 13056., 13312., 13568., 13824., 14080.,
       14336., 14592., 14848., 15104., 15360., 15616., 15872., 16128.,
       16384., 16640., 16896., 17152., 17408., 17664., 17920., 18176.,
       18432., 18688., 18944., 19200., 19456., 19712., 19968., 20224.,
       20480., 20736., 20992., 21248., 21504., 21760., 22016., 22272.,
       22528., 22784., 23040., 23296., 23552., 23808., 24064., 24320.,
       24576., 24832., 25088., 25344., 25600., 25856., 26112., 26368.,
       26624., 26880., 27136., 27392., 27648., 27904., 28160., 28416.,
       28672., 28928., 29184., 29440., 29696., 29952., 30208., 30464.,
       30720., 30976., 31232., 31488., 31744., 32000., 32256., 32512.,
       32768., 33024., 33280., 33536., 33792., 34048., 34304., 34560.,
       34816., 35072., 35328., 35584., 35840., 36096., 36352., 36608.,
       36864., 37120., 37376., 37632., 37888., 38144., 38400., 38656.,
       38912., 39168., 39424., 39680., 39936., 40192., 40448., 40704.,
       40960., 41216., 41472., 41728., 41984., 42240., 42496., 42752.,
       43008., 43264., 43520., 43776., 44032., 44288., 44544., 44800.,
       45056., 45312., 45568., 45824., 46080., 46336., 46592., 46848.,
       47104., 47360., 47616., 47872., 48128., 48384., 48640., 48896.,
       49152., 49408., 49664., 49920., 50176., 50432., 50688., 50944.,
       51200., 51456., 51712., 51968., 52224., 52480., 52736., 52992.,
       53248., 53504., 53760., 54016., 54272., 54528., 54784., 55040.,
       55296., 55552., 55808., 56064., 56320., 56576., 56832., 57088.,
       57344., 57600., 57856., 58112., 58368., 58624., 58880., 59136.,
       59392., 59648., 59904., 60160., 60416., 60672., 60928., 61184.,
       61440., 61696., 61952., 62208., 62464., 62720., 62976., 63232.,
       63488., 63744., 64000., 64256., 64512., 64768., 65024., 65280.,
       65536.]), array([    0,     0,     0,     0,     0,     0,     0,     0,     0,
           0,     0,     0,     0,     0,     0,     0,     0,     0,
           0,     0,     0,     0,     0,     0,     1,     0,     2,
           5,     4,    16,    40,    74,   171,   312,   615,  1106,
        1767,  2907,  4536,  6974, 10387, 14034, 17979, 22064, 24805,
       26399, 25947, 24121, 21477, 18464, 15240, 12549, 10520,  8676,
        7562,  6505,  5814,  5413,  5027,  4884,  4543,  4367,  4168,
        4071,  3974,  3864,  3888,  3748,  3602,  3753,  3552,  3512,
        3424,  3382,  3341,  3414,  3347,  3290,  3270,  3240,  3170,
        3156,  3173,  3229,  3241,  3175,  3108,  3226,  3167,  3201,
        3080,  3211,  3243,  3218,  3195,  3172,  3233,  3261,  3242,
        3208,  3275,  3267,  3338,  3461,  3480,  3559,  3558,  3602,
        3708,  3856,  3713,  3938,  4040,  4202,  4333,  4332,  4636,
        4946,  5275,  5929,  7000,  9038, 12173, 18052, 26161, 35965,
       46068, 53394, 56873, 53605, 46546, 37003, 27194, 18589, 11858,
        7045,  4128,  2251,  1210,   616,   339,   184,    89,    48,
          38,    11,     9,     3,     1,     0,     0,     2,     0,
           1,     1,     0,     1,     0,     0,     0,     0,     0,
           0,     0,     0,     0,     0,     0,     0,     0,     0,
           0,     0,     0,     0,     0,     0,     0,     0,     0,
           0,     0,     0,     0,     0,     0,     0,     0,     0,
           0,     0,     0,     0,     0,     0,     0,     0,     0,
           0,     0,     0,     0,     0,     0,     0,     0,     0,
           0,     0,     0,     0,     0,     0,     0,     0,     0,
           0,     0,     0,     0,     0,     0,     0,     0,     0,
           0,     0,     0,     0,     0,     0,     0,     0,     0,
           0,     0,     0,     0,     0,     0,     0,     0,     0,
           0,     0,     0,     0,     0,     0,     0,     0,     0,
           0,     0,     0,     0]))

Now that we know where the peaks of the histogram are, we can apply a transformation to set them to any predefined values that we want. In this case, we are setting the void peak to be at 0.25 and the solid peak to be at 0.75. Additionally, we are setting the key cropGreyvalues to limit the range of the resulting histogram: any value outside the range [0,1] will be set to 0 or 1.

snowNorm = spam.helpers.histogramNorm(snow, peaks, peaksNormed=[0.25, 0.75], cropGreyvalues=[0,1])

We can check the result of the process by computing the peaks again. However we would need to change the values of the initial guess (valley1) and the greyscale range. Please note that the shape of the histogram remained the same, and we just scaled everything to fit within the range [0, 1].

peaks, _, _ = spam.helpers.findHistogramPeaks(snowNorm, valley1=0.5, greyRange=[0, 1])
spam.plotting.plotGreyLevelHistogram(snowNorm, showGraph=True)
plot histogramNorm
([np.float64(0.12422685738069465), np.float64(0.12733983419027672), np.float64(0.1304528109998588), np.float64(0.1335657878094409), np.float64(0.13667876461902295), np.float64(0.13979174142860504), np.float64(0.14290471823818712), np.float64(0.14601769504776918), np.float64(0.1491306718573513), np.float64(0.15224364866693335), np.float64(0.15535662547651544), np.float64(0.15846960228609752), np.float64(0.16158257909567958), np.float64(0.16469555590526166), np.float64(0.16780853271484375), np.float64(0.1709215095244258), np.float64(0.17403448633400792), np.float64(0.17714746314358998), np.float64(0.18026043995317206), np.float64(0.18337341676275415), np.float64(0.1864863935723362), np.float64(0.1895993703819183), np.float64(0.19271234719150038), np.float64(0.19582532400108243), np.float64(0.19893830081066455), np.float64(0.2020512776202466), np.float64(0.2051642544298287), np.float64(0.20827723123941078), np.float64(0.21139020804899283), np.float64(0.21450318485857492), np.float64(0.217616161668157), np.float64(0.22072913847773906), np.float64(0.22384211528732118), np.float64(0.22695509209690323), np.float64(0.23006806890648532), np.float64(0.2331810457160674), np.float64(0.23629402252564946), np.float64(0.23940699933523155), np.float64(0.24251997614481363), np.float64(0.2456329529543957), np.float64(0.2487459297639778), np.float64(0.2518589065735599), np.float64(0.2549718833831419), np.float64(0.25808486019272403), np.float64(0.26119783700230614), np.float64(0.26431081381188815), np.float64(0.26742379062147026), np.float64(0.27053676743105237), np.float64(0.2736497442406344), np.float64(0.2767627210502165), np.float64(0.2798756978597986), np.float64(0.2829886746693806), np.float64(0.2861016514789627), np.float64(0.28921462828854483), np.float64(0.29232760509812683), np.float64(0.29544058190770894), np.float64(0.29855355871729106), np.float64(0.30166653552687317), np.float64(0.30477951233645517), np.float64(0.3078924891460373), np.float64(0.3110054659556194), np.float64(0.3141184427652014), np.float64(0.3172314195747835), np.float64(0.3203443963843656), np.float64(0.32345737319394763), np.float64(0.32657035000352974), np.float64(0.32968332681311185), np.float64(0.33279630362269386), np.float64(0.33590928043227597), np.float64(0.3390222572418581), np.float64(0.3421352340514401), np.float64(0.3452482108610222), np.float64(0.3483611876706043), np.float64(0.3514741644801864), np.float64(0.3545871412897684), np.float64(0.35770011809935054), np.float64(0.36081309490893265), np.float64(0.36392607171851465), np.float64(0.36703904852809677), np.float64(0.3701520253376789), np.float64(0.3732650021472609), np.float64(0.376377978956843), np.float64(0.3794909557664251), np.float64(0.38260393257600717), np.float64(0.3857169093855892), np.float64(0.38882988619517134), np.float64(0.3919428630047534), np.float64(0.39505583981433545), np.float64(0.39816881662391757), np.float64(0.4012817934334996), np.float64(0.4043947702430817), np.float64(0.4075077470526638), np.float64(0.41062072386224585), np.float64(0.4137337006718279), np.float64(0.41684667748141), np.float64(0.41995965429099213), np.float64(0.42307263110057414), np.float64(0.42618560791015625), np.float64(0.42929858471973836), np.float64(0.4324115615293204), np.float64(0.4355245383389025), np.float64(0.4386375151484846), np.float64(0.44175049195806665), np.float64(0.4448634687676487), np.float64(0.4479764455772308), np.float64(0.4510894223868129), np.float64(0.45420239919639493), np.float64(0.45731537600597705), np.float64(0.4604283528155591), np.float64(0.46354132962514116), np.float64(0.4666543064347233), np.float64(0.4697672832443054), np.float64(0.4728802600538874), np.float64(0.4759932368634695), np.float64(0.4791062136730516), np.float64(0.4822191904826337), np.float64(0.48533216729221573), np.float64(0.48844514410179785), np.float64(0.4915581209113799), np.float64(0.49467109772096196), np.float64(0.4977840745305441), np.float64(0.5008970513401262), np.float64(0.5040100281497082), np.float64(0.5071230049592903), np.float64(0.5102359817688723), np.float64(0.5133489585784544), np.float64(0.5164619353880365), np.float64(0.5195749121976186), np.float64(0.5226878890072006), np.float64(0.5258008658167828), np.float64(0.5289138426263649), np.float64(0.5320268194359469), np.float64(0.535139796245529), np.float64(0.5382527730551111), np.float64(0.5413657498646932), np.float64(0.5444787266742752), np.float64(0.5475917034838573), np.float64(0.5507046802934393), np.float64(0.5538176571030214), np.float64(0.5569306339126036), np.float64(0.5600436107221857), np.float64(0.5631565875317677), np.float64(0.5662695643413498), np.float64(0.5693825411509319), np.float64(0.5724955179605139), np.float64(0.575608494770096), np.float64(0.5787214715796781), np.float64(0.5818344483892602), np.float64(0.5849474251988422), np.float64(0.5880604020084244), np.float64(0.5911733788180064), np.float64(0.5942863556275885), np.float64(0.5973993324371706), np.float64(0.6005123092467527), np.float64(0.6036252860563347), np.float64(0.6067382628659168), np.float64(0.6098512396754988), np.float64(0.6129642164850809), np.float64(0.616077193294663), np.float64(0.6191901701042452), np.float64(0.6223031469138273), np.float64(0.6254161237234093), np.float64(0.6285291005329913), np.float64(0.6316420773425734), np.float64(0.6347550541521555), np.float64(0.6378680309617376), np.float64(0.6409810077713197), np.float64(0.6440939845809018), np.float64(0.6472069613904838), np.float64(0.6503199382000658), np.float64(0.653432915009648), np.float64(0.6565458918192301), np.float64(0.6596588686288122), np.float64(0.6627718454383943), np.float64(0.6658848222479763), np.float64(0.6689977990575583), np.float64(0.6721107758671404), np.float64(0.6752237526767225), np.float64(0.6783367294863046), np.float64(0.6814497062958867), np.float64(0.6845626831054688), np.float64(0.6876756599150508), np.float64(0.6907886367246329), np.float64(0.693901613534215), np.float64(0.6970145903437971), np.float64(0.7001275671533792), np.float64(0.7032405439629613), np.float64(0.7063535207725433), np.float64(0.7094664975821253), np.float64(0.7125794743917074), np.float64(0.7156924512012895), np.float64(0.7188054280108717), np.float64(0.7219184048204538), np.float64(0.7250313816300358), np.float64(0.7281443584396178), np.float64(0.7312573352491999), np.float64(0.734370312058782), np.float64(0.7374832888683641), np.float64(0.7405962656779462), np.float64(0.7437092424875283), np.float64(0.7468222192971103), np.float64(0.7499351961066923), np.float64(0.7530481729162745), np.float64(0.7561611497258566), np.float64(0.7592741265354387), np.float64(0.7623871033450208), np.float64(0.7655000801546028), np.float64(0.7686130569641848), np.float64(0.7717260337737669), np.float64(0.774839010583349), np.float64(0.7779519873929311), np.float64(0.7810649642025133), np.float64(0.7841779410120953), np.float64(0.7872909178216773), np.float64(0.7904038946312594), np.float64(0.7935168714408415), np.float64(0.7966298482504236), np.float64(0.7997428250600057), np.float64(0.8028558018695878), np.float64(0.8059687786791698), np.float64(0.8090817554887518), np.float64(0.8121947322983339), np.float64(0.8153077091079161), np.float64(0.8184206859174982), np.float64(0.8215336627270803), np.float64(0.8246466395366623), np.float64(0.8277596163462443), np.float64(0.8308725931558264), np.float64(0.8339855699654085), np.float64(0.8370985467749906), np.float64(0.8402115235845727), np.float64(0.8433245003941549), np.float64(0.8464374772037369), np.float64(0.8495504540133189), np.float64(0.852663430822901), np.float64(0.8557764076324831), np.float64(0.8588893844420652), np.float64(0.8620023612516473), np.float64(0.8651153380612293), np.float64(0.8682283148708113), np.float64(0.8713412916803934), np.float64(0.8744542684899755), np.float64(0.8775672452995577), np.float64(0.8806802221091398), np.float64(0.8837931989187218), np.float64(0.8869061757283038), np.float64(0.8900191525378859), np.float64(0.893132129347468), np.float64(0.8962451061570501), np.float64(0.8993580829666322), np.float64(0.9024710597762143), np.float64(0.9055840365857963), np.float64(0.9086970133953783), np.float64(0.9118099902049605), np.float64(0.9149229670145426), np.float64(0.9180359438241247)], array([0.123, 0.126, 0.129, 0.132, 0.135, 0.138, 0.141, 0.144, 0.148,
       0.151, 0.154, 0.157, 0.16 , 0.163, 0.166, 0.169, 0.172, 0.176,
       0.179, 0.182, 0.185, 0.188, 0.191, 0.194, 0.197, 0.2  , 0.204,
       0.207, 0.21 , 0.213, 0.216, 0.219, 0.222, 0.225, 0.229, 0.232,
       0.235, 0.238, 0.241, 0.244, 0.247, 0.25 , 0.253, 0.257, 0.26 ,
       0.263, 0.266, 0.269, 0.272, 0.275, 0.278, 0.281, 0.285, 0.288,
       0.291, 0.294, 0.297, 0.3  , 0.303, 0.306, 0.309, 0.313, 0.316,
       0.319, 0.322, 0.325, 0.328, 0.331, 0.334, 0.337, 0.341, 0.344,
       0.347, 0.35 , 0.353, 0.356, 0.359, 0.362, 0.365, 0.369, 0.372,
       0.375, 0.378, 0.381, 0.384, 0.387, 0.39 , 0.393, 0.397, 0.4  ,
       0.403, 0.406, 0.409, 0.412, 0.415, 0.418, 0.422, 0.425, 0.428,
       0.431, 0.434, 0.437, 0.44 , 0.443, 0.446, 0.45 , 0.453, 0.456,
       0.459, 0.462, 0.465, 0.468, 0.471, 0.474, 0.478, 0.481, 0.484,
       0.487, 0.49 , 0.493, 0.496, 0.499, 0.502, 0.506, 0.509, 0.512,
       0.515, 0.518, 0.521, 0.524, 0.527, 0.53 , 0.534, 0.537, 0.54 ,
       0.543, 0.546, 0.549, 0.552, 0.555, 0.558, 0.562, 0.565, 0.568,
       0.571, 0.574, 0.577, 0.58 , 0.583, 0.587, 0.59 , 0.593, 0.596,
       0.599, 0.602, 0.605, 0.608, 0.611, 0.615, 0.618, 0.621, 0.624,
       0.627, 0.63 , 0.633, 0.636, 0.639, 0.643, 0.646, 0.649, 0.652,
       0.655, 0.658, 0.661, 0.664, 0.667, 0.671, 0.674, 0.677, 0.68 ,
       0.683, 0.686, 0.689, 0.692, 0.695, 0.699, 0.702, 0.705, 0.708,
       0.711, 0.714, 0.717, 0.72 , 0.723, 0.727, 0.73 , 0.733, 0.736,
       0.739, 0.742, 0.745, 0.748, 0.751, 0.755, 0.758, 0.761, 0.764,
       0.767, 0.77 , 0.773, 0.776, 0.78 , 0.783, 0.786, 0.789, 0.792,
       0.795, 0.798, 0.801, 0.804, 0.808, 0.811, 0.814, 0.817, 0.82 ,
       0.823, 0.826, 0.829, 0.832, 0.836, 0.839, 0.842, 0.845, 0.848,
       0.851, 0.854, 0.857, 0.86 , 0.864, 0.867, 0.87 , 0.873, 0.876,
       0.879, 0.882, 0.885, 0.888, 0.892, 0.895, 0.898, 0.901, 0.904,
       0.907, 0.91 , 0.913, 0.916, 0.92 ]), array([    1,     0,     0,     2,     0,     4,     1,     3,     1,
           7,     9,    14,    28,    37,    49,    80,   107,   163,
         194,   312,   432,   550,   725,   929,  1171,  1495,  1941,
        2415,  3007,  3760,  4621,  5691,  6624,  7553,  8717,  9689,
       10861, 11801, 12673, 13069, 13673, 13608, 13441, 13258, 12610,
       11984, 11206, 10619,  9570,  8831,  7931,  7211,  6446,  5918,
        5343,  4943,  4442,  3988,  3927,  3589,  3290,  3137,  2982,
        2823,  2732,  2681,  2547,  2492,  2510,  2381,  2335,  2267,
        2239,  2118,  2174,  1982,  2181,  2045,  2082,  2001,  2000,
        1997,  1958,  1957,  1834,  1897,  1975,  1903,  1851,  1832,
        1804,  1830,  1791,  1767,  1738,  1738,  1712,  1753,  1763,
        1754,  1769,  1678,  1689,  1717,  1691,  1692,  1743,  1590,
        1644,  1664,  1638,  1617,  1618,  1665,  1694,  1656,  1688,
        1607,  1682,  1569,  1644,  1642,  1673,  1550,  1735,  1662,
        1625,  1574,  1613,  1606,  1710,  1684,  1671,  1597,  1741,
        1647,  1655,  1632,  1635,  1649,  1690,  1671,  1718,  1657,
        1643,  1700,  1660,  1710,  1645,  1717,  1767,  1671,  1798,
        1781,  1755,  1825,  1871,  1807,  1824,  1840,  1799,  1949,
        1934,  1940,  2000,  1931,  1924,  1926,  2063,  2076,  2050,
        2163,  2205,  2152,  2231,  2241,  2248,  2342,  2469,  2367,
        2642,  2667,  2719,  2975,  3133,  3427,  3798,  4366,  4990,
        5797,  6985,  8649, 10578, 12960, 15229, 18135, 20424, 23660,
       26006, 27315, 28971, 29422, 28909, 27715, 26161, 23735, 21121,
       19040, 15967, 13418, 10862,  9005,  7075,  5541,  4183,  3263,
        2431,  1832,  1317,   943,   750,   483,   332,   244,   204,
         131,    99,    62,    50,    33,    25,    25,    17,     8,
           9,     7,     3,     1,     2,     0,     0,     1,     0,
           0,     0,     1,     1,     0,     0,     1,     0,     1,
           0,     0,     0,     1]))

Total running time of the script: (0 minutes 0.231 seconds)

Gallery generated by Sphinx-Gallery