{
  "method": "Unweighted per-channel arithmetic mean of encoded RGB byte values, centered odd square windows. Round positive means half up to an integer. No linear-light conversion, gamma correction, alpha, resampling, JPEG, screenshot or ICC profile.",
  "formula": "mean[channel] = sum(source pixel channel in centered n*n window) / (n*n); integer = floor(mean + 0.5)",
  "scope": "Illustrates explicitly defined sampling operations. Averaged numbers are our calculations, not readings from Photoshop, Procreate, Roblox or the website. The website reads a single decoded pixel.",
  "authored_inputs": {
    "dimensions": [
      320,
      160
    ],
    "warm_fill": [
      180,
      120,
      60
    ],
    "cool_fill": [
      30,
      90,
      180
    ],
    "boundary_x": 160,
    "bright_pixel": {
      "xy": [
        80,
        80
      ],
      "rgb": [
        240,
        210,
        150
      ]
    }
  },
  "python": "3.12.14",
  "pillow": "12.3.0",
  "source_file": "point-vs-average.png",
  "sha256": "ce9ca5ade29fa960ff6ae9fdfa5b67c58d1b4bdd177366b705d3c188088434ef",
  "bytes": 582,
  "samples": [
    {
      "label": "Flat control",
      "xy": [
        40,
        80
      ],
      "point_rgb": [
        180,
        120,
        60
      ],
      "windows": [
        {
          "width": 1,
          "pixel_count": 1,
          "bounds_inclusive": [
            40,
            80,
            40,
            80
          ],
          "channel_sums": [
            180,
            120,
            60
          ],
          "channel_mean_fractions": [
            "180",
            "120",
            "60"
          ],
          "rounded_rgb": [
            180,
            120,
            60
          ],
          "hex": "#B4783C",
          "all_source_pixels": [
            [
              180,
              120,
              60
            ]
          ]
        },
        {
          "width": 3,
          "pixel_count": 9,
          "bounds_inclusive": [
            39,
            79,
            41,
            81
          ],
          "channel_sums": [
            1620,
            1080,
            540
          ],
          "channel_mean_fractions": [
            "180",
            "120",
            "60"
          ],
          "rounded_rgb": [
            180,
            120,
            60
          ],
          "hex": "#B4783C",
          "all_source_pixels": [
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ]
          ]
        },
        {
          "width": 5,
          "pixel_count": 25,
          "bounds_inclusive": [
            38,
            78,
            42,
            82
          ],
          "channel_sums": [
            4500,
            3000,
            1500
          ],
          "channel_mean_fractions": [
            "180",
            "120",
            "60"
          ],
          "rounded_rgb": [
            180,
            120,
            60
          ],
          "hex": "#B4783C",
          "all_source_pixels": [
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ]
          ]
        }
      ],
      "point_hex": "#B4783C"
    },
    {
      "label": "Isolated bright pixel",
      "xy": [
        80,
        80
      ],
      "point_rgb": [
        240,
        210,
        150
      ],
      "windows": [
        {
          "width": 1,
          "pixel_count": 1,
          "bounds_inclusive": [
            80,
            80,
            80,
            80
          ],
          "channel_sums": [
            240,
            210,
            150
          ],
          "channel_mean_fractions": [
            "240",
            "210",
            "150"
          ],
          "rounded_rgb": [
            240,
            210,
            150
          ],
          "hex": "#F0D296",
          "all_source_pixels": [
            [
              240,
              210,
              150
            ]
          ]
        },
        {
          "width": 3,
          "pixel_count": 9,
          "bounds_inclusive": [
            79,
            79,
            81,
            81
          ],
          "channel_sums": [
            1680,
            1170,
            630
          ],
          "channel_mean_fractions": [
            "560/3",
            "130",
            "70"
          ],
          "rounded_rgb": [
            187,
            130,
            70
          ],
          "hex": "#BB8246",
          "all_source_pixels": [
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              240,
              210,
              150
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ]
          ]
        },
        {
          "width": 5,
          "pixel_count": 25,
          "bounds_inclusive": [
            78,
            78,
            82,
            82
          ],
          "channel_sums": [
            4560,
            3090,
            1590
          ],
          "channel_mean_fractions": [
            "912/5",
            "618/5",
            "318/5"
          ],
          "rounded_rgb": [
            182,
            124,
            64
          ],
          "hex": "#B67C40",
          "all_source_pixels": [
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              240,
              210,
              150
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ]
          ]
        }
      ],
      "point_hex": "#F0D296"
    },
    {
      "label": "Boundary on warm side",
      "xy": [
        159,
        80
      ],
      "point_rgb": [
        180,
        120,
        60
      ],
      "windows": [
        {
          "width": 1,
          "pixel_count": 1,
          "bounds_inclusive": [
            159,
            80,
            159,
            80
          ],
          "channel_sums": [
            180,
            120,
            60
          ],
          "channel_mean_fractions": [
            "180",
            "120",
            "60"
          ],
          "rounded_rgb": [
            180,
            120,
            60
          ],
          "hex": "#B4783C",
          "all_source_pixels": [
            [
              180,
              120,
              60
            ]
          ]
        },
        {
          "width": 3,
          "pixel_count": 9,
          "bounds_inclusive": [
            158,
            79,
            160,
            81
          ],
          "channel_sums": [
            1170,
            990,
            900
          ],
          "channel_mean_fractions": [
            "130",
            "110",
            "100"
          ],
          "rounded_rgb": [
            130,
            110,
            100
          ],
          "hex": "#826E64",
          "all_source_pixels": [
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              30,
              90,
              180
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              30,
              90,
              180
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              30,
              90,
              180
            ]
          ]
        },
        {
          "width": 5,
          "pixel_count": 25,
          "bounds_inclusive": [
            157,
            78,
            161,
            82
          ],
          "channel_sums": [
            3000,
            2700,
            2700
          ],
          "channel_mean_fractions": [
            "120",
            "108",
            "108"
          ],
          "rounded_rgb": [
            120,
            108,
            108
          ],
          "hex": "#786C6C",
          "all_source_pixels": [
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              30,
              90,
              180
            ],
            [
              30,
              90,
              180
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              30,
              90,
              180
            ],
            [
              30,
              90,
              180
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              30,
              90,
              180
            ],
            [
              30,
              90,
              180
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              30,
              90,
              180
            ],
            [
              30,
              90,
              180
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              180,
              120,
              60
            ],
            [
              30,
              90,
              180
            ],
            [
              30,
              90,
              180
            ]
          ]
        }
      ],
      "point_hex": "#B4783C"
    }
  ]
}