{
  "schemaVersion": 1,
  "title": "Five real exposures: upper sky stacked, conservative reference foreground",
  "titleZh": "五张真实连拍：保守保护树梢，上方天空降噪",
  "status": "limited-demonstration",
  "promotion": "limited-demonstration-only",
  "qualityReview": {
    "publicationGate": "Two independent actual-file reviews and the hash integrity gate are required before publication of this exact output and final presentation.",
    "outputSha256": "4ec279f46144abf60c7859dcc4dc22efc4e8e93276781b8f3946e8f14f4fbccc",
    "scope": [
      "Upper-sky noise reduction in this sequence",
      "Conservative manual reference foreground",
      "Photo-frame edge coverage improvement against the prior build"
    ],
    "wholeImageDenoiseApproved": false,
    "automaticFineBranchSeparationApproved": false,
    "commercialQualityApproved": false,
    "remainingLimits": [
      "The whole canopy, gaps and lower sky retain one reference photo and its noise.",
      "The 512px inward horizon fade retains a visible broad noise transition near the canopy.",
      "476 selected isolated star fits show median width +3.2%; 26 exceed +15%. This is not a sharper-star or calibrated photometry claim.",
      "One starfield sequence with no prominent Milky Way core; not all-scene or commercial proof."
    ]
  },
  "frameCount": 5,
  "source": {
    "width": 3476,
    "height": 5208,
    "format": "16-bit RGB sRGB TIFF, developed identically from Canon EOS 700D RAW"
  },
  "overview": {
    "before": "reference.jpg",
    "after": "result.jpg",
    "width": 3476,
    "height": 5208,
    "displayWidth": 801,
    "displayHeight": 1200
  },
  "regions": [
    {
      "id": "noise",
      "number": 1,
      "label": "Upper-sky noise",
      "x": 750,
      "y": 650,
      "width": 360,
      "height": 240,
      "verdict": "improved",
      "annotation": {
        "x": 220,
        "y": 145,
        "radius": 62
      },
      "summary": "The coloured grain is reduced in this fixed upper-sky patch. Both crops use identical brightness and the same direct sRGB conversion. The conservative mask protects the entire canopy and lower sky; this improvement does not extend into that protected area.",
      "summaryZh": "圈内同一块上方天空的彩色颗粒减少；两边使用相同亮度与直接sRGB转换。保守蒙版把整片树冠及低空留作参考，这里的降噪不代表树枝之间也得到改善。",
      "before": "noise-reference.png",
      "after": "noise-result.png"
    },
    {
      "id": "stars",
      "number": 2,
      "label": "Star-shape check",
      "x": 2440,
      "y": 210,
      "width": 360,
      "height": 240,
      "verdict": "check",
      "annotation": {
        "x": 108,
        "y": 167,
        "radius": 30
      },
      "summary": "The same star is visible against a cleaner background. Check preservation, not sharper stars or added resolution. This single case and selected-star measurements do not establish quality across cameras or scenes.",
      "summaryZh": "圈内同一颗星仍然可见，背景更干净；这是星点保留检查，不宣称更锐利或增加分辨率。单一案例及所选星点的测量不能证明各种相机、场景都达到同样效果。",
      "before": "stars-reference.png",
      "after": "stars-result.png"
    },
    {
      "id": "boundary",
      "number": 3,
      "label": "Protected tree boundary",
      "x": 2400,
      "y": 2600,
      "width": 360,
      "height": 240,
      "verdict": "check",
      "annotation": {
        "x": 300,
        "y": 60,
        "radius": 42
      },
      "summary": "The entire canopy and lower sky are conservatively kept from the reference: the branch tips are not lost. These areas are not denoised, and fine branches are not automatically separated. Every 16-bit RGB sample in this crop matches the reference exactly.",
      "summaryZh": "保守把整片树冠与低空留参考，树梢未丢失；这些区域未降噪，当前不自动分离细枝。此裁切全部16位RGB样本与参考图逐值相同。",
      "before": "boundary-reference.png",
      "after": "boundary-result.png"
    }
  ],
  "downloads": [
    {
      "label": "Actual browser processing report",
      "labelZh": "实际浏览器处理报告",
      "url": "processing-report.json"
    },
    {
      "label": "Preparation and source hashes",
      "labelZh": "RAW开发参数与文件校验",
      "url": "preparation.json"
    },
    {
      "label": "Conservative mask and project",
      "labelZh": "保守蒙版与项目文件",
      "url": "project.json"
    },
    {
      "label": "Mask preview",
      "labelZh": "蒙版预览",
      "url": "sky-mask-preview.png"
    },
    {
      "label": "Measurements and limits",
      "labelZh": "测量方法与限制",
      "url": "measurements-summary.json"
    },
    {
      "label": "Prior/current fixed-sample comparison",
      "labelZh": "前后版本固定测量对照",
      "url": "prior-current-measurements.json"
    }
  ],
  "sourceUrl": "https://discuss.pixls.us/t/open-source-tool-for-sky-stacking-and-foreground-extraction/17204",
  "license": {
    "label": "CC BY-SA 4.0",
    "url": "https://creativecommons.org/licenses/by-sa/4.0/",
    "credit": "Photographer: Filippo Dall’Aglio (@flick87). Shared by Massimo Bill (@billznn). RAW development, conservative manual masking, stacking and crop derivatives by Nightscape Stacker; changes described in preparation.json and mask-selection-evidence.json. These photo derivatives are CC BY-SA 4.0. No endorsement implied."
  },
  "notes": [
    "Scoped repair of this example: a conservative manual mask now protects every RGB16 sample from y=2350 downward. This is not an overall commercial image-quality pass.",
    "The entire canopy, branch gaps and lower sky remain from the reference photo. They are not denoised. Fine branches are not automatically segmented.",
    "Actual local Chrome full-resolution import, guarded native star-centroid refinement, stack, TIFF and processing report were used. The 512px inward horizon fade remains; frame-coverage feather is independently capped at 64px. No Node-simulated replacement or image retouching.",
    "PNG crops use identical direct 16-to-8-bit sRGB conversion, with no per-output tone adjustment. Both overviews use identical linear-light area reduction and JPEG encoding.",
    "No resizing before stacking; no denoising or sharpening in RAW development. Identical common +2EV development for every input.",
    "Original failure evidence in fullres-case is retained separately. This repaired case must not conceal or relabel the earlier branch-loss failure.",
    "No prominent Milky Way core: this is a starfield nightscape case.",
    "Selected star fits and fixed upper-sky noise patches are diagnostic; they do not validate every star, lens, camera or scene.",
    "Lanczos3 resampling is for visual photography, not calibrated photometry; extremely undersampled stars can have flux/colour bias.",
    "Current frame-edge comparison uses the preceding independently reviewed 512px coverage collar result and the new separate 64px coverage collar result; the horizon collar remains 512px. Guarded native centroid refinement was applied to three frames and automatically retained the preview matrix for one. This is not a sharper-star claim."
  ],
  "metrics": {
    "scope": "Actual Chrome full-resolution TIFF from conservative manual mask. Same 113 fixed upper-sky 64x64 patches and 476 candidate bright isolated star coordinates from the previous audit, refitted with unchanged Gaussian fitter. These samples assess only upper1700 rows, not all stars or foreground. Reference is a noisy single exposure, not ground truth. Robust detrended patch MAD is a noise proxy, not calibrated sensor SNR. No per-output adjustment, sharpening or denoising. Branch-region safety is separately established with exact RGB16 equality below y=2350. The canopy and lower sky are retained unchanged, not denoised or automatically segmented.",
    "summaries": {
      "reference": {
        "stars": 476,
        "fixedInputStars": 476,
        "rejectedStars": 0,
        "medianFwhm": 2.8974386196570165,
        "medianPairedRatioToReference": 1.0,
        "robustDetrendedPatchNoiseMedian": 0.01705856705735672,
        "patches": 113
      },
      "repaired": {
        "stars": 476,
        "fixedInputStars": 476,
        "rejectedStars": 0,
        "medianFwhm": 2.9877240415137365,
        "medianPairedRatioToReference": 1.03199670577306,
        "robustDetrendedPatchNoiseMedian": 0.007546997361841987,
        "patches": 113,
        "pairedFwhmRatioPercentiles": {
          "p05": 0.9406346023112165,
          "p25": 0.9958656141694114,
          "p50": 1.03199670577306,
          "p75": 1.0722928081656353,
          "p95": 1.1538244189382196,
          "max": 1.253087918020588
        },
        "starsWiderThanReferenceBy15Percent": 26,
        "starsWiderThanReferenceBy25Percent": 1
      }
    },
    "noiseProxyReductionFraction": 0.5575831582766355,
    "fixedSampleSource": "artifacts/quality-audit-20261012/browser-fullres-measurements.json",
    "fixedSampleSourceSha256": "6355f23e2e62085fa002d266ec9662646cfb75f877832184846c6a46d14de1b6",
    "protectedForeground": {
      "firstProtectedRow": 2350,
      "differentSamples": 0,
      "sampleCount": 29803224
    },
    "originalFailureROIs": [
      {
        "id": "noise",
        "box": [
          750,
          650,
          360,
          240
        ],
        "oldDifferentRGB16Samples": 259172,
        "repairedDifferentRGB16Samples": 259177,
        "repairedDisplayDifferenceMean": 16.4646875,
        "referenceSha256": "436b9f66d79b11bc441706e1cf44ba9e7fd521ce050749825526e6ce06c08c2c",
        "repairedSha256": "415f0328c1b33fc2017cad536631edd05dd0d786d21dc02dfd46a1d8f566ffde"
      },
      {
        "id": "stars",
        "box": [
          2440,
          210,
          360,
          240
        ],
        "oldDifferentRGB16Samples": 259152,
        "repairedDifferentRGB16Samples": 259150,
        "repairedDisplayDifferenceMean": 17.090976080246914,
        "referenceSha256": "294922cc18fae36eae6106e1f361e03ae1890c42d1976171bc8699f59cb134bd",
        "repairedSha256": "ed60e78c44fbd8602f80c7139d8a4cb29c81887daf5301b26700869b31b6fddd"
      },
      {
        "id": "boundary",
        "box": [
          2400,
          2600,
          360,
          240
        ],
        "oldDifferentRGB16Samples": 71556,
        "repairedDifferentRGB16Samples": 0,
        "repairedDisplayDifferenceMean": 0.0,
        "referenceSha256": "89d5ea0b5a2fbb73fef0bbfa584268054e2982583f846735183539b13527cc53",
        "repairedSha256": "89d5ea0b5a2fbb73fef0bbfa584268054e2982583f846735183539b13527cc53"
      }
    ],
    "nineRegionChecks": [
      {
        "id": "01-noise",
        "box": [
          750,
          650,
          360,
          240
        ],
        "differentRGB16Samples": 259177,
        "bitExactReference": false
      },
      {
        "id": "02-stars",
        "box": [
          2440,
          210,
          360,
          240
        ],
        "differentRGB16Samples": 259150,
        "bitExactReference": false
      },
      {
        "id": "03-boundary",
        "box": [
          2400,
          2600,
          360,
          240
        ],
        "differentRGB16Samples": 0,
        "bitExactReference": true
      },
      {
        "id": "04-top-left",
        "box": [
          0,
          0,
          360,
          240
        ],
        "differentRGB16Samples": 259175,
        "bitExactReference": false
      },
      {
        "id": "05-top-right",
        "box": [
          3116,
          0,
          360,
          240
        ],
        "differentRGB16Samples": 254974,
        "bitExactReference": false
      },
      {
        "id": "06-center",
        "box": [
          1558,
          2484,
          360,
          240
        ],
        "differentRGB16Samples": 0,
        "bitExactReference": true
      },
      {
        "id": "07-left-tree-tips",
        "box": [
          200,
          2500,
          360,
          240
        ],
        "differentRGB16Samples": 0,
        "bitExactReference": true
      },
      {
        "id": "08-tree-top",
        "box": [
          1800,
          2400,
          360,
          240
        ],
        "differentRGB16Samples": 0,
        "bitExactReference": true
      },
      {
        "id": "09-small-tree-mid",
        "box": [
          900,
          3000,
          360,
          240
        ],
        "differentRGB16Samples": 0,
        "bitExactReference": true
      }
    ]
  },
  "sourceEvidence": {
    "referenceSha256": "a78c5b957bb8d88c7a9fcbac54d6f40d34abaee543d2514e380c73e2a64208b4",
    "browserTiffSha256": "4ec279f46144abf60c7859dcc4dc22efc4e8e93276781b8f3946e8f14f4fbccc",
    "browserReportSha256": "b61fcbd106c3246bc8b8d0fc55bb32bbbdb8e1cd67039de5f0de7d01edc890a3",
    "projectSha256": "b38374ea288c15bb2005cbb78acb5440576360ef808a2071edaa06d1a4a45765",
    "kernelSha256": "185b2f5aec6a28ab270e803157309f85f29f135f4eb6ac890a502471d3b4981b",
    "workerSha256": "baec341576b73c756da62c3e6399cabf1cd249290f4fbcc246bac19aa6fa85e3",
    "nativeRefinementSha256": "8c16a991ff78b891d15617223aa29b15f32519c944e2cad3544a3b7d2d323dd4",
    "registrationSha256": "1fdd3a28b7261a73d2e8dc9dd671633948ede8aeec831fb75a5d9a558dd175c5"
  },
  "assets": [
    {
      "name": "SOURCE-LICENSE.txt",
      "sha256": "4ff3b1748e8b1207d55f05f3869b3031ec887ab5ae912947e54ce0108e01d1b5",
      "bytes": 1130
    },
    {
      "name": "boundary-reference.png",
      "sha256": "0809e022a311ddb12b98a25f07e44bd2edfb8f5b051ff347d00d963ca67cc112",
      "bytes": 202393
    },
    {
      "name": "boundary-result.png",
      "sha256": "0809e022a311ddb12b98a25f07e44bd2edfb8f5b051ff347d00d963ca67cc112",
      "bytes": 202393
    },
    {
      "name": "execution.json",
      "sha256": "3d4cf819c0ce6dc3a67ea415b191a65f15df21e92930690e7cc1312400078e15",
      "bytes": 2295
    },
    {
      "name": "improved-edge.png",
      "sha256": "505b4c43cdfabf53c1aa7ad7f2a233cf2f401383e957398fc8fb25260e9456b4",
      "bytes": 171301
    },
    {
      "name": "mask-selection-evidence.json",
      "sha256": "02d40afc4ef95b85f6a9313d2bcc9cc7c958d64884f03de70ad789806cac19aa",
      "bytes": 2342
    },
    {
      "name": "measurements-summary.json",
      "sha256": "7375aeae7e03e656bd27e1d00f161e632a37980b4aa4ce6b501a8b346d5c227c",
      "bytes": 4966
    },
    {
      "name": "noise-reference.png",
      "sha256": "dd4225cf70b87c57c6e2c95e04d8df96d1eb54531b94a38d667dfb6ef84d7096",
      "bytes": 207244
    },
    {
      "name": "noise-result.png",
      "sha256": "7a6c992f3c1e007e740f59cf4b7c8400fa111d4dfc63c3f6617ecede1a9bb6cd",
      "bytes": 164924
    },
    {
      "name": "preparation.json",
      "sha256": "51d035514750bd219b96117188ee2aa5eae3d9289520e476bf10f42d6feb2bdc",
      "bytes": 8177
    },
    {
      "name": "prior-current-measurements.json",
      "sha256": "68d25afc114128963e81f3e5d3833f361639c2111a4db76063c85b5caf99f453",
      "bytes": 2384
    },
    {
      "name": "prior-edge.png",
      "sha256": "f6e069238fb9b73b513ee3ebb087ae4fc23ab12f1f5ea25faedb2ed66017a937",
      "bytes": 190935
    },
    {
      "name": "processing-report.json",
      "sha256": "b61fcbd106c3246bc8b8d0fc55bb32bbbdb8e1cd67039de5f0de7d01edc890a3",
      "bytes": 930496
    },
    {
      "name": "project.json",
      "sha256": "b38374ea288c15bb2005cbb78acb5440576360ef808a2071edaa06d1a4a45765",
      "bytes": 696
    },
    {
      "name": "reference.jpg",
      "sha256": "c38c8a4ec2d79aafc828b68f5e51475801f04943833952af73bcbde91c539e47",
      "bytes": 848567
    },
    {
      "name": "result.jpg",
      "sha256": "534f99d94675a555ce432c21399d1faa3fb1e2a72fbf18b746e034f4b621f902",
      "bytes": 691063
    },
    {
      "name": "sky-mask-preview.png",
      "sha256": "84fa59278fbfb2cbf636b4b9886904df29af39f83f5696ae512e68f76f3af2a1",
      "bytes": 3162
    },
    {
      "name": "sky-mask-preview.u8",
      "sha256": "1226dd22d0603bd7a90860efb7a1204e6b546d90d362ef2bcd70686acf32374a",
      "bytes": 1708800
    },
    {
      "name": "stars-reference.png",
      "sha256": "914ee74888d4aef08857d4f124ef456b12b2b140c4fb7ffc569fb0978ef29ea0",
      "bytes": 208072
    },
    {
      "name": "stars-result.png",
      "sha256": "587e0fa50cfa289c9e405b423e82e85c992c92b8793b54c878104df665bac996",
      "bytes": 165833
    }
  ],
  "edgeRegion": {
    "x": 3116,
    "y": 650,
    "width": 360,
    "height": 240,
    "priorSha256": "697393f181ebf489a648b368a5e2e27a00c15f06d0e452ae11f0a0abb8d2bc0d",
    "currentSha256": "4ec279f46144abf60c7859dcc4dc22efc4e8e93276781b8f3946e8f14f4fbccc",
    "purpose": "Photo frame-coverage edge comparison, distinct from unchanged 512px horizon transition."
  }
}
