{
  "schemaVersion": 1,
  "baseManifest": "frames.json",
  "crs": "EPSG:26910",
  "dimensions": [
    1300,
    890
  ],
  "purpose": "Display-only grass-tone matching. Original-color display images remain available in ../images/. Matched pixels are not calibrated reflectance or evidence for canopy-area, species, vigor, or change estimates.",
  "sampleWindowsPixels": [
    [
      155,
      260,
      305,
      360
    ],
    [
      145,
      425,
      300,
      525
    ],
    [
      250,
      645,
      340,
      730
    ]
  ],
  "targetGrassMedianRgb": [
    119,
    107,
    90
  ],
  "method": "For each dated RGB WebP, take the per-channel median of pixels in the union of the three fixed grass reference windows. The target is the per-channel median across the nine dated reference medians. Multiply each RGB channel of every pixel by target/source median, round to nearest integer, clip to [0,255], encode WebP quality 90 (method 6). Zero-change 2020 copy retains original encoding. Do not infer real vegetation change from matched colors.",
  "matchedFilePattern": "naip-{year}-grassmatched.webp",
  "years": {
    "2009": {
      "grassMedianRgb": [
        151,
        128,
        119
      ],
      "channelGains": [
        0.788079,
        0.835938,
        0.756303
      ],
      "sourceSha256": "5f13268e5857849706d81ab86876e69311ac036ffaa6f126a93a7e5d9eef0927",
      "matchedSha256": "dc20ef738d0817252eefcff44510d84bd71242efe73ecea083c0ded6d2756c01",
      "clippedChannelPercent": 0.0
    },
    "2010": {
      "grassMedianRgb": [
        162,
        147,
        131
      ],
      "channelGains": [
        0.734568,
        0.727891,
        0.687023
      ],
      "sourceSha256": "00c1d5fb2e8adaee520d0b70cb77cd58b20f88981b121d1bbe70f9478f846736",
      "matchedSha256": "a8292acd32b84ccddb0ceddd10665c0b3c5cd3174ec25a00bfd1a732c2e7b147",
      "clippedChannelPercent": 0.0
    },
    "2012": {
      "grassMedianRgb": [
        119,
        119,
        108
      ],
      "channelGains": [
        1.0,
        0.89916,
        0.833333
      ],
      "sourceSha256": "52922042d59f107c301999b6206f7d4a8b2553a5a25a5195d5f1c59035de6d48",
      "matchedSha256": "0a0f6f38406637f31aa624b86763e4b407fb2dc05da62f5c46b2afe24ac95829",
      "clippedChannelPercent": 0.0
    },
    "2014": {
      "grassMedianRgb": [
        117,
        107,
        83
      ],
      "channelGains": [
        1.017094,
        1.0,
        1.084337
      ],
      "sourceSha256": "9ef2f3a7477f4d681510e02fbd18fe59699a6c4f2a7e922b421438c4d27b098f",
      "matchedSha256": "078e8a4ec6f2d24a599075a5bfa8fa915115265813e956f2b0e01a72a1ced290",
      "clippedChannelPercent": 0.0
    },
    "2016": {
      "grassMedianRgb": [
        104,
        94,
        86
      ],
      "channelGains": [
        1.144231,
        1.138298,
        1.046512
      ],
      "sourceSha256": "91c86767d8133500a6359f698ea71eeda9f0a626af26ac4b0d9f52732303c847",
      "matchedSha256": "4f8a84993c85ab6189448c8ce19dfe4713074b422788e6d660e55ff97608917c",
      "clippedChannelPercent": 0.001
    },
    "2018": {
      "grassMedianRgb": [
        91,
        87,
        88
      ],
      "channelGains": [
        1.307692,
        1.229885,
        1.022727
      ],
      "sourceSha256": "ce6dbe13fdbcfd8fc91911cfbbf2bfc735a40cd33dbdd33849e5d409439ba0c2",
      "matchedSha256": "05184d7cf538391341755c5a5d9206564a8ea598a9bdc89e2256458196538421",
      "clippedChannelPercent": 0.128
    },
    "2020": {
      "grassMedianRgb": [
        119,
        107,
        90
      ],
      "channelGains": [
        1.0,
        1.0,
        1.0
      ],
      "sourceSha256": "fc92e3a20cc672042c5ebeda36603b547f4e6d7ff264b6708ae7996b0e31f51d",
      "matchedSha256": "fc92e3a20cc672042c5ebeda36603b547f4e6d7ff264b6708ae7996b0e31f51d",
      "clippedChannelPercent": 0.0
    },
    "2022": {
      "grassMedianRgb": [
        123,
        103,
        74
      ],
      "channelGains": [
        0.96748,
        1.038835,
        1.216216
      ],
      "sourceSha256": "4998b3ab2533a19939af64a10b33efcf518a46d12587a980ac6610332e891f23",
      "matchedSha256": "a3964dd659276661ccf132a5610df0496b5de1155e11db691d3057860cfe365a",
      "clippedChannelPercent": 0.015
    },
    "2024": {
      "grassMedianRgb": [
        140,
        128,
        106
      ],
      "channelGains": [
        0.85,
        0.835938,
        0.849057
      ],
      "sourceSha256": "a8392f50580f81ad294c3137cc5bf7295edc40e3a2d4669b7148a036bd3b1a43",
      "matchedSha256": "2ac5bcda08ee6fb862c49c55358d3cef8e8af7654573322fd48462d4426e2383",
      "clippedChannelPercent": 0.0
    }
  }
}
